--clearsign
我目前处于使用该标志不切实际的情况。
我已经通过签名的大小确定它确实包含某种形式的输入数据(因此,当我输入时gpg --armor --sign file.txt
,的输出file.txt.asc
在多个场合都比原始文件大一分钟),但是,当使用时gpg --verify file.txt.asc
,我只能知道该文件是由我签名的,而不知道它的内容是什么,即使使用详细标志也是如此。
如果原始数据无法恢复,那么签名还有什么意义呢?因为签名只显示签名日期和签名人。如果我是 MITM,难道我不能复制签名并假装我是发送者吗,即使日期有点偏差?
答案1
如何使用 GnuPG 从签名中检索原始数据?
如果包含原始内容(即您没有创建独立的签名),则可以使用该--output
选项导出签名的数据。
gpg --output file.txt --verify file.txt.asc
GnuPG 猜测您想要在不传递任何命令的情况下执行完全相同的操作:
gpg file.txt.asc
如果原始数据无法恢复,那么签名还有什么意义呢?因为签名只显示签名日期和签名人。如果我是 MITM,难道我不能复制签名并假装我是发送者吗,即使日期有点偏差?
签名始终基于原始消息的哈希值。创建分离签名(不包含整个原始消息)时,它仍包含哈希值。这样,收件人的 OpenPGP 实现可以再次对消息进行哈希处理,并验证此哈希值是否也包含在签名中以及签名是否正确。