Привет, Хабр! Меня зовут Игорь, я эксперт исследовательской лаборатории компании «ИнфоТеКС», в которой мы проводим сертификацию криптографии в различных продуктах. Сегодня поговорим о защите личных данных и о полнодисковом шифровании как о методе защиты информации.
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 (контейнеры).
Я не перечислял все возможные требования к программам шифрования и не рассматривал все существующие реализации защиты, но предложил вам определённый шаблон для упрощения выбора под конечного пользователя.
Пишите в комментариях, пользуетесь ли вы средствами полнодискового шифрования? В каких случаях и что используете?
Комментарии (18)
freelook00
19.07.2023 07:22А что на счёт шифрования ZFS?
Infotecs_official Автор
19.07.2023 07:22Добрый день! ZFS encryption не обеспечивает полного покрытия шифрованием данных, так как часть служебных структур остаётся незашифрованной.
aborouhin
19.07.2023 07:22Насколько я понимаю, незашифрованным там остаются имена и свойства датасетов и снапшотов, что в подавляющем большинстве случаев - ну совсем бесполезная информация. Плюс есть какая-то проблема с дедупликацией, тут да, надо учитывать, если вдруг дедупликация используется (по моему впечатлению, она так жрёт оперативку, что включать оправданно только в ограниченном кол-ве случаев). А в остальном - почему бы и нет?
max851
19.07.2023 07:22Насколько я встечался наиболее часто шифрование включено у корпоративных пользователей. И что характерно - у юзера просто нет выбора. Есть корпоративная политика безопасности и шифрование будет таким как установлено политикой.
Ещё на мой взгляд упущено про шифрование маков стандартной утилитой (filevault кажеться)
Infotecs_official Автор
19.07.2023 07:22Добрый день! Вы правы, корпоративные политики безопасности составляются по модели нарушителя, применяемой к конкретной компании, рядовой пользователь пользуется тем инструментарием, который ему предлагает сама компания и ее ИБ-служба.
Касательно отсутствия некоторых утилит в нашем материале, программ для шифрования существует великое множество, при написании статьи не было цели разобрать их все, мы скорее стремились показать, на что стоит обратить внимание при выборе какого-либо средства шифрования :) Но спасибо, может быть мы продолжим тему, если она интересна читателям.
pae174
19.07.2023 07:22Если вкратце, то HDD более безопасны в контексте использования FDE, так как в SSD имеется контроллер, который может менять используемые области записи на микросхеме, делая их недоступными для покрытия шифрованием.
Без разницы (HDD/SSD). В обеих случаях контроллеры могут ремапить части хранилища при обнаружении ошибок чтения или при исчерпании ресурса.
qw1
19.07.2023 07:22+1Для HDD ремап — исключительная, редкая ситуация. Для SSD — обыденная. Зато SSD стирает в фоне освободившиеся блоки, так что они не долго проживут (если рассматривать сценарий шифрования нешифрованного диска, как раз к концу шифрования всё и постирается в фоне).
Но всё же, наиболее частый сценарий — сначала создать криптодиск, а потом писать на него данные. Тут нешифрованные данные на диск никак не попадают, и тогда точно без разницы с т.з. безопасности.
NeoCode
19.07.2023 07:22Кстати, а встроенная функция шифрования виртуальных машин в VirtualBox и VMWare тоже сюда относится?
Infotecs_official Автор
19.07.2023 07:22Добрый день! Если мы правильно поняли ваш вопрос, то упомянутая функция к FDE не относится
ne555
19.07.2023 07:22VeraCrypt
'""
Подобное мы можем наблюдать в случае с реализацией шифра AES, имеющей уязвимость утечки по сторонним каналам, т.к. решение требует нецелесообразных временных затрат;
"""
Хочу светлый, надо синий, дайте красный. Статью бы вашу на Дзен от эксперта ИнфоТеКС.
Заинтересованным лицам по данному вопросу, имеется более достойный материал.
ahmalfi
19.07.2023 07:22Сразу извините если вопрос не по адресу, мне посоветовали раздел защиты информации, я ищу специалиста который разбирается в администрировании телеграмм каналов, it специалист программист, который разбирается в ботах защиты от спама или умеет их создавать и настраивать, так как я вообще не из этой сферы то решила зарегистрироваться на проф портал сюда чтобы понять кто мне нужен, я как слепой котенок тыкаюсь в разные статьи я вообще бухгалтер и язык на котором все здесь пишут мне не понятен)Если коротко то есть публичный телеграмм канал с открытыми комментариями где постоянно спам то продажи то интим то военные посты, как их убрать и есть ли бот проверенный который это делает. пытались настроить в самом канале фильтр не получается, хозяин канала бот не хочет, боится уведут канал, это правда возможно? но я читала и на форумах узнавала что если надёжный человек правильно настроит то все будет защищено. Если разбираетесь в этом вопросе помогите прошу! Или хотя бы направьте к проверенным людям специалистам мне не хочется в интернете в непонятных чатах найти сомнительный бот. Приходится вручную чистить или вообще закрыть комментарии. Посоветуйте прошу
Infotecs_official Автор
19.07.2023 07:22Добрый день! Это не наша специализация, к сожалению, ничем помочь не сможем. Вам стоит поискать готовые программы для этих целей, сейчас их достаточно много на рынке.
onyxmaster
«Сетевая разблокировка» так же как и остальные небезопасные protector-ы в Bitlocker (например TPM без PIN) отключаются одной командой. В политике безопасности такой пункт обычно присутствует.