我想使用 KeePass 和/或 TrueCrypt 的密钥文件;但我在这里有一些担心。
- 密钥文件解密是如何工作的?它是通过运行文件并获取哈希值来实现的吗?还是软件实际上读取了密钥文件的内容并使用该文件的内容作为解密密码?
- 在我看来,这两种方法都很有风险...如果您使用散列方法,则必须确保文件永远不会更改;如果您正在读取文件的内容,则必须确保内容永远不会更改,并且内容不会添加错误的数据。
密钥文件基本上是如何工作的?
答案1
您可能认为密钥文件是包含极长且难以阅读的密码的文件。
这样,该密钥文件一旦设置就无法更改。就像我在 gmail.com 上使用密码“foo123”注册,然后使用“foO123”登录一样。
当你说“内容”时2.我认为你可能想错了。它指的是被使用的整个文件(几乎,见下文),包括任何包装器或元数据,无论你如何称呼它。它被使用了。
这是来自 truecrypt 的密钥文件的文档。请注意,“密钥文件”的其他实现会有所不同。
相关内容如下:
密钥文件
TrueCrypt 密钥文件是内容与密码相结合的文件。用户可以使用任何类型的文件作为 TrueCrypt 密钥文件。用户还可以使用内置密钥文件生成器生成密钥文件,该生成器利用 TrueCrypt RNG 生成具有随机内容的文件(有关更多信息,请参阅随机数生成器部分)。
密钥文件的最大大小不受限制;但是,仅处理其前 1,048,576 个字节 (1 MB)(由于处理极大文件时出现性能问题,所有剩余字节都将被忽略)。用户可以提供一个或多个密钥文件(密钥文件的数量不受限制)。
密钥文件可以存储在符合 PKCS-11 标准的 [23] 安全令牌和智能卡上,并受多个 PIN 码保护(可以使用硬件 PIN 键盘或通过 TrueCrypt GUI 输入)。
所以是的,您可以使用图片/照片、OpenOffice 文档或 mp3 文件。无论它是什么或有多大,只有前 1MB 会用作您的“密码”。不要让它被改变,因为如果被改变而你又没有备份,你的数据将无法恢复。
答案2
我的理解是,文件本身(表示为 byte[])用作密钥。我个人使用图片作为密钥文件,这似乎很有效。您的假设是正确的,如果文件内容发生变化,您的密钥文件将失效。
答案3
对于 KeePass 和 TrueCrypt 来说,您的所有输入(密码、密钥文件等)都塞入一个固定长度的密钥中(长度取决于加密算法)。实现此目的的方法各不相同,但都涉及哈希。