| |
Для того, чтобы ext2_crypt можно было пользоваться, необходимо реализовать способ создания такой файловой системы, способ ее монтирования, а также необходимо внести изменения в систему ext2, благодаря которым будет осуществляться механизм распознавания пароля и шифрования содержимого файловой системы. Под реализацией способа создания файловой систем подразумевается модификация стандартной mkfs (Рис. 4)
Из рисунка видно, что в новой реализации mkfs добавлен механизм запроса пароля, генерация по этому паролю ключа, а также шифрование суперблока с помощью сгенерированного ключа. Пароль, который вводится при создании файловой системы и является тем ключевым словом, которое необходимо будет ввести при монтировании для получения доступа к содержимому файлов. Из того, что при создании системы шифруется суперблок, вытекают два момента, выгодных с точки зрения защиты данных: во-первых, из того, что суперблок хранится на диске в зашифрованном виде следует, что систему невозможно смонтировать, какой бы тип файловой системы не был бы указан; во-вторых при монтировании с помощью расшифровывания суперблока осуществляется механизм распознавания пароля на правильность. Распознавание правильности пароля происходит следующим образом: при монтировании по введенному паролю генерируется ключ, с помощью которого происходит расшифровывание суперблока. В суперблоке есть поле s_magic, которое является ничем иным, как хранилищем так называемой ``магической'' константы, которая у каждой системы оригинальна, то есть в этом поле суперблока различных файловых систем хранятся различные константы. После того, как суперблок расшифрован, s_magic расшифрованного суперблока сравнивается с раз и навсегда заданной для ext2_crypt ``магической'' константой EXT2_CRYPT_SUPER_MAGIC, которая равна 0xFA53. Если совпадение имеет место, то монтирование разрешается, иначе -- нет.
Для того чтобы шифрованная система могла быть смонтирована, были необходимы изменения в стандартном mount (Рис. 5)
Как показано на рисунке, к старой реализации mount добавлен механизм запроса пароля, при правильности которого происходит монтирование, а также способ передачи пароля файловой системе. Под способом передачи пароля файловой системе подразумевается добавление пароля к списку опций, которые, в свою очередь, передаются файловой системе на дальнейшую обработку.
Также необходимо сказать о некотором неудобстве монтирования с точки зрения пользователя: при монтировании такой системы необходимо всегда указывать тип файловой системы (-t ext2_crypt). Это вызвано тем, что в стандартном mount тип файловой системы определяется в основном по имеющемуся в суперблоке полю -- s_magic. Так как суперблок хранится в шифрованном виде,а пароль спрашивается после определения типа файловой системы, то расшифровывание данного поля не представляется возможным. В процессе разработки было предложено несколько способов распознавания типа, но все они были отвергнуты по причине, либо нарушения надежности защиты информации, либо возможности монтирования другой файловой системы ( у шифрованного суперблока может произойти совпадение содержимого s_magic с ``магической'' константой какой-нибудь другой файловой системы). В результате разработчики пришли к выводу, что в данном случае придется пожертвовать удобством, нежели надежностью файловой системы.
Все остальные изменения осуществлены в самой реализации файловой системы ext2: отделение пароля от общего списка опций, распознавание пароля на правильность (способ распознавания был описан выше), а также подмена исходных имен и содержимого файлов на шифрованные, и наоборот.
Механизм изменения содержимого файлов показан на рисунке. Способ изменения имен файлов следующий: имя файла зашифровывается только один раз -- при создании файла, и в последующем храниться в зашифрованном виде; при запросе какого-либо файла, его имя зашифровывается и ищется в списке уже зашифрованных имен. Таким образом, при отсутствии правильного ключа, найти файл по его имени не представляется возможным.
Общая схема работы файловой системы указана на рисунке.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |