最近入手了一个YubiKey NEO,据说可以安全地存储PGP密钥,研究了一个晚上,现在把一些心得分享给大家。
首先普及一下YubiKey的一些概念。YubiKey是一种多功能的硬件认证设备,它可以作为PGP的私钥存储设备使用。PGP私钥一旦被写入YubiKey,就只能在YubiKey内凭正确的PIN码参与加解密运算,无法再被读出,从而保证YubiKey内部的PGP私钥不会被坏人非法复制和使用。Yubi提供了3个密钥存储区,可以同时存储3个密钥,分别对应PGP密钥的三种用途 – 解密、签名和认证。下面就来看看如何使用YubiKey保护PGP私钥吧。
首先需要在终端内执行“gpg –edit-key DD32682C”命令,其中DD32682C为需要存储到YubiKey的主密钥的ID,执行后命令行提示符变成“gpg>”。

然后执行keytocard命令,系统会问你一些问题:
- “Really move the primary key?”,选y;
- “请选择在哪里存储密钥:”,选1,把密钥存储到签名密钥存储区。

然后再次执行keytocard,这次“请选择在哪里存储密钥:”选3,把密钥存储到认证密钥存储区。
到这里,我们已经把签名密钥和认证密钥都存储到YubiKey里了。接下来我们要把加密密钥也存储到YubiKey里。
首先执行key 1选择一个可用于加密的子密钥,命令执行完成后相应的密钥会用“*”标识,表示当前操作的是该子密钥。

然后执行keytocard,系统同样会问你“请选择在哪里存储密钥:”,由于当前选择的子密钥只能用于加密,所以只能选择2把密钥存储到加密密钥存储区。
最后执行quit,并选择y保存更改。
到这里就大功告成了,以后使用这些密钥的时候都需要插入YubiKey并输入正确的PIN码才能进行。
发表回复