web-dev-qa-db-ja.com

GnuPGのデフォルトの暗号アルゴリズムは何ですか?

私は知っています、GnuPGでAES256を使用して暗号化することを強制できます

gpg --cipher-algo AES256

または、~/.gnu/gpg.confの特別な設定を使用します。

しかし、このスイッチを見逃した場合、GnuPGのデフォルトの暗号アルゴリズムは何ですか?

24
delete

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コンプライアンス

一方、 RFC 488 に続いてOpenPGPに厳密に準拠すると、トリプルDESにドロップされます。

gpg --rfc4880 --verbose --symmetric
gpg: using cipher 3DES

--rfc2440を使用して RFC 244 を適用する場合も同様です。

GnuPG 2.1のデフォルトはAES-128です

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のみを許可します。

25
Jens Erat

デフォルトは変更されている必要があります。 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を意味します。

1
raf