VeraCrypt — программное обеспечение, используемое для шифрования «на лету». VeraCrypt — бесплатный и открытый проект, начатый 22 июня 2013 года в качестве форка TrueCrypt.Запущен и по настоящее время поддерживается Mounir Idrassi, основателем компании IDRIX, после того как 28 мая 2014 года было объявлено о прекращении поддержки программы TrueCrypt.
Схема шифрования
Алгоритмы
VeraCrypt может использовать следующие алгоритмы шифрования: AES, Serpent, Twofish, Camellia, Кузнечик, а также комбинации этих алгоритмов.
Используемые криптографические хеш-функции: RIPEMD-160, SHA-256, SHA-512, Стрибог и Whirlpool.
Режимы шифрования
VeraCrypt использует режим шифрования XTS (англ.).
Ключи
Ключ заголовка и вторичный ключ заголовка для режима XTS генерируются при помощи алгоритма PBKDF2 с использованием 512-битной криптографической соли, число итераций составляет от 327 661 до 655 331, в зависимости от используемой хеш-функции.
Усовершенствования по сравнению с TrueCrypt
По утверждению разработчиков, в VeraCrypt реализован ряд усовершенствований в области безопасности по сравнению с TrueCrypt.
В то время как TrueCrypt использует 1000 итераций при генерации ключа, которым шифруется системный раздел при использовании алгоритма PBKDF2-RIPEMD-160, VeraCrypt использует 327 661 итерацию. Для стандартных шифруемых разделов на диске и файловых контейнеров VeraCrypt использует 655 331 итерацию для хеш-функции RIPEMD-160 и 500 000 итераций для SHA-2 и Whirlpool. Это существенно замедляет VeraCrypt при открытии зашифрованных разделов диска при их монтировании, но делает его не менее чем в 10 (и не более чем в 300) раз более устойчивым к атаке прямым перебором.
Исправлена уязвимость начального загрузчика для Windows. Для режима загрузки из зашифрованного раздела добавлена поддержка алгоритма SHA-256 и исправлены проблемы с уязвимостью ShellExecute для Windows.
Для Linux и macOS добавлена поддержка дисков с секторами больше 512 байт. Для Linux реализована поддержка разделов, отформатированных под NTFS.
Указанные усовершенствования привели к несовместимости с форматом разделов TrueCrypt. Разработчики VeraCrypt сочли старый формат TrueCrypt слишком уязвимым для потенциальной атаки АНБ и отказались от него. Это одно из главных различий между VeraCrypt и конкурирующим проектом-форком TrueCrypt — CipherShed, который продолжает поддерживать старый формат. Начиная с версии 1.0f, VeraCrypt может открывать и преобразовывать в свой формат разделы, отформатированные в формате TrueCrypt.
17 августа 2016 года в версию 1.18а добавлена возможность шифрования дисковых разделов, отформатированных в формате GPT.
Правдоподобное отрицание наличия зашифрованных данных
VeraCrypt, также как и TrueCrypt, поддерживает возможность отрицаемого шифрования, позволяя создавать внутри зашифрованного тома ещё один, «скрытый том». Кроме того, версия VeraCrypt для Windows позволяет создавать и выполнять скрытый экземпляр операционной системы Windows, чьё наличие также можно правдоподобно отрицать.
В документации VeraCrypt перечислен ряд способов, которыми эта возможность могла бы оказаться скомпрометированной (например, утечка данных через временные файлы на незашифрованном диске) и возможные способы борьбы с этой проблемой.
Быстродействие
VeraCrypt поддерживает параллельную работу в многопроцессорных и многоядерных системах. VeraCrypt умеет использовать аппаратное ускорение шифрования, доступное в процессорах, имеющих набор инструкций AES-NI.
Эти меры увеличивают быстродействие VeraCrypt.
Потенциальные проблемы с безопасностью
Программа подвержена ряду потенциальных атак, к которым чувствительно и другое программное обеспечение для шифрования дисков, например BitLocker. Для смягчения этой опасности разработчики VeraCrypt предоставили пользователям ряд профилактических рекомендаций.
Некоторые из этих проблем перечислены ниже.
Ключи шифрования, хранимые в оперативной памяти
VeraCrypt сохраняет ключи в оперативной памяти в открытом виде. Теоретически, злоумышленник мог бы получить доступ к её содержимому с помощью так называемой атаки методом холодной перезагрузки, при которой атакующий получает физический доступ к содержимому модулей оперативной памяти компьютера после его выключения и посредством специального программного обеспечения или оборудования восстанавливает их старое содержимое. Подобная атака была успешно применена в отношении разделов диска, зашифрованных TrueCrypt. Для противодействия некоторым атакам данной категории, начиная с версии 1.24 в VeraCrypt добавлено шифрование ключей в оперативной памяти, а также стирание ключей из памяти при перезагрузке или завершении работы системы.
Физическая безопасность
VeraCrypt не обеспечивает безопасности данных на компьютере, к которому атакующий имеет физический доступ, как правило, тайный, в процессе работы с зашифрованными данными. Эта уязвимость относится не к случаю потерянных, конфискованных или украденных компьютеров, а когда злоумышленники имеют возможность установить на компьютер тот или иной вид шпионской аппаратуры — аппаратный кейлоггер, bus-master устройство, обладающее прямым доступом к оперативной памяти, или какое-то ещё устройство, предназначенное для решения подобных задач.
Вредоносное ПО
VeraCrypt не обеспечивает безопасности данных на компьютере с установленным вредоносным ПО. Многие вредоносные программы этого типа содержат в себе кейлоггеры и могут, в частности, считывать вводимые с клавиатуры пароли и передавать их злоумышленникам.
Trusted Platform Module
VeraCrypt не поддерживает взаимодействия с TPM, так как, по мнению разработчиков, TPM не может быть использован для решения задач информационной безопасности, поскольку TPM не обеспечивает никакой защиты компьютера от злоумышленника, получившего физический доступ к компьютеру и, например, установившего аппаратный кейлоггер.
Аудит
VeraCrypt опирается на исходный код TrueCrypt, который успешно, хотя и с некоторыми замечаниями, прошёл независимый аудит кода.
Независимый аудит кода VeraCrypt весной 2015 года был в стадии планирования. Обсуждалось его начало в июле 2015 года.
К середине сентября 2016 года аудит был завершён. Доклад о результатах занимал 42 страницы. Этот независимый аудит был проведён фондом OSTIF (Open Source Technology Improvement Fund), а средства на него пожертвовали DuckDuckGo и VikingVPN. Фонд OSTIF, в свою очередь, привлёк для проведения аудита специалистов компании Quarkslab.
Специалисты компании Quarkslab, проводившей этот аудит, сосредоточили свои усилия вокруг VeraCrypt 1.18 и DCS EFI Bootloader 1.18 (UEFI), в основном изучая новые функции, которыми VeraCrypt пополнился после апреля 2015 года и проведённого тогда аудита проекта TrueCrypt. Исследователи пишут, что в коде VeraCrypt им удалось обнаружить восемь критических уязвимостей, три умеренные уязвимости и ещё 15 ошибок низкой степени важности.
Для поддержания высокой степени безопасности кода VeraCrypt осенью 2018 года была опубликована программа bug bounty.
Модель лицензирования и распространения исходных текстов
С 28 июня 2015 года VeraCrypt лицензирован под Apache License 2.0. До этого он был опубликован под Microsoft Public License.
Поскольку VeraCrypt опирается на исходные коды TrueCrypt, на него распространяются также и положения TrueCrypt License 3.0, которая многими источниками не считается свободной.
Учитывая, что разработчики TrueCrypt никогда не идентифицировали себя в качестве физических или юридических лиц, сохраняя свою анонимность, это имеет в большей степени моральное, чем практическое значение.