- Win32 api
- Аутентификация
- Библиотека времени выполнения efs (fsrtl)
- Взаимодействие с пользователем
- Включение архивации ключа для центра сертификации
- Восстановление данных
- Восстановление зашифрованных файлов на другом компьютере
- Дешифрование файлов и каталогов
- Драйвер efs
- Использование сертификатов в интернете
- Конфиденциальность
- Немного практики
- Немного теории
- Процесс восстановления
- Процесс дешифрования
- Процесс шифрования
- Реализация в windows 2000
- Служба efs
- Технология шифрования
- Хранилища сертификатов
Win32 api
Обеспечивает интерфейс программирования для шифрования открытых файлов, дешифрования и восстановления закрытых файлов, приема и передачи закрытых файлов без их предварительной расшифровки. Реализован в виде стандартной системной библиотеки advapi32.dll.
Аутентификация
Аутентификация является необходимым условием обеспечения секретности обмена данными. Пользователи должны иметь возможность подтвердить свою подлинность и проверить идентификацию других пользователей, с которым они общаются. Цифровой сертификат является распространенным средством идентификации.
Сертификаты служат для обеспечения аутентификации в следующих случаях:
- аутентификация пользователя для защищенного веб-узла посредством протоколов Transport Layer Security (TLS) или Secure Sockets Layer (SSL);
- аутентификация сервера для пользователя посредством TLS.
Библиотека времени выполнения efs (fsrtl)
FSRTL — это модуль внутри драйвера EFS, который осуществляет внешние вызовы NTFS для выполнения различных операций файловой системы, таких как чтение, запись, открытие зашифрованных файлов и каталогов, а также операций шифрования, дешифрования, восстановления данных при записи на диск и чтении с диска.
Несмотря на то, что драйвер EFS и FSRTL реализованы в виде одного компонента, они никогда не взаимодействуют напрямую. Для обмена сообщениями между собой они используют механизм вызовов NTFS. Это гарантирует участие NTFS во всех файловых операциях. Операции, реализованные с использованием механизмов управления файлами, включают запись данных в файловые атрибуты EFS (DDF и DRF) и передачу вычисленных в EFS ключей FEK в библиотеку FSRTL, так как эти ключи должны устанавливаться в контексте открытия файла.
Взаимодействие с пользователем
По умолчанию EFS сконфигурирована таким образом, что пользователь может сразу начать использовать шифрование файлов. Операция шифрования и обратная поддерживаются для файлов и каталогов. В том случае, если шифруется каталог, автоматически шифруются все файлы и подкаталоги этого каталога.
Необходимо отметить, что если зашифрованный файл перемещается или переименовывается из зашифрованного каталога в незашифрованный, то он все равно остается зашифрованным. Операции шифрования/дешифрования можно выполнить двумя различными способами — используя Windows Explorer или консольную утилиту Cipher.
Для того чтобы зашифровать каталог из Windows Explorer, пользователю нужно просто выбрать один или несколько каталогов и установить флажок шифрования в окне расширенных свойств каталога. Все создаваемые позже файлы и подкаталоги в этом каталоге будут также зашифрованы. Таким образом, зашифровать файл можно, просто скопировав (или перенеся) его в «зашифрованный» каталог.
Зашифрованные файлы хранятся на диске в зашифрованном виде. При чтении файла данные автоматически расшифровываются, а при записи — автоматически шифруются. Пользователь может работать с зашифрованными файлами так же, как и с обычными файлами, то есть открывать и редактировать в текстовом редакторе Microsoft Word документы, редактировать рисунки в Adobe Photoshop или графическом редакторе Paint, и так далее.
Необходимо отметить, что ни в коем случае нельзя шифровать файлы, которые используются при запуске системы — в это время личный ключ пользователя, при помощи которого производится дешифровка, еще недоступен. Это может привести к невозможности запуска системы!
В EFS предусмотрена простая защита от таких ситуаций: файлы с атрибутом «системный» не шифруются. Однако будьте внимательны: это может создать «дыру» в системе безопасности! Проверяйте, не установлен ли атрибут файла «системный» для того, чтобы убедиться, что файл действительно будет зашифрован.
Важно также помнить о том, что зашифрованные файлы не могут быть сжаты средствами Windows 2000 и наоборот. Иными словами, если каталог сжат, его содержимое не может быть зашифровано, а если содержимое каталога зашифровано, то он не может быть сжат.
В том случае, если потребуется дешифровка данных, необходимо просто снять флажки шифрования у выбранных каталогов в Windows Explorer, и файлы и подкаталоги автоматически будут дешифрованы. Следует отметить, что эта операция обычно не требуется, так как EFS обеспечивает «прозрачную» работу с зашифрованными данными для пользователя.
Включение архивации ключа для центра сертификации
Прежде чем агент восстановления ключа сможет использовать сертификат восстановления ключа, это агент должен подать заявку на получение сертификата восстановления ключа и должен быть зарегистрирован в центре сертификации как агент восстановления ключа.
Дл выполнения этой процедуры необходимо быть администратором центра сертификации. Для получения дополнительных сведений см. Реализация ролевого администрирования.
Откройте оснастку “Центр сертификации”.
В дереве консоли щелкните имя центра сертификации.
В меню Действие выберите команду Свойства.
Выберите вкладку Агенты восстановления, а затем нажмите кнопку Архивировать ключ.
В поле Количество используемых агентов восстановления введите количество агентов восстановления ключа, которое будет использоваться для шифрования архивированного ключа.
Число Количество используемых агентов восстановления должно находиться в диапазоне между единицей и числом настроенных сертификатов агентов восстановления.
Нажмите кнопку Добавить. Затем в Выбор агента восстановления ключей щелкните отображаемые сертификаты восстановления ключа и нажмите кнопку ОК.
Сертификаты должны появиться в списке Сертификаты агента восстановления ключей, но их статус будет показан как Не загружен.
Нажмите кнопку ОК или Применить. В ответ на предложение перезагрузить центр сертификации нажмите кнопку Да. После перезагрузки центра сертификации статус сертификатов должен показываться как Действителен.
Значения статуса и причины, которые может содержать список Сертификаты агента восстановления ключей, приведены в следующей таблице.
| Состояние | Причина |
|---|---|
Истек | Срок действия сертификата закончился, поэтому использовать сертификат нельзя. |
Недействителен | Сертификат может быть искажен или вызывает ошибку при загрузке. |
Не найден | Сертификат был настроен, но центру сертификации не удалось его найти. |
Не загружен | Сертификат был настроен, но не был загружен центром сертификации. |
Отозван | Сертификат был отозван и не может быть использован. |
Ненадежный | Корневой центр сертификации для этого сертификата не является доверенным для текущего центра сертификации. |
Действителен | Сертификат был загружен центром сертификации и работает нормально. |
Если значение Количество используемых агентов восстановления превышает количество сертификатов агентов восстановления со статусом Действителен, запросы регистрации сертификатов, требующие архивации ключа, закончатся неудачей.
Восстановление данных
EFS обеспечивает встроенную поддержку восстановления данных на тот случай, если потребуется их расшифровать, но, по каким-либо причинам, это не может быть выполнено обычным. По умолчанию, EFS автоматически сгенерирует ключ восстановления, установит сертификат доступа в учетной записи администратора и сохранит его при первом входе в систему.
Таким образом, администратор становится так называемым агентом восстановления, и сможет расшифровать любой файл в системе. Разумеется, политику восстановления данных можно изменить, и назначить в качестве агента восстановления специального человека, ответственного за безопасность данных, или даже несколько таких лиц.
Восстановление зашифрованных файлов на другом компьютере
Иногда возникает необходимость восстановить зашифрованную информацию не на том компьютере, на котором она была заархивирована. Это можно выполнить с помощью утилиты архивации, которая сохраняет информацию в зашифрованном виде вместе с атрибутом шифрования.
На любом компьютере, где зарегистрировался пользователь, обладающий перемещаемым профилем, будут применяться одни и те же ключи шифрования.
Ручной перенос личного ключа и сертификата выполняется в два этапа: сначала следует создать резервную копию сертификата и личного ключа (при этом сертификат и секретный ключ должны быть экспортированы в файл с расширением .pfx), а затем восстановить созданную копию на другом компьютере.
(Эта процедура имеет смысл только для компьютеров, не входящих в домен. В домене можно использовать процедуру, описанную выше в разд. “Шифрование файлов для совместного использования”.) В результате этой процедуры текущий пользователь (который импортировал сертификат) получит возможность работать с зашифрованными данными на этом компьютере.
Дешифрование файлов и каталогов
Чтобы дешифровать файл или каталог:
- На вкладке Sharing окна свойств соответствующего объекта нажмите кнопку Advanced.
- В открывшемся диалоговом окне в группе Compress or Encrypt attributes сбросьте флажок Encrypt contents to secure data.
Драйвер efs
Этот компонент расположен логически на вершине NTFS. Он взаимодействует с сервисом EFS, получает ключи шифрования файлов, поля DDF, DRF и другие данные управления ключами. Драйвер передает эту информацию в FSRTL (file system runtime library, библиотека времени выполнения файловой системы) для прозрачного выполнения различных файловых системных операций (например, открытие файла, чтение, запись, добавление данных в конец файла).
Использование сертификатов в интернете
При работе в Интернете браузер Internet Explorer использует два типа сертификатов: персональный сертификат (personal certificate) и сертификат веб-узла (Web site certificate). Персональный сертификат удостоверяет личность пользователя.
Сертификат веб-узла подтверждает, что данный узел является безопасным и подлинным. При этом гарантируется, что никакой другой веб-узел не является идентичным оригинальному веб-узлу. Internet Explorer при подключении к веб-узлу проверяет, что интернет-адрес в сертификате совпадает с действительным адресом и срок действия сертификата еще не истек.
Конфиденциальность
Для обеспечения конфиденциальности при передаче данных в незащищенных сетях или по частным локальным сетям применяется шифрование с секретным, или закрытым, ключом (secret key encryption).
Сертификаты обеспечивают конфиденциальность передаваемых данных при помощи ряда методов. Протоколы, наиболее широко используемые для обеспечения секретности:
- Secure Multipurpose Internet Mail Extensions (S/MIME);
- Transport Layer Security (TLS);
- IP Security (IPSec).
Немного практики
Для того чтобы зашифровать файл или каталог, выполните следующие операции:
- Запустите Windows Explorer, нажмите правую кнопку мыши на каталоге, выберите пункт Properties (Свойства).
- На закладке General (Общие) нажмите кнопку Advanced.
- Отметьте галочкой пункт «Encrypt contents to secure data». Нажмите OK, затем нажмите Apply (применить) в диалоге Properties. Если Вы выбрали шифрование отдельного файла, то дополнительно появится диалоговое окно следующего вида:
Система предлагает зашифровать также и каталог, в котором находится выбранный файл, так как в противном случае шифрование будет автоматически отменено при первой модификации такого файла. Всегда имейте это в виду, когда шифруете отдельные файлы!
На этом процесс шифрования данных можно считать законченным.
Чтобы расшифровать каталоги, просто снимите выделение в пункте «Encrypt contents to secure data». При этом каталоги, а также все содержащиеся в них подкаталоги и файлы будут расшифрованы.
Немного теории
EFS осуществляет шифрование данных, используя схему с общим ключом. Данные шифруются быстрым симметричным алгоритмом при помощи ключа шифрования файла FEK (file encryption key). FEK — это случайным образом сгенерированный ключ определенной длины. Длина ключа в североамериканской версии EFS 128 бит, в международной версии EFS используется уменьшенная длина ключа 40 или 56 бит.![]()
FEK шифруется одним или несколькими общими ключами шифрования, в результате чего получается список зашифрованных ключей FEK. Список зашифрованных ключей FEK хранится в специальном атрибуте EFS, который называется DDF (data decryption field — поле дешифрования данных).
Информация, при помощи которой производится шифрование данных, жестко связана с этим файлом. Общие ключи выделяются из пар пользовательских ключей сертификата X509 с дополнительной возможностью использования «File encryption». Личные ключи из этих пар используются при дешифровке данных и FEK.
FEK также шифруется при помощи одного или нескольких ключей восстановления (полученных из сертификатов X509, записанных в политике восстановления зашифрованных данных для данного компьютера, с дополнительной возможностью «File recovery»).
Как и в предыдущем случае, общая часть ключа используется для шифрования списка FEK. Список зашифрованных ключей FEK также хранится вместе с файлом в специальной области EFS, которая называется DRF (data recovery field — поле восстановления данных). Для шифрования списка FEK в DRF используется только общая часть каждой пары ключей.
Для нормального осуществления файловых операций необходимы только общие ключи восстановления. Агенты восстановления могут хранить свои личные ключи в безопасном месте вне системы (например, на смарт-картах). На рисунке приведены схемы процессов шифрования, дешифрования и восстановления данных.
Процесс восстановления
Этот процесс аналогичен дешифрованию с той разницей, что для дешифрования FEK используется личный ключ агента восстановления, а зашифрованная версия FEK берется из DRF.
Процесс дешифрования
Сначала используется личный ключ пользователя для дешифрации FEK — для этого используется зашифрованная версия FEK, которая хранится в DDF. Расшифрованный FEK используется для поблочного дешифрования файла. Если в большом файле блоки считываются не последовательно, то дешифруются только считываемые блоки. Файл при этом остается зашифрованным.
Процесс шифрования
Незашифрованный файл пользователя шифруется при помощи случайно сгенерированного ключа FEK. Этот ключ записывается вместе с файлом, файл дешифруется при помощи общего ключа пользователя (записанного в DDF), а также при помощи общего ключа агента восстановления (записанного в DRF).
Реализация в windows 2000
На рисунке показана архитектура EFS:
EFS состоит из следующих компонентов:
Служба efs
Служба EFS является частью подсистемы безопасности. Она использует существующий порт связи LPC между LSA (Local security authority, локальные средства защиты) и работающим в kernel-mode монитором безопасности для связи с драйвером EFS. В режиме пользователя служба EFS взаимодействует с программным интерфейсом CryptoAPI, предоставляя ключи шифрования файлов и обеспечивая генерацию DDF и DRF. Кроме этого, служба EFS осуществляет поддержку интерфейса Win32 API.
Технология шифрования
EFS использует архитектуру Windows CryptoAPI. В ее основе лежит технология шифрования с открытым ключом. Для шифрования каждого файла случайным образом генерируется ключ шифрования файла. При этом для шифрования файла может применяться любой симметричный алгоритм шифрования.
Ключи шифрования EFS хранятся в резидентном пуле памяти (сама EFS расположена в ядре Windows 2000), что исключает несанкционированный доступ к ним через файл подкачки.
Хранилища сертификатов
Таблица 22.1. Список папок хранилища сертификатов с кратким описанием.
