Полнодисковое шифрование: что это такое, кому это нужно, как выбрать

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, Хабр! Меня зовут Игорь, я эксперт исследовательской лаборатории компании «ИнфоТеКС», в которой мы проводим сертификацию криптографии в различных продуктах. Сегодня поговорим о защите личных данных и о полнодисковом шифровании как о методе защиты информации.

Full Disk Encryption (FDE) — это метод защиты информации, предполагающий шифрование всех данных на диске, включая временные файлы, программы, системные файлы и т.д. Чаще всего использовать полнодисковое шифрование рекомендуется на портативных устройствах, которые крадут или теряют чаще, чем стационарные.

Полное шифрование диска, в отличие от создания зашифрованных разделов или папок, позволяет защитить конфиденциальную информацию, о которой пользователь мог забыть или не знать, например служебные и временные файлы. При этом даже если злоумышленник извлечет диск и установит в свое устройство, он не сможет получить доступ к хранящимся на нём данным, если не знает пароля или ключей шифрования.

Средства полнодискового шифрования можно разделить на аппаратные и программные. В этой статье я рассмотрю программные реализации полнодискового шифрования в рамках как коммерческих, так и Open Source проектов. У меня не было цели перечислить их все, поэтому в комментариях можете дополнить, чем пользуетесь сами или о каких продуктах знаете.

Цель статьи – показать некоторый срез имеющихся на рынке решений для полнодискового шифрования и наметить их плюсы и минусы, учитывая специфические потребности пользователя и требования к безопасности данных.

Требования к программам шифрования

Исходя из своего опыта, предлагаю сформулированную модель, подразумевающую поэтапный анализ программных средств шифрования данных. Данная модель подразумевает оценку следующих критериев:

  • Формат шифрования: полнодисковое шифрование (Full Disk Encryption, FDE) или контейнеры;

  • Алгоритмы шифрования;

  • KDF (Key Derivation Function) и хеш-функции;

  • Генератор псевдослучайных чисел (ГПСЧ);

  • Наличие открытого исходного кода;

  • Поддержка разработчиков;

  • Удобство использования (юзабилити);

  • Наличие метаданных заголовка зашифрованного контейнера.

Рассмотрим каждый пункт подробнее.

В зависимости от ситуаций, требования к программам шифрования данных могут быть разные. Например, при организации удалённого хранения конфиденциальных данных или их транспортировке оптимальным решением будет являться использование зашифрованных контейнеров – закинул информацию в контейнер, контейнер на флешку или в облако, и можно ни о чем не переживать. Слабая сторона криптографических контейнеров заключается в том, что риск утечки данных и расшифровки контейнеров остаётся в месте их создания.

При защите информации в случае кражи устройства-носителя или случайного доступа к нему, наиболее рациональным будет использование FDE. Сильная сторона полнодискового шифрования заключается в том, что тебе не нужно беспокоиться о возможности утечек таких частей критичной информации, как фрагменты в файле подкачки, временные файлы, остаточная информация в кластерах файловой системы и так далее.

При этом важно понимать: если диск «накрыт» FDE, а файл с него, например, отправляется по электронной почте, то данный файл уйдёт получателю уже в незашифрованном виде, так что в подобных сценариях информацию необходимо дополнительно шифровать.

С форматом определились, перейдём непосредственно к криптографическим алгоритмам. Если мы говорим о хранении данных, значит рациональнее всего будет использовать симметричное шифрование, при котором существует один секретный ключ, расшифровывающий данные. Примеры симметричных стойких алгоритмов: AES, Serpent, Twofish, Camellia, ГОСТ 34.12-2018 (Магма, Кузнечик) и так далее. Эти алгоритмы имеют открытую спецификацию и реализацию, есть исследования об их стойкости. Разумеется, чем больше длина ключа, тем более шифр устойчив к атакам. Я рекомендую использовать длину ключа от 256 бит (с такой длиной ключа может быть обеспечена защита от взлома на квантовом компьютере при помощи алгоритма Гровера).

В тандеме с алгоритмами шифрования работают функции формирования одного или нескольких ключей из пароля – KDF. Часто даже опытные пользователи недооценивают важность использования стойких функций KDF, хотя их наличие обязательно при серьёзном отношении к стойкости выбранного средства FDE к перебору паролей.

Функции KDF должны быть медленными, в идеале используя большой объем памяти для своей работы. Под «медленными» имеются ввиду функции, которые относительно медленно порождают последовательность из-за использования большого количества вычислений для этого. Обусловлено это следующим: если при формировании ключа используется много памяти и тактов процессора, то и злоумышленнику потребуется пойти на существенные временные и (или) финансовые издержки при организации перебора паролей.

В качестве примеров хороших функций KDF я могу выделить три: PBKDF2 (при условии, что используется достаточное количество итераций), Argon2, Scrypt. Часто, в качестве одного из аргументов функции KDF выступает какая-либо псевдослучайная функция, являющаяся хеш-функцией, например, SHA-512, BLAKE2, Whirlpool и т.д. На её криптостойкость так же следует обращать внимание.

Пара слов об использовании ГПСЧ в программах шифрования. Хоть выбор алгоритмов и методов выработки последовательности случайных чисел важен при работе с шифрованием, очень редко программы для защиты данных его предоставляют. Если продукт имеет открытый исходный код – можно ознакомиться с ним и понять примерные принципы выработки случайной последовательности, если закрытый – искать информацию в документации производителя или реконструировать алгоритм в IDA Pro (конечно же, только для собственных нужд и решения проблем совместимости :) занимайтесь реверсом на свой страх и риск).

Открытый исходный код. На самом деле, много копий сломано на этом вопросе. Кто-то говорит, что программы для шифрования абсолютно всегда должны иметь открытый исходный код всех своих компонентов, чтобы каждый смог убедиться в отсутствии закладок. Кто-то утверждает, что баги десятилетней давности находят даже в Open Source-проектах, и настоящей пользы в открытости кода нет. Моё личное мнение заключается в том, что настолько критичный продукт должен иметь либо открытый исходный код, либо сертификат соответствия от какой-либо исследовательской лаборатории, подтверждающий, что криптография реализована корректно.

Поддержка разработчиков ПО. Существуют проекты, разработка и поддержка которых окончательно прекратилась. В качестве примеров таких проектов можно вспомнить FreeOTFE и TrueCrypt. Кто-то может сказать в их оправдание "Ну и что? Криптография ведь осталась по-прежнему стойкой!". Однако, всё не так просто. Дело в том, что с этим можно смириться, например, если в проекте используются криптоконтейнеры и хорошие алгоритмы, при этом вся криптография реализована правильно.

Но если речь идёт о полнодисковом шифровании, то без своевременной поддержки со стороны разработчиков оно достаточно быстро утратит корректность работы с актуальными версиями операционных систем.

Удобство использования решения – немаловажный пункт для пользователя, однако, к сожалению, хорошее юзабилити != безопасность, так что удобные в использовании решения могут подойти не всем.

Пунктик для параноиков: формат защищённых данных. На самом деле, чем меньше вводной информации мы даём потенциальному злоумышленнику, тем нам лучше. Например, если в заголовке криптоконтейнера содержится в незашифрованном виде такая информация, как алгоритм шифрования, количество итераций, используемый алгоритм KDF, метаданные доступа и прочее –  атаковать такой контейнер будет в разы проще, чем если, к примеру, из незашифрованных данных будет одна "соль".

Итак, с примерными требованиями мы определились, теперь взглянем на имеющиеся продукты и разберём их преимущества и недостатки.

VeraCrypt

Проект с открытым исходным кодом, который является продолжением известной программы шифрования TrueCrypt. VeraCrypt поддерживает создание контейнеров, полнодисковое шифрование, несколько ОС (Windows, MacOS, Linux), имеет в своём арсенале стойкие алгоритмы шифрования. Проект достаточно амбициозный, однако имеет большие проблемы с поддержкой актуальных версий ОС и долгоживущие баги, так как фактически ведётся одним разработчиком и получает очень редкие коммиты от сообщества.

 Плюсы:

  • Полностью открытый исходный код;

  • Поддержка сильной криптографии (AES, Serpent, Camellia, Twofish, ГОСТ 34.12-2018);

  • Возможность настройки итераций функции KDF PBKDF2;

  • Минимум метаданных в заголовке контейнера.

Минусы:

  • Проблемы с поддержкой;

  • Используется только одна функция KDF (PBKDF2), не являющаяся самой сильной из существующих. Такие современные алгоритмы, как scrypt и argon2 значительно эффективнее противостоят атакам на микросхемах FPGA;

  • Используется не одно крипто-ядро. Различные реализации из разных библиотек, разное время реакции авторов на баги и уязвимости и другие особенности делают решение «неоднородным» по качеству и вносят непредсказуемость поддержки. Подобное мы можем наблюдать в случае с реализацией шифра AES, имеющей уязвимость утечки по сторонним каналам, т.к. решение требует нецелесообразных временных затрат;

  • Плохое юзабилити.

    DiskCryptor

    Достаточно долго не обновляющийся Open Source-проект, хотя его разработчик проявляет активность на GitHub проекта. Надо сказать, что архитектурно проект достаточно неплох, но один из очевидных минусов в том, что в нём нет добавлений новой криптографии, что особенно актуально с функцией KDF – SHA-512. Да, она пока не взломана, но лучше использовать более актуальные алгоритмы.

    Плюсы:

  • Полностью открытый исходный код;

  • Поддержка сильной криптографии (AES, Serpent, Twofish);

  • Минимум метаданных в заголовке контейнера.

    Минусы:

  • Медленное развитие проекта;

  • Используется только одна, не самая сильная, функция KDF;

  • Нет поддержки работы с контейнерами;

  • Плохое юзабилити.

    Jetico BestCrypt (Volume Encryption\Container Encryption)

    Коммерческий продукт для шифрования, который поддерживает актуальные версии Windows, Linux, MacOS и использует несколько криптоалгоритмов для шифрования. Также, в продукте используются сильные функции KDF и реализовано соответствие различным законодательным требованиям (SOX, GLBA, POPI, NESA, ISM и т.д.).

    Плюсы:

  • Поддержка сильной криптографии (много алгоритмов);

  • Поддержка нескольких функций KDF;

  • Хорошая поддержка;

  • Возможность шифрования метаданных заголовка контейнера или раздела.

    Минусы:

  • Закрытый исходный код;

  • Плохое юзабилити.

    LUKS2

    Ещё одна реализация полнодискового шифрования с открытым исходным кодом, широко используемая в ОС Linux. LUKS2 поддерживает несколько режимов шифрования, несколько функций KDF и сильные алгоритмы, в том числе AES, Serpent и Twofish.

    Плюсы:

  • Поддержка сильной криптографии (много алгоритмов);

  • Используются сильные алгоритмы KDF;

  • Хорошая поддержка;

  • Хорошее юзабилити.

    Минусы:

  • Отсутствие поддержки работы с контейнерами;

  • Большое количество метаданных в заголовке раздела.

    Bitlocker

    Реализация полнодискового шифрования, встроенная в ОС Windows. Используется сильная криптография, полностью прозрачная реализация для пользователя (хорошее юзабилити), есть такая дополнительная функциональность, как сетевая разблокировка, поддерживается использование модуля TPM.

    Однако, для настоящих параноиков сетевая разблокировка – огромная брешь в безопасности, так как её наличие указывает на возможность полного снятия криптографии третьими лицами. То же касается и модуля TPM, реализация шифратора которого закрыта. Так что такое решение подойдёт явно не для всех. 

    Плюсы:

  • Поддержка сильной криптографии (много алгоритмов);

  • Используются сильные алгоритмы KDF;

  • Хорошая поддержка;

  • Хорошее юзабилити.

    Минусы:

  • Закрытый исходный код;

  • Отсутствие поддержки работы с контейнерами;

  • Большое количество метаданных (как минимум, код алгоритма шифрования).

    Вывод

    Хоть шифрование дисков и кажется вполне логичным процессом, многие не используют метод FDE, так как не уверены в простоте его использования или не могут разобраться во многообразии продуктов. Помимо прочего, я не раз слышал опасения, что раз FDE шифрует все данные, то его использование может повлиять на производительность устройства, но такой сценарий крайне маловероятен. Например, встроенный в VeraCrypt бенчмарк на моём стареньком ноутбуке показывает скорость AES 7ГБ/с (имеется ввиду тестирование способности CPU шифровать данные). Показать такую скорость сможет не всякий SSD, не говоря уж о HDD. Кстати, эффективность работы FDE на SSD накопителях – это тоже частый вопрос. Если вкратце, то HDD более безопасны в контексте использования FDE, так как в SSD имеется контроллер, который может менять используемые области записи на микросхеме, делая их недоступными для покрытия шифрованием.

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

    Подводя итог, можно выделить некоторые свойства, характерные для Open Source-проектов, например, медленное развитие, которое в итоге влечёт за собой отсутствие поддержки актуальных версий ОС и новых примитивов шифрования.

    Главным недостатком коммерческих проектов является использование закрытого исходного кода, вследствие чего корректность шифрования невозможно проверить самостоятельно, если не брать в расчёт реконструкцию бинарного кода при помощи дизассемблера. При работе же с сертифицированным решением всё зависит от (не)доверия пользователя органу сертификации.

    Что важнее для конечного пользователя – зависит от степени чувствительности защищаемой информации и степени паранойи самого юзера :) Например, на мой взгляд, для шифрования в Windows оптимальным выбором будет Veracrypt (FDE и контейнеры), для Linux – LUKS2 (FDE) и Veracrypt (контейнеры).

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


    Пишите в комментариях, пользуетесь ли вы средствами полнодискового шифрования? В каких случаях и что используете?

Источник: https://habr.com/ru/companies/infotecs_official/articles/748932/


Интересные статьи

Интересные статьи

— Ты смеешь спорить с преподавателем? Вот хамка. — Строгая учительница сверлит меня взглядом, я вжалась в стул. — Ннет...В смысле спорить? Я вообще не спорила с учителями никогда, я не такая.В и...
По предварительным прогнозам, стандартные на сегодняшний день 2048-битные ключи шифрования, в 2015 году рекомендованные к использованию NIST, Национальным институтом стандартов и технологий, все еще б...
Продолжаем наш большой материал об образовательных возможностях для школьников в разных странах. Сегодня поговорим о Грузии. Итак.Грузия — одна из стран первого выбора для быстрой релокации -  гр...
Привет, Хабр! Сериал «Друзья» — это целая эпоха, которая закончилась 17 лет назад, а на деле навсегда прописалась в нашем сердечке. И вот мы посмотрели «новый эпизод...
На днях, на другой небезызвестной вам площадке появился большой сравнительный анализ сервисов внешней аналитики маркетплейсов. Автор постарался разобраться в преимущества...