WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

eCryptfs — это POSIX-совместимая многоуровневая криптографическая файловая система в ядре Linux (появилась в версии ядра 2.6.19).

Общие сведения

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

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

Особенности архитектуры

В основе eCryptfs лежит формат файла OpenPGP, описанный в RFC2440[1]. При этом, чтобы сохранить возможность произвольного доступа к данным в файле, разработчики отклонились от стандарта. Согласно формату OpenPGP, операции шифрования и расшифрования должны производиться над всем содержимым файла. Это приводит к тому, что нельзя прочитать ни одного байта из файла до тех пор, пока он не расшифрован полностью. Чтобы обойти эту проблему и не ухудшить безопасность системы, eCryptfs разбивает данные на экстенты. По умолчанию, эти куски имеют размер страницы файловой системы (задается в ядре, как правило, это 4096 байт). Чтобы прочитать данные из одного куска, его нужно полностью расшифровать, а чтобы записать данные в блок, нужно шифровать весь блок.

Архитектура системы eCryptfs

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

Схема разбиения файла на экстенты и шифрования, применяемая в файловой системе eCryptfs

Реализация шифрования на уровне файловой системы и хранение криптографических данных вместе с самими файлами несёт определённые преимущества:

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

Структура заголовка

Каждый индексный дескриптор eCryptfs соответствует индексному дескриптору нижележащей файловой системы и содержит криптографический контекст, связанный с ним. Этот контекст включает в себя:

  • Сессионный ключ шифрования
  • Флаг — шифрован или нет файл
  • Подписи аутентификационных токенов, связанных с этим файлом
  • Размеры экстентов

eCryptfs может кэшировать криптографический контекст каждого файла, чтобы ускорить работу системы.

Работа с паролями

Чтобы избежать словарных атак на пароли, eCryptfs «солит» пароли аутентификации: пароль соединяется со строчкой «соли», затем сконкатенированная строчка итеративно хешируется (по умолчанию 65537 раз), чтобы сгенерировать идентификационную подпись, соответствующую паролю.

Работа с ключами

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

Сессионные ключи

Каждый файл получает сгенерированный случайным образом сессионный ключ, который используется для шифрования содержимого файла. eCryptfs хранит этот сессионный ключ в криптографических метаданных файла. Они, в свою очередь, хранятся у соответствующего пользователя. Когда приложение закрывает только что созданный файл, eCryptfs шифрует сессионный ключ ровно один раз для каждого аутентификационного токена, связанного с этим файлом, согласно правилам шифрования. Затем эти зашифрованные сессионные ключи записываются в заголовки соответствующих файлов. Когда позже приложение открывает зашифрованный файл, eCryptfs читает зашифрованные сессионные ключи и вытаскивает их из криптографического контекста файла. Затем система просматривает пользовательские аутентификационные токены, пытаясь найти соответствие с зашифрованными сессионными ключами. Используется первый найденный ключ для расшифровки сессионного ключа. В случае, когда ни один токен не подходит для расшифровки, система действует в соответствии с политикой работы. Следующим действием может быть, например, запрос к модулю PKI либо запрос на ввод пароля.

Используемые алгоритмы шифрования

Для шифрования используются следующие симметричные алгоритмы шифрования[2]:

  • AES с размером блока — 16; размер ключа в байтах — 16, 32
  • Blowfish с размером блока 8; размер ключа в байтах — 16, 56
  • DES3_EDE с размером блока 8; размер ключа в байтах — 24
  • Twofish с размером блока 16; размер ключа в байтах — 16, 32
  • CAST6 с размером блока 16; размер ключа в байтах — 16, 32
  • CAST5 с размером блока 8; размер ключа в байтах — 5, 16

Дополнительные утилиты

В eCryptfs интегрированы несколько инструментов, облегчающих работу с системой.

Подключаемые модули аутентификации

Подключаемый модуль аутентификации (англ. pluggable authentication module, PAM) обеспечивает механизм, помогающий администратору определить, как конечные пользователи будут аутентифицироваться. PAM получает пароль пользователя и сохраняет его в пользовательских данных. Хранится пароль в виде несоленого аутентификационного токена. Преимущество этой системы в гибкости. Так, аутентификацию при помощи пароля можно без проблем заменить на аутентификацию с помощью USB-ключа.

Интерфейс PKI

eCryptfs обеспечивает настраиваемую PKI (Public Key Infrastructure). Модуль PKI принимает на вход ключи и данные и возвращает шифрованные либо расшифрованные данные.

Безопасность системы

В 2014 году сайтом DefuseSec проведен аудит[3] eCryptfs (почти одновременно с аудитом системы EncFS). Согласно его результатам, система eCryptfs в данный момент безопасна для использования. Тем не менее, она нуждается в дополнительных исследованиях касательно безопасности, так как была разработана не специалистом в области криптографии.

См. также

  • EncFS
  • Использование eCryptfs: настройка шифрования в ArchLinux

Примечания

  1. Donnerhacke, Lutz, Callas, Jon. OpenPGP Message Format. tools.ietf.org. Проверено 30 октября 2015.
  2. Алгоритмы шифрования в ECryptfs.
  3. eCryptfs Security Audit. defuse.ca. Проверено 30 октября 2015.

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии