私は知っています、GnuPGでAES256を使用して暗号化することを強制できます
gpg --cipher-algo AES256
または、~/.gnu/gpg.conf
の特別な設定を使用します。
しかし、このスイッチを見逃した場合、GnuPGのデフォルトの暗号アルゴリズムは何ですか?
TL; DR:GnuPG 1.0および2.0の場合、デフォルトはCast5、GnuPG 2.1の場合はAES-128です。
デフォルトでは、GnuPGは受信者のアルゴリズム設定を読み取り、サポートしているリストの最初のアルゴリズムを使用します(つまり、受信者が要求する最も好ましいサポートされているアルゴリズムを使用します)。
設定が指定されていない場合(または--symmetric
がパスフレーズを使用した対称暗号化に使用されている場合)、「安全な」ものが選択されます。安全とは、実装する必要がある、または実装する必要があるものを意味します。これがどれであるかは、GnuPGのバージョンと選択した互換性レベルによって異なります。これは、対称暗号化を開始し、互換性レベルの1つ(またはなし、つまり--gnupg
を意味する)を渡すことで簡単に確認できます。
gpg --verbose --symmetric
gpg: using cipher CAST5
一方、 RFC 488 に続いてOpenPGPに厳密に準拠すると、トリプルDESにドロップされます。
gpg --rfc4880 --verbose --symmetric
gpg: using cipher 3DES
--rfc2440
を使用して RFC 244 を適用する場合も同様です。
GnuPG 2.0もCAST5をデフォルトの--gnupg
で使用しますが、このデフォルトは GnuPG 2.1ではAES-128に変更されました :
LANG=C gpg2 --verbose --symmetric
gpg: using cipher AES
(詳細な指定のないAESは、GnuPGのAES-128を意味します)
GnuPG 2.1は、RFC準拠の設定に同じアルゴリズムを使用します。
ダイジェストアルゴリズムの場合、同様のアルゴリズム設定の推論が実行されます。 --verbose
がオプションとして設定されている場合、使用されているアルゴリズムが出力されます。
例外は 変更検出コードパケット です。これは、標準で定義されているアルゴリズムを選択せずにSHA-1のみを許可します。
デフォルトは変更されている必要があります。 gnupg-1.4.23のデフォルト(2019年初め)はAES128です。 gnupg-2.1.18のデフォルトはAES256です。両方のバージョンのマンページには、デフォルトがAES128であると記載されていますが、それはgnupg-2.1.18では間違っています。
自分のバージョンのgnupgでこれに自分で答えるには、次のようにします。
echo hi > testfile
gpg -c -vv testfile
rm testfile testfile.gpg
パスフレーズを2回入力すると、次のようになります。
gpg: using cipher AES
gpg: writing to `testfile.gpg'
または:
gpg: using cipher AES256
gpg: writing to 'testfile.gpg'
AESはAES128を意味します。