VeraCrypt - Бесплатное надёжное шифрование дисков с открытым исходным кодом

Документация Технические подробности Схема шифрования

# Схема шифрования

При монтировании тома VeraCrypt (предполагаем, что нет кэшированных паролей/ключевых файлов) или при предзагрузочной аутентификации выполняются следующие операции:

1. Считываются (помещаются) в ОЗУ первые 512 байт тома (то есть заголовок обычного тома), из которых первые 64 байта это соль (см. Спецификация формата томов VeraCrypt). Для шифрования системы (см. Шифрование системы) в ОЗУ считываются последние 512 байт первой дорожки логического диска (загрузчик VeraCrypt располагается в первой дорожке системного диска и/или Диска восстановления VeraCrypt).
2. Считываются (помещаются) в ОЗУ байты 65 536–66 047 тома (см. Спецификация формата томов VeraCrypt). Для шифрования системы считываются байты 65 536–66 047 раздела, расположенного сразу за активным разделом* (см. Скрытая операционная система). Если внутри этого тома имеется скрытый том (или внутри раздела, следующего за загрузочным разделом), то в этой точке мы прочитали его заголовок; в противном случае мы просто прочитали случайные данные (есть скрытый том внутри или его нет, определяется только попыткой расшифровать эти данные; подробности см. в разделе Скрытый том).
3. Сейчас VeraCrypt пытается расшифровать заголовок обычного тома, считанный на этапе 1. Все данные, использованные и сгенерированные в ходе дешифрования, хранятся в ОЗУ (VeraCrypt никогда не сохраняет их на диске). Указанные ниже параметры неизвестны и определяются методом проб и ошибок (то есть проверкой всех возможных комбинаций следующего):
   1. PRF (псевдослучайная функция), применяемая при формировании (деривации) ключа заголовка (как определено в PKCS #5 v2.0; см. Формирование ключа заголовка, соль и количество итераций), которая может быть одной из следующих:

      HMAC-SHA-512, HMAC-SHA-256, HMAC-BLAKE2S-256, HMAC-Whirlpool.

      Если PRF указана пользователем явно, используется непосредственно она, без опробования других функций.

      Введённый пользователем пароль (который может сопровождаться одним или несколькими ключевыми файлами – см. раздел Ключевые файлы), значение PIM (если указано) и соль, считанные на этапе 1, передаются в функцию формирования ключа заголовка, которая производит последовательность значений (см. Формирование ключа заголовка, соль и количество итераций), из которых формируются ключ шифрования заголовка и вторичный ключ заголовка (режим XTS). (Эти ключи используются для дешифрования заголовка тома.)

   2. Алгоритм шифрования: AES-256, Serpent, Twofish, AES-Serpent, AES-Twofish-Serpent и т. д.
   3. Режим работы: поддерживается только XTS
   4. Размеры ключей
4. Дешифрование считается успешным, если первые четыре байта расшифрованных данных содержат ASCII-строку “VERA” и если контрольная сумма CRC-32 последних 256 байт расшифрованных данных (заголовок тома) совпадает со значением, находящимся в байте №8 расшифрованных данных (неприятелю это значение неизвестно, поскольку оно зашифровано – см. раздел Спецификация формата томов VeraCrypt). Если эти условия не выполнены, процесс продолжается с этапа 3 снова, но на этот раз вместо данных, считанных на этапе 1, используются данные, считанные на этапе 2 (то есть возможный заголовок скрытого тома). Если условия снова не выполнены, монтирование прекращается (неверный пароль, повреждённый том, не том VeraCrypt).
5. Теперь мы знаем (или предполагаем с очень высокой вероятностью), что у нас правильный пароль, правильный алгоритм шифрования, режим, размер ключа и правильный алгоритм формирования ключа заголовка. Если мы успешно расшифровали данные, считанные на этапе 2, мы также знаем, что монтируется скрытый том, и знаем его размер, полученный из данных, считанных на этапе 2 и расшифрованных на этапе 3.
6. Подпрограмма шифрования переинициализируется с первичным мастер-ключом** и вторичным мастер-ключом (режим XTS – см. раздел Режимы работы), которые получены из расшифрованного заголовка тома (см. раздел Спецификация формата томов VeraCrypt). Эти ключи могут быть использованы для дешифрования любого сектора тома, за исключением области заголовка тома (или, в случае шифрования системы, области ключевых данных), зашифрованного с помощью ключей заголовка. Том смонтирован.

См. также разделы Режимы работы и Формирование ключа заголовка, соль и количество итераций, а также главу Модель безопасности.

* Если размер активного раздела меньше 256 МБ, то данные считываются из второго раздела, идущего следом за активным (Windows 7 и более поздние версии по умолчанию не загружаются с раздела, на котором они установлены).

† Эти параметры держатся в секрете не для того, чтобы усложнить атаку, а в первую очередь для того, чтобы сделать тома VeraCrypt не идентифицируемыми (неотличимыми от случайных данных), чего было бы трудно добиться, если бы эти параметры хранились в незашифрованном виде в заголовке тома. Также обратите внимание, что в случае устаревшего режима загрузки MBR, если для шифрования системы используется некаскадный алгоритм шифрования, алгоритм известен (его можно определить, проанализировав содержимое незашифрованного загрузчика VeraCrypt, хранящегося на первой дорожке логического диска или на Диске восстановления VeraCrypt).

** Мастер-ключи генерируются во время создания тома и не могут быть изменены позже. Изменение пароля тома выполняется путём повторного шифрования заголовка тома с использованием нового ключа заголовка (сформированным из нового пароля).

Следующий раздел >>