encfs 如何以及在哪里存储加密目录的密码?
据我所知,encfs 用于encfs6.xml
存储使用密码编码的实际解密密钥。我还了解这encfs6.xml
是解密所需的唯一文件。因此,我假设密码哈希也应该存储在同一个文件中。但是,我只在文件中看到encodedKeyData
和。saltData
我想知道的是 encfs 如何通过中提供的信息确保我输入了正确的密码encfs6.xml
答案1
本次问答如何解密算法确定您尝试的密码是否正确建议需要知道密码是否正确的解密算法使用 HMAC 来验证密码的正确性。
因此,当能够通知用户解密操作是否成功产生预期数据很重要时,密码学工程师使用消息验证码。基于哈希的 MAC 允许将候选明文与经过身份验证的哈希值进行比较。如果检查通过,那么我们就知道它是正确的明文,然后能够通知用户解密功能已按预期成功。
一些关于环境设计:
- 有卷密钥,用于加密所有文件名和内容
- 用户提供的密码用于解密卷密钥
您提供的密码用于解密音量密钥。
技术
Encfs 使用第三方库(默认为 OpenSSL)的算法来加密数据和文件名。
用户提供的密码用于解密卷密钥,并且卷密钥用于加密所有文件名和内容。这样就可以更改密码,而无需重新加密所有文件。
根据这个安全审计
- EncFS 使用相同的密钥来加密数据和计算 MAC
- EncFS 使用 64 位 MAC。
- EncFS 使用 Mac-then-Encrypt
- MAC 标头的目的是防止对密文具有读/写访问权限的攻击者能够在不被发现的情况下进行更改。不幸的是,此功能提供的安全性很少,因为它是由 .encfs6.xml 配置文件中的选项控制的
回答评论中的问题,MAC 被保存为每个加密文件的一部分。
答案2
查看 encfs 源代码后发现,前 4 个字符(字节)似乎encodedKeyData
是用于 HMAC 验证的哈希值。
和