<- ^ -> [Contents]
Предыдущий: 2.2 Краткий обзор внутреннего Выше: 2. Идея реализации файловой Следующий: 2.4 Недостатки реализации ext2_crypt

2.3 Общие принципы реализации ext2_crypt

Для того, чтобы ext2_crypt можно было пользоваться, необходимо реализовать способ создания такой файловой системы, способ ее монтирования, а также необходимо внести изменения в систему ext2, благодаря которым будет осуществляться механизм распознавания пароля и шифрования содержимого файловой системы. Под реализацией способа создания файловой систем подразумевается модификация стандартной mkfs (Рис. 4)


  
Рисунок: Модификация mkfs
[IMAGE ]

Из рисунка видно, что в новой реализации mkfs добавлен механизм запроса пароля, генерация по этому паролю ключа, а также шифрование суперблока с помощью сгенерированного ключа. Пароль, который вводится при создании файловой системы и является тем ключевым словом, которое необходимо будет ввести при монтировании для получения доступа к содержимому файлов. Из того, что при создании системы шифруется суперблок, вытекают два момента, выгодных с точки зрения защиты данных: во-первых, из того, что суперблок хранится на диске в зашифрованном виде следует, что систему невозможно смонтировать, какой бы тип файловой системы не был бы указан; во-вторых при монтировании с помощью расшифровывания суперблока осуществляется механизм распознавания пароля на правильность. Распознавание правильности пароля происходит следующим образом: при монтировании по введенному паролю генерируется ключ, с помощью которого происходит расшифровывание суперблока. В суперблоке есть поле s_magic, которое является ничем иным, как хранилищем так называемой ``магической'' константы, которая у каждой системы оригинальна, то есть в этом поле суперблока различных файловых систем хранятся различные константы. После того, как суперблок расшифрован, s_magic расшифрованного суперблока сравнивается с раз и навсегда заданной для ext2_crypt ``магической'' константой EXT2_CRYPT_SUPER_MAGIC, которая равна 0xFA53. Если совпадение имеет место, то монтирование разрешается, иначе -- нет.

Для того чтобы шифрованная система могла быть смонтирована, были необходимы изменения в стандартном mount (Рис. 5)


  
Рисунок: Модификация mount
[IMAGE ]

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

Также необходимо сказать о некотором неудобстве монтирования с точки зрения пользователя: при монтировании такой системы необходимо всегда указывать тип файловой системы (-t ext2_crypt). Это вызвано тем, что в стандартном mount тип файловой системы определяется в основном по имеющемуся в суперблоке полю -- s_magic. Так как суперблок хранится в шифрованном виде,а пароль спрашивается после определения типа файловой системы, то расшифровывание данного поля не представляется возможным. В процессе разработки было предложено несколько способов распознавания типа, но все они были отвергнуты по причине, либо нарушения надежности защиты информации, либо возможности монтирования другой файловой системы ( у шифрованного суперблока может произойти совпадение содержимого s_magic с ``магической'' константой какой-нибудь другой файловой системы). В результате разработчики пришли к выводу, что в данном случае придется пожертвовать удобством, нежели надежностью файловой системы.

Все остальные изменения осуществлены в самой реализации файловой системы ext2: отделение пароля от общего списка опций, распознавание пароля на правильность (способ распознавания был описан выше), а также подмена исходных имен и содержимого файлов на шифрованные, и наоборот.


  
Рисунок 6: Механизм изменения содержимого файлов
[IMAGE ]

Механизм изменения содержимого файлов показан на рисунке. Способ изменения имен файлов следующий: имя файла зашифровывается только один раз -- при создании файла, и в последующем храниться в зашифрованном виде; при запросе какого-либо файла, его имя зашифровывается и ищется в списке уже зашифрованных имен. Таким образом, при отсутствии правильного ключа, найти файл по его имени не представляется возможным.

Общая схема работы файловой системы указана на рисунке.


  
Рисунок 7: Общая схема работы файловой системы
[IMAGE ]