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-origination говорит, что соль не зашифрована?Неужели так трудно добавить незашифрованную соль на радужный стол и попробовать еще раз?
Создать радужный стол сложно, я считаю сложным, как грубое принуждение, но я не уверен.Они находятся на одной площадке, хотя.Итак, модель угрозы, о которой вы думаете: «Я должен зашифровать мою соль!»на самом деле не входит в игру.Кроме того, вам нужна соль, чтобы получить ключ, расшифровать блок, чтобы получить соль.Цыпленок и яйцо.
Я не уверен, как добавится соль, если "используется 512-битная соль, что означает, что для каждого пароля есть 2 ^ 512 ключей".
Они означают, что пароль «пароля» на самом деле имеет 2 ^ 512 комбинаций: пароль0000001, пароль0000002, пароль0000003 и т. Д.