GnuPG 使用什么密钥进行签名验证?

GnuPG 使用什么密钥进行签名验证?

假设当我运行以下命令时,我的 bash 屏幕上有三个密钥对的列表:

gpg2 --list-keys

gpg2 --list-secret-keys

我的问题是,当我运行以下命令来验证签名的文件时,该工具使用哪个密钥对?

gpg2 --verify test.sig

它是否会逐个检查所有签名密钥以找到匹配的密钥或完成所有密钥?

答案1

OpenPGP 签名包含对用于签名的密钥的引用。GnuPG 将使用此密钥来验证签名。

使用我自己的密钥签名的一些文档的示例,使用以下命令进行分析gpg --list-packets

:compressed packet: algo=1
:onepass_sig packet: keyid 8E78E44DFB1B55E9
    version 3, sigclass 0x00, digest 2, pubkey 1, last=1
:literal data packet:
    mode b (62), created 1453746673, name="",
    raw data: 4 bytes
:signature packet: algo 1, keyid 8E78E44DFB1B55E9
    version 4, created 1453746673, md5len 0, sigclass 0x00
    digest algo 2, begin of digest fc 6a
    hashed subpkt 2 len 4 (sig created 2016-01-25)
    subpkt 16 len 8 (issuer key ID 8E78E44DFB1B55E9)
    data: [4095 bits]

8E78E44DFB1B55E9是用于签名的签名子密钥(我启用了长密钥 ID,以防您对 16 个字符的十六进制 ID 感到好奇)。

对于加密,可以隐藏收件人密钥。在这种情况下,GnuPG 必须尝试所有可用的加密密钥来解密消息。

可能涉及进一步的密钥来验证签名,这意味着在信任网络中找到信任路径:但这是另一个大话题。

相关内容