このような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
モジュールで実際に使用されている暗号を確認するにはどうすればよいですか?これを尋ねるより良い場所はありますか?
file
は、いくつかのマジックバイトを探してファイルタイプを判別しますが、OpenPGPパケットを完全には解析しません。 gpg --list-packets
またはpgpdump
を実行すると、すべての暗号化の詳細を表示できます(出力は読みやすいですが、個別にインストールする必要があります)。 RFC 4880、OpenPGP を読むと、非常に技術的な出力を理解するのに役立つ場合があります。