使用明确授予的公钥验证签名

时间:2015-12-04 09:56:51

标签: digital-signature gnupg

假设您要分发文件foo及其分离的签名foo.sig和您的公钥public.key

假设您希望进一步使签名验证尽可能简单,即以最少的步骤进行:只需一个命令。理想情况下像

gpg2 [magic option combo here involving foo, foo.sig, public.key]

我已经上下几次阅读了gpg2手册页,但似乎接收者需要先将导入公钥发送到他的钥匙圈。

有没有办法避免导入公钥并明确指定它?我想避免接收器被新创建的$HOME/.gnupg目录及其内容发送垃圾邮件。

或者我是否从安全的角度尝试了一些愚蠢的事情?

1 个答案:

答案 0 :(得分:1)

使用gpgv代替,您可以传递密钥环文件(单个导出的密钥也可以作为密钥环)。如果密钥环路径中没有包含斜杠,gpgv将在GnuPG主目录中搜索,因此如果不涉及斜杠,则传递绝对路径或至少包括./以表示当前工作目录否则:

# Create and sign file
echo foo >foo.txt
gpg --local-user a4ff2279 --sign foo.txt
# Create "keyring" / export key
gpg --export a4ff2279 >a4ff2279.gpg
# Verify using gpgv
gpgv --keyring ./a4ff2279.gpg foo.txt.gpg

最后,导入和不导入密钥之间的唯一区别是密钥是如何验证的。如果您不导入密钥,则不通过信任,认证和本地信任网络进行验证,如果验证密钥的唯一方法是“从可靠来源下载”,而不是导入密钥则完全没问题。如果您只从不受信任的Web服务器获取文件,签名和密钥而没有加密连接和证书,则OpenPGP签名会降级为简单的校验和以实现传输错误,而不是提供伪造文件,签名和密钥的攻击