当我签署文档时,我可以选择要使用的密钥,例如:
gpg --default-key=BF8C1203 --clearsign message.txt
Run Code Online (Sandbox Code Playgroud)
当我验证文档时,我没有看到此选项,我只能执行以下操作:
gpg --verify message.txt.asc
Run Code Online (Sandbox Code Playgroud)
GPG 如何知道使用什么公钥进行验证?有没有办法告诉它使用不同的公钥?
gpg根据您拥有的所有公钥检查签名。如果你有两个私钥,你也应该有相应的公钥。因此,gpg将查看您拥有的所有公钥,包括您朋友的密钥,并找出谁签署了该文件。
如果文件是由我签名的,而您没有我的公钥,则无法验证我的签名,直到您从https://pgp.mit.edu/gpg等公钥存储库下载我的公钥。
公钥和私钥之间存在独特的关联。也就是说, 如果发送者使用某个私钥对消息进行签名,并且您使用相应的公钥验证签名,则只有在消息未被更改的情况下,签名验证才会成功。
公共和私有之间关联的验证过程和性质因您正在考虑的密码系统(RSA、DSA 等)而异,但上述陈述适用于任何非对称方案。
真正重要的是,发送者是唯一能够产生有效签名的人,因为他/她是唯一知道私人信息的人,但任何人都知道公共信息,因此任何人都可以验证签名。
签名后,GPG 会在短信中添加一个令牌,可用于验证消息在传输过程中没有被更改:这就是签名。您不需要 GPG 来读取消息,因为文本本身未加密,只有一个额外的令牌,它可以是消息末尾的 radix64 编码的 blob,也可以是具有类似结构的文本附件。
GPG 不会直接对消息进行签名,而是对消息的加密哈希(通常是 SHA-1 或 SHA-2)进行签名。验证时发生的情况是使用发送者的公钥来验证签名,以确保接收到的哈希值实际上是由发送者发起的。如果发送者计算的哈希值被认为是真实的,则将其与接收者计算的哈希值进行比较。如果两个阶段都成功,则消息已正确签名。
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
343 次 |
| 最近记录: |