导出到智能卡后恢复 GPG 密钥

信息安全 gnupg
2021-09-09 04:42:49

导出我的私钥后,我使用keytocard将我的私钥移动到智能卡上。这很好用,我可以按预期签署和使用 GnuPG。

现在我想回去在我的 GnuPG 数据库中拥有私钥。由于我备份了私钥,我认为这应该很容易,并尝试简单地导入它:

gpg --import-ownertrust mybackup

但是,这似乎无济于事。钥匙仍然没有附加卡,当我尝试签署某些东西时,GnuPG 会要求这张卡。

即使删除密钥并重新导入似乎也无济于事:

$ gpg --expert --delete-keys <KEYID>
$ gpg --edit-key <KEYID>
gpg (GnuPG) 2.1.11; Copyright (C) 2016 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

gpg: key "<KEYID>" not found: No public key
$ gpg --import-ownertrust mybackup

gpg: key <KEYID>: secret key imported
gpg: Total number processed: 5
gpg:               imported: 1
gpg:              unchanged: 1
gpg:       secret keys read: 5
gpg:   secret keys imported: 1
gpg:  secret keys unchanged: 2

这样一来,GnuPG 似乎导入了密钥。但是如果我尝试例如签名,GnuPG 仍然会要求智能卡。此外 --edit-key 仍然显示“card-no”。似乎使用上面的删除键操作没有删除此信息。如何在不参考智能卡的情况下恢复私钥?

2个回答

所有者信任导出不是私钥备份,但包含您发布的信任。

如果您导出了私钥 ( --export-secret-keys),--import它们。GnuPG 2.1 之前的版本不能合并私钥,所以你需要完全删除密钥并重新导入(不要忘记--edit-key密钥并检查它是否仍然通过trust命令分配了最终信任)。

如果您混淆了 ownertrust 导出和密钥导出,并且没有导出密钥(或有其他备份),那么您将被卡上的私钥卡住。该OpenPGP的智能卡也不会允许导出私钥。

如果您深入研究第一个答案的评论,您会发现 GPG 2.1 中存在一个阻止--delete-secret-and-public-keys工作的错误建议的解决方法是弄乱您的.gnupg目录。但是,如果您只是避免保存更改,则不会删除密钥。