Введение
Функция в Microsoft Windows
Система шифрования файлов (EFS) в Microsoft Windows — это функция, представленная в версии 3.0 NTFS, обеспечивающая шифрование на уровне файловой системы. Эта технология позволяет прозрачно шифровать файлы для защиты конфиденциальных данных от злоумышленников, имеющих физический доступ к компьютеру. EFS доступна во всех версиях Windows, кроме домашних (см. раздел «Поддерживаемые операционные системы» ниже), начиная с Windows 2000. По умолчанию файлы не шифруются, но пользователи могут включить шифрование для отдельных файлов, каталогов или дисков. Некоторые параметры EFS также могут быть заданы принудительно через групповую политику в доменных средах Windows. Реализации криптографических файловых систем для других операционных систем существуют, однако Microsoft EFS несовместима ни с одной из них. См. также список криптографических файловых систем.
The Encrypting File System (EFS) on Microsoft Windows is a feature introduced in version 3.0 of NTFS that provides filesystem level encryption. The technology enables files to be transparently encrypted to protect confidential data from attackers with physical access to the computer. EFS is available in all versions of Windows except the home versions (see Supported operating systems below) from Windows 2000 onwards. By default, no files are encrypted, but encryption can be enabled by users on a per file, per directory, or per drive basis. Some EFS settings can also be mandated via Group Policy in Windows domain environments. Cryptographic file system implementations for other operating systems are available, but the Microsoft EFS is not compatible with any of them. See also the list of cryptographic file systems.
Основные идеи
Когда операционная система работает на системе без шифрования файлов, доступ к файлам обычно осуществляется через аутентификацию пользователя, контролируемую ОС, и списки контроля доступа. Однако, если злоумышленник получает физический доступ к компьютеру, этот барьер можно легко обойти. Например, можно извлечь диск и подключить его к другому компьютеру с установленной ОС, способной читать файловую систему, или просто загрузить компьютер с загрузочного диска, содержащего ОС, подходящую для доступа к локальной файловой системе. Наиболее распространенным решением является хранение файлов в зашифрованном виде на физических носителях (дисках, 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.
Anyone who can gain Administrators access can overwrite, override or change the Data Recovery Agent configuration. This is a very serious issue, since an attacker can for example hack the Administrator account (using third party tools), set whatever DRA certificate they want as the Data Recovery Agent and wait. This is sometimes referred to as a two stage attack, which is a significantly different scenario than the risk due to a lost or stolen PC, but which highlights the risk due to malicious insiders. When the user encrypts files after the first stage of such an attack, the FEKs are automatically encrypted with the designated DRA's public key. The attacker only needs to access the computer once more as Administrator to gain full access to all those subsequently EFS encrypted files. Even using Syskey mode 2 or 3 does not protect against this attack, because the attacker could back up the encrypted files offline, restore them elsewhere and use the DRA's private key to decrypt the files. If such a malicious insider can gain physical access to the computer, all security features are to be considered irrelevant, because they could also install rootkits, software or even hardware keyloggers etc. on the computer – which is potentially much more interesting and effective than overwriting DRA policy.
Восстановление
Файлы, зашифрованные с помощью EFS, могут быть расшифрованы только с использованием частного ключа RSA, соответствующего ранее использованному открытому ключу. Сохраненная копия частного ключа пользователя в конечном итоге защищена паролем для входа пользователя в систему. Доступ к зашифрованным файлам из-за пределов Windows с использованием других операционных систем (например, Linux) невозможен, в частности, из-за отсутствия в настоящее время стороннего драйвера компонента EFS. Более того, использование специальных инструментов для сброса пароля входа пользователя сделает невозможной расшифровку его частного ключа и, следовательно, лишит возможности доступа к зашифрованным файлам пользователя. Важность этого часто упускается из виду пользователями, что приводит к потере данных, если пользователь забудет свой пароль или не сделает резервную копию ключа шифрования. Это привело к появлению термина "отложенная корзина", описывающего кажущуюся неизбежность потери данных, если неопытный пользователь зашифрует свои файлы. Если EFS настроена на использование ключей, выпущенных инфраструктурой открытых ключей, а PKI настроена на поддержку архивирования и восстановления ключей, зашифрованные файлы можно восстановить, предварительно восстановив частный ключ.
Другие операционные системы
Никакие другие операционные системы или файловые системы не имеют встроенной поддержки EFS.