最开始,其实不想尝试yubikey的,因为yubikey对GPG/PGP私钥属于只能写入不能导出的设置,况且自己的AIR有没有A口,刚刚2年前打折买的4个YUBIKEY都是A口,嫌麻烦就没有使用。

后来,通过偶然的了解,得知自己可以通过GPG SUITE先行生成几个子钥,然后先行导出私钥备份,然后导出到YUBIKEY,这样就不用担心私钥丢失了,所以本周闲暇时刻,就开始实践YUBICO的GPG/PGP的不完全实践了。

行文前,自己踩的坑要提前说一下,YUBIKEY 5代虽然支持DSA公钥,但是不支持DSA私钥,博主最开始的时候,为了签名内容短一点,采用了DSA签名密钥,导致无法导入到YUBIKEY,害得博主只能重新生成一个新的RSA用于签名的子钥后重新更新了GITHUB和key.jdzhao.com的私钥,全新开始的朋友,可以规避一下这个坑。

完整流程,网上有很多,这里一是为了记录,二是选择重点内容分享给观众。

一、YUBIKEY的PIN和PUK

值得注意的时,用于GPG的PIN和在YUBIKEY MANAGER软件里面的PIV的PIN和PUK是不同的概念,他们彼此都独立的,不要混淆。

我们准备使用YUBIKEY用于GPG时,要通过命令行工具修改USERPIN(用于日常签名和加密)、ADMINPIN(用于私钥的导入),PUK(用于PIN锁定后的重置)。

我们在命令行模式下,通过gpg –edit-key进入yubikey的操作界面,这里是help的截图。

通过输入admin,进入管理员界面, 就能看到一下的操作命令

建议输入passwd,修改PIN、ADMIN PIN,以便私钥的修改和签名的安全。

二、关于GPG/PGP密钥的生成

为了能让我们有机会备份,我们选择第三方生成私钥再导入的方式进行。mac系统可以使用gpg suite,windows系统建议使用gpg4win两款软件,先生成主密钥,然后建议生成3种子密钥(分别用于签名S、加密E、认证A),因为后续再进行添加、注销、删除子钥会影响我们的公钥,造成二次、三次分发的痛苦。

三、私钥的备份

在生成之后,我们首先备份我们的公钥、子钥、注销密钥,GUI可以使用软件直接备份,命令行就是用

gpg –armor –export-secret-keys your-key-id > privkey.asc

进行,导出之后,建议打包或压缩加密存储到安全地带。

四、导入的操作

YUBIKEY导入的操作,要使用命令行工具,而且一般情况下,只导入子密钥,而非主密钥。

输入gpg –expert –edit-key USERID(一般是邮箱或者指纹),就能看到该密钥的整体情况。

sec就是你的主密钥,ssb就是你的子密钥。一般情况下,不能多选,要一个一个导入。

默认第一个是Key 0,我们跳过主密钥,输入key 1,默认选择了第一个子钥,选中之后就会有*号。

然后,键入keytocard,会让你选择槽位(一般情况下,就是签名S槽,身份验证A槽,加密的E槽)

五、状态的查询

通过gpg –edit-card可以查看我们的yubikey状况

能看到我们YUBIKEY的总体状况,比如PIV的设置(一般用于系统的登录),我们的各种已经导入的子钥。对于用于AUTH的子钥,主要用于远程服务器的登录和访问,这个有空了再单独行文探讨一下。

六、日常使用

请注意,导入私钥的时候,会输入你的私钥密码、ADMIN PIN(请注意是ADMIN PIN)

日常使用,是输入USER PIN(普通的PIN),下图是日常加密、签名的PIN窗口(如果你设置了必须接触YUBIKEY ,那么输入PIN后,还需要接触YUBIKEY才能完成,YUBIKEY处于等待模式时,KEY上的指示灯会常闪)

YUBIKEY的GPG/PGP应用重点部分大致就是这些,有其他想到的再补充,欢迎共同交流。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

本处签名,通过YUBIKEY的RSA子钥签发
你可以通过key.jdzhao.com下载我的公钥
并验证本签名的有效性。
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEE6pG3rRqQ57EQTPmw6kx//Ye6jBYFAmY6RIgACgkQ6kx//Ye6
jBZdFQ//ckGWmCOk82r3dQa8GN3Bg8BLiuzX1i7rHs1fdqreBZwRJ5JcXtPOQ2aK
JY1VTpK6P7rJA0j3E5fa3fJ/fQ9+NSLIxD4UHJukIMQMqhN6FbAwf3EUXFS5QRg0
urJ1z4ZkfqpSpMCVABj6cs5P6XaXWa6IU7U3qzv278pN46JuvbWPynFYO+MmbZHK
MM2c4z+hi88MMWa6tSp31gclB7DwmEN2ekP8TggQKck5moO+C2F1KDy+L/31Y+LO
SxOq5EuWk9MObLWzzd8lz5MbBTJswfPc/+wIwNwtHVmi0Qxi80UabXb1dIpGqliZ
bo5e5RQgiULYNv8Kf582suXV8nnTZkRwknB9N/jOp4HecbMInkMGoNj418b1JXS+
Ut+/PT/DXQMrUrrt1OEACe5+ocbHFs9Y6pjXF7QhaANX8Cfrpf+XjnCA28PmXJT3
4mtegbTzyVybcB+6kBKpjd8f56dFoiEZ4qGsSM1k7y25KbL944TijXUDwBLrc3Cx
B3BcfDWvJVYg78nw57zzrmZtRk4lNQsg+Mr+OrhOjhRWWPzxnLVq7yioKOwN4Z/1
MVi0MlxfnDCJ2FXxmaU3aD4dMLQhYRoqkNt7i4ajLeAJ7LIraELkEajpOE/VooWv
So9xR+UbLqCa4w7lMaTUmKlRzegjyZsSbE3CI2uTeilfvZYa9pI=
=FmbH
-----END PGP SIGNATURE-----

Comments (2)

    • 回复

      是的,我后来考虑到,有硬件密钥可以在内网电脑、公用电脑插入使用即可,而不用暴露自己的私钥,所以硬件KEY还是有必要的。

Leave a comment

您的电子邮箱地址不会被公开。 必填项已用*标注

zh_CNZH_CN