Шифрованная файловая система ( EFS ) в Microsoft Windows — это функция, представленная в версии 3.0 NTFS [1] , которая обеспечивает шифрование на уровне файловой системы . Технология позволяет прозрачно шифровать файлы для защиты конфиденциальных данных от злоумышленников с физическим доступом к компьютеру.
EFS доступна во всех версиях Windows, за исключением домашних версий (см. Поддерживаемые операционные системы ниже) начиная с Windows 2000. [2] По умолчанию файлы не шифруются, но пользователи могут включить шифрование для каждого файла, каталога или диска. Некоторые параметры EFS также могут быть предписаны через групповую политику в доменных средах Windows . [3]
Доступны реализации криптографической файловой системы для других операционных систем, но Microsoft EFS несовместима ни с одной из них. [4] См. также список криптографических файловых систем .
Когда операционная система работает на системе без шифрования файлов, доступ к файлам обычно осуществляется через контролируемые ОС аутентификацию пользователя и списки контроля доступа . Однако, если злоумышленник получит физический доступ к компьютеру, этот барьер можно легко обойти. Например, одним из способов будет извлечение диска и установка его на другой компьютер с установленной ОС, которая может читать файловую систему; другим способом будет простая перезагрузка компьютера с загрузочного компакт-диска, содержащего ОС, подходящую для доступа к локальной файловой системе.
Наиболее распространенным решением этой проблемы является хранение зашифрованных файлов на физических носителях (дисках, USB-накопителях, лентах, компакт-дисках и т. д.).
В операционных системах семейства Microsoft Windows EFS поддерживает эту меру, хотя только на дисках NTFS, и делает это с использованием комбинации криптографии с открытым ключом и криптографии с симметричным ключом, что делает расшифровку файлов крайне затруднительной без правильного ключа.
Однако криптографические ключи для EFS на практике защищены паролем учетной записи пользователя и поэтому подвержены большинству атак с использованием пароля. Другими словами, шифрование файла настолько же надежно, насколько надежен пароль для разблокировки ключа дешифрования.
EFS работает путем шифрования файла с помощью объемного симметричного ключа , также известного как ключ шифрования файлов или FEK. Он использует симметричный алгоритм шифрования, поскольку для шифрования и дешифрования больших объемов данных требуется меньше времени, чем при использовании асимметричного ключа шифрования. Используемый симметричный алгоритм шифрования будет различаться в зависимости от версии и конфигурации операционной системы; см. Алгоритмы, используемые версией Windows ниже. Затем FEK (симметричный ключ, используемый для шифрования файла) шифруется открытым ключом , который связан с пользователем, зашифровавшим файл, и этот зашифрованный FEK сохраняется в альтернативном потоке данных $EFS зашифрованного файла. [5] Чтобы расшифровать файл, драйвер компонента EFS использует закрытый ключ, который соответствует цифровому сертификату EFS (используемому для шифрования файла), для расшифровки симметричного ключа, который хранится в потоке $EFS. Затем драйвер компонента EFS использует симметричный ключ для расшифровки файла. Поскольку операции шифрования и дешифрования выполняются на уровне ниже NTFS, они прозрачны для пользователя и всех его приложений.
Папки, содержимое которых должно быть зашифровано файловой системой, помечаются атрибутом шифрования. Драйвер компонента EFS обрабатывает этот атрибут шифрования аналогично наследованию разрешений файлов в NTFS: если папка помечена для шифрования, то по умолчанию все файлы и подпапки, созданные в папке, также зашифровываются. Когда зашифрованные файлы перемещаются в пределах тома NTFS, они остаются зашифрованными. Однако существует ряд случаев, когда файл можно расшифровать без явного запроса пользователя Windows на это.
Файлы и папки расшифровываются перед копированием на том, отформатированный в другой файловой системе, например FAT32 . Наконец, когда зашифрованные файлы копируются по сети с использованием протокола SMB/CIFS, файлы расшифровываются перед отправкой по сети.
Наиболее существенным способом предотвращения расшифровки при копировании является использование приложений резервного копирования, которые знают о "Raw" API. Приложения резервного копирования, которые реализовали эти Raw API, просто копируют зашифрованный поток файлов и альтернативный поток данных $EFS как один файл. Другими словами, файлы "копируются" (например, в файл резервной копии) в зашифрованном виде и не расшифровываются во время резервного копирования.
Начиная с Windows Vista , закрытый ключ пользователя может храниться на смарт-карте ; ключи Data Recovery Agent (DRA) также могут храниться на смарт-карте. [6]
В Windows 2000 EFS существовало две существенные уязвимости безопасности, которые с тех пор неоднократно подвергались атакам.
В Windows 2000 локальный администратор является агентом восстановления данных по умолчанию, способным расшифровывать все файлы, зашифрованные с помощью EFS любым локальным пользователем. EFS в Windows 2000 не может функционировать без агента восстановления, поэтому всегда найдется кто-то, кто может расшифровать зашифрованные файлы пользователей. Любой компьютер Windows 2000, не присоединенный к домену, будет подвержен несанкционированному расшифровыванию EFS любым, кто может получить доступ к учетной записи локального администратора, что является тривиальной задачей, учитывая множество инструментов, доступных бесплатно в Интернете. [7]
В Windows XP и более поздних версиях локального агента восстановления данных по умолчанию нет, и его наличие не требуется. Установка SYSKEY в режим 2 или 3 (syskey, введенный во время загрузки или сохраненный на дискете) снизит риск несанкционированной расшифровки через учетную запись локального администратора. Это связано с тем, что хэши паролей локального пользователя, хранящиеся в файле SAM , зашифрованы с помощью Syskey, а значение Syskey недоступно для офлайн-злоумышленника, у которого нет парольной фразы/дискеты Syskey.
В Windows 2000 закрытый ключ RSA пользователя не только хранится в действительно зашифрованном виде, но также существует резервная копия закрытого ключа RSA пользователя, которая защищена слабее. Если злоумышленник получает физический доступ к компьютеру Windows 2000 и сбрасывает пароль локальной учетной записи пользователя, [7] злоумышленник может войти в систему как этот пользователь (или агент восстановления) и получить доступ к закрытому ключу RSA, который может расшифровать все файлы. Это происходит потому, что резервная копия закрытого ключа RSA пользователя зашифрована с помощью секрета LSA, который доступен любому злоумышленнику, который может повысить свой логин до LocalSystem (опять же, тривиально, учитывая многочисленные инструменты в Интернете).
В Windows XP и более поздних версиях резервная копия закрытого ключа RSA пользователя создается с использованием открытого ключа, соответствующий закрытый ключ которого хранится в одном из двух мест: на диске сброса пароля (если Windows XP не является членом домена) или в Active Directory (если Windows XP является членом домена). Это означает, что злоумышленник, который может аутентифицироваться в Windows XP как LocalSystem, по-прежнему не имеет доступа к ключу расшифровки, хранящемуся на жестком диске ПК.
В Windows 2000, XP или более поздних версиях закрытый ключ RSA пользователя шифруется с использованием хеша NTLM-хеша пароля пользователя и имени пользователя – использование соленого хеша делает чрезвычайно сложным обратный процесс и восстановление закрытого ключа без знания парольной фразы пользователя. Кроме того, снова, установка Syskey в режим 2 или 3 (Syskey вводится во время загрузки или сохраняется на дискете) смягчит эту атаку, поскольку хеш пароля локального пользователя будет храниться в зашифрованном виде в файле SAM.
После успешного входа пользователя в систему доступ к его собственным зашифрованным данным EFS не требует дополнительной аутентификации, расшифровка происходит прозрачно. Таким образом, любая компрометация пароля пользователя автоматически приводит к доступу к этим данным. Windows может хранить версии паролей учетных записей пользователей с обратимым шифрованием, хотя это больше не поведение по умолчанию; его также можно настроить на хранение (и по умолчанию будет в исходной версии Windows XP и ниже) хэшей Lan Manager паролей локальных учетных записей пользователей, которые можно легко атаковать и взломать. Он также хранит пароли локальных учетных записей пользователей как хеши NTLM , которые можно довольно легко атаковать с помощью « радужных таблиц », если пароли слабые (Windows Vista и более поздние версии по умолчанию не допускают слабые пароли). Чтобы снизить угрозу тривиальных атак методом подбора на локальные пароли, старые версии Windows необходимо настроить (с помощью раздела «Параметры безопасности» групповой политики) так, чтобы они никогда не хранили хэши LM, и, конечно, не включать Autologon (который сохраняет пароли в виде открытого текста в реестре ) . Кроме того, использование паролей локальных учетных записей пользователей длиной более 14 символов не позволяет Windows сохранять хэш LM в SAM, а также имеет дополнительное преимущество, поскольку затрудняет атаки методом подбора на хэш NTLM.
При шифровании файлов с помощью EFS — при преобразовании файлов с открытым текстом в зашифрованные файлы — файлы с открытым текстом не стираются, а просто удаляются (т. е. блоки данных, помеченные как «не используемые» в файловой системе). Это означает, что, если они, например, не хранятся на SSD с поддержкой TRIM , их можно легко восстановить, если только они не перезаписаны. Чтобы полностью смягчить известные, несложные технические атаки на EFS, шифрование должно быть настроено на уровне папок (так, чтобы все временные файлы, такие как резервные копии документов Word, которые создаются в этих каталогах, также были зашифрованы). При шифровании отдельных файлов их следует скопировать в зашифрованную папку или зашифровать «на месте», а затем надежно стереть том диска. Утилиту Windows Cipher можно использовать (с параметром /W) для стирания свободного пространства, включая то, которое все еще содержит удаленные файлы с открытым текстом; также могут подойти различные сторонние утилиты. [8]
Любой, кто может получить доступ администратора, может перезаписать, переопределить или изменить конфигурацию агента восстановления данных. Это очень серьезная проблема, поскольку злоумышленник может, например, взломать учетную запись администратора (используя сторонние инструменты), установить любой сертификат DRA в качестве агента восстановления данных и ждать. Иногда это называют двухэтапной атакой, что существенно отличается от риска из-за утерянного или украденного ПК, но подчеркивает риск из-за злонамеренных внутренних лиц.
Когда пользователь шифрует файлы после первого этапа такой атаки, FEK автоматически шифруются с помощью назначенного открытого ключа DRA. Злоумышленнику нужно только получить доступ к компьютеру еще раз как администратор, чтобы получить полный доступ ко всем этим впоследствии зашифрованным EFS файлам. Даже использование режима Syskey 2 или 3 не защищает от этой атаки, поскольку злоумышленник может создать резервную копию зашифрованных файлов в автономном режиме, восстановить их в другом месте и использовать закрытый ключ DRA для расшифровки файлов. Если такой злонамеренный инсайдер может получить физический доступ к компьютеру, все функции безопасности следует считать неактуальными, поскольку они также могут установить на компьютер руткиты , программное обеспечение или даже аппаратные кейлоггеры и т. д. — что потенциально гораздо интереснее и эффективнее, чем перезапись политики DRA.
Файлы, зашифрованные с помощью EFS, можно расшифровать только с помощью закрытого(ых) ключа(ей) RSA, соответствующего ранее использованному открытому(ым) ключу(ам). Сохраненная копия закрытого ключа пользователя в конечном итоге защищена паролем входа пользователя. Доступ к зашифрованным файлам из-за пределов Windows с помощью других операционных систем ( например, Linux ) невозможен — не в последнюю очередь потому, что в настоящее время нет стороннего драйвера компонента EFS. Кроме того, использование специальных инструментов для сброса пароля входа пользователя сделает невозможным расшифровку закрытого ключа пользователя и, таким образом, бесполезным для получения доступа к зашифрованным файлам пользователя. Значение этого иногда теряется для пользователей, что приводит к потере данных, если пользователь забывает свой пароль или не создает резервную копию ключа шифрования. Это привело к появлению термина «отложенная корзина», чтобы описать кажущуюся неизбежность потери данных, если неопытный пользователь шифрует свои файлы.
Если EFS настроена на использование ключей, выданных инфраструктурой открытых ключей, а PKI настроена на включение архивации и восстановления ключей, зашифрованные файлы можно восстановить, предварительно восстановив закрытый ключ.
Никакие другие операционные системы или файловые системы не имеют встроенной поддержки EFS.
Windows EFS поддерживает ряд алгоритмов симметричного шифрования в зависимости от версии Windows, используемой при шифровании файлов:
Поддержка FAT и EXFAT была добавлена в операционную систему Windows 10 v1607 и Windows Server 2016 и последующие версии.