Введение

Функция в Microsoft Windows
Система шифрования файлов (EFS) в Microsoft Windows — это функция, представленная в версии 3.0 NTFS, обеспечивающая шифрование на уровне файловой системы. Эта технология позволяет прозрачно шифровать файлы для защиты конфиденциальных данных от злоумышленников, имеющих физический доступ к компьютеру. EFS доступна во всех версиях Windows, кроме домашних (см. раздел «Поддерживаемые операционные системы» ниже), начиная с Windows 2000. По умолчанию файлы не шифруются, но пользователи могут включить шифрование для отдельных файлов, каталогов или дисков. Некоторые параметры EFS также могут быть заданы принудительно через групповую политику в доменных средах Windows. Реализации криптографических файловых систем для других операционных систем существуют, однако Microsoft EFS несовместима ни с одной из них. См. также список криптографических файловых систем.

Основные идеи

Когда операционная система работает на системе без шифрования файлов, доступ к файлам обычно осуществляется через аутентификацию пользователя, контролируемую ОС, и списки контроля доступа. Однако, если злоумышленник получает физический доступ к компьютеру, этот барьер можно легко обойти. Например, можно извлечь диск и подключить его к другому компьютеру с установленной ОС, способной читать файловую систему, или просто загрузить компьютер с загрузочного диска, содержащего ОС, подходящую для доступа к локальной файловой системе. Наиболее распространенным решением является хранение файлов в зашифрованном виде на физических носителях (дисках, USB-накопителях, магнитных лентах, CD и т.д.). В семействе операционных систем Microsoft Windows эта мера реализуется с помощью EFS, но только для NTFS-разделов, и использует комбинацию криптографии с открытым и симметричным ключом, что делает расшифровку файлов чрезвычайно сложной без правильного ключа. Однако на практике криптографические ключи EFS защищены паролем учетной записи пользователя и, следовательно, уязвимы для большинства атак, направленных на подбор пароля. Иными словами, надежность шифрования файла определяется надежностью пароля, необходимого для разблокировки ключа расшифровки.

Операция

EFS работает, шифруя файл с помощью симметричного ключа большого размера, также известного как ключ шифрования файлов (FEK). Он использует алгоритм симметричного шифрования, поскольку шифрование и расшифровка больших объемов данных занимает меньше времени, чем при использовании шифра с асимметричным ключом. Используемый алгоритм симметричного шифрования зависит от версии и конфигурации операционной системы; см. раздел «Алгоритмы, используемые в различных версиях Windows» ниже. Затем FEK (симметричный ключ, используемый для шифрования файла) шифруется с помощью открытого ключа, связанного с пользователем, который зашифровал файл, и этот зашифрованный FEK хранится в альтернативном потоке данных $EFS зашифрованного файла. Для расшифровки файла драйвер компонента EFS использует закрытый ключ, соответствующий цифровому сертификату EFS (используемому для шифрования файла), чтобы расшифровать симметричный ключ, хранящийся в потоке $EFS. Затем драйвер компонента EFS использует симметричный ключ для расшифровки файла. Поскольку операции шифрования и расшифровки выполняются на уровне ниже NTFS, они прозрачны для пользователя и всех его приложений. Папки, содержимое которых должно быть зашифровано файловой системой, помечаются атрибутом шифрования. Драйвер компонента EFS обрабатывает этот атрибут шифрования аналогично механизму наследования разрешений файлов в NTFS: если папка помечена для шифрования, то по умолчанию все файлы и подпапки, создаваемые в этой папке, также шифруются. При перемещении зашифрованных файлов внутри тома NTFS файлы остаются зашифрованными. Однако существуют ситуации, когда файл может быть расшифрован без явного запроса пользователя Windows на это. Файлы и папки расшифровываются перед копированием на том, отформатированный в другую файловую систему, например FAT32. Наконец, при копировании зашифрованных файлов по сети с использованием протокола SMB/CIFS файлы расшифровываются перед отправкой по сети. Наиболее эффективный способ предотвратить расшифровку при копировании — использовать приложения резервного копирования, поддерживающие "сырые" (Raw) API. Приложения резервного копирования, реализовавшие эти Raw API, просто копируют зашифрованный поток файла и альтернативный поток данных $EFS как единый файл. Иными словами, файлы "копируются" (например, в файл резервной копии) в зашифрованном виде и не расшифровываются в процессе резервного копирования. Начиная с Windows Vista, личный ключ пользователя может храниться на смарт-карте; ключи агента восстановления данных (DRA) также могут храниться на смарт-карте.

Уязвимости

В Windows 2000 EFS существовали две серьезные уязвимости безопасности, которые неоднократно использовались злоумышленниками. В Windows 2000 локальный администратор по умолчанию является агентом восстановления данных, способным расшифровать все файлы, зашифрованные EFS любым локальным пользователем. EFS в Windows 2000 не может функционировать без агента восстановления, поэтому всегда существует возможность расшифровки зашифрованных файлов пользователей. Любой компьютер Windows 2000, не входящий в домен, уязвим к несанкционированному расшифрованию EFS любым, кто получит контроль над учетной записью локального администратора, что легко осуществить, учитывая множество свободно доступных в Интернете инструментов. В Windows XP и более поздних версиях нет агента восстановления данных по умолчанию и нет необходимости его настраивать. Настройка SYSKEY в режим 2 или 3 (ввод SYSKEY при загрузке или хранение на дискете) снижает риск несанкционированного расшифрования через учетную запись локального администратора. Это происходит потому, что хэши паролей локальных пользователей, хранящиеся в файле SAM, зашифрованы с помощью Syskey, а значение Syskey недоступно для злоумышленника, не имеющего доступа к парольной фразе или дискете Syskey.

Доступ к закрытому ключу через сброс пароля

В Windows 2000 частный ключ RSA пользователя хранится не только в действительно зашифрованном виде, но также существует резервная копия частного ключа RSA пользователя, защищенная менее надежно. Если злоумышленник получает физический доступ к компьютеру с Windows 2000 и сбрасывает пароль локальной учетной записи пользователя, любой, кто имеет права администратора, может изменить, переопределить или перезаписать конфигурацию агента восстановления данных. Это очень серьезная проблема, поскольку злоумышленник, например, может взломать учетную запись администратора (используя сторонние инструменты), установить желаемый сертификат DRA в качестве агента восстановления данных и ждать. Это иногда называют двухэтапной атакой, которая существенно отличается от риска, связанного с утерей или кражей компьютера, но подчеркивает опасность, исходящую от злоумышленников внутри организации. Когда пользователь шифрует файлы после первого этапа такой атаки, FEK автоматически шифруется с использованием открытого ключа назначенного DRA. Злоумышленнику достаточно лишь еще раз получить доступ к компьютеру с правами администратора, чтобы получить полный доступ ко всем последующим файлам, зашифрованным с помощью EFS. Даже использование режима Syskey 2 или 3 не защищает от этой атаки, поскольку злоумышленник может создать резервную копию зашифрованных файлов в автономном режиме, восстановить их в другом месте и использовать закрытый ключ DRA для расшифровки. Если такой злоумышленник внутри организации получает физический доступ к компьютеру, все средства защиты следует считать неэффективными, поскольку он также может установить руткиты, программное обеспечение или даже аппаратные кейлоггеры и т.п. на компьютер – что потенциально гораздо более интересно и действенно, чем изменение политики DRA.

Восстановление

Файлы, зашифрованные с помощью EFS, могут быть расшифрованы только с использованием частного ключа RSA, соответствующего ранее использованному открытому ключу. Сохраненная копия частного ключа пользователя в конечном итоге защищена паролем для входа пользователя в систему. Доступ к зашифрованным файлам из-за пределов Windows с использованием других операционных систем (например, Linux) невозможен, в частности, из-за отсутствия в настоящее время стороннего драйвера компонента EFS. Более того, использование специальных инструментов для сброса пароля входа пользователя сделает невозможной расшифровку его частного ключа и, следовательно, лишит возможности доступа к зашифрованным файлам пользователя. Важность этого часто упускается из виду пользователями, что приводит к потере данных, если пользователь забудет свой пароль или не сделает резервную копию ключа шифрования. Это привело к появлению термина "отложенная корзина", описывающего кажущуюся неизбежность потери данных, если неопытный пользователь зашифрует свои файлы. Если EFS настроена на использование ключей, выпущенных инфраструктурой открытых ключей, а PKI настроена на поддержку архивирования и восстановления ключей, зашифрованные файлы можно восстановить, предварительно восстановив частный ключ.

Другие операционные системы

Никакие другие операционные системы или файловые системы не имеют встроенной поддержки EFS.