EncFS. В помощь параноикам






Какими бы надёжными и защищёнными не объявляли себя онлайн-сервисы хранения данных вроде Wuala или DropBox, всё равно нет никаких гарантий того, что до ваших файлов не доберутся особо заинтересованные в них люди или организации. Единственная гарантия — вы сами. Если ваши файлы на жёстком диске хранятся в зашифрованной файловой системе, то можно гораздо меньше беспокоится в случае, если ваш винчестер отправится куда-то «на исследование» (естественно, если вы адекватно подошли к выбору алгоритма шифрования, ключа и/или пароля). Сам-собой возникает вопрос: как быть с файлами перед отправкой их за пределы вашей системы туда, где нет никаких гарантий безопасности хранилища? Естественно, отправлять их «как есть», мягко говоря, не рекомендуется.



Один из вариантов — это шифровать файлы при помощи GnuPG перед отправкой их в удалённое хранилище. При резервном копировании вполне удобный вариант. Несколько по другому обстоит дело с синхронизацией файлов в реальном времени: как вы объясните клиенту DropBox или Wuala то, что перед синхронизацией файлы необходимо шифровать? Я лично не знаю пока такого способа. Из этого следует, что файлы должны быть уже зашифрованы, прежде чем клиент онлайн-сервиса приступит к их отправке на сервер, то есть файлы должны шифроваться в реальном времени и уже готовенькие к отправке лежать в условленном месте.

Для решения этой задачи сегодня мы с вами воспользуемся услугами EncFS — FUSE-ФС, предназначенной для шифрования/дешифровки файлов в режиме реального времени.

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

$ sudo apt-get install encfs

Пользоваться EncFS очень просто. Допустим, вам необходимо, чтобы всё, что попадало в каталог ~/private, было зашифровано и в таком виде записано в каталог ~/.encrypted. Для создания такой структуры, достаточно дать команду (каталоги можно не создавать, программа сама создаст их при необходимости):

$ encfs ~/encrypted ~/private

Далее, если каталоги не существуют, программа попросит вас подтвердить их создание:

The directory "/home/ashep/encrypted" does not exist. Should it be created? (y,n) y
The directory "/home/ashep/private" does not exist. Should it be created? (y,n) y

После этого вам необходимо выбрать опции шифрования:

Please choose from one of the following options:
 enter "x" for expert configuration mode,
 enter "p" for pre-configured paranoia mode,
 anything else, or an empty line will select standard mode.

Здесь вы можете просто нажать «Enter», что приведёт к выбору стандартных опций. Выбрав «p», вы включите «параноидальный» режим, в котором предустановки настроены на обеспечение максимальной безопасности (естественно, за счёт производительности). Если же вы разбираетесь в терминах криптозащиты, вы можете выбрать «x» и настроить все, как вашей душе угодно.

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

Configuration finished.  The filesystem to be created has
the following properties:
Filesystem cipher: "ssl/aes", version 2:2:1
Filename encoding: "nameio/block", version 3:0:1
Key Size: 256 bits
Block Size: 1024 bytes, including 8 byte MAC header
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.
File data IV is chained to filename IV.
File holes passed through to ciphertext.
-------------------------- WARNING --------------------------
The external initialization-vector chaining option has been
enabled.  This option disables the use of hard links on the
filesystem. Without hard links, some programs may not work.
The programs 'mutt' and 'procmail' are known to fail.  For
more information, please see the encfs mailing list.
If you would like to choose another configuration setting,
please press CTRL-C now to abort and start over.

И приглашение дважды ввести пароль:

Now you will need to enter a password for your filesystem.
You will need to remember this password, as there is absolutely
no recovery mechanism.  However, the password can be changed
later using encfsctl.
New Encfs Password:
Verify Encfs Password:

На этом всё. В каталоге ~/encrypted будет создан файл .encfs6.xml, содержащий всю необходимую информацию для работы EncFS:

Теперь, если поместить в каталог ~/private файлы/каталоги, в каталоге ~/encrypted появятся зашифрованные версии этих файлов и каталогов:

После того, как вы закончите работу и виртуальная ФС вам больше не понадобится, вы можете вручную отмонтировать её:

$ fusermount -u ~/private

И остаться наедине с зашифрованными версиями ваших файлов:

Позже, когда вам снова понадобится незашифрованное содержимое, просто смонтируйте каталог ~/encrypted в каталог ~/private (или какой вам больше подходит) той же командой, которой мы создавали зашифрованный каталог ранее.

Теперь осталось только настроить синхронизацию каталога ~/encrypted с вашим любимым онлайн-хранилищем и уже не стоит волноваться о возможном потустороннем доступа к вашим секретам.

Ко всему прочему, если ваши данные локально надёжно защищены, вы можете создать небольшой shell-сценарий, который бы автоматически  монтировал шифрованный каталог при входе в систему:

#!/bin/bash
echo ВАШПАРОЛЬ | encfs -S ~/encrypted ~/private

Здесь опция '-S' сообщает encfs о том, что пароль следует считывать из стандартного ввода, а не запрашивать интерактивно. Сам пароль передаётся через конвейер при помощи echo. Ещё раз обращу внимание: не пользуйтесь таким способом, если есть большая вероятность того, что доступ к вашим локальным файлам будет получить очень просто. Храните деньги в сберегательной кассе используйте шифрованные файловые системы!




EncFS. В помощь параноикам: 2 комментария

  1. В продолжении комментариев на

    www.ashep.org/2011/wuala- ...oe-xranilishhe/:

    Да. Интересный вариант. Но скорее как замена TrueCrypt. Для автоматических бэкапов не очень мне подходил т.к. нужно вводить пароль руками. В этом отношении GnuPG + скрипт удобней т.к. все шифруется открытым ключом, который не надо прятать. А вот расшифровать может только владелец закрытого ключа, который надежно попрятан (и владелец, и ключ ;)).

    За обзоры большое спасибо.

Комментарии запрещены.