Я использовал следующую команду для шифрования:

gpg --output encrypted.data --symmetric --cipher-algo AES256 un_encrypted.data

и расшифровка:

gpg --output un_encrypted.data --decrypt encrypted.data

Мне было интересно, безопасно ли делать это таким образом, я вижу только одну ссылку в Интернете на эту команду здесь, и другие веб-сайты запускают ее без команды --cipher-algo AES256 , которая будет использовать шифр по умолчанию, как этот :

gpg --output encrypted.data --symmetric un_encrypted.data

Не нужно ли мне добавлять туда соль, нет команды для подачи соли, как в OpenSSL, или она обрабатывается программным обеспечением автоматически.

И что произойдет, если я запусту это так, без --symmetric:

gpg --output encrypted.data --cipher-algo AES256 un_encrypted.data

Мой вопрос касается правильного выполнения этой команды для создания защищенного зашифрованного файла SHA256. Есть ли разница между командами выше?

1 ответ1

0

Если вы используете стабильную версию gpg с --cipher-algo AES256 , то она должна правильно шифроваться с использованием AES256 (SHA256 - это хеш).

Он автоматически выбирает собственные раунды преобразования соли и ключа, поэтому вам не нужно (и не можете) выбирать потенциально слабые варианты самостоятельно. OpenSSL имеет много опций, но его настройки по умолчанию (особенно с enc) могут быть не самыми сильными. Ваш связанный Q на самом деле ссылается на мой другой ответ об OpenSSL против GPG - в основном gpg работает, он тестировался десятилетиями, может ставить в тупик большие правительства, и команда enc OpenSSL все еще может не иметь опции для подсчета итераций (это 1.1.0f man page from 2017-11-02 все еще перечисляет эту ошибку).

Добавьте несколько (несколько) опций -v , чтобы увидеть больше деталей, таких как соль (772B0F3B94AD86BA ниже):

$ gpg -vvvvvvvvv  test.gpg 
gpg: using character set 'utf-8'
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
# off=0 ctb=8c tag=3 hlen=2 plen=13
:symkey enc packet: version 4, cipher 9, s2k 3, hash 2
        salt 772B0F3B94AD86BA, count 9961472 (211)
gpg: AES256 encrypted data
# off=15 ctb=d2 tag=18 hlen=2 plen=0 partial new-ctb
:encrypted data packet:
        length: unknown
        mdc_method: 2
gpg: encrypted with 1 passphrase
# off=36 ctb=a3 tag=8 hlen=1 plen=0 indeterminate
:compressed packet: algo=1
# off=38 ctb=ad tag=11 hlen=3 plen=25420
:literal data packet:
        mode b (62), created 1519523431, name="test",
        raw data: 25405 bytes
gpg: original file name='test'
gpg: decryption okay

Если вы опустите --symmetric то gpg попытается угадать, что вы имеете в виду, если файл не зашифрован gpg, то он сдастся / потерпит неудачу:

$ gpg -vvvvvvvvv --cipher-algo AES256 test 
gpg: using character set 'utf-8'
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: no valid OpenPGP data found.
gpg: processing message failed: Unknown system error

Для пропуска опции --cipher-algo следует использовать «Используемый по умолчанию симметричный шифр - AES-128» (как об этом говорит страница man gpg ), но значения по умолчанию могут различаться в зависимости от версии или, я полагаю, переопределены вашими личными настройками. FYI доступные алгоритмы могут быть перечислены с опцией --version , например:

Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

Вам также не нужен параметр --output если он вам не нравится, gpg добавит и удалит расширение .gpg мере необходимости.

  • К вашему сведению, вот ссылка на RFC2440, описывающая элементы данных, используемые OpenPGP (по крайней мере, в 1999 году, хотя я уверен, что это почти все еще актуально, особенно описания таких вещей, как String-to-key (s2k) и итераций и соли)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .