我使用 Thunderbid、Enigmail、GnuPG 和 pinentry。
当我收到加密消息时,如何确定使用哪种算法:
- 用于加密
- 用于校验(SHA1 或非 SHA1)
- 用于压缩
答案1
我不知道有什么方法里面Thunderbird,但将消息存储为文件并放入 shell 将显示您正在查找的信息。
变得冗长
gpg -vv
将在输入上输出非常详细的信息,包括您正在查找的信息。
一个例子
可以通过使用您自己的密钥对消息进行加密和签名来生成输出示例:
echo 'foo' | gpg --recipient a4ff2279 --encrypt --sign | gpg -vv
稍微剥离的输出(删除与问题根本无关的庞大部分)如下所示:
:pubkey enc packet: version 3, algo 1, keyid CC73B287A4388025
data: [4095 bits]
[snip, gpg asking for passphrase]
gpg: public key encrypted data: good DEK
:encrypted data packet:
length: unknown
mdc_method: 2
gpg: encrypted with 4096-bit RSA key, ID A4388025, created 2014-03-26
"Jens Erat (born 1988-01-19 in Stuttgart, Germany)"
gpg: AES256 encrypted data
:compressed packet: algo=2
:onepass_sig packet: keyid 8E78E44DFB1B55E9
version 3, sigclass 0x00, digest 8, pubkey 1, last=1
:literal data packet:
mode b (62), created 1418376556, name="",
raw data: 4 bytes
gpg: original file name=''
foo
:signature packet: algo 1, keyid 8E78E44DFB1B55E9
version 4, created 1418376556, md5len 0, sigclass 0x00
digest algo 8, begin of digest 81 67
hashed subpkt 2 len 4 (sig created 2014-12-12)
subpkt 16 len 8 (issuer key ID 8E78E44DFB1B55E9)
data: [4095 bits]
gpg: Signature made Fri Dec 12 10:29:16 2014 CET using RSA key ID FB1B55E9
gpg: using subkey FB1B55E9 instead of primary key A4FF2279
[snip, trust validation]
gpg: binary signature, digest algorithm SHA256
gpg: decryption okay
解释输出
如果 GnuPG 仅打印算法 ID(如压缩),则可以在以下位置查找这些算法 ID:RFC 4880,“常量”部分。具体来说,对于这个示例,我们将使用以下算法:
- 用于对称加密的 AES256
- MDC 2 表示修改检测代码的 SHA1,这是目前唯一定义的
- 压缩算法2,解析为ZLIB
- SHA256 用于签名