我的电脑上有一个测试加密文件,当我运行时
gpg(2) --verify message.txt.asc
我得到:
gpg: Signature made Tue Mar 3 21:16:41 2015 PST using RSA key ID *******
gpg: Good signature from "John Doe <[email protected]>"
gpg: WARNING: not a detached signature; file 'message.txt' was NOT verified!
如果我跑
gpg(2) -d message.txt.asc
它不会提示我输入私钥上的密码,但仍会解密 gpg 消息。我拥有的其他随机 .gpg/.asc 文件需要我使用密码解密,而 --verify 不起作用。
原始文件是怎么处理的,以至于 --verify 有效,我可以在不使用密码的情况下解密?是否有 gpg 命令可以分析给定的文件,以便我可以了解它为什么没有密码保护?我认为它可能是一个分离的签名(尽管没有默认的 .sig 扩展名),但其中也有一条消息。我没有运行 fwiw 的 gpg-agent。
答案1
所以我想我已经搞明白了。有问题的文件一定是只用选项创建的,--sign
而不是同时用两者创建的--sign --encrypt
。通过查看该文件与另一个已签名和加密的文件之间的对比,您可以看到它们都有签名,但仅使用选项创建的文件--sign
没有:encrypted data packet
,只有文字数据包:
(10:35) gpg > gpg --list-packets test2.txt.enc.asc
:pubkey enc packet: version 3, algo 1, keyid
data: [2048 bits]
You need a passphrase to unlock the secret key for
user: "John Doe <[email protected]>"
2048-bit RSA key, ID ********, created 2015-02-28
:encrypted data packet:
length: 405
mdc_method: 2
gpg: encrypted with <a key>
:compressed packet: algo=2
:onepass_sig packet: keyid
version 3, sigclass 0x00, digest 8, pubkey 1, last=1
:literal data packet:
mode b (62), created 1463246548, name="test2.txt",
raw data: 32 bytes
:signature packet: algo 1, keyid
version 4, created 1463246548, md5len 0, sigclass 0x00
digest algo 8, begin of digest 35 d8
hashed subpkt 2 len 4 (sig created 2016-05-14)
subpkt 16 len 8 (issuer key ID)
data: [2045 bits]
相对:
gpg > gpg --list-packets test2.txt.asc
:compressed packet: algo=1
:onepass_sig packet: keyid
version 3, sigclass 0x00, digest 2, pubkey 1, last=1
:literal data packet:
mode b (62), created 1463246421, name="test2.txt",
raw data: 32 bytes
:signature packet: algo 1, keyid
version 4, created 1463246421, md5len 0, sigclass 0x00
digest algo 2, begin of digest b9 a7
hashed subpkt 2 len 4 (sig created 2016-05-14)
subpkt 16 len 8 (issuer key ID)
data: [2047 bits]