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.

Дана система надає можливість прозорого шифрування даних[en], що зберігаються у розділах з файловою системою 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 <шлях до будь-якої папки у розділі, яка підлягає очищенню>.

WinAPI ред.

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

Алгоритми шифрування, які використовуються EFS ред.

Підсистема EFS використовує різні симетричні алгоритми шифрування, що залежить від версії операційної системи.

Операційна система Алгоритм шифрування за замовчуванням Альтернативні доступні алгоритми
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 ? ?

Див. також ред.

Посилання ред.