Взаимодействие компонентов ОС при шифровании файла

Резервная копия шифруемого файла

Структура элемента ключа DDF или DRF

Структура данных EFS

Сопоставленные с файлом данные EFS

Элемент ключа

Элемент ключа (key entry, «заголовок» на рис. «Ключевая схема EFS») – запись о пользователе зашифрованного файла, необходимая для его расшифрования.

Связка ключей (key ring) – совокупность нескольких элементов ключей (поскольку один файл может быть доступен нескольким пользователям).

Data Decryption Field (DDF) – область данных EFS, хранящая связки ключей пользователей.

Data Recovery Field (DRF) – область данных EFS, хранящая связки ключей агентов восстановления (recovery key entries).

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

Заголовок Версия
Контрольная сумма
Поле шифрованных данных Число элементов ключей DDF
DDF-элемент ключа 1
DDF-элемент ключа 2
Поле восстановленных данных Число элементов ключей DRF
DRF-элемент ключа 1
DRF-элемент ключа 2
Идентификатор пользователя в системе (SID)
Имя контейнера
Имя компонентов доступа (криптопровайдера)
Хэш сертификата EFS
Зашифрованный FEK

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

Резервная копия удаляется только после успешного зашифрования файла.

Статья про именованные потоки в журнале Хакер, именованный поток даже можно запустить на выполнение – там указано, как это сделать.

1. Приложение записывает данные в шифрованный файл.

2. NTFS помещает данные в кэш файловой системы.

3. Диспетчер кэша сбрасывает данные на диск по алгоритму отложенной записи через NTFS.

4. NTFS вызывает драйвер EFS для шифрования содержимого файла, предназначенного для записи на диск.

5. NTFS записывает данные зашифрованное содержимое файла на диск.