Как стать автором
Обновить
170.13
Бастион
Проводим пентесты, проектируем защищенные системы

20+ open source утилит для шифрования файлов на (почти) любой случай жизни

Время на прочтение 9 мин
Количество просмотров 44K


На самом-самом деле его секреты нафиг никому не нужны. И кстати, такой ключ за 5 баксов ещё надо поискать


Шифропанкам посвящается. Мы собрали тулкит из популярных программ (преимущественно с симметричным шифрованием), которые помогут защитить личные данные от несанкционированного доступа и попросили исследователя криптографии из компании «Криптонит» прокомментировать наш выбор.


Под катом безопасные решения для шифрования файлов при помощи браузера, для быстрой защиты, пересылки, загрузки в облако шифрованных данных, криптографические контейнеры с двойным дном, десяток консольных инструментов для криптографии и комбайн, объединяющий их под единым графическим интерфейсом. А еще ответы на животрепещущие вопросы, например: «Что лучше AES, Кузнечик, Serpent или Twofish»?


Штатное полнодисковое шифрование


Для начала коротко о стандартных решениях, интегрированных в операционные системы.


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


Apple использует в macOS технологию FileVault на базе алгоритма XTS-AES-128 с длиной ключа 256 бит и криптографический чип T2 для работы с ключами. Это решение близко по надежности к шифрованию IPhone. В то же время Windows предлагает BitLocker, который шифрует систему при помощи 128- или 256-битного алгоритма AES и Encrypting File System для шифрования отдельных файлов, однако эти функции недоступны в Windows 10/11 Home. Они работают в профессиональных редакциях операционной системы.


Для Linux существует общий «стандартный» метод шифрования LUKS, но его реализации отличаются от дистрибутива к дистрибутиву. Обычно используется шифрование AES с 256-битными ключами, но LUKS работает с разными шифрами (Serpent, Twofish, CAST-128, CAST-256) и хеш-функциями (SHA-1, SHA-256, SHA-512, RIPEMD160, WHIRLPOOL). В итоге получается зоопарк, которому нельзя дать единую однозначную оценку.


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


Простое файловое шифрование


Hat.sh и Cloaker


Веб-приложения, которые обеспечивают локальное шифрование отдельных файлов в браузере с использованием известной библиотеки libsodium и криптографических алгоритмов:


  • XChaCha20-Poly1305 — для симметричного шифрования.
  • Argon2id — для получения ключа на основе пароля.
  • X25519 — для обмена ключами.

XChaCha20-Poly1305 — ARX-шифр, который выполняет аутентифицированное шифрование, то есть помимо собственно шифрования обеспечивает целостность данных. Алгоритм достаточно быстр, надежен и проверен практикой.

Здесь и далее комментирует Степан Давыдов, старший специалист-исследователь лаборатории криптографии компании «Криптонит».

Hat.sh и Cloaker — простые решения, не требующие предварительной настройки. Hat.sh лучше подходит для шифрования больших файлов, а Cloaker оптимизирован для работы на мобильных устройствах и имеет десктопную версию. Из-за выбранного алгоритма шифрования и браузерного исполнения лучшее их применение — скорее защита файлов перед передачей по незащищенным каналам, чем долговременное хранение информации.


Picocrypt


Windows, macOS и Linux


Крошечная, весом 2MB, но функциональная утилита, которая не требует установки и прав администратора. Обычно использует XChaCha20 и функцию формирования ключа Argon2 для создания криптоконтейнеров. В «режиме паранойи» использует каскадное шифрование — последовательно шифрует данные при помощи XChaCha20 и Serpent, и использует HMAC-SHA3 вместо BLAKE2b для аутентификации. Все используемые в Picocrypt криптографические примитивы взяты из модуля golang.org/x/crypto.


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

Кроме того, Picocrypt может:


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

Шифрование файлов перед загрузкой в облако


Cryptomator


Windows, macOS, Linux, iOS, Android


Cryptomator не заменяет клиенты для облачных хранилищ, однако он предназначен специально для шифрования каталогов, которые будут синхронизированы с их помощью. Эта программа скрывает структуру каталогов, шифрует файлы и их имена с помощью AES и 256-битного ключа, генерируемого на основе пароля при помощи scrypt.


AES выбран на конкурсной основе в качестве, де-факто, международного стандарта. AES один из наиболее популярных и подробно исследованных шифров. Это не значит, что у него нет недостатков, например, разработан теоретический способ снизить стойкость AES на 2 бита ключа, однако с 1997 года не найдено ни одной практически полезной атаки.

Впрочем, алгоритм шифрования, это еще не все. Важно заметить, что Cryptomator не скрывает метаданные: метки времени доступа, модификации и создания файлов, а также количество, размер файлов и папок.


Документация Cryptomator подробно описывает архитектуру безопасности. Некоторые криптографические библиотеки Cryptomator (cryptolib, cryptofs, siv-mode и cryptomator-objc-cryptor) прошли аудит Cure53. Исключение составляет cryptolib-swift — библиотека, используемая в Cryptomator для iOS. К тому же, исходный код мобильных приложений не опубликован.


Duplicati


Windows, macOS, Linux


Специализированное решение для безопасного резервного копирования файлов в облачные хранилища. Оно использует AES-256 для защиты данных средствами SharpAESCrypt или GnuPG.


Duplicati поддерживает инкрементное резервное копирование, то есть сначала загружает полную резервную копию, а затем сохраняет небольшие добавочные обновления. Кроме того, эта утилита позволяет создавать резервные копии открытых или заблокированных файлов с помощью службы моментальных снимков тома (VSS) Windows или диспетчера логических томов (LVM) в Linux.


RClone


Windows, macOS, Linux, .deb, .rpm, FreeBSD, Plan9, Solaris


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


Для криптографической защиты файлов в RClone используется 256-битный ключ и соль, создаваемые на основе пары разных пользовательских паролей.


Кстати, о паролях. Учитывая то, какие обширные словари и базы доступны злоумышленникам, наиболее безопасным вариантом и для криптоконтейнеров и любых других целей, будут пароли длиной от 16 символов. Либо полностью случайные, либо пароли, в которых часть случайная, а часть — ваша парольная фраза. Для их генерации и хранения можно пользоваться менеджерами, например, KeePass Password Safe.

В RClone шифрование выполняется с помощью NaCl SecretBox, при помощи алгоритмов XSalsa20 и Poly1305, которые также обеспечивают целостность файлов. Имена файлов и каталогов также по умолчанию шифруются. Структура и размер файлов и другие метаданные не шифруются.


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


Создание шифрованных архивов, контейнеров и томов


VeraCrypt


Windows, macOS, Linux, FreeBSD, Raspberry Pi


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


По умолчанию эта утилита использует 256-битное шифрование AES, но поддерживает и другие шифры: Camellia, Кузнечик, Serpent и Twofish с 256-битным ключем и различные их сочетания.


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

Наиболее надежными являются российский стандарт Кузнечик, а также международные стандарты ISO/IEC AES и Camellia при использовании с 256-битными ключами. Алгоритмы Serpent и Twofish не имеют известных уязвимостей, однако их анализу уделялось существенно меньше внимания.

zuluCrypt


Linux


Эта программа фактически является графическим интерфейсом для работы с cryptsetup. Она задействует возможности криптографического API ядра Linux для создания и монтирования томов PLAIN dm-crypt, LUKS, контейнеров TrueCrypt, VeraCrypt и BitLocker. Не позволяет создавать разделы BitLocker, только просматривать их содержимое, но в остальном универсальна.


Kryptor


Windows, macOS, Linux


Консольный инструмент для шифрования и подписи файлов, который разрабатывается, как замена age и Minisign, а также современная альтернатива GPG. Использует алгоритм XChaCha20-Poly1305 для защиты файлов, argon2id для получения ключа на основе пароля, BLAKE2b для хеширования, X25519 для обмена ключами и Ed25519 для цифровых подписей. Все они реализованы при помощи библиотеки libsodium. Хорошо документирован.


Kryptor скрывает метаданные и имена файлов и поддерживает асимметричные ключи, так что позволяет наладить обмен файлами с проверкой подлинности отправителя по заведомо небезопасным каналам.


Dexios


Linux, Windows, MacOS, FreeBSD (запускается на Android через Termux)


Еще один консольный инструмент шифрования. Написан на языке Rust и способен шифровать как отдельные файлы, так и каталоги. Как и Kryptor, снабжен подробной документацией.


Dexios поддерживает AES-256-GCM и ChaCha20-Poly1305 для шифрования файлов, а также BLAKE3-Balloon и argon2id для формирования ключа. Все криптографические примитивы взяты из набора RustCrypto. А еще, в 2022 году Dexios прошел проверку NCC без существенных замечаний (отчет по AES и отчет по ChaCha20-Poly1305).


Tomb


Linux


Командная оболочка для криптографического API ядра Linux. Tomb служит для управления cryptsetup и LUKS. По умолчанию применяет для защиты файлов и каталогов алгоритм AES-256 (XTS plain), однако может использовать все доступные в Linux криптографические примитивы.


По концепции эта утилита напоминает zuluCrypt, но Tomb позволяет хранить криптографические ключи отдельно, например, на флеш-накопителе, и поддерживает стеганографию (сокрытие ключей в текстах и JPEG-файлах).


Подобные аудиты — важная вещь.

Несмотря на все городские легенды о закладках в популярных алгоритмах шифрования, отечественных и зарубежных, ни одного такого свидетельства нет. Все перечисленные в статье алгоритмы известны криптографическому сообществу долгое время, по каждому из них проведен неоднократный анализ и ни одной атаки, сколько-нибудь близкой к практической, не найдено. Наилучший результат, полученный российскими криптоаналитиками для стандартизованных современных криптомеханизмов, относится к алгоритму генерации ключа MQ-DRBG. Авторам исследования удалось снизить криптостойкость с 256 до 153 бит, тем не менее практические атаки не найдены, а наличие закладки не доказано.

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

SiriKali


Windows, macOS, Linux


Решение в стиле «все в одном» — комбайн с графическим интерфейсом на Qt/C++, который управляет зашифрованными папками при помощи ряда инструментов.


В Linux в качестве бэкенда SiriKali выступают:



В Windows SiriKali работает с:



В macOS к утилите подключаются:



Все это консольные инструменты, которые можно использовать и отдельно от SiriKali. Достаточно широкий выбор, однако, не все они одинаково полезны. Так, во время аудита в 2014 году в EncFS были найдены уязвимости, которые до сих пор не исправлены. Проект не обновлялся с 2018 года и прямо скажем, устарел.


В противовес выделим Gocryptfs (прошла аудит и была доработана по итогам), cppcryptfs, и Securefs, которые служат для создания и управления каталогами-контейнерами, основанными на файловой системе FUSE (Filesystem in Userspace) на базе AES256-GCM.


Эти решения концептуально занимают промежуточное место между криптографичекими контейнерами и пофайловым шифрованием. Утилиты для работы с FUSE на логическом уровне манипулируют контейнерами, но каждый файл в контейнере хранится отдельно. Такой подход лучше подходит для работы с облачными хранилищами — изменение одного файла не означает повторную загрузку всего контейнера, однако Filesystem in Userspace не скрывает структуру каталогов и размеры файлов.


Что касается CryFS, то эта консольная утилита создана для использования вместе с Dropbox или другими облачными сервисами. В ней для криптографии используется библиотека Crypto++. Ее архитектура описана в магистерской диссертации и научной статье, опубликованной на DBSec 2017. В основе шифр AES-256.


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


У подхода есть минус — множество отдельных файлов, которые генерирует программа. В некоторых облачных сервисах можно быстро столкнуться с ограничением на максимальное число файлов. К тому же, при шифровании файлов, размером менее нескольких МБ, CryFS увеличивает занимаемое ими место, из-за фиксированного размера шифрованного блока. Но главный недостаток утилиты заключается в том, что она все еще находится в стадии бета-тестирования.


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

Степан Давыдов, старший специалист-исследователь лаборатории криптографии компании «Криптонит».
Теги:
Хабы:
+35
Комментарии 36
Комментарии Комментарии 36

Публикации

Информация

Сайт
bastion-tech.ru
Дата регистрации
Дата основания
2014
Численность
101–200 человек
Местоположение
Россия
Представитель
Игорь Santry