如何找出 PGP 加密中使用的对称加密算法(使用 GPG)?

如何找出 PGP 加密中使用的对称加密算法(使用 GPG)?

我希望能够检查使用公钥通过 GPG 加密文件时使用了哪种(内部)对称算法。

我在某处读到过可以用它完成这件事--list-packets,所以我尝试了

$ gpg --list-packets encrypted_file.asc 
gpg: encrypted with 256-Bit ECDH key, ID 0865135E90D1AF38, created 2020-03-20
      "First Last <[email protected]>"
# off=0 ctb=84 tag=1 hlen=2 plen=94
:pubkey enc packet: version 3, algo 18, keyid 0865135E90D1AF38
    data: [263 bits]
    data: [392 bits]
# off=96 ctb=d2 tag=18 hlen=3 plen=1965 new-ctb
:encrypted data packet:
    length: 1965
    mdc_method: 2
# off=118 ctb=a3 tag=8 hlen=1 plen=0 indeterminate
:compressed packet: algo=1
# off=120 ctb=cb tag=11 hlen=2 plen=0 partial new-ctb
:literal data packet:
    mode b (62), created 0, name="_CONSOLE",
    raw data: unknown length

我以为对称加密算法是在 中编码的mdc_method,但无论我使用什么算法加密,它总是显示2在那里。所以这似乎不是正确的方法。

我如何才能找出对称算法?

答案1

诀窍是-vv --show-session-key向命令添加选项:

$ gpg -vv --show-session-key --list-packets encrypted_file.asc 

这会在输出中添加如下行:

gpg: AES192 encrypted data
gpg: session key: '8:32050C047C47C519E76901EFC47FDFED0CD87CDB85809AFE'

冒号前的数字(8此处)是根据此列表(取自GnuPG 源):

typedef enum
 {
 CIPHER_ALGO_NONE = 0,
 CIPHER_ALGO_IDEA = 1,
 CIPHER_ALGO_3DES = 2,
 CIPHER_ALGO_CAST5 = 3,
 CIPHER_ALGO_BLOWFISH = 4, /* 128 bit */
 /* 5 & 6 are reserved */
 CIPHER_ALGO_AES = 7,
 CIPHER_ALGO_AES192 = 8,
 CIPHER_ALGO_AES256 = 9,
 CIPHER_ALGO_TWOFISH = 10, /* 256 bit */
 CIPHER_ALGO_CAMELLIA128 = 11,
 CIPHER_ALGO_CAMELLIA192 = 12,
 CIPHER_ALGO_CAMELLIA256 = 13
 }
cipher_algo_t;

因此在这种情况下,文件是使用 AES-192 进行编码的。

请注意,这AES意味着 AES-128。

相关内容