使用明确给定的 public 密钥验证签名
Verifying a signature with an explicitly given public key
假设您要分发文件 foo
及其分离的签名 foo.sig
和您的 public 密钥 public.key
.
进一步假设您想使签名验证尽可能简单,即以最少的步骤:只需一个命令。理想情况下是
gpg2 [magic option combo here involving foo, foo.sig, public.key]
我已经上下阅读了 gpg2 手册页几次,但接收者似乎需要先 import 他钥匙圈的 public 钥匙.
有没有办法避免导入 public 密钥并明确指定它?我想避免接收者收到新创建的 $HOME/.gnupg
目录及其内容的垃圾邮件。
或者我是在从安全的角度尝试一些愚蠢的事情吗?
改用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
最后,导入和不导入密钥的唯一区别在于是否验证密钥。如果您不导入密钥,则无法通过信任、认证和本地信任的网络进行验证,如果验证密钥的唯一方法是 "downloading it from a trusted source",则不导入它完全可以。如果你只是从一个没有加密连接和证书的不受信任的网络服务器获取文件、签名和密钥,OpenPGP签名会降级为一个简单的校验和来实现传输错误,而不是提供伪造文件的攻击,签名和密钥。
假设您要分发文件 foo
及其分离的签名 foo.sig
和您的 public 密钥 public.key
.
进一步假设您想使签名验证尽可能简单,即以最少的步骤:只需一个命令。理想情况下是
gpg2 [magic option combo here involving foo, foo.sig, public.key]
我已经上下阅读了 gpg2 手册页几次,但接收者似乎需要先 import 他钥匙圈的 public 钥匙.
有没有办法避免导入 public 密钥并明确指定它?我想避免接收者收到新创建的 $HOME/.gnupg
目录及其内容的垃圾邮件。
或者我是在从安全的角度尝试一些愚蠢的事情吗?
改用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
最后,导入和不导入密钥的唯一区别在于是否验证密钥。如果您不导入密钥,则无法通过信任、认证和本地信任的网络进行验证,如果验证密钥的唯一方法是 "downloading it from a trusted source",则不导入它完全可以。如果你只是从一个没有加密连接和证书的不受信任的网络服务器获取文件、签名和密钥,OpenPGP签名会降级为一个简单的校验和来实现传输错误,而不是提供伪造文件的攻击,签名和密钥。