我对 GPG、SSH 等等还不熟悉,并且不确定最佳实践是什么。
我有一个 USB 设备,能够生成并保存 GPG||SSH 密钥而无需离开设备。它还允许签名,并在本地计算机上输出。
我希望此设备上的密钥作为我的主密钥M
,但日常使用此设备不方便。因此,我希望有另一把A
由主密钥签名的密钥,我可以将其保存在本地并用于正常任务。(可能使用 Yubikey 来锁定它阿拉)。
由于我认为以“正常方式”生成的子密钥仍然不会离开设备,是否存在一种标准方式可以在A
我的本地机器上生成一个新密钥,然后将其签名为的子密钥M
?
编辑
需要澄清的是,该设备不是 Yubikey,无法将密钥传输给它。它在功能上更类似于Trezor,其中密钥只能在设备上生成,并且不能复制到设备上或从设备上复制出来。
Yubikey 方法不错,但我认为如果 Yubikey 被盗,这种方法很容易受到攻击。类似 Trezor 的方法是设备附加身份验证层,因此即使被盗也无法使用。只需 5 美元即可进行扳手攻击!
编辑2 (尽管我猜想对设备制造商也存在着隐性的信任)
答案1
使用 YubiKey 的一个极好的资源是 YubiKey 使用指南,其自我描述为:
这是使用 YubiKey 作为智能卡存储 GPG 加密和签名密钥的实用指南。
还可以为 SSH 创建身份验证密钥并与 gpg-agent 一起使用。
存储在 YubiKey 等智能卡上的密钥似乎比存储在磁盘上的密钥更难被窃取,并且方便日常使用。
使用 YubiKey 4 为 Debian GNU/Linux 8 (jessie) 编写的说明 - 支持 4096 位 RSA 密钥 - 在 OTP+CCID 模式下,已更新至 GPG 版本 2.2.1。其中还包含一些适用于 macOS 的说明。
这里感兴趣的部分是 转移密钥 其中包含以下警告:
将密钥传输到 YubiKey 硬件只是单向操作,因此请确保在继续操作之前已进行备份。
程序如下:
列出密钥
gpg --edit-key $KEYID
选择并移动签名密钥
key 1 keytocard
取消选择、选择并移动加密密钥
key 1 key 2 keytocard
取消选择、选择并移动身份验证密钥
key 2 key 3 keytocard
检查你的工作
gpg --list-secret-keys
导出公钥
gpg --armor --export $KEYID > /mnt/public-usb-key/pubkey.txt
或者,可以将其上传到公钥服务器
gpg --send-key $KEYID
更多信息请参阅文章。