Шифрование на уровне файлов

Шифрование на уровне файлов

Начиная с Windows 2000, в операционных системах семейства Windows (кроме домашних версий) возможно использование системы шифрования данных Encrypting File System (EFS) , реализующей шифрование на уровне файловой системы NTFS для защиты конфиденциальных данных от несанкционированного доступа при физическом доступе к компьютеру или носителю информации. EFS использует симметричное шифрование для защиты файлов, а также шифрование, основанное на паре ”открытый / закрытый” ключ. По умолчанию закрытый ключ пользователя защищён паролем, и защищённость данных зависит от стойкости пароля пользователя.

Утилита командной строки CIPHER отображает состояние шифрования текущего или указанного каталога и всех файлов в нем, может задавать режимы и параметры шифрования, создавать сертификаты и ключи с возможностью записи их на смарт-карту, выполнять шифрование или расшифровку файлов и каталогов, управлять доступом пользователей к зашифрованным данным.

Форматы командной строки:

CIPHER [/E | /D | /C] [/S:directory] [/B] [/H] [pathname [. ]]

CIPHER /K [/ECC:256|384|521]

CIPHER /R:filename [/SMARTCARD] [/ECC:256|384|521]

CIPHER /X[:efsfile] [filename]

CIPHER /ADDUSER [/CERTHASH:hash | /CERTFILE:filename | /USER:username] [/S:directory] [/B] [/H] [pathname [. ]]

CIPHER /FLUSHCACHE [/SERVER:servername]

CIPHER /REMOVEUSER /CERTHASH:hash [/S:directory] [/B] [/H] [pathname [. ]]

CIPHER /REKEY [pathname [. ]]

Использованная без параметров команда cipher отображает состояние шифрования текущей папки и всех файлов, находящихся в ней.

Параметры командной строки:

/B Прервать в случае обнаружения ошибки. По умолчанию CIPHER продолжает выполняться даже при обнаружении ошибок.

/C Отображает сведения о зашифрованном файле.

/D Расшифровывает указанные файлы или каталоги.

/E Шифрует указанные файлы или каталоги. Каталоги будут обозначены, чтобы файлы, добавляемые после этого, шифровались. Зашифрованный файл мог стать зашифрованным во время его изменения в случае, если родительский каталог не зашифрован. Рекомендуется зашифровать файл и родительский каталог.

/H Отображает файлы со скрытыми или системными атрибутами. Эти файлы пропускаются по умолчанию.

/K Создает новый сертификат и ключ для использования с EFS. Если этот параметр выбран, все остальные параметры будут игнорироваться.
Примечание. По умолчанию /K создает сертификат и ключ, соответствующие текущей групповой политике. Если требуется ECC, будет создан самоназначаемый сертификат с предоставленным размером ключа.

/N Этот параметр работает только с параметром /U . Это не позволит обновлять ключи. Данный параметр используется для поиска всех зашифрованных файлов на локальных дисках.

/R Создает ключ восстановления EFS и сертификат, затем записывает их в файл PFX (содержащий сертификат и закрытый ключ) и файл CER (содержащий только сертификат). Администратор может добавить содержимое файла CER в политику восстановления EFS для создания ключа восстановления для пользователей, а затем импортировать файл PFX для восстановления отдельных файлов. Если задан параметр SMARTCARD, то ключ восстановления и сертификат записываются на смарт-карту.
Примечание. По умолчанию /R создает ключ восстановления на 2048 бит RSA и сертификат. Если задан ECC, то после него необходимо указать размер ключа: 256, 384 или 512.

/P Создает BLOB-объект политики восстановления, зашифрованный с помощью base64, из предъявленного сертификата. Этот BLOB-объект можно использовать для настройки политики DRA для развертывания MDM.

/S Выполняет заданную операцию на указанном каталоге, файлах и подкаталогах в нем.

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

/W Удаляет данные из доступного неиспользуемого дискового пространства на всем томе. Если выбран этот параметр, все остальные будут игнорироваться. Заданный каталог может располагаться в любом месте локального диска. Если это точка или точки подключения к каталогу в другом томе, данные в этом томе будут удалены.

/X Создает резервные копии сертификата EFS и ключей и сохраняет их в файл. Если предоставлен файл efsfile, текущий сертификат пользователя, используемый для шифрования файла, будет заархивирован В противном случае будут заархивированы текущие сертификат и ключи EFS пользователя.

/Y Отображает текущий отпечаток сертификата EFS на локальном ПКC.

/ADDUSER Добавляет пользователя в заданные зашифрованные файлы. Если предоставлен CERTHASH, программа будет искать сертификат с этим хэшем SHA1. Если предоставлен CERTFILE, — извлечет сертификат из файла. Если предоставлен USER, программа будет пытаться найти сертификат пользователя в службах Active Directory Domain Services.

/FLUSHCACHE Очищает кэш ключа EFS вызывающего пользователя на указанном сервере. Если имя сервера не указано, программа очистит кэш ключа шифра на локальном компьютере.

/REKEY Обновляет указанные зашифрованные файлы для использования текущего ключа EFS.

/REMOVEUSER Удаляет пользователя из указанных файлов. CERTHASH должен быть хэшем SHA1 сертификата, который нужно удалить.

Примеры использования CIPHER

cipher /e D:confsecutity — зашифровать подпапку security в папке conf на диске D:

cipher /e /s:D:conf — зашифровать подпапку conf и все ее подпапки. В ходе выполнения команды отображается справочная информация:

Шифрование файлов в D:conf
passwords [OK]
security [OK]
Шифрование файлов в D:confpasswords
far.psw [OK]
. . .

cipher /s:D:conf — отобразить состояние шифрования для папки D:conf . Пример отображаемой информации:

Список D:conf
Новые файлы, добавленные в эту папку, будут зашифрованы.
E passwords
E security
Список D:confpasswords
Новые файлы, добавленные в эту папку, будут зашифрованы.
E far.psw
Список D:confsecurity
Новые файлы, добавленные в эту папку, будут зашифрованы.
E diagerr.xml
E diagwrn.xml
. . .

cipher /c /s:D:conf — отобразить подробные сведения о зашифрованных файлах. Дополнительно отображается уровень совместимости шифрования для разных версий Windows, сведения о сертификате и ключе шифрования, а также имена пользователей, которые имеют возможность расшифровать данный файл.

cipher /X — сохранить резервную копию сертификата EFS и ключей в специальный PFX-файл (PFX сертификат, бинарный формат, при использовании которого в одном зашифрованном файле хранится не только сертификат сервера, но и закрытый ключ) . Имя файла запрашивается перед архивированием. По умолчанию, файл резервной копии сохраняется в домашнем каталоге пользователя и защищается паролем, вводимым пользователем по запросу программы.

За последние несколько лет в развитии криптографических файловых систем был достигнут значительный прогресс. Предоставление пользователям простой в обращении службы шифрования с целью защиты информации сохраненной в файловой системе становится более заманчивой, поскольку сеть все чаще подвергается нападению со стороны внешних и внутренних источников. Один из ключевых принципов надежной политики безопасности – это возможность обеспечить целостность информации сохраняемой в сети. Криптографические файловые системы делают это возможным, упрощая шифрование файлов.

С тех пор, как безопасность стала одним из важных элементов присущих сетям, каждый аспект онлайновой информации требует определенного уровня защиты: от использования файрволов и IDS на сетевом уровне до использования IDS на уровне отдельного хоста. В последнее время криптографическим файловым системам уделяется значительно больше внимания, и из дополнительного уровня защиты они превратились в основой. Хотя технология криптографических файловых систем и родилась недавно, ее стремительному развитию можно только позавидовать. Цель этой статьи обратить внимание читателей на технологию и особенности криптографических файловых систем, а также продемонстрировать некоторые способы реализации таких файловых систем на примерах Microsoft’s Encrypting File System for Windows 2000, Linux CryptoAPI, и Secure File System.

Типы криптографических файловых систем.

Существует несколько подходов к вопросу о криптографических файловых системах. Различают шифрование томов, шифрование файловых систем и шифрование файлов. Каждый из этих подходов имеет свои достоинства и недостатки и будет ниже подробно нами описан.

Данный подход использует уровень драйвера устройства для шифрования и дешифрования информации на физическом носителе и используется такими системами, как PGPDisk, Secure File System (SFS), Linux CryptoAPI и ScramDisk. Шифрование томов делает возможным кодирование всех логических разделов и является удобным и интуитивно понятным для использования конечным пользователем, хотя и не предоставляет надежный контроль над доступом к отдельным директориям или фалам.

Шифрование файлов оперирует уровнем приложений и обеспечивает надежное непрерывное кодирование файлов. Для придания некой прозрачности конечному файлу пользователя, приложения обычно немного переписываются для поддержания шифра. Одной из утилит, поддерживающих этот метод шифрования, является PGP. Этот метод оправдан лишь для небольшого количества файлов, но не совсем пригоден для систем сохранения.

Шифрование файловых систем

Этот метод позволяет шифровать файлы на основе per-file или per-directory, используя единый ключ. К таким системам относятся: Cryptographic File System (CFS), разработанная Матом Блейзом (Matt Blaze), Transparent Cryptographic File System (TCFS), поддерживаемая Linux и BSD, CryptFS, а также Microsoft’s EFS for Windows 2000.

Читайте также:  Как настроить принтер к компьютеру без диска

Дизайн криптографических файловых систем.

Эта реализация криптографической файловой системы построена на использовании постоянного ядра файловой системы. Реализационная модель используется в CryptFS. С ее помощью файловая система может быть смонтирована в любой директории, или даже поверх другой файловой системы(UFS или NFS). Эта модель, также избавляет систему от дополнительных демонов, которые могут быть использованы для получения доступа к системе, или файлам. Интерфейс, используемый CryptFS, является стековидным виртуальным узлом (stackable V-Node). Операционные системы *nix используют виртуальные узлы для обозначения открытых файлов, директорий, устройств и других объектов. Виртуальные узлы скрывают ту часть физической файловой системы, которую используют. Благодаря концепции стыкования виртуальных узлов (V-node stacking), CryptFS позволяет файловым системам реализовать функцию модуляризации: когда один V-node интерфейс вызывает другой. Стыкование виртуальных узлов показано на рис. 1

Рис. 1: Строение стековидного Vnode интерфейса.

Каждая v-node операция в CryptFS вызывает функцию своего нижестоящего уровня для специфических операций над файловой системой. CryptFS был изначально разработан для Solaris, а затем импортирован в Linux и FreeBSD. CryptFS работает со всеми директориями и шифрует данные еще до записи их в файловую систему, а дешифрует в обратном порядке. Разработчики CryptFS также внедрили в свой продукт схему управления ключами (key management scheme), согласной которой лишь root может смонтировать CryptFS и ключ будет ассоциирован не только с UID, но и с ID сессии. Атакующему придется не только взломать эккаунт, но и заставить свои процессы использовать те же ID сессий, что и пользователь, для получения или изменения ключа. CryptFS использует для криптования алгоритм blowfish в режиме CBC.

CryptFS доступен для пользователей как часть пакета для файловых систем (fistgen) и может быть скачан отсюда.

Хотя и Linux CryptoAPI не является программой для шифрования файловых систем, она часто используется для этих целей. Изначально kernelint patch был создан для осуществления шифрования файловых систем для ядра 2.2. Развитие kernelint patch во всеми используемый API для шифрования kernel-space – это большой шаг вперед. При монтировании файловой системы, устройство обратной петли (loopback) делает возможным перенаправление, вследствие чего системные вызовы могут быть перехвачены для шифрования и дешифрования данных файловой системы. Вместо того, чтобы смонтировать систему поверх нужной директории, файловая система может быть смонтирована на устройстве обратной петли. Данное устройство будет смонтировано в точке монтирования директории. Как результат, все команды ядра системы посылаются посредством устройства обратной петли. Процесс показан на рис. 2 и 3

Рис. 2: Шифрование с помощью CryptoAPI

Figure 3: Дешифрование с помощью CryptoAPI

Microsoft’s Encrypted FileSystem (EFS)

Microsoft’s EFS использует общую схему, основанную на ключе. Данные из файла шифруются с использованием симметричного алгоритма при помощи случайного сгенерированного ключа. Этот ключ создается путем шифрования одного или нескольких общих ключей, полученных из сертификата пользователя X.509 version 3. Скрытая часть частных и открытых ключей используется для расшифровки ключа кодирования, который затем используется, чтобы расшифровать файл. Microsoft’s EFS не поддерживает использование симметричного алгоритма использования основанного на пароле ключа из-за того, что такие схемы более уязвимы к атакам с использованием метода подбора по словарю. EFS также обеспечивает восстановление ключа кодирования в случае его потери. Процессы шифрования и дешифрования показаны на рис. 4 и 5.

Рис 5: Дешифрование Microsoft EFS

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

Схема Microsoft’s EFS показана на Рис. 6. Архитектура программы состоит из 4 основных категорий: драйвер EFS , файловая система библиотеки Run-Time, сервис EFS, и различные Win32 API. Драйвер расположен на поверхности файловой системы NTFS. Он обменивается данными с EFS сервисами для получения ключа кодирования и другой информации. Драйвер передает эту информацию в библиотеку Run-Time, чтобы выполнить множество различных операций с файловой системой. Драйвер и библиотека run-time не общаются напрямую, а используют механизм контроля за фалом в NTFS — call-out. Сервис EFS является частью подсистемы безопасности и использует порт между LSA и монитором безопасности ядра для общения с драйвером EFS. Сервис EFS использует интерфейсы с помощью CryptoAPI в режиме пользователя для создания ключей кодирования для файлов и других служб. Он так же поддерживает Win32 API, которые обеспечивают программные интерфейсы как для шифрования, дешифрование или восстановления, так и для импортирования и экспортирования зашифрованных данных.

Рис 6: Архитектура EFS

В данный момент EFS поддерживает лишь алгоритм шифрования DESX, основанный на 128-битном ключе. Майкрософт сообщает, что в будущем EFS будет поддерживать также альтернативные алгоритмы шифрования.

За последние несколько лет в развитии криптографических файловых систем был достигнут значительный прогресс. Предоставление пользователям простой в обращении службы шифрования с целью защиты информации сохраненной в файловой системе становится более заманчивой, поскольку сеть все чаще подвергается нападению со стороны внешних и внутренних источников. Один из ключевых принципов надежной политики безопасности – это возможность обеспечить целостность информации сохраняемой в сети. Криптографические файловые системы делают это возможным, упрощая шифрование файлов.

Подписывайтесь на каналы "SecurityLab" в Telegram и Яндекс.Дзен, чтобы первыми узнавать о новостях и эксклюзивных материалах по информационной безопасности.

Подробнее о плюсах и минусах EFS

EFS представляет собой лишь один из способов защиты информации в компьютерной системе. Таких способов Windows 2000 предлагает несколько, и наша задача в каждом конкретном случае выбрать наиболее подходящий. Естественно, требуемый уровень защиты должен определяться характером конфиденциальной информации, а также типом компьютерной системы. В данной статье рассматривается, прежде всего, проблема защиты локальных данных, т. е. файлов, хранящихся на жестком диске персонального компьютера.

Обезопасить локальные ресурсы в Windows 2000 средствами самой системы можно двумя способами: с помощью разрешений NTFS и с помощью EFS.

Вместе с первой версией операционной системы Windows NT, предшественницей Windows 2000, появилась и новая файловая система — NTFS. На сегодня NTFS закрепила за собой позиции надежной, эффективной файловой системы с развитыми функциями защиты. Средствами NTFS можно защитить свою информацию от несанкционированного доступа, независимо от того, работает пользователь в локальной сети предприятия или у себя дома. Пятая версия NTFS, реализованная в Windows 2000, обладает более широким набором специальных разрешений и усовершенствованным механизмом наследования. Действие разрешений на доступ, настроенных с помощью NTFS, распространяется как на сетевые подключения, так и на локально зарегистрировавшихся пользователей. Однако защита NTFS остается эффективной до тех пор, пока злоумышленник не добрался до компьютера физически. Иначе достаточно подключить винчестер к другой машине или даже просто загрузить другой экземпляр Windows 2000 на этом же компьютере. Как в такой ситуации уберечь свои данные?

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

Средства поддержки шифрования на программном уровне появились еще в Windows NT 4.0 (после выхода Service Pack 4) и получили дальнейшее развитие в Windows 2000/XP. Я начну с архитектуры EFS.

Архитектура EFS

Существует немало публикаций, подробно описывающих архитектуру EFS. Весьма удачно и емко, на мой взгляд, данная тема изложена в [1]. Мне же хочется обратить внимание читателей на некоторые детали реализации EFS, повлиявшие на развертывание и использование этого механизма. Структурно EFS выполнена в виде драйвера устройства, работающего в режиме ядра и тесно связанного с драйвером NTFS. Всякий раз, когда NTFS встречает шифрованный файл, она вызывает функции из драйвера EFS, зарегистрированные им в NTFS при инициализации EFS. Поэтому средства шифрования доступны только на разделах NTFS.

Читайте также:  Как сделать aux провод

С криптографической точки зрения разработчики выбрали стандартный на сегодняшний день подход к шифрованию данных, объем которых может варьироваться в широких пределах. Стандартность его заключается в сочетании симметричного и асимметричного методов шифрования. Для каждого шифруемого файла операционная система на основе генератора случайных чисел создает криптографический ключ, называемый шифровальным ключом файла (file encryption key, FEK). Тело файла шифруется блоками по 512 байт с помощью полученного FEK и симметричного алгоритма DESX. Затем FEK шифруется посредством асимметричного алгоритма RSA и открытого ключа пользователя, инициировавшего операцию шифрования. Использование симметричного блочного шифра снижает вычислительную нагрузку на центральный процессор.

В среднем, симметричные алгоритмы работают в 100-1000 быстрее асимметричных. В свою очередь, применение асимметричных методов криптографии позволяет надежно защитить FEK и упростить управление ключами.

Рассмотрим вкратце криптоаналитические аспекты EFS. Многие читатели, наверное, знакомы с широко распространенным блочным шифром Data Encryption Standard (DES). Те же, кому требуется развернутая информация по данному вопросу, могут обратиться к замечательной книге Вильяма Столлингса [2]. Исходный вариант DES использует ключи длиной 56 разрядов. За время, прошедшее после создания DES, компьютерная техника развилась настолько, что при данной длине ключа удается в приемлемые сроки осуществлять полный перебор пространства ключей. В 1984 г. Рон Ривест предложил усовершенствованный вариант алгоритма, названный DES eXtended (DESX) и определяемый как

Ключ DESX K = k, k1, k2 состоит из 56 + 64 + 64 = 184 разрядов и содержит три различных подключа: ключ DES k, предварительный «зашумляющий» ключ k1 и завершающий «зашумляющий» k2. При шифровании блок сообщения x складывается поразрядно по модулю 2 с k1, затем шифруется по алгоритму DES и вновь поразрядно складывается по модулю 2 с k2. Таким образом, затраты DESX на шифрование блока всего на две операции сложения по модулю 2 больше, чем затраты исходного алгоритма. Однако эти две операции делают шифр гораздо менее уязвимым по отношению к перебору ключей. Согласно же [3], DESX также повышает стойкость к дифференциальному и линейному криптоанализу, увеличивая необходимое количество проб с выбранным текстом до значения, превышающего 260. Следовательно, можно считать, что криптоаналитическая стойкость предлагаемого решения не вызывает серьезных нареканий.

Остается надежно защитить FEK, для чего используется алгоритм RSA. И если FEK генерируется случайным образом для каждого файла, то сам FEK шифруется с помощью открытого ключа пользователя. Криптографическую пару открытый (public)/закрытый (private) ключ Windows 2000 генерирует для конкретного пользователя, когда тот впервые шифрует папку или файл на NTFS. Открытый ключ оформляется в виде цифрового сертификата. В корпоративных сетях выпуском цифровых сертификатов занимается служба Certificate Service, входящая в поставку серверных продуктов семейства Windows 2000. В отсутствии этой службы, например, в рабочей группе или на домашнем компьютере NTFS сама выпускает сертификаты, но только для использования в операциях с EFS. И цифровой сертификат, и закрытый ключ хранятся в профиле пользователя.

На программном уровне допустимо нескольким людям работать с одним и тем же файлом. Однако в пользовательском интерфейсе Windows 2000 обращаться к зашифрованному файлу может только тот, кто его зашифровал, и агенты восстановления (Data Recovery Agents, DRA). Формат заголовка шифрованного файла представлен на Рисунке 1.

Рисунок 1. Формат заголовка шифрованного файла.

Основную часть заголовка составляют два поля: поле расшифровки данных (Data Decryption Field, DDF) и поле восстановления данных (Data Recovery Field, DRF). Если с файлом работают несколько человек, то DDF состоит из соответствующего количества элементов, совокупность которых образует так называемую связку ключей (key ring). Каждый элемент зашифрован открытым ключом одного из пользователей. Но заметьте, что во всех элементах хранится один и тот же FEK, уникальный для данного файла.

В целом, процесс шифрования файла состоит из следующих шагов.

  1. В каталоге System Volume Information создается файл журнала с именем Efsx.log, где x — уникальное целое положительное число. По мере выполнения следующих этапов в журнал заносятся записи, позволяющие восстановить файл после сбоя системы в процессе шифрования. System Volume Information существует на любом разделе NTFS, доступ к соответствующему каталогу имеет только учетная запись SYSTEM, т. е. сама операционная система.
  2. Windows 2000 генерирует FEK.
  3. Генерируется или считывается из профиля пара открытый/закрытый ключ.
  4. Для файла создается связка ключей DDF с элементом для данного пользователя. В элемент помещается FEK и шифруется открытым ключом.
  5. файла создается связка ключей DRF с элементами для каждого DRA. FEK сохраняется во всех элементах, но каждый элемент шифруется открытым ключом соответствующего DRA.
  6. Создается резервный файл с именем вида Efs0.tmp в том каталоге, где находится шифруемый файл.
  7. В резервный файл копируется содержимое исходного файла.
  8. Содержимое исходного файла уничтожается, в него копируется содержимое резервного файла, которое при выполнении этой операции шифруется поблочно.
  9. Удаляется резервный файл.
  10. Удаляется файл журнала.

Размер блока специально выбран равным размеру сектора жесткого диска.

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

  1. проверяет, имеется ли у пользователя закрытый ключ. Если ключ отсутствует или не подходит ни к одному из элементов связки ключей, доступ к файлу не предоставляется.
  2. Расшифровывается FEK из элемента DDF или DRF.
  3. С помощью FEK дешифруются данные файла.

Для повышения производительности NTFS кэширует FEK в невыгружаемой области памяти. Нужно иметь в виду, что присутствие EFS несколько изменяет поведение системы при проверке прав доступа к файлу и папке. Если пользователь пытается выполнить операцию, требующую расшифровки данных, и не может предоставить нужный закрытый ключ (т. е. файл зашифровал не он), система запрещает доступ к объекту. Например, пользователь, обладающий правом Full Control на файл, не будучи DRA, может файл удалить (что не требует его расшифровки), но не в состоянии прочитать или изменить данные файла. По тем же причинам система не позволит такому человеку снять атрибут шифрования (см. Экран 1). С другой стороны, если у пользователя есть право Write на незашифрованный объект, он может его зашифровать и, тем самым, лишить владельца возможности работать с собственным файлом.

Экран 1. Ошибка при попытке изменения атрибута шифрования.

Использование EFS

В предыдущем разделе уже было показано, что предложенная Microsoft архитектура EFS порождает ряд особенностей в использовании шифрования. Еще одной такой особенностью является полная прозрачность операций шифрования/дешифрации для конечного пользователя. Как известно, для того чтобы зашифровать файл или папку, достаточно с помощью Windows Explorer установить флажок Encrypt contents to secure data в свойствах объекта или использовать утилиту командной строки cipher.exe. Столь же просто файл или папку расшифровать. Прозрачность операций достигается за счет хранения криптографической пары ключей в профиле пользователя. Действительно, когда пользователь пытается выполнить какие-либо действия, связанные с EFS, операционная система всегда может идентифицировать его (по SID), определить расположение профиля и загрузить оттуда необходимые ключи. С другой стороны, неосторожные действия администратора с профилем пользователя могут привести к потере ключей и отказу в доступе к данным. Рассмотрим подробнее вопросы хранения открытого/закрытого ключей.

Как уже упоминалось, открытый ключ хранится в виде структуры данных, называемой цифровым сертификатом. Все сертификаты пользователя записываются в папку Documents and SettingsApplicationDataMicrosoft SystemCertificatesMy Certificates. Дополнительно их можно опубликовать в Active Directory. Поскольку информация в цифровом сертификате открытая, ее хранение не требует особых усилий.

Гораздо сложнее обстоит дело с закрытыми ключами. Они располагаются в папке Documents and SettingsApplication DataMicrosoftCryptoRSA. Эта папка не может быть переименована или перенесена в другое место. Для надежной защиты закрытых ключей в Windows 2000 применяется многоуровневое шифрование.

Все ключи в папке RSA автоматически шифруются с помощью сгенерированного случайным образом симметричного ключа, называемого основным ключом пользователя (user?s master key). Основной ключ, в свою очередь, автоматически шифруется службой Protected Storage и сохраняется в Documents and SettingsApplication DataMicrosoftProtect. Для пользователей с перемещаемыми профилями основной ключ хранится на контроллере домена и загружается на компьютер пользователя только на время сеанса работы. Длина основного ключа 56 или 128 разрядов. Как обычно, 128-разрядные ключи разрешены для применения только в США и Канаде.

Читайте также:  По результатам анализа запятая

Наконец, служба Protected Storage шифрует все основные ключи пользователей компьютера, а также другие ключи, применяемые операционной системой, с помощью системного ключа (system key). Системный ключ для каждого компьютера с Windows 2000 уникален. По умолчанию, как указано в [4], он хранится непосредственно на компьютере и размещен в реестре с использованием сложного алгоритма. Однако подобный подход все же снижает уровень защиты системы, особенно в тех ситуациях, когда злоумышленник завладел жестким диском. Поэтому с помощью программы syskey.exe системный ключ можно удалить с компьютера и сохранить на дискете. В этом случае при запуске Windows 2000 потребуется вставить дискету либо ввести пароль, на основе которого будет сгенерирован ключ. Причем диалоговое окно с просьбой вставить дискету или ввести пароль появляется еще до традиционного окна регистрации в системе. Хранение системного ключа на внешнем носителе требует особой осторожности, ибо потеря этого ключа при отсутствии резервной копии сделает невозможной дальнейшую работу с данным экземпляром Windows 2000.

С учетом сказанного выше можно отметить следующие особенности использования EFS.

Во-первых, необходимо иметь в виду, что по сети данные всегда передаются в открытом виде. Почему? Ключи хранятся на том компьютере, на котором выполнялось шифрование, например на компьютере A. Если теперь передать файл на компьютер B, операционная система этой машины не сможет выполнить дешифрацию, поскольку не знает пользовательского закрытого ключа, оставшегося на A. Почему же не передавать и закрытый ключ? Очевидно, передавать его открытым текстом нельзя. Тогда необходимо предложить эффективный алгоритм обмена закрытыми ключами между компьютерами, что может существенно повысить сложность EFS в целом и отрицательно сказаться на производительности. Более того, если закрытых ключей несколько — а при нынешнем положении дел Windows 2000 генерирует криптографическую пару на каждом компьютере, где пользователь выполняет шифрование, — общий уровень защиты системы повышается. Таким образом, при копировании файла система компьютера A дешифрует файл и передает его в открытом виде по сети. Получив файл, система B шифрует содержимое файла с помощью своей пары открытый/закрытый ключ и сохраняет его на диске. Если необходимо, чтобы передаваемые по сети данные были защищены, следует воспользоваться дополнительными средствами Windows 2000, например протоколом IPSec.

Во-вторых, компьютер, на который копируются или переносятся шифрованные файлы, должен быть доверенным для делегирования. Это позволит операционной системе удаленного компьютера запросить пару ключей в контексте учетной записи пользователя, выполняющего операцию. Причем доверенной для делегирования должна быть именно учетная запись компьютера, так как EFS работает от имени записи SYSTEM.

Экран 2. Профиль пользователя, созданный для выполнения операций EFS.

В-третьих, если на том компьютере, куда копируются файлы, нет пользовательского профиля, а стало быть, нет и пары ключей, Windows 2000 создаст такой профиль. Правда, выглядеть он будет несколько иначе (см. Экран 2).

Тем не менее способ перенести информацию на другой компьютер в зашифрованном виде существует — с помощью утилиты Backup. При создании резервной копии Backup может сохранять на носителе файлы без расшифровки их содержимого. Для этого используются функции нового EFS API, такие, как OpenEncryptedFileRaw, ReadEncryptedFileRaw, WriteEncryptedFileRaw и CloseEncryptedFileRaw.

Однако нельзя применять эти функции в обход Backup, т. е. в обыкновенной WIN32-программе обратиться к ним и переписать зашифрованный файл в другое место не удастся. Если бы это было возможно, атакующий мог бы воспользоваться криптоанализом c избранным открытым текстом. По тем же причинам Backup не позволит восстановить зашифрованные данные из резервной копии на раздел, отформатированный файловой системой, отличной от NTFS (точнее говоря, не поддерживающей EFS). Но даже если все сделано правильно и компьютер-получатель содержит NTFS-раздел, после восстановления информации получить доступ к данным не удастся — отсутствуют закрытые ключи. Проблема решается двумя способами. Нужно либо с помощью оснастки Certificates экспортировать закрытый ключ, либо задействовать перемещаемый (roaming) профиль. В последнем случае криптографическая пара пользователя будет доступна на любой машине.

Политика агентов восстановления

Эта тема вызывает наибольшее количество вопросов. Для начала напомню, что при EFS-операциях FEK сохраняется еще и в поле DRF. Это означает, что помимо человека, выполнившего шифрование, расшифровать файл может любой пользователь, назначенный агентом восстановления (DRA). Иными словами, всегда есть некто, способный прочитать или даже изменить ваши конфиденциальные данные. Является ли наличие DRA сильной или слабой стороной EFS? Ответы могут быть прямо противоположными.

С одной стороны, не надо забывать, что Microsoft позиционирует Windows 2000 для рынка крупных корпоративных сетей, а здесь проблема возможной потери данных стоит особенно остро. Теперь представим себе ситуацию: некий пользователь, например менеджер, зашифровал свои данные, а администратор по неосторожности удалил его профиль вместе с закрытым ключом. В отсутствии DRA доступ к данным будет невозможен. Конечно, у грамотного администратора наверняка имеется резервная копия файлов менеджера, но. всем известно, как это обычно бывает.

Другой пример. Одного из сотрудников увольняют, администратор удаляет соответствующую учетную запись, но потом выясняется, что перед уходом этот человек зашифровал папку на файловом сервере. Все закрытые ключи на местах, но как ими воспользоваться? Опять же Backup? Но если в резервную копию файлы попали уже зашифрованными? Можно предложить массу других не менее сложных сценариев.

Понимая остроту перечисленных проблем, разработчики Microsoft вводят DRA. Не для того, чтобы подсматривать чужие данные, а для того, чтобы можно было их восстановить. Но вот сюрприз, DRA является обязательным составляющим EFS. Если удалить последнего агента восстановления в системе, EFS отключается. Действительно, любые попытки зашифровать данные после этого приводят к ошибке (см. Экран 3). Вернув хотя бы одного DRA, мы снова активизируем EFS, подробности на эту тему можно найти в [5].

Экран 3. Попытка зашифровать файл при отсутствии DRA.

Такая ситуация может не устроить множество пользователей, работающих на компьютерах, не подключенных к сети. Зачем мне на домашней машине с Windows 2000 этот DRA? Почему я не могу отказаться от него, пусть даже на свой страх и риск? Мне кажется, что такая возможность должна быть предоставлена.

Более того, по умолчанию роль DRA на автономных машинах играет встроенная запись Administrator, в домене — Administrator домена. И если в рамках домена можно назначить новых DRA, опираясь на GPO и службу цифровых сертификатов, и не вменять это в обязанность администратору, то на компьютерах вне домена такой возможности нет.

Данная ситуация послужила поводом для атак на EFS. Специалисты в области защиты информации летом 1999 г. опубликовали на сайте www.ntsecurity.net сенсационный документ. По их мнению, для того чтобы получить доступ к зашифрованным документам, достаточно сделать следующее.

  1. Установить на компьютер вторую систему Windows 2000. Допустим, первая стоит в каталоге winnt. Тогда вторую установим в winnt2.
  2. Загрузить вторую систему. Открыть каталог winntsystem32config и создать его резервную копию. Удалить файлы SAM и SAM.LOG.
  3. Загрузить компьютер в первой системе.
  4. Зарегистрироваться под именем Administrator с пустым паролем.
  5. С этого момента вы получаете доступ ко всей зашифрованной информации на дисках.

Разумеется, такой ситуации можно избежать, если в политике домена назначить другого DRA и удалить локальных. Но в рабочих группах проблема остается и фактически сводит на нет преимущества использования EFS.

Существует два основных подхода к применению DRA. Оба предполагают, что открытый/закрытый ключи агента хранятся на внешнем носителе. Для этого при экспорте ключей отмечается параметр, заставляющий систему удалить ключи с жесткого диска (см. Экран 4). При первом подходе для восстановления файлов, пользователь-агент восстановления садится за компьютер пользователя, где имеются подлежащие расшифровке данные, импортирует ключи и выполняет восстановление информации. Ключи затем удаляются. При втором, более надежном, пользователь пересылает файлы агенту в защищенном виде (IPSec, MIME/S). DRA расшифровывает информацию и таким же способом пересылает обратно.

Ссылка на основную публикацию
Что значит код ошибки 805а8011
Многие владельцы смартфонов с операционной системой Windows Phone не могут войти в учетную запись магазина Marketplace. На экране появляется код...
Хочу создать группу в контакте
Приветствую вас, дорогие читатели. Социальные сети уже давно вошли в нашу жизнь, поэтому всем владельцам абсолютно любого бизнеса, как традиционного,...
Хром для андроид тв приставок
Всем привет! Предлагаю очередной раз поднять больную тему браузеров для Android TV. В разделе «вопрос – ответ» уже много раз...
Что значит интегрированный процессор
Здравствуйте, уважаемые пользователи и любители компьютерного железа. Сегодня порассуждаем на тему, что такое интегрированная графика в процессоре, зачем она вообще...
Adblock detector