程序员 使用 Yubikey 对文件进行加密!

henry.chen · July 20, 2023 · 41 hits

YubiKey 是什么

YubiKey是一个支持多种安全协议的 USB 密钥。它旨在通过强大的双因素、多因素和无密码认证来消除帐户被盗。某些 YubiKey 型号也支持个人身份验证 (PIV)

什么是 YubiKey PIV

PIV 是一项最初为美国政府设计的安全标准。它为各种目的创建了一个框架。这个项目的一个有趣功能是能够使用存储在 YubiKey 上的私钥执行 RSA 或 ECC 签名/解密操作。这些密钥无法从 YubiKey 中导出或被盗取。

YubiEnc 加密模型

加密模型基于混合密码系统。它使用两把密钥执行加密操作:

  1. KEK(密钥加密密钥):这是 RSA 非对称密钥。存储在 YubiKey 中的私钥用于解密 DEK(数据加密密钥),而公钥用于加密 DEK。

  2. DEK:这是用于加密/解密文件的 AES 对称密钥。它由 YubiEnc 生成,然后使用存储在 YubiKey 上的 KEK 安全加密。

使用的算法

YubiEnc 使用以下算法进行加密操作:

  1. 非对称操作:RSA 2048 与 PKCS#1 v1.5 中的填充方案。

  2. 对称操作:AES256GCMHKDF1MB。密钥使用Google Tink加密库生成。

设置你的 YubiKey

要使用 YubiKey 加密文件,您需要在 YubiKey 的 9d 插槽上创建一个新证书。您可以通过下载YubiKey Manager,插入 YubiKey,并按以下步骤操作:

  1. 点击 Application

  2. 点击 PIV

  3. 点击 Configure Certificates

  4. 点击 Key Management

  5. 点击 Generate

完成后,您应该在 Key Management(9d 插槽) 中拥有一个证书。强烈建议在 YubiKey 外部创建证书,然后使用导入按钮将其导入 YubiKey。这将创建证书的备份副本,以防您的 YubiKey 损坏,从而无法解密数据。

如何使用 YubiEnc

在 YubiKey 上创建证书后,您可以继续从官方发布存储库下载 YubiEnc 二进制文件。YubiEnc 已在 Linux、MacOS 和 Windows 环境中进行了测试。

要运行 YubiEnc,请使用以下命令:

./yubienc

YubiEnc 将显示帮助菜单和所有支持的命令。主要命令有:

  • decrypt: 使用给定的加密 DEK 解密文件/目录。

  • encrypt: 使用给定的加密 DEK 加密文件/目录。

  • newkey: 创建一个新的 DEK,使用 YubiKey 加密它,并将其存储在文件系统中。

  • verifykey: 验证加密的 DEK 是否可以使用 YubiKey 解密。

示例

  1. 创建新密钥:
./yubienc newkey --destination test/

系统会提示您输入 YubiKey 的 PIN 码,并创建一个名为key-10957912_1676475646.yk.enc的新密钥,最后一部分表示时间戳。

  1. 验证早期创建的密钥是否可解密:
./yubienc verifykey -s test/key-10957912_1676475646.yk.enc

YubiEnc 将验证早期创建的密钥是否使用正确的 YubiKey 生成,并且 PIN 码是否正确。

  1. 加密文件/目录:
./yubienc encrypt -s test/toEncrypt/ciao.txt -d /tmp -k test/key-10957912_1676475646.yk.enc

YubiEnc 可以自动检测要加密的数据是文件还是目录。如果找到目录,YubiEnc 将递归加密它同时保持目录结构。

  1. 解密文件/目录:
./yubienc decrypt -s /tmp/ciao.txt.enc -d /tmp -k test/key-10957912_1676475646.yk.enc

YubiEnc 将使用给定的密钥解密文件和目录 (递归)。

总结

使用 YubiKey 和 YubiEnc,您可以使用基于硬件的加密安全地加密和解密文件。请确保按照建议备份证书,以防止数据丢失。YubiKey 提供了强大的安全性,并为敏感数据添加了额外的保护层。

标签:Yubikey、加密、密码学、网络安全、Yubico

No Reply at the moment.
You need to Sign in before reply, if you don't have an account, please Sign up first.