有没有一种方法可以使用不使用 OpenPGP 的 Yubikey 来加密单个文件?
我使用 Yubikey 进行 ssh 登录和加密单个文件(密码存储)。Yubikey 仅在 CCID 模式下运行(我当前不使用 OTP 或 U2F)。所有操作都需要物理存在测试。
到目前为止,我一直使用 Yubikey 作为 OpenPGP 智能卡以及:
gpg-agent --enable-ssh-support
用于 ssh 支持;和- gnupg.vim 插件用于加密文件。
GnuPG 笨重、不可靠且难以编写脚本。我想停止在此模式下使用 Yubikey。
我有另一个配置为 NIST PIV 智能卡的 Yubikey。我使用 OpenSSH 的 PKCS11 支持和常规 ssh 代理。这比 gpg 工具可靠得多,但它不提供单个文件加密支持。
据我所知,使用 PIV 智能卡进行单个文件加密有几种可能的选择:
- 某种
ssh-agent
+vim
hack? - 也许有一个基于 PKCS11 的无缝文件加密工具?
- 使用 yubikey 上的其他插槽之一进行文件加密,也许使用 OpenSC 或一些 libccid 的东西?
- 直接与 Yubikey 对话的开源密码管理器?
答案1
这是我编写的一个 python 脚本,用于自动执行以下过程:
要加密,ssh-agent 的有线协议(请参阅RFC 草案了解详细信息)允许您使用私钥签署任意数据,因此:
- 选择一个随机数
- 要求 ssh-agent 签名
- 使用签名派生对称密钥
- 使用对称密钥加密您的数据
- 将随机数和加密数据(但不包括对称密钥)保存到磁盘
并解密:
- 从磁盘读回随机数和加密数据
- 要求 ssh-agent 签署随机数
- 使用签名派生用于加密数据的相同对称密钥
- 解密数据!