На самом-самом деле его секреты нафиг никому не нужны. И кстати, такой ключ за 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.

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

Комментарии (25)


  1. garwall
    19.01.2023 12:49
    +3

    Ээ. Извините пожалуйста, но где gpg?


    1. SantrY Автор
      19.01.2023 13:22

      Замечательная вещь, хотя может быть не всегда удобная. Была мысль ее вынести в отдельный пункт, возможно, действительно стоило. Логика была такая, что это все же больше решение для переписки и цифровых подписей. Да, можно шифровать файлы, но алгоритм все-таки асимметричный. Несколько иной фокус, чем заявлено в посте. Так что оставили только Kryptor и одно упоминание GPG.


      1. garwall
        19.01.2023 13:28
        +2

        Можно и симметрично. gpg -c yourfile


      1. Tarakanator
        19.01.2023 13:34

        а чем плохо ассимметричное шифрование? Я вот сейчас приглядываюсь к шифрованию бэкапа. Удобно, можно всем раздать открытый ключ и не парится что он куда-то утечёт, а закрытый хранить в блокнотике(бумажном) и доставать только по надобности.


        1. SantrY Автор
          19.01.2023 13:47
          -1

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


        1. andreymal
          19.01.2023 15:22
          -2

          Шифрую свои бэкапы с помощью age - тоже асимметричное шифрование, но проще для понимания чем gpg


        1. suurtoll
          19.01.2023 22:54

          Например, медленнее в 100-1000 раз.


          1. iig
            19.01.2023 23:03

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


      1. Dofmen
        19.01.2023 22:54

        Использую gpg под Linux для симметричного шифрования: gpg -- symmetric --cipher-algo AES256 имя_файла


  1. Asparagales
    19.01.2023 13:34
    +1

    Я перед загрузкой файлов в облако шифрую их в 7-zip.


    1. SantrY Автор
      19.01.2023 13:53

      Кстати, тогда вам может понравиться PeaZip. Про него писать не стали, но разработка достойная и криптографии в нем уделено больше внимания.


  1. aborouhin
    19.01.2023 14:09

    Для шифрования файлов, которые хранятся в S3-совместимом объектном хранилище, и одновременно доступа к этому хранилищу как виртуальной ФС, использую s3ql. Замечательный софт, несколько Тб и десятки миллионов файлов с активным доступом, несколько сотен Гб локального кэша, - и всё это работает как часы (тьфу-тьфу-тьфу). Но, увы, автор прекратил развитие проекта, репозиторий на Github заморожен и живых форков пока не появилось :( Придётся искать замену, видимо, совместив несколько разных решений для шифрования отдельно и для S3 отдельно.


  1. funca
    19.01.2023 14:25
    +1

    Спасибо за классный обзор программ для десктопа. Планируете-ли сделать аналогичный для серверных решений encryption at rest?


    1. SantrY Автор
      19.01.2023 16:59
      +1

      Если найдем погруженного в тему эксперта. Тут стоит сделать основательное, серьезное сравнение с бенчмарками.


  1. anzay911
    19.01.2023 16:38

    А в каких используется нарезка блока на чанки? Интересует с целью подгрузки в облако на небыстром интернете.


    1. SantrY Автор
      19.01.2023 16:54
      +2

      В Duplicati есть возможность выбрать размер чанка и в rclone. Там эта фича на стадии бета-тестирования. Еще кажется, так умеет CryFS, но могу ошибаться.


  1. Alexey2005
    19.01.2023 18:46
    +1

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


    1. lorc
      20.01.2023 00:38
      +3

      cryptsetup же. Все как вы хотите. Но только под линуксом.


    1. blackarrow
      20.01.2023 00:49
      +2

      Можно установить portable версию VeraCrypt на флешку. Есть настройки Traveler Disk.


      1. vassabi
        20.01.2023 04:08
        +1

        + 1 к VeraCrypt  - у нее есть даже клиент для андроида https://f-droid.org/en/packages/com.sovworks.edslite/ (он же есть и в гуглосторе, в аппловом аппсторе - не смотрел, но тоже должно что-то быть).

        Отлично читает и модифицирует криптоконтейнеры с флешки, созданные в десктопной версии.


  1. iShrimp
    19.01.2023 18:54

    Подскажите, чем отличается по надёжности "Шифрование устройства" в Windows 10/11 Home от "Шифрования Bitlocker" в старших версиях? Вроде бы и тут, и там раздел шифруется AES 128 и недоступен с другой системы без ключа.


  1. feadraug
    19.01.2023 21:46

    winrar уже не котируется?


    1. karavan_750
      20.01.2023 23:33

      winrar не имеет отношения к open source


  1. kt97679
    19.01.2023 22:58

    Достаточно странно, что среди перечисленных программ нет openssl


  1. lea
    19.01.2023 23:38
    +1

    В дополнение к списку утилит для шифрования разделов: https://diskcryptor.org/