EncFS

EncFS
EncFS
Тип

файловая система, шифрование

Разработчик

Valient Gough

Операционная система

Linux, FreeBSD, Mac OS

Последняя версия

1.7.4 (5 сентября 2010)

Лицензия

GNU GPL

Сайт

EncFS home

EncFS — свободное программное обеспечение (распространяющееся под лицензией GPL), основанная на FUSE криптографическая файловая система, прозрачно шифрующая файлы, используя произвольную директорию в качестве места для хранения зашифрованных файлов.

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

Содержание

Архитектура EncFS

EncFS взаимодействует непосредственно с libfuse (интерфейс FUSE), библиотекой логирования и OpenSSL (библиотека шифрования). «Общение» с ядром происходит через FUSE.

Взаимодействие с libfuse

  • Слой обратного вызова (callback layer) EncFS получает запросы из libfuse.
  • Далее эти запросы перенаправляются к соответствующему узлу директории (DirNode) или файла (FileNode) или возвращается информация из кэша, если она там присутствует.
  • Реализации интерфейсов вывода имён (NameIO) и содержимого (FileIO) файлов возвращают расшифрованную информацию.

Обзор шифрования в EncFS

Используемая библиотека OpenSSL предоставляет алгоритмы шифрования AES (16ти-байтный блочный шифр с длиной ключа 128—256 бит) и Blowfish (8-байтный блочный шифр с длиной ключа 128—256 бит). В ранних версиях (до 1.1) частично поддерживалась библиотека шифрования Botan. Шифрование происходит следующим образом:

  • Узел файла (FileNode) посылает запросы на чтение/запись через экземпляр FileIO;
  • FileIO формирует цепочку для шифрования;
  • Слой BlockFileIO конвертирует запросы в блочно-ориентированные.

Шифрование имен файлов

Имена файлов шифруются и затем кодируются в 64х-битную кодировку, параллельно избавляясь от символов «.» и «/». Есть возможность потокового (стандарт до версии 1.1) и блочного шифрования. 16ти-битный MAC используется как IV (инициализационный вектор) и приписывается спереди к зашифрованному имени, что позволяет рандомизировать результат шифрования (одинаковые имена файлов шифруются по-разному, так как при формировании инициализационного вектора используется весь путь к файлу).

Использование пароля

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

  • Для изменения пароля тома нужно всего лишь изменить одну строчку в конфигурационном файле.
  • Хорошая возможность расширяемости для восстановления пароля.

Размер блоков файловой системы

Все операции чтения/записи в EncFS являются блочными. Размер блоков определяется пользователем при создании файловой системы и варьируется от 64 до 4096 байт. Маленький размер блоков уменьшает время произвольного доступа, но увеличивает число запросов при чтении/записи больших кусков файлов. Большой размер блоков способствует увеличению скорости обработки данных, но увеличивает время произвольного доступа. В отличие от реальных файловых систем большой размер блоков не приводит к потере дискового пространства (незаполненные до конца блоки не забиваются нулями).

Использование MAC

При шифровании каждому блоку в файле добавляется заголовок MAC. Вплоть до последней версии EncFS включительно в качестве MAC’а используется 64х-битный SHA-1. Таким образом, 512ти-байтный блок является 504 байтами зашифрованных данных и 8 байтами MAC’а.

Конфигурационный файл

Каждый экземпляр файловой системы EncFS содержит конфигурационный файл «.encfs%», где % — номер версии. В этом файле содержатся:

  • опции шифрования, включая алгоритм (AES, BlowFish) и длину ключа;
  • заголовки MAC (Message authentication code);
  • размер блоков шифрования.

Поддержка файловой семантики Unix

EncFS поддерживает основную семантику файловой системы за исключением следующего:

  • переименование директории вызывает обновление значения времени изменения в содержащихся в ней файлах;
  • не разрешены жёсткие ссылки, так как данные из файла привязаны к имени файла.

Поддерживаемые операционные системы

Основная реализация EncFS поддерживается операционными системами Linux, Mac OS X, FreeBSD. Существует проект по портированию EncFS под Windows.

Использование EncFS в Linux

Использование зашифрованных каталогов очень похоже на установку любой другой файловой системы под Linux. Создаётся реальный каталог со всеми вашими файлами, для примера, /home/user/crypt-raw. Необходимо также создать точку монтирования, пусть это будет /home/user/crypt. При обращении к этим каталогам следует убедиться, что используете абсолютные пути (не только/usr/bin/crypt).

Шифруются данные командой:

> encfs /home/user/crypt-raw /home/user/crypt
Volume key not found, creating new encrypted volume.
Password:
Verify:

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

>fusermount -u /home/user/crypt

Эта команда отмонтирует каталог crypt, оставляя crypt-raw в зашифрованном виде.

Преимущества

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

  • Занимаемое «томами» EncFS дисковое пространство не фиксировано — оно растёт и уменьшается в зависимости от изменений количества и размера зашифрованных файлов.
  • Некоторые директории в директории-точке монтирования могут физически находится на различных устройствах.
  • Средства резервного копирования могут обновлять только те файлы, которые изменились в исходной директории, а не всю директорию.

Недостатки

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

Опции файловой системы

При создании нового EncFS каталога доступны различные опции.

Алгоритм шифрования

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

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

Размер блока

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

По умолчанию размер блока равен 512, чего достаточно в большинстве случаев.

Шифрование имен файлов

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

Цепи полных путей файлов

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

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

Инициирующий вектор для файлов

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

Включение этой опции делает файловую систему более защищённой ценой добавление всего лишь 8-ми байт к каждому файлу.

Внешние цепи инициирующих векторов

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

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

Block MAC headers

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

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

Авторазмонтирование после определённого времени не использования

Если зашифрованная файловая система не использовалась некоторое время (несколько минут), то она может быть автоматически размонтирована. Размонтирование не будет происходить, если открыт хотя бы один файл, даже на чтение.

Сравнение с аналогами

Сравнение проводилось с файловыми системами CryptoFS (также основанной на FUSE) и LUKS (реализованной на уровне ядра). Файловые системы CryptoFS и EncFS показывают лучшую производительность при размере файла и записи, близком к «родному» размеру страницы Linux-систем (4096 кбайт). Результаты обеих userspace-систем существенно отстают от результатов шифрования LUKS, как и предполагалось. Действительно, использование различных абстракций FUSE и криптографических систем налагает дополнительную задержку на все операции чтения и записи. Однако, производительность EncFS оказалась несколько выше производительности CryptoFS.

См. также

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное


Смотреть что такое "EncFS" в других словарях:

  • EncFS — Entwickler Valient Gough Aktuelle Version 1.7.4 (18. November 2010) Betriebssystem Linux, FreeBSD, MacOS X, Windows Kategorie Da …   Deutsch Wikipedia

  • EncFS — Infobox Software name = EncFS caption = developer = Valient Gough latest release version = 1.4.2 latest release date = April 13 2008 latest preview version = latest preview date = operating system = Linux, FreeBSD platform = genre = filesystem,… …   Wikipedia

  • Encfs — …   Википедия

  • GNU/Linux — Linux oder GNU/Linux Entwickler Diverse Version Keine offizielle Version …   Deutsch Wikipedia

  • LINUX — oder GNU/Linux Entwickler Diverse Version Keine offizielle Version …   Deutsch Wikipedia

  • Linux (Betriebssystem) — Linux oder GNU/Linux Entwickler Diverse Version Keine offizielle Version …   Deutsch Wikipedia

  • NTFS — Developer Microsoft Full name New Technology File System[1] Introduced July 1993 (Windows NT 3.1) Partition identifier 0x07 (MBR) EBD0A0A2 B9E5 4433 87C0 68B6 …   Wikipedia

  • File Allocation Table — For other uses, see Fat (disambiguation). FAT Developer Microsoft Full Name File Allocation Table FAT12 (12‑bit version) FAT16/FAT16B (16‑bit versions) FAT32 (32‑bit version with 28 bits used) Introduced …   Wikipedia

  • Coda (file system) — Coda Developer Carnegie Mellon University Introduced 1987 Features Supported operating systems Linux, NetBSD FreeBSD Coda is a distributed file system developed as a research project at Carnegie Mellon University since 19 …   Wikipedia

  • Reiser4 — Developer Namesys Full name Reiser4 Introduced 2004 (Linux) Partition identifier Apple UNIX SVR2 (Apple Partition Map) 0x83 (MBR) Basic data partition (GPT) …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»