我如何验证为了备份而导出的 gpg 密钥?

我如何验证为了备份而导出的 gpg 密钥?

我已经导出了我的密钥

gpg --export-secret-key "user name" > path/to/secretkeybackupfile.key

然后完成

gpg path/to/secretkeybackupfile.key

它显示密钥的详细信息,即具有正确 ID 的密钥。有没有办法测试它是否真的会解密我使用该密钥创建的文件,从而证明它确实是正确的密钥并且正常工作?

我能看到的唯一方法是删除原始密钥,然后将其副本重新导入 GPG 密钥环...

另外,我注意到,在导出密钥时,它会在没有任何警告的情况下覆盖指定的文件,并且仅包含部分用户名似乎具有与包含整个用户名相同的效果,这是正确的吗?这是所需的行为吗?

答案1

它显示密钥的详细信息,即具有正确 ID 的密钥。有没有办法测试它是否真的会解密我使用该密钥创建的文件,从而证明它确实是正确的密钥并且正常工作?

设置$GNUPGHOME为临时空目录,然后您就可以将密钥导入到新的空白钥匙圈。测试后,取消设置变量(或关闭 shell 窗口),然后您就会回到常规钥匙圈。

mkdir -m 0700 ~/gnupgtest
export GNUPGHOME=~/gnupgtest
gpg --import ~/backup.gpg
gpg --list-secret-keys

另外,我注意到,在导出密钥时,它会在没有任何警告的情况下覆盖指定的文件

shell>操作符总是会覆盖文件,而不会发出警告。重定向操作符包括不是 gpg 的一部分– 它们是你的 shell 语言/语法的一部分,并且无论你使用什么命令,它们的行为都相同。

在 bash 中,您可以使用set -o noclobbermake 来避免覆盖文件;然后,当您真正希望覆盖发生时,>您必须指定>|(bash) 或(zsh)。>!

并且只包含部分用户名似乎与包含整个用户名具有相同的效果,

这是预期的行为;使用 --export 的密钥选择与使用 --list-keys、--recipient 和其他类似选项的密钥选择相同。您始终能够gpg -k fred列出所有匹配的密钥。

更重要的是,您始终能够创建任意数量的具有相同名称和地址的密钥。(例如,我有 4-5 个密钥,当然所有密钥上的名称都相同,只是电子邮件地址不同。我的公钥环也显示,随着时间的推移,几个人拥有多个密钥。)

唯一的始终可靠选择单个密钥的另一种方法是使用其完整指纹。另一种通常可靠的方法是使用 16 位“密钥 ID”(即截断的指纹)。

相关内容