YubiKey是一个支持多种安全协议的 USB 密钥。它旨在通过强大的双因素、多因素和无密码认证来消除帐户被盗。某些 YubiKey 型号也支持个人身份验证 (PIV)。
PIV 是一项最初为美国政府设计的安全标准。它为各种目的创建了一个框架。这个项目的一个有趣功能是能够使用存储在 YubiKey 上的私钥执行 RSA 或 ECC 签名/解密操作。这些密钥无法从 YubiKey 中导出或被盗取。
加密模型基于混合密码系统。它使用两把密钥执行加密操作:
KEK(密钥加密密钥):这是 RSA 非对称密钥。存储在 YubiKey 中的私钥用于解密 DEK(数据加密密钥),而公钥用于加密 DEK。
DEK:这是用于加密/解密文件的 AES 对称密钥。它由 YubiEnc 生成,然后使用存储在 YubiKey 上的 KEK 安全加密。
YubiEnc 使用以下算法进行加密操作:
非对称操作:RSA 2048 与 PKCS#1 v1.5 中的填充方案。
对称操作:AES256GCMHKDF1MB。密钥使用Google Tink加密库生成。
要使用 YubiKey 加密文件,您需要在 YubiKey 的 9d 插槽上创建一个新证书。您可以通过下载YubiKey Manager,插入 YubiKey,并按以下步骤操作:
点击 Application
点击 PIV
点击 Configure Certificates
点击 Key Management
点击 Generate
完成后,您应该在 Key Management(9d 插槽) 中拥有一个证书。强烈建议在 YubiKey 外部创建证书,然后使用导入按钮将其导入 YubiKey。这将创建证书的备份副本,以防您的 YubiKey 损坏,从而无法解密数据。
在 YubiKey 上创建证书后,您可以继续从官方发布存储库下载 YubiEnc 二进制文件。YubiEnc 已在 Linux、MacOS 和 Windows 环境中进行了测试。
要运行 YubiEnc,请使用以下命令:
./yubienc
YubiEnc 将显示帮助菜单和所有支持的命令。主要命令有:
decrypt
: 使用给定的加密 DEK 解密文件/目录。
encrypt
: 使用给定的加密 DEK 加密文件/目录。
newkey
: 创建一个新的 DEK,使用 YubiKey 加密它,并将其存储在文件系统中。
verifykey
: 验证加密的 DEK 是否可以使用 YubiKey 解密。
./yubienc newkey --destination test/
系统会提示您输入 YubiKey 的 PIN 码,并创建一个名为key-10957912_1676475646.yk.enc
的新密钥,最后一部分表示时间戳。
./yubienc verifykey -s test/key-10957912_1676475646.yk.enc
YubiEnc 将验证早期创建的密钥是否使用正确的 YubiKey 生成,并且 PIN 码是否正确。
./yubienc encrypt -s test/toEncrypt/ciao.txt -d /tmp -k test/key-10957912_1676475646.yk.enc
YubiEnc 可以自动检测要加密的数据是文件还是目录。如果找到目录,YubiEnc 将递归加密它同时保持目录结构。
./yubienc decrypt -s /tmp/ciao.txt.enc -d /tmp -k test/key-10957912_1676475646.yk.enc
YubiEnc 将使用给定的密钥解密文件和目录 (递归)。
使用 YubiKey 和 YubiEnc,您可以使用基于硬件的加密安全地加密和解密文件。请确保按照建议备份证书,以防止数据丢失。YubiKey 提供了强大的安全性,并为敏感数据添加了额外的保护层。
标签:Yubikey、加密、密码学、网络安全、Yubico