PGP 卡是一种智能卡,这种智能卡可以执行加密、解密、数字签名/验证、认证等任务。它允许我们安全地存储密钥。
-- Locez
致谢
转载自 | http://locez.com/linux/cryptography/yubikey-pgp-card/
作者 | Locez
本文环境
◈ OS:Gentoo
◈ 内核:4.9.76
◈ gpg (GnuPG): 2.2.4
◈ yubikey-manager: 0.6.0
◈ pcsc-tools: 1.4.27
什么是 PGP 卡?
在加密技术中,PGP 卡是一种智能卡,这种智能卡可以执行加密、解密、数字签名/验证、认证等任务。它允许我们安全地存储密钥。私钥和密码不能用任何命令或功能从卡上读取,但是可以将新密钥写入到卡上覆盖旧密钥。Yubikey 里面有 PGP 卡的功能,因此可以将密钥安全地存进去,使得我们的密钥有一个物理设备的载体,类似于银行的 U 盾。
软件安装
Yubikey 相关的包都被 Gentoo 标记为 ,所以首先是要解除掉才能安装:
将以下内容填入:
安装 yubikey-manager:
安装 pcsc-tools:
连接设备
因为本人是的桌面环境是 awesome,因此需要禁用 功能,只启用 、:
注意:在其它桌面环境中,如启用全部 3 个功能只需要 即可。
启动 pcscd 守护进程:
测试连接:
编辑 PGP 卡信息
设置密码等信息,默认的 PIN 是 ,PUK 是 :
设置个人信息:
生成与导入 key
生成 PGP 主密钥:
此时可以动动鼠标键盘让他收集足够的随机数据。
生成一个用于认证的子密钥:
然后跟着向导进行选择就可以了,通常是选择 ,然后 位密钥 其中子密钥对的类型选择应该如下:
然后重复上面的操作再次添加一个用于签名的子密钥,最终效果大概如下,使用 命令保存退出:
备份公钥与私钥
当我们把密钥导入 Yubikey 的时候,我们就无法取出密钥,因此在导入之前最好备份 备份主密钥私钥:
备份主密钥公钥:
当然也可以对单独子密钥进行备份,语法如下:
为子密钥的指纹信息。子密钥公钥当然也可以单独导出,但是在导出主密钥公钥的时候其实已经把子密钥公钥导出了,因此可以不必重复备份。
导入进 Yubikey
备份做好以后,就可以将 密钥导入进 Yubikey 了,通常不建议直接将主密钥导入,因此在本文除了主密钥外,另外有三个子密钥用于导入进 Yubikey。
采用 语法选择或者取消选择密钥,主密钥为 0, 其它依次递增,被选中会有星号。
然后接着:
取消选择子密钥 1 并选择子密钥 2:
重复操作,直至把 3 个子密钥都导入进 Yubikey,最后 命令保存,当你看到多了这样的 字样即表面导入成功:
删除主密钥私钥
通常,为了保证安全,日常操作采用子密钥足以,主密钥私钥应该离线保存在一个非常安全的地方,对的就是刚刚备份的那些东西需要离线存储,例如找个保险柜,此时先删除主密钥私钥:
还可通过输入以下命令进行确认, 后的 即表明主密钥私钥不可用:
同样输入 会看到 字样,是子密钥可用,而不是原来的主密钥了。
简单测试
为了验证卡片写入成功,做个简单的测试,先拔掉 Yubikey:
空行结束,然后会要求你插入 Yubikey 并输入 PIN 进行加密。
解密如下:
参考资料
◈https://developers.yubico.com/PGP/
◈https://en.wikipedia.org/wiki/OpenPGP_card
◈https://wiki.archlinux.org/index.php/GnuPG
◈https://zhuanlan.zhihu.com/p/24103240
领取专属 10元无门槛券
私享最新 技术干货