![将 EncFS 的配置文件存储在 SmartCard/Token 中](https://linux22.com/image/1480781/%E5%B0%86%20EncFS%20%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8%E5%9C%A8%20SmartCard%2FToken%20%E4%B8%AD.png)
我曾经将随机生成的密钥文件存储在智能卡中,并且 TrueCrypt 能够使用 PKCS #11 访问该密钥文件。
我现在正在尝试 EncFS。有些人抱怨它将一些加密数据(迭代次数、盐等)存储在纯文本 XML 文件中。这些数据对于攻击者来说很有价值,因此人们建议将文件保存在安全的地方。
当时我想到将其存储在智能卡/令牌中。XML 文件有几个字节超过 1KB,因此任何智能卡都应该能够存储它。
问题是,通常,这些密钥文件由每个应用程序使用 PKCS #11 API 直接读取。在 Windows 中,我使用 EncFSMP 来处理 EncFS 挂载。它只有一个用于设置配置文件为外部的复选框,以及一个简单的打开文件对话框,用于在普通文件系统中选择文件。没有 TrueCrypt 那样的 PKCS #11 接口。
有人知道怎样实现这个功能吗?
我在 Google 上搜索并没有找到解决方案,我想没有人会创建一个将智能卡安装为 Windows 驱动器的软件,以便它模拟文件系统并且任何应用程序都可以使用旧的 fopen() 读取密钥文件。
我相信可以开发一个 EncFS GUI 作为 EncFSMP,它支持 PKCS #11 并读取密钥文件并将其作为配置 XML 提供给 EncFS,但当然我们需要一个具备 EncFS 和 PKCS #11 技能的人来完成这项工作。
如果有其他软件(如 eCryptFS)支持 SmartCard 密钥文件,我也想知道。到目前为止没有找到任何信息,似乎只有 TrueCrypt 具有此功能。
答案1
.encfs6
我认为(当前命名,曾经是)文件中没有任何真正敏感的内容.encfs5
,盐和迭代主要阻止彩虹表,并且可能对字典攻击稍微有帮助,但如果您使用字典单词作为密码,那才是真正应该改变的。
即使 PGP/GPG 加密文件也可以很容易地看到盐值和计数,-vv
在要求输入密码之前添加它们就会显示出来:
$ gpg -vv sample.gpg
:symkey enc packet: version 4, cipher 9, s2k 3, hash 2
salt x0x0x0x0x0x0x0x0, count 99999 (99)
gpg: AES256 encrypted data
...
如果确实存在此类数据易被查看的安全问题,PGP/GPG 肯定会采取不同的做法。
您最好花点精力去寻找一个程序来读取和使用存储在智能卡/令牌上的密码,甚至可以自动将其输入到任何点击的窗口中,或者宏或类似的东西?
稍微相关:.encfs6
配置文件肯定应该是备份安全的地方,如果丢失了,那么您必须尝试猜测盐和参数才能重新进入加密文件,即使知道密码,恢复访问权限也不是一项简单快速的任务。