使用GPG管理Yubikey密钥
前不久入手了一块 Yubikey,主要是用来为日常的账号做二次验证用。不过 Yubikey 除了用作二次验证的物理设备之外还可以充当智能卡,往里面放密钥。现在 Yubikey 不仅支持 RSA,还支持 ECC ,感觉拿来做日常加密签名还是不错的。 不过本人环境现在主要是 Windows,按官方文档在 Windows 下安装的 Gpg4win 在生成 ECC 密钥的时候会出现以下警告:
warning: lower 3 bits of the secret key are not cleared
这是ChatGPT的解释
这条警告指出在处理密钥时,密钥的最低 3 位没有被清除。在计算机安全中,"清除密钥的位" 意味着在密钥不再需要时,确保内存中的密钥值被重置或擦除,以防止密钥泄露。
可能的原因:这可能是 GPG 在 Windows 上的一个特定行为或一个未解决的问题。密钥生成过程中的这种微小差异可能是由于不同操作系统的内存管理方式或 GPG 在不同平台上的实现细节差异造成的。
安全影响:这通常是一个相对较小的安全问题,但它表明密钥生成过程中可能存在细微的安全疏漏。然而,除非存在高级别的安全威胁,否则这种情况不太可能被利用。
但是在Linux下没有这个警告,我猜是版本差异导致的。不过既然Linux下没有警告我就在Linux下生成了。
最后密钥是在 WSL2(Debian) 下生成,然后将密钥导入 Yubikey 是在 Windows 下完成的。
安装GnuPG
https://gnupg.org/download/index.html Windows 和 WSL2 下都要装。Windows 就装 Gpg4win,WSL2 下就用 apt 安装。
apt install gpg
生成密钥
Windows 的硬盘会被挂载到 WSL2 下的 /mnt 目录下,为了在 Windows 下可以获取成生的密钥,这里以 D 盘为例,在 /mnt/d 目录下生成密钥。
mkdir -p /mnt/d/gpg
cd /mnt/d/gpg
gpg --full-gen-key
按照提示生成密钥即可,我在 2.2.27 版本下没有看到有 ECC 密钥生成的选项,需要进到专家模式才可以,也许新版会默认有。 专家模式用 --expert 选项开启。
gpg --expert --full-gen-key
查看生成的密钥
公钥用小写的 -k 选项查看。
gpg -k
私钥用大写的 -K 选项查看。
gpg -K
分别生成加密、签名、验证密钥
gpg --edit-key [密钥 ID]
然后会进入到 gpg 的交互模式,输入addkey
。
gpg> addkey
加密和签名的密钥都没有难度,按提示操作即可。 验证密钥需要在专家模式下操作:
gpg --expert --edit-key [密钥 ID]