Я не был уверен, стоит ли спрашивать об этом на stackoverflow или superuser.
В документации по truecrypt говорится, что контейнер truecrypt неотличим от случайных данных. Мой вопрос: как truecrypt узнает, когда ему был задан правильный пароль и правильно декодирован зашифрованный контейнер?
Есть ли у дешифрованных данных какой-то заголовок, который идентифицирует, что они были расшифрованы правильно, например, заголовок «truecrypt volume»?
encryption
truecrypt
localhost
источник
источник
Ответы:
Он знает правильный пароль, потому что в этом зашифрованном контейнере есть известный заголовок.
Когда Trucrypt расшифровывает большой блок данных и заголовок соответствует ожидаемому, он сообщает, что расшифровка прошла успешно. Если вы используете неверный пароль, он все равно будет «расшифровывать» текст, но расшифровывает заголовок, чтобы выдать ошибку и провалит проверку дешифрования.
Вот ссылка на спецификацию ( зеркало ), вы можете видеть, что есть много вещей, которые должны быть истинными, чтобы он был действительным заголовком (байты 64-67 после расшифровки всегда должны быть значением ASCII
TRUE
, байты 132-251 должны быть все0
и т. д.). Если вы расшифровываете большой двоичный объект данных и он не соответствует этому формату заголовка, вы знаете, что расшифровка не удалась.источник