Warning: realpath(): open_basedir restriction in effect. File(/www/wwwroot) is not within the allowed path(s): (/www/wwwroot/jdzhao.com/:/tmp/) in /www/wwwroot/jdzhao.com/wp-content/plugins/wp-file-manager/classes/backup-storage.php on line 119

Warning: realpath(): open_basedir restriction in effect. File(/www) is not within the allowed path(s): (/www/wwwroot/jdzhao.com/:/tmp/) in /www/wwwroot/jdzhao.com/wp-content/plugins/wp-file-manager/classes/backup-storage.php on line 119

Warning: realpath(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (/www/wwwroot/jdzhao.com/:/tmp/) in /www/wwwroot/jdzhao.com/wp-content/plugins/wp-file-manager/classes/backup-storage.php on line 119
YUBIKEY的GPG/PGP使用不完全实践 - 重光阁-Jundong's Blog

AI (1) mastodon (2) matrix (1) 加密 (3) 境内卡 (1) 境内游 (13) 境外卡 (14) 境外游 (6) 工作 (3) 工作小结 (2) 旅行 (21) 无人机 (1) 服务器 (9) 生活 (10) 美股 (1)

YUBIKEY的GPG/PGP使用不完全实践

最开始,其实不想尝试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-----

2 条回复

  1. GoodBoyboy 的头像

    有硬件密钥的话很方便在其他电脑上进行使用

    1. MR.Zhao 的头像

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

发表回复

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

zh_CNZH_CN