Как Truecrypt узнает, что у него правильный пароль?

4

Я не был уверен, стоит ли спрашивать об этом на stackoverflow или superuser.

В документации по truecrypt говорится, что контейнер truecrypt неотличим от случайных данных. Мой вопрос: как truecrypt узнает, когда ему был задан правильный пароль и правильно декодирован зашифрованный контейнер?

Есть ли у дешифрованных данных какой-то заголовок, который идентифицирует, что они были расшифрованы правильно, например, заголовок «truecrypt volume»?

localhost
источник
1
Я хотел бы видеть окончательный ответ на этот вопрос.
Lorenzo Von Matterhorn

Ответы:

11

Он знает правильный пароль, потому что в этом зашифрованном контейнере есть известный заголовок.

Когда Trucrypt расшифровывает большой блок данных и заголовок соответствует ожидаемому, он сообщает, что расшифровка прошла успешно. Если вы используете неверный пароль, он все равно будет «расшифровывать» текст, но расшифровывает заголовок, чтобы выдать ошибку и провалит проверку дешифрования.

Вот ссылка на спецификацию ( зеркало ), вы можете видеть, что есть много вещей, которые должны быть истинными, чтобы он был действительным заголовком (байты 64-67 после расшифровки всегда должны быть значением ASCII TRUE, байты 132-251 должны быть все 0 и т. д.). Если вы расшифровываете большой двоичный объект данных и он не соответствует этому формату заголовка, вы знаете, что расшифровка не удалась.

Scott Chamberlain
источник
1
и, кажется, я только что увидел окончательный ответ! +1 - отличный ответ.
Lorenzo Von Matterhorn