Смекни!
smekni.com

Файловая система NTFS Механизм EFS (стр. 4 из 4)

EFS не может расшифровать FEK самостоятельно и полагается в этом на Lsasrv, который может использовать CryptoAPI. С помощью драйвера KsecDD.sys EFS посылает LPC-сообщение Lsasrv, чтобы тот извлек из атрибута $LOGGED_UTILITY_STREAM FEK пользователя, открывающего файл, и расшифровал его.

Получив LPC-сообщение, Lsasrv вызывает функцию LoadUserProfile из Userenv.dll для загрузки в реестр профиля пользователя, если он еще не загружен. Lsasrv перебирает все поля ключей в данных EFS, пробуя расшифровать каждый FEK на основе закрытого ключа пользователя; с этой целью Lsasrv пытается расшифровать FEK в DDF или DRF элементе ключа. Если хэш сертификата в поле ключа не подходит к ключу пользователя, Lsasrv переходит к следующему полю ключа. Если Lsasrv не удастся расшифровать ни одного FEK в DDF или DRF, пользователь не получит FEK файла, и EFS запретит доступ к файлу приложению, которое пыталось открыть этот файл. А если Lsasrv найдет какой-нибудь хэш, который соответствует ключу пользователя, он расшифрует FEK по закрытому ключу пользователя через CryproAPI.

Lsasrv, обрабатывая при расшифровке FEK связки ключей DDF и DRF, автоматически выполняет операции восстановления файла. Если к файлу пытается получить доступ агент восстановления, не зарегистрированный на доступ к шифрованному файлу, т.е. у него нет соответствующего поля в связке ключей DDF, EFS позволит ему обратиться к файлу, потому что агент имеет доступ к пере ключей для поля ключа в связке ключей DRF.

Путь от драйвера EFS до Lsasrv и обратно требует довольно много времени – в процессе расшифровки FEK в типичной системе CryptoAPI использует результаты более 2000 вызовов API-функций реестра и 400 обращений к файловой системе. Чтобы сократить издержки от всех этих вызовов, драйвер EFS использует кэш в паре с NTFS.

Открыв шифрованный файл, приложение может читать и записывать его данные. Для расшифровки файловых данных NTFS вызывает драйвер EFS по мере чтения этих данных с диска – до того, как помещает их в кэш файловой системы. Аналогичным образом, когда приложение записывает данные в файл, они остаются незашифрованными в кэше файловой системы, пока приложение или диспетчер кэша не сбросит данные обратно на диск с помощью NTFS. При записи данных шифрованного файла из кэша на диск NTFS вызывает драйвер EFS, чтоб зашифровать их.

Драйвер EFS выполняет шифрование и расшифровку данных порциями по 512 байт. Такой размер оптимален для драйвера, потому что объем данных при операциях чтения и записи кратен размеру сектора.

Резервное копирование шифрованных файлов

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

Для доступа к шифрованному содержимому файлов утилиты резервного копирования в Windows 2000 используют новый EFS API: функции OpenEncryptedFileRaw, ReadEncryptedFileRaw, WriteEncryptedFileRaw и CloseEncryptedFileRaw. Эти функции, предоставляемые Advapi32.dll, вызывают соответствующие функции Lsasrv по механизму LPC. Например, после того как утилита резервного копирования открывает файл, она вызывает ReadEncryptedFileRaw, чтобы получить данные. Lsasrv-функция EfsReadFileRaw выдает управляющие команды, шифруемые по алгоритму DESX с помощью сеансового ключа EFS, драйверу NTFS для чтения сначала атрибута EFS файла, а затем его шифрованного содержимого.

EfsReadFileRaw может понадобиться несколько операций чтения, чтобы считать большой файл. По мере того как EfsReadFileRaw считывает очередную порцию файла, Lsasrv посылает Advapi32.dll RPC-сообщение, в результате которого выполняется функция обратного вызова, указанная программой резервного копирования при вызове ReadEncryptedFileRaw. Функция EfsReadFileRaw передает считанные шифрованные данные функции обратного вызова, которая записывает их на архивный носитель.

Восстанавливаются шифрованные файлы аналогичным образом. Программа резервного копирования вызывает API-функцию WriteEncryptedFileRaw, которая активизирует функцию обратного вызова программы резервного копирования для получения нешифрованных данных с архивного носителя, в то время как Lsasrv-функция EfsWriteFileRaw восстанавливает содержимое файла.

Заключение

Шифрованная файловая система защищает конфиденциальные данные в файлах на томах NTFS. EFS - основная технология шифрования и расшифровки файлов на томах NTFS. Открывать файл и работать с ним может только пользователь, его зашифровавший. Это чрезвычайно важно для пользователей переносных компьютеров: даже если взломщик получит доступ к потерянному или украденному компьютеру, он не сможет открыть зашифрованные файлы. В Windows XP шифрованная файловая система также поддерживает автономные файлы и папки (Offline Files and Folders).

Зашифрованный файл останется недоступным для просмотра в исходном виде, даже если атакующий обойдет системную защиту, например, загрузив другую ОС. EFS обеспечивает устойчивое шифрование по стандартным алгоритмам и тесно интегрирована с NTFS. EFS в Windows XP Professional предоставляет новые возможности совместного использования зашифрованных файлов или отключения агентов восстановления данных, а также облегчает управление посредством групповой политики и служебных программ командной строки.

Приложение. Сокращения.

Список используемой литературы

1. Д. Соломон, М. Руссинович. Внутреннее устройство Microsoft Windows 2000. Мастер-класс. / Пер. с англ. — СПб.: Питер; М.: Издательско-торговый дом «Русская Редакция», 2001.

2. В. Столлингс. Криптография и защита сетей: принципы и практика (2-е издание). / Пер. с англ. — М.: Издательский дом «Вильямс», 2001.

3. Баричев С. Г., Гончаров В. В., Серов Р. Е. Основы современной криптографии. — М.: Горячая линия — Телеком, 2001.