GPG コマンドを使用して SHA256 として適切に暗号化するにはどうすればよいですか?

GPG コマンドを使用して SHA256 として適切に暗号化するにはどうすればよいですか?

暗号化には次のコマンドを使用しています。

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

および復号化:

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

この方法で実行するのが安全かどうか疑問に思っていました。このコマンドについてはインターネット上で1つの参照しか見当たりません。ここ--cipher-algo AES256他の Web サイトでは、次のようにデフォルトの暗号を使用するコマンドなしで実行します。

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

そこにソルトを追加する必要はありませんか、OpenSSL のようにソルトを提供するコマンドはありませんか、それともソフトウェアによって自動的に処理されますか。

また、以下なしで次のように実行するとどうなりますか--symmetric:

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

私の質問は、このコマンドを適切に実行して、安全な SHA256 暗号化ファイルを作成することについてです。上記のコマンドには違いがありますか?

答え1

安定したバージョンの gpg を使用している場合は、--cipher-algo AES256AES256 を使用して適切に暗号化されるはずです (SHA256 はハッシュです)。

OpenSSLは自動的にソルトとキー変換ラウンドを選択するので、潜在的に弱いオプションを自分で選択する必要はありません(選択できません)。OpenSSLには多くのオプションがありますが、そのデフォルト(特にenc)は最も強力ではない可能性があります。リンクされたQは、実際には私の他の回答を参照しています。OpenSSL と GPG- 基本的に gpg は機能し、何十年もテストされており、大規模な政府を困惑させる可能性があり、OpenSSL のencコマンドにはまだ反復回数のオプションがない可能性があります (2017 年 11 月 2 日の 1.1.0f のマニュアル ページには、まだそのバグが記載されています)。

-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そのオプションについてページに記載されているとおり) が使用されますが、デフォルトはバージョンによって異なる場合があり、個人設定によって上書きされると考えられます。参考までに、使用可能なアルゴリズムは、次のようにオプションでリストできます--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必要に応じて拡張機能を追加および削除します。

  • ご参考までに、こちらにリンクがありますRFC2440OpenPGP で使用されるデータ要素について説明します (少なくとも 1999 年当時は、特に String-to-key (s2k) や反復、ソルトなどの説明はほぼすべて今でも関連性があると思います)。

関連情報