2

我是一名学生,试图了解开源密码学软件http://www.truecrypt.org/的机制。在 TrueCrypt 中有一个用户创建的密钥和/或密钥文件,以及一个程序生成的主密钥。我想要一个链接或更好的半技术解释这个用户如何创建密码解锁头文件。我已经阅读了http://www.truecrypt.org/docs/?s=technical-details上的 TrueCrypt 文档,[我会发布更多,但新用户只允许两个链接],以及其他真正的 crypt 文档。我想要一个关于密码如何解锁头文件的高级解释,以及作为侧边栏,盐如何帮助防止彩虹攻击。

很抱歉这么频繁地添加问题,但我意识到问题的主要核心是这个。我试图弄清楚密码是如何更改的。为此,我需要了解标题密钥与主密钥的关系,因为您可以更改标题密钥,但只有某些标题密钥可以与您的主密钥一起使用。标头密钥必须用于创建主密钥,但您可以选择任意密码来创建也可与主密钥一起使用的标头密钥。

4

1 回答 1

1

Truecrypt 获取您的密码并通过PBKDF2传递它。它就像一个散列函数,但需要更长的时间,更慢 - 以减缓暴力攻击。类似的密码派生算法是 bcrypt 和 scrypt。当涉及到“散列”密码时,这三个是“三巨头”——其他任何东西,比如简单的 SHA-1 或 MD5 密码通常都太快而无法安全。攻击者可以非常快速地对 SHA-1 等简单哈希进行暴力攻击。PBKDF2、bcrypt 和 scrypt 慢得多。

但是,理论上您可以使用所使用的参数(每个都有一些可选参数)针对 PBKDF2、bcrypt 和 scrypt 制作彩虹表。Truecrypt 使用的盐旨在防止这种情况。

http://www.truecrypt.org/docs/header-key-derivation是这方面的主要参考资料。

更具体地说,是 PBKDF2 和 salt 之后的用户密钥的标题密钥 == 吗?

我相信派生密码密钥用于解密包含主密钥的标头。这样,您只需使用新密码重新加密主密钥即可更改密码。

truecrypt.org/docs/?s=header-key-derivation 说盐是未加密的?将未加密的盐添加到彩虹表并重试真的有那么难吗?

建立一个彩虹表很困难,我认为很困难,但我不确定。不过,他们在同一个球场。所以你正在考虑的威胁模型“我应该加密我的盐!” 并没有真正发挥作用。另外,您需要盐来派生密钥、解密块、获取盐。鸡和蛋。

如果“使用 512 位盐,这意味着每个密码有 2^512 个密钥”,我不确定添加盐会如何转换。

他们的意思是“密码”的密码实际上有2^512个组合:密码0000001、密码0000002、密码0000003等等。

于 2011-06-27T15:20:58.840 回答