В Windows 2000, Windows ХР и Windows Server 2003 компания Microsoft успешно расширила поддержку дефрагментации. Ниже описаны некоторые особенности Windows ХР и Windows Server 2003.
Поддержка дефрагментации MFT. Первые 16 записей MFT переместить невозможно, впрочем, они и без того обычно не фрагментируются. Единственным исключением является корневой каталог.
Поддержка дефрагментации дисков, размер кластеров которых превышает 4 Кбайт.
Использование зоны MFT для временных файлов дефрагментации. Если диск заполнен целиком и пользователь или администратор пытаются провести дефрагментацию, временно понадобится дополнительное дисковое пространство. В более старых версиях Windows операция дефрагментации завершалась неудачно при отсутствии свободного дискового пространства за пределами зоны MFT, даже если в зоне MFT дискового пространства было достаточно.
Дефрагментация потока данных, принятого по умолчанию, а также данных точек повторной обработки и списков атрибутов. Точки повторной обработки и списки атрибутов могут быть открыты, как и обычные именованные потоки данных.
Дефрагментация области между логическим и физическим окончаниями файла, что обозначено выделенными кластерами. Такие приложения, как приложения резервного копирования и восстановления, предварительно выделяют кластеры для файла и устанавливают действительный размер файла с помощью функции SetFileValidData. В Windows 2000 можно дефрагментировать только действительные данные
файла, а дефрагментация области между логическим окончанием файла и конечными кластерами, выделенными файлу, не поддерживается.
Предотвращение дефрагментации открытых файлов, которое возможно, если приложения открывают файлы, указывая новый параметр FSCTL(FSCTL_MARK_HANDLE с параметром FSCTL_MARK_HANDLE_PROTECT_ CLUSTERS).
Дефрагментация шифрованной файловой системы без чтения содержимого файлов (т.е. дешифрации). Это позволяет закрыть брешь в системе безопасности, которая позволяет дешифровать файлы в системный кэш, откуда их может прочитать злоумышленник.
6.5.20 Шифрованная файловая система
В Windows 2000 поставляется шифрованная файловая система (Encrypted File System – EFS), позволяющая закрыть основную брешь безопасности Windows. Файловая система NTFS обеспечивает безопасность, если приложения получают доступ к файлам средствами самой NTFS. Однако злоумышленник, получивший физический доступ к серверу, может перезагрузить компьютер с помощью другой операционной системы и получить доступ к диску в «непосредственном режиме» с помощью другой файловой системы. Для исключения подобной возможности в Windows 2000 появилась EFS, которая обеспечивает шифрование данных перед записью на жесткий диск. Шифрованная файловая система может быть включена для отдельных каталогов или отдельных файлов. С другой стороны, версии Windows 9х позволяли использовать шифрование для отдельных разделов.
В шифрованной файловой системе используется симметричная и асимметричная криптография. Архитектура файловой системы поддерживает и другие алгоритмы шифрования. Данные могут быть дешифрованы с помощью того же ключа, так как DES (Data Encryption Standard) – это симметричный шифратор.
На рис. 6.8 показано, что данные шифруются с помощью случайно сгенерированного 12-разрядного ключа. Для шифрации используется один из вариантов алгоритма DES. На первом этапе показано шифрование данных файла с помощью случайно сгенерированного ключа, на втором – шифрование случайно сгенерированного ключа с помощью открытого ключа пользователя. После этого ключ сохраняется в поле Data Decryption в атрибутах файла. Это поле используется для дешифрации, как отмечается далее в этом разделе. Наконец, случайно сгенерированный ключ шифруется еще раз с помощью открытого ключа агента восстановления. Агентом может быть системный администратор или другой пользователь, обладающий соответствующими полномочиями. Генерация поля Data Recovery показана на третьем этапе (см. рис. 6.8). Поле Data Recovery предоставляет вторичный способ получения данных, если пользователь окажется недоступным или вдруг решит сделать данные невосстановимыми.
Рис. 6.8. Схема шифрации файлов в EFS7
При чтении файла считывается содержимое поля Data Decryption и дешифруется закрытым ключом пользователя (первый этап на рис. 6.9) для получения 128-разрядного ключа, необходимого для дешифрации данных файла. После этого данные дешифруются с помощью 128-разрядного ключа (второй этап). На рис. 6.9 приведен необязательный третий этап, на котором восстанавливается 128-разрядный ключ шифрации/дешифрации. Для этого проводится дешифрация поля Data Recovery (а не поля Data Decryption).
На рис. 6.10 показана архитектура EFS. Драйвер EFS – это драйвер фильтрации файловой системы, который расположен уровнем выше NTFS. (Шиф-
7Фактически стандартом асимметричного шифрований ключа является технология RSA, а стандартом симметричного шифрования – DESX. Более подробная информация представлена на Web-узле по адресу: http://viwv. raasecurity.com/rsalab8/faq/3-l-l. html.
Рис. 6.9. Схема дешифрации файлов в EFS
рованная файловая система не поддерживается другими файловыми системами, включая FAT.) Драйвер обрабатывает рабочие вызовы, которые называются FSRTL (File System Run-Time Library) и используются для чтения, записи и открытия/закрытия зашифрованных файлов. Эти вызовы применяют средства NTFS для чтения или записи метаданных, относящихся к шифрованию, например полей Data Decryption и Data Encryption.
Служба EFS обеспечивает работоспособность функций шифрации/де- шифрации и генерацию шифрованных ключей с помощью инфраструктуры API шифрования, входящей в Windows NT. Служба EFS взаимодействует с драйвером EFS с помощью локальных вызовов процедур (LPC), предоставляемых операционной системой.
В отличие от Windows Server 2003, операционная система Windows 2000 не поддерживает использование шифрованного файла несколькими пользователями. Тем не менее симметричный ключ можно зашифровать несколько раз открытыми ключами нескольких пользователей.
Программный доступ к шифрованным файлам обеспечивается функциями API EncryptFile и Decrypt File.
Рис. 6.10. Архитектура EFS
6.5.21 Закрепленные ссылки NTFS
Файловая система NTFS поддерживает два типа ссылок: модифицируемые (soft) и закрепленные (hard). Обратите внимание, что в Windows Server 2003 закрепленные ссылки поддерживаются только для файлов, а модифицируемые – только для каталогов. Модифицируемые ссылки реализуются с помощью точек повторной обработки (reparse points). Эта технология рассматривается в разделе 6.5.22.
Закрепленные ссылки позволяют одному файлу иметь несколько имен путей. Использование таких ссылок возможно только для файлов и не поддерживается для каталогов. Закрепленные ссылки могут применяться, например, в нескольких компилируемых проектах, где изменения в ряде файлов заголовков должны отражаться во всех проектах одновременно. Альтернативой закрепленным ссылкам может служить использование нескольких копий файла. Закрепленные ссылки реализуются с помощью одной записи MFT, в которой размещено несколько атрибутов с именем файла. Вызов CreateHardLink из Win32 API позволяет создать закрепленные ссылки и в качестве параметров принимает путь к существующему файлу и имя еще не существующего файла.
Закрепленные ссылки поддерживаются в NTFS еще со времен Windows NT 3. x, так как требовались для подсистемы POSIX. Последним изменением стало предоставление открытого доступа к API для создания и удаления закрепленных ссылок. Файлы удаляются после удаления последнего имени, связанного с этим файлом. Другими словами, если файл имеет две закрепленные ссылки, а именно linkl. doc и link2. doc, удаление linkl. doc не приведет к удалению link2. doc.
6.5.22 Точки повторной обработки
Это относительно новая функция NTFS и-подсистемы ввода-вывода Windows NT. Точки повторной обработки представляют способ реализации следующих функций:
точки монтирования томов;
точки соединения каталогов;
хранилище SIS (Single Instance Storage);
удаленное хранилище (HSM).
В этом разделе подробно рассматривается архитектура точек повторной обработки. В разделах 6.5.22.1–6.5.22.4 описываются методы применения точек повторной обработки, показанных ранее.
Обратите внимание, что в этом разделе точки повторной обработки рассматриваются как неотъемлемая часть файловой системы NTFS. Хотя FAT не поддерживает точек повторной обработки, независимый поставщик программного обеспечения или компания Microsoft могут создать файловую систему, которая отличается от NTFS, но поддерживает точки повторной обработки. Такая задача далеко не тривиальна, однако использовать при этом три перечисленных ниже компонента обязательно.