Как введенный пользователем пароль разблокирует мастер-ключ, созданный TrueCrypt? - PullRequest
2 голосов
/ 27 июня 2011

Я студент, пытающийся понять механизмы криптографического программного обеспечения с открытым исходным кодом http://www.truecrypt.org/.В TrueCrypt есть пользовательский ключ и / или ключевой файл, а также главный ключ, сгенерированный программой.Я хотел бы получить ссылку на лучшее техническое объяснение того, как пароль, созданный этим пользователем, открывает файл заголовка.Я прочитал документацию TrueCrypt по адресу http://www.truecrypt.org/docs/?s=technical-details, [я бы написал больше, но новым пользователям разрешено только две ссылки], а также остальная часть документации по настоящему крипту.Я хотел бы получить объяснение на высоком уровне о том, как пароль разблокирует файлы заголовков, и в качестве боковой панели, как соль помогает предотвратить атаки радуги.

Извините, что так часто добавляю вопрос, но я понимаю,главное суть вопроса заключается в следующем.Я пытаюсь выяснить, как пароль можно изменить.Чтобы сделать это, мне нужно понять, как ключ заголовка связан с главным ключом, потому что вы можете изменить ключ заголовка, но только определенные ключи заголовка будут работать с вашим главным ключом.Ключ заголовка должен использоваться для создания мастера, но вы можете выбрать произвольный пароль, который создаст ключ заголовка, который также будет работать с мастером.

1 Ответ

1 голос
/ 27 июня 2011

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 и т. Д.

...