web-dev-qa-db-ja.com

python-gnupgで使用されている暗号を確認するにはどうすればよいですか?

このようなpython-gnupgモジュールを使用してファイルを暗号化しています。最終的には、暗号化にAES256暗号を使用したいと思います。

status = gpg.encrypt_file(fin, recipients=['root@frarakee'], output='foo.bin.gpg')

CLIでファイルを確認すると、PGPメッセージであることがわかります。

# file foo.bin.gpg 
foo.bin.gpg: PGP message

CLIでgpgを使用してファイルを暗号化した場合(Ubuntu 14.04)、fileコマンドはdataと表示しますまだgpgは、AES256を使用していることを示しています。

# gpg --verbose -r root@frarakee --cipher-algo AES256 -e foo.bin
gpg: using PGP trust model
gpg: using subkey 1C32653F instead of primary key A7173E08
gpg: This key belongs to us
gpg: reading from `foo.bin'
File `foo.bin.gpg' exists. Overwrite? (y/N) y
gpg: writing to `foo.bin.gpg'
gpg: RSA/AES256 encrypted for: "132653F root@frarakee <root@frarakee>"

# file foo.bin
foo.bin: data

特に、 python docs 状態:

指定されていない場合、デフォルトのcipher_algoは「AES256」です。

しかし、fileコマンドは、symmetric暗号化を使用した場合にのみこれに同意するようです。

# gpg --cipher-algo AES256 -c /tmp/foo.bin
# file /tmp/foo.bin.gpg 
foo.bin.gpg: GPG symmetrically encrypted data (AES256 cipher)

これがfileマジックのバグなのか、python-gpgモジュールのバグなのか、それとも私の理解だけなのかはわかりません。 gpgまたはpython-gpgモジュールで実際に使用されている暗号を確認するにはどうすればよいですか?これを尋ねるより良い場所はありますか?

5
Koko

fileは、いくつかのマジックバイトを探してファイルタイプを判別しますが、OpenPGPパケットを完全には解析しません。 gpg --list-packetsまたはpgpdumpを実行すると、すべての暗号化の詳細を表示できます(出力は読みやすいですが、個別にインストールする必要があります)。 RFC 4880、OpenPGP を読むと、非常に技術的な出力を理解するのに役立つ場合があります。

1
Jens Erat