- •Транзакции, для которых записываются модификации
- •Упрощённый алгоритм восстановления после сбоя
- •Элемент ключа
- •Сопоставленные с файлом данные efs
- •Дополнительная информация о шифровании файлов efs
- •Восстановление после сбоев
- •Литература по ч.1 раздела 3.1
- •Внутреннее устройство операционных систем (на примере Microsoft Windows) Процессы и потоки
- •Задание
- •Планирование выполнения потоков
- •Ресурсы процесса
Элемент ключа
Элемент ключа (key entry, «заголовок» на рис. «Ключевая схема EFS») – запись о пользователе зашифрованного файла, необходимая для его расшифрования.
Связка ключей (key ring) – совокупность нескольких элементов ключей (поскольку один файл может быть доступен нескольким пользователям).
Сопоставленные с файлом данные efs
Data Decryption Field (DDF) – область данных EFS, хранящая связки ключей пользователей.
Data Recovery Field (DRF) – область данных EFS, хранящая связки ключей агентов восстановления (recovery key entries).
Агенты восстановления – это учётные записи, используемые для расшифрования файлов в тех случаях, когда администратору нужен доступ к пользовательским данным (например, при утере ключа пользователем).
Структура данных EFS
Заголовок |
Версия |
Контрольная сумма |
|
Поле шифрованных данных |
Число элементов ключей DDF |
DDF-элемент ключа 1 |
|
DDF-элемент ключа 2 |
|
… |
|
Поле восстановленных данных |
Число элементов ключей DRF |
DRF-элемент ключа 1 |
|
DRF-элемент ключа 2 |
|
… |
Структура элемента ключа DDF или DRF
Идентификатор пользователя в системе (SID) |
Имя контейнера |
Имя компонентов доступа (криптопровайдера) |
Хэш сертификата EFS |
Зашифрованный FEK |
Резервная копия шифруемого файла
Перед зашифрованием файла Lsass создаёт его резервную копию, в которую, в том числе, записывается содержимое именованных потоков исходного файла.
Резервная копия удаляется только после успешного зашифрования файла.
Статья про именованные потоки в журнале Хакер, именованный поток даже можно запустить на выполнение – там указано, как это сделать.
Взаимодействие компонентов ОС при шифровании файла
-
Приложение записывает данные в шифрованный файл.
-
NTFS помещает данные в кэш файловой системы.
-
Диспетчер кэша сбрасывает данные на диск по алгоритму отложенной записи через NTFS.
-
NTFS вызывает драйвер EFS для шифрования содержимого файла, предназначенного для записи на диск.
-
NTFS записывает данные зашифрованное содержимое файла на диск.
Основные этапы процесса шифрования
-
Загружается профиль пользователя, если это необходимо.
-
В каталоге System Volume Information создаётся файл журнала. Здесь тот же механизм транзакции, похож на NTFS-ный. По мере выполнения следующих этапов в журнал заносятся записи, позволяющие восстановить файл после сбоя системы в процессе шифрования.
-
Криптопровайдер генерирует для файла случайное 128-битное число, используемое в качестве FEK.
-
Генерируется или считывается криптографическая пара ключей пользователей.
-
Для файла создаётся связка ключей DDF с элементом для данного пользователя. Этот элемент содержит копию FEK, зашифрованную с помощью открытого ключа пользователя.
-
Для файла создаётся связка ключей DRF. В ней есть элементы для каждого агента восстановления в системе. В каждом элементе содержится копия FEK, зашифрованная с помощью открытого ключа агента.
-
Создаётся резервный файл в том каталоге, где находится шифруемый файл.
-
Связки ключей DDF и DRF добавляются к заголовку и сопоставляются с файлом, как атрибут EFS.
-
Резервный файл помечается, как шифрованный, и в него копируется содержимое исходного файла.
-
Содержимое исходного файла уничтожается, в него копируется содержимое резервного файла. В результате этой операции данные исходного файла шифруются, так как теперь файл помечен, как шифрованный.
-
Удаляется резервный файл.
-
Удаляется файл журнала.
-
Выгружается профиль пользователя.