Шифруемся с EncFS

encfs-logo

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

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

Это уже третья версия статьи, в ней многое поменялось, одно осталось я все также продолжаю использовать EncFS.

Немного о EncFS

EncFS (Google Code) – криптографическая файловая система, основанная на FUSE. Для работы использует библиотеку OpenSSL (алгоритмы шифрования AES и Blowfish). Файлы шифруются с помощью ключа, пароль используется для его расшифровки. Ключ и настройки сохраняются в конфигурационном файле .encfs%.xml в каталоге с зашифрованными файлами. Подробней можно прочитать в Википедии.

Почему не TrueCrypt? (лирическое отступление)

Сначала о различиях. Основное отличие EncFS от TrueCrypt в использовании шифрованных каталогов вместо шифрованных томов. Что это дает? Большую гибкость, дисковое пространство используется эффективней (размер каталога не фиксирован). Просто пользоваться, просто синхронизировать файлы (только измененные)… Минусы, а именно возможность видеть размер и время изменения файла(в данном случае для меня не существенны).

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

Как это работает (на примере EncFS в Linux)

Для примера опишу работу с EncFS в Linux. В целом пользоваться EncFS достаточно просто – указывается каталог для шифруемых файлов и точка его монтирования. При подключении (монтировании) каталога с зашифрованными файлами каждому файлу из этого каталога будет соответствовать файл в каталоге монтирования. Что бы зашифровать файл его достаточно переместить в каталог монтирования. Попробуем создать каталог EncFS:

  • Устанавливаем sudo apt-get install encfs (предполагается, что FUSE установлено и настроено)
  • Создадим каталог для зашифрованных файлов, лучше скрытый, например .encrypt – mkdir /home/user/.encrypt
  • Создадим точку монтирования, например encrypt – mkdir /home/user/encrypt
  • Монтируем созданный каталог: $ encfs /home/user/.encript /home/user/encript. Соглашаемся создать каталог, последует предложение выбрать опции шифрования: e(x)pert – для эксперта, (р)aranoia – для максимальной секретности), ничего – настройки по умолчанию, наш выбор. Два раза вводим пароль, готово.
  • Завершаем работу командой $ fusemount -u /home/user/encript.

EncFS для Windows

Как не была хороша технология, для подавляющего большинства пользователей ПК она не существует если не работает в Windows. EncFS работает. Для работы понадобятся порт FUSE и порт EncFS для Windows. Dokan – порт FUSE для Windows, скачаем и установим (не работает в XP x64). encfs4win – пока лучший порт EncFS для Windows. Скачиваем и распаковываем в любое удобное место.

Запускаем encfsw.exe, в трее появится иконка с ключиком. Кликнув правой кнопкой мыши можно выбрать создание или подключение готового шифрованного каталога. Подключаемый каталог виден в системе виртуальным диском. Для созданных (подключенных) томов появятся пункты быстрого монтирования. Если вы планируете использовать несколько операционных систем то создавать шифрованный каталог нужно под Windows. Иначе созданный под Linux каталог может оказаться недоступен, из за ограниченной поддержки EncFS (только алгоритм AES 256).

EncFS под Linux (Ubuntu)

Хоть EncFS и родная для Linux файловая система это не значит что единственный способ ее использования командная строка. Существуют графические оболочки сильно упрощающие жизнь простому пользователю Linux’а. остается только выбрать наиболее подходящую. Наиболее подходящей я считаю Gnome Encfs Manager (GEncfsM). Можно создавать новые и подключать имеющиеся каталоги (как вручную, так и автоматически), изменять пароли для уже существующих и хранить пароли в Gnome Keyring. Устанавливаем:


$ sudo add-apt-repository ppa:gencfsm
$ sudo apt-get update && apt-get install gnome-encfs-manager

EncFSman, претендент на на кросс-платформенность, написан на Python с использованием wxWidgets. Умеет интегрироваться не только с Gnome Keyring, но и с KDE Wallet. Хорошо выглядит в KDE.

EncFS для OS X

FUSE портирован на OSX, как и на любой другой современный UNIX. В придачу имеется отличный графический интерфейс MacFusion. Остается только поставить и добавить модули для EncFS, тоже есть (разве только на IOS дальше порта ifuse дело не пошло). Для OS X версии OS X 10.7 и выше:

  • Скачиваем и устанавливаем OSXFUSE
  • Устанавливаем EncFS brew install encfs (используется менеджер пакетов Homebrew, статья по сабжу на хабре)
  • Скачаем и установим MacFusion, графический интерфейс к OSXFUSE
  • Скачаем и установим плагин EncFS для MacFusion

Для OS X 10.6 Snow Leopard есть установщик все в одном от BoxCryptor (похерен создателями, но у меня сохранился).

EncFS под Android

Закончили с настольными операционными системами и переходим к мобильным. Тут не все так радужно, если для Android есть на выбор несколько вариантов, то для других мобильных осей ни одного.

Для Android, как я сказал есть три варианта на выбор: Cryptonite, Encdroid и CloudFetch. Выбор, это хорошо, на случай если, что то пойдет не так. пока все идет по плану я предпочитаю – Cryptonite. Несмотря на статус бета версии работа приложения вопросов не вызывает. Cryptonite может как открывать локальные EncFS каталоги, так и экспортировать зашифрованные каталоги из DropBox. Если на вашем устройстве имеется root права, и (что вряд ли) модуль ядра FUSE вы сможете монтировать EncFS разделы и TrueCrypt диски к файловой системе. Придраться можно разве к тому, что из облаков поддерживается только DropBox и к тому, что приложение не переносится на карту памяти.

Еще нужно упомянуть CloudFetch. Особенность приложения работа напрямую, без предзагрузки файлов, с DropBox, SpiderOak, SparkleShare и Ubuntu One. Приложение изначально было открытым, затем автор передумал и сейчас открыта только основная библиотека (jefsr).

BoxCryptor или недо-EncFS

BoxCryptor – приложения для разных операционных систем, создающие шифрованные каталоги совместимые с EncFS (по утверждению авторов). На самом BoxCryptor гарантированно работает только с каталогами созданными BoxCryptor. А ведь в свое время приложение казалось хорошим вариантом для Android и iOS. Сказанное относится к версии именуемой сейчас Boxcryptor Classic, есть новая версия вообще несовместимая ни с чем, в ней авторы сделали все возможное что бы закрепить пользователей в анальном рабстве.

Можно было бы не упоминать это приложение, но с одной стороны предупредить не помешает, а с другой это единственный вариант получить сходное с EncFS шифрование под iOS (под WP8 и этого нет). Тем более, что внутри теплого круга утилит Boxcryptor все работает хорошо. Имеются готовые установщики для Windows, Android, OSX и iOS. Если вам лень возится с настройками, подойдет, как вариант.

P.S.

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

Версия статьи 2.0 от 08.09.2012 дополненная и исправленная.
Версия статьи 3.0 от 30.08.2013 дополненная и исправленная.

  • Дмитрий

    > Завершаем работу командой $ fusemount -u /home/user/encript.

    Правильно (из man encfs): fusermount -u /home/user/encript