gpg 不要求在一个加密文件上输入密码

gpg 不要求在一个加密文件上输入密码

我的电脑上有一个测试加密文件,当我运行时

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]

相关内容