Encrypting File System (EFS) — система шифрования данных, реализующая шифрование на уровне файлов в операционных системах Microsoft Windows NT (начиная с Windows 2000 и выше), за исключением «домашних» версий (Windows XP Home Edition, Windows Vista Basic, Windows Vista Home Premium, Windows 7 Starter (Home Basic и Premium), Windows 10 Pro, Enterprise, and Education editions, Windows Server 2016, Windows Server 2019. Данная система предоставляет возможность «прозрачного шифрования» данных, хранящихся на разделах с файловой системой NTFS, для защиты потенциально конфиденциальных данных от несанкционированного доступа при физическом доступе к компьютеру и дискам.

Аутентификация пользователя и права доступа к ресурсам, имеющие место в NT, работают, когда операционная система загружена, но при физическом доступе к системе возможно загрузить другую ОС, чтобы обойти эти ограничения. EFS использует симметричное шифрование для защиты файлов, а также шифрование, основанное на паре открытый/закрытый ключ для защиты случайно сгенерированного ключа шифрования для каждого файла. По умолчанию закрытый ключ пользователя защищён с помощью шифрования пользовательским паролем, и защищённость данных зависит от стойкости пароля пользователя.

Описание работы

править
 

EFS работает, шифруя каждый файл с помощью алгоритма симметричного шифрования, зависящего от версии операционной системы и настроек (начиная с Windows XP доступна теоретическая возможность использования сторонних библиотек для шифрования данных). При этом используется случайно сгенерированный ключ для каждого файла, называемый File Encryption Key (FEK), выбор симметричного шифрования на данном этапе объясняется его скоростью по отношению к асимметричному шифрованию.

FEK (случайный для каждого файла ключ симметричного шифрования) защищается путём асимметричного шифрования, использующего открытый ключ пользователя, шифрующего файл, и алгоритм RSA (теоретически возможно использование других алгоритмов асимметричного шифрования). Зашифрованный таким образом ключ FEK сохраняется в альтернативном потоке $EFS файловой системы NTFS. Для расшифрования данных драйвер шифрованной файловой системы прозрачно для пользователя расшифровывает FEK, используя закрытый ключ пользователя, а затем и необходимый файл с помощью расшифрованного файлового ключа.

Поскольку шифрование/расшифрование файлов происходит с помощью драйвера файловой системы (по сути, надстройки над NTFS), оно происходит прозрачно для пользователя и приложений. Стоит заметить, что EFS не шифрует файлы, передаваемые по сети, поэтому для защиты передаваемых данных необходимо использовать другие протоколы защиты данных (IPSec или WebDAV).

Интерфейсы взаимодействия с EFS

править

Для работы с EFS у пользователя есть возможность использовать графический интерфейс проводника или утилиту командной строки.

Использование графического интерфейса

править

Для того, чтобы зашифровать файл или папку, содержащую файл, пользователь может воспользоваться соответствующим окном диалога свойства файла или папки, установив или сняв флажок «шифровать содержимое для защиты данных», при этом для файлов начиная с Windows XP можно добавить открытые ключи других пользователей, которые тоже будут иметь возможность расшифровать данный файл и работать с его содержимым (при наличии соответствующих разрешений). При шифровании папки шифруются все файлы, находящиеся в ней, а также те, которые будут помещены в неё позднее.

При работе с проводником Windows возможно (по умолчанию) отображение зашифрованных папок и файлов другим (по умолчанию зелёным) цветом, позволяющим визуально отличить защищённое таким образом содержимое. При копировании зашифрованных файлов на раздел, где шифрование не поддерживается (например, с файловой системой FAT32 и т. д.) будет выдано предупреждение о том, что файл будет расшифрован.

Методом редактирования реестра возможно добавить в контекстное меню проводника (и других, поддерживающих эту функциональность файловых менеджеров) пунктов «зашифровать» и «расшифровать», что повышает удобство работы при частом использовании этих функций, для чего необходимо создать (или изменить существующий) параметр реестра типа DWORD EncryptionContextMenu на 00000001, находящийся в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced.

Интерфейс командной строки

править

Для работы с EFS пользователем имеется также возможность использовать интерфейс командной строки — команда cipher. При выполнении данной команды без параметров будет выведено содержимое текущей папки с меткой U перед файлом, если он не зашифрован, и E, если зашифрован.

Команда шифрования файла/папки имеет вид:

cipher /E <путь к папке>,

Команда дешифрования файла/папки имеет вид:

cipher /D <путь к папке>.

Данная утилита имеет ряд других возможностей, список которых может быть получен при помощи команды cipher /?, среди которых перешифрование файлов с новым ключом, генерация нового ключа шифрования, добавление агента восстановления и т. д.

Очистка неиспользуемого места

править

При удалении файла или папки не происходит полного физического удаления информации, очищается лишь только «оглавление» файловой системы. С помощью утилиты cipher возможно частичное решение этой проблемы, так как существует возможность выполнить очистку свободного места на диске затиранием её. Для этого необходимо использовать синтаксис

cipher /W <путь к любой папке на разделе, подлежащем очистке>.

Для работы с EFS прикладных и системных программ возможно использование документированных и недокументированных функций API Windows.

Алгоритмы шифрования, используемые EFS

править

Подсистема EFS использует различные симметричные алгоритмы шифрования, зависящие от версии используемой операционной системы windows NT.

Операционная система Алгоритм шифрования по умолчанию Альтернативные доступные алгоритмы
Windows 2000 DESX (none)
Windows XP RTM DESX 3DES
Windows XP SP1 AES 3DES, DESX
Windows Server 2003 AES 3DES, DESX
Windows Vista AES 3DES, DESX
Windows Server 2008 AES 3DES, DESX (?)
Windows 7
Windows Server 2008 R2
Mixed (AES, SHA, and ECC) 3DES, DESX
Windows 8 ? ?
Windows 10 ? ?

Ссылки

править