Keybase pgp 导入指令实际上是做什么的?

信息安全 pgp 密钥库
2021-09-03 13:22:05

我创建了一个 Keybase 帐户并导入了“简单”的身份(例如 Twitter、Reddit)。现在是时候在那里获取我的 PGP 密钥了。

我曾期望从 Keybase (Windows) 应用程序中对特定文本进行 PGP 签名并重新上传该签名数据(base64 或类似数据)的说明。相反,我发现的是:

# import a key from gpg's key chain
keybase pgp select
#import from stdin and send the public half to Keybase
cat privkey.asc | keybase pgp import
# for more options
keybase pgp help

起初,我认为它们是按顺序执行的 3 条指令,但后来我意识到它们是你可以做的 3 种不同的主要事情。

有人可以用基本术语(我知道 PGP 和公钥/私钥对的基础知识)解释前两个选项在幕后需要什么吗?

我会提出的具体问题:

  • 选项 1 或 2 是否允许 Keybase 应用程序永久访问我的 PGP 私钥?或者只是一次签署证明公钥是我的证明?
  • 选项 2 是否意味着您需要将私钥保存在当前位置的文件中?该文件是否通常使用您的密码保护?
  • 我应该注意的任何其他特定风险或事情?我想确保的 PGP 私钥仍然是我自己的。

我可以自己推测答案,但既然这是重要的东西,我宁愿问,可以肯定。

2个回答

听起来您正在寻找以下三个中的任何一个:

keybase pgp import -i pubkey.txt
cat pubkey.txt | keybase pgp import
keybase pgp select --no-import

这将导入您的密钥的公共部分,在密钥库上发布它,但阻止他们访问私钥。

另一方面,

cat privkey.asc | keybase pgp import

会将您的私钥的副本发送到 keybase 服务器,这将使其可用于 keybase pgp 命令。和,

keybase pgp select

将查看您的 GnuPG 密钥环,并允许您选择现有的私钥导入密钥库。

有疑问时

keybase pgp <option> help

更新:

上传公钥并从密钥库中保留私钥的选项似乎不起作用。上面列出的第一组选项现在全部返回

  • 错误没有可用的密钥

我自己刚遇到这个问题,发现标准gpg --help文本中没有显示正确的参数:

⇒  gpg --help | grep export
     --export                export keys
     --send-keys             export keys to a keyserver

但是你可以在这里看到它的(非常有限的)帮助文本:

导出密钥

名称

export-secret-keys — 导出密钥

export-secret-keys name ...

描述

这与命令导出相同,但导出的是私钥而不是公钥。这通常不是很有用,并且存在安全风险,因为私钥不受保护。

因此,要导出您的密钥,并将它们导入您的本地密钥库密钥环:

gpg --armor --export-secret-keys MYSECRETKEYID | keybase pgp import`

要自动将您的密钥推送/同步到密​​钥库(以便您可以在其他链接设备上使用它),您可以使用--push-secret

⇒  keybase pgp import --help

..snip..

OPTIONS:
   -i, --infile     Specify an infile (stdin by default).
   --push-secret    Push an encrypted copy of the secret key to the server.

自动执行此操作的完整命令将结束为:

gpg --armor --export-secret-keys MYSECRETKEYID | keybase pgp import --push-secret`