Файловая система, которая обеспечивает зашифрованное представление каталога - обратная сторона EncFS

В настоящее время я использую EncFS для шифрования своего каталога "конфиденциально" в ".encconfidential" и синхронизации этого зашифрованного каталога с помощью онлайн-сервиса (например, Dropbox, UbuntuOne и т. Д.). Однако весь мой диск уже зашифрован LUKS, поэтому двойное шифрование снижает производительность.

Интересно, есть ли "инвертированная" опция EncFS? Незашифрованный каталог монтируется, и в смонтированном каталоге вы видите только зашифрованные файлы. Таким образом, я мог работать с незашифрованными документами, пока инструмент синхронизации видит и читает / записывает только зашифрованные файлы.

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

4 ответа

Решение

Там на самом деле есть Encfs "инвертированный" вариант. Со справочной страницы Encfs:

   --reverse
       Normally EncFS provides a plaintext view of data on demand.  Normally it stores enciphered data and displays plaintext data.  With --reverse it
       takes as source plaintext data and produces enciphered data on-demand.  This can be useful for creating remote encrypted backups, where you do
       not wish to keep the local files unencrypted.

       For example, the following would create an encrypted view in /tmp/crypt-view.

           encfs --reverse /home/me /tmp/crypt-view

       You could then copy the /tmp/crypt-view directory in order to have a copy of the encrypted data.  You must also keep a copy of the file
       /home/me/.encfs5 which contains the filesystem information.  Together, the two can be used to reproduce the unencrypted data:

           ENCFS5_CONFIG=/home/me/.encfs5 encfs /tmp/crypt-view /tmp/plain-view

       Now /tmp/plain-view contains the same data as /home/me

       Note that --reverse mode only works with limited configuration options, so many settings may be disabled when used.

Я не пробовал это для синхронизации, но я думаю, что это будет работать, если вы используете тот же .encfs5 Папка конфигурации на другом конце.

Теперь о том, как сделать именно то, что вы указываете:

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

~/
    confidential/
        secret_file.txt      # Stored unencrypted
    .enc_confidential/       # Read-only view of files in confidential/
        secret_file.txt      # Encrypted view of corresponding file

Стандартный способ сделать это - использовать FUSE (Файловая система в пространстве пользователя).

Для вашего случая использования уже существует файловая система FUSE, которая может делать то, что вы хотите, fuseflt, fuseflt предоставляет доступное только для чтения представление файловой системы с произвольными заданными пользователем фильтрами, применяемыми к каждому читаемому файлу.

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

Смотрите документацию о том, как написать свой конфигурационный файл. В основном, используйте flt_cmd = gpg --encrypt [... your chosen encryption settings] как команда фильтра.

Быть осторожен; если вы испортите свою конфигурацию, это может привести к незашифрованным данным в вашей интернет-службе. Я бы порекомендовал мой другой ответ для общего пользования.


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

Для написания вашей файловой системы FUSE доступно несколько учебных пособий. Также см. Вики FUSE для получения дополнительной документации.

После этого добавьте команду монтирования файловой системы FUSE в свой.profile, чтобы она автоматически монтировалась при входе в систему.

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

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

Duplicity / Deja-Dup

Duplicity ( пакет Ubuntu) - это программа резервного копирования, которая эффективно записывает сжатые зашифрованные инкрементные резервные копии в удаленное местоположение. Инкрементные резервные копии экономят пространство, поскольку для получения бинарных различий используется алгоритм rsync.

Вы также можете использовать внешний интерфейс Deja-Dup, который включен по умолчанию в последние версии Ubuntu.

Duplicity поддерживает запись во многие удаленные места или бэкэнды. В частности, у Duplicity есть бэкэнд Ubuntu One. Я не думаю, что он напрямую поддерживает Dropbox, но вы можете сказать, чтобы он делал резервную копию в локальном каталоге, который синхронизирует Dropbox.

Если вы создаете резервные копии больших объемов данных, Duplicity не подходит. Из-за ограничений в хранении инкрементных резервных копий требуется периодически запускать полную резервную копию, что влечет за собой загрузку всех ваших данных.

Obnam

Для больших резервных копий, посмотрите на Obnam. Он хранит зашифрованные данные, дедуплицированные в резервном хранилище. Чтобы использовать его со службой удаленного хранения, попросите Obnam выполнить резервное копирование в хранилище в месте, которое будет синхронизироваться Dropbox/Ubuntu One. Так как Obnam использует формат репозитория на основе B-дерева, которому нужно только записывать новые / измененные данные в репозиторий, синхронизация должна быть быстрой.

Недостатком является то, что для этого требуется хранение 2 копий ваших данных на жестком диске (каноническая копия и копия в хранилище резервных копий).

Ссылка на пакет Ubuntu. Также есть PPA.

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

См. Функции безопасности Seafile

Подсказка: Seafile называет общую папку "Библиотекой" для лучшего понимания документации.

Другие вопросы по тегам