<<
>>

Другие концепции атрибутов

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

Базовые записи MFT

Теоретически файл может содержать до 65 536 атрибутов (из-за 16-разрядных идентификаторов), поэтому для хранения всех заголовков атрибутов одной записи MFT может оказаться недостаточно — ведь даже у нерезидентных атрибутов заголовок должен храниться в записи MFT. Когда с файлом ассоциируются дополнительные записи MFT, исходная запись MFT называется базовой записью MFT. У небазовых записей адрес базовой записи хранится в одном из полей записи MFT.

Базовая запись MFT содержит атрибут типа $ATTRIBUTE_LIST, в котором хранится список всех атрибутов файла и адресов MFT, по которым их можно найти. Небазовые записи MFT не содержат атрибутов $FILE_NAME и $STANDARD_INFORMATION. Атрибут $ ATT RI В UT E_LIST будет рассмотрен в разделе «Категория метаданных» главы 12.

Разреженные атрибуты

Чтобы уменьшить объем места, занимаемого файлом, NTFS может сохранять значения некоторых нерезидентных атрибутов $DATA в разреженном формате. Разреженным называется атрибут, у которого кластеры, заполненные одними нулями, не записываются на диск. Вместо этого для нулевых кластеров создается специальная серия. Обычные серии содержат позицию начального кластера и размер, тогда как разреженные серии содержат только размер без начального адреса. Также присутствует флаг, который указывает, что атрибут является разреженным.

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

11.8(A)). При хранении в виде разреженного атрибута создаются три серии, а выделяются только девять кластеров (рис. 11.8 (В)).

Сжатые атрибуты

NTFS позволяет хранить атрибуты в сжатом виде, хотя описание алгоритма сжатия не опубликовано. Обратите внимание: речь идет о сжатии на уровне файловой системы, а не о применении внешних приложений вроде WinZip или gzip. Microsoft утверждает, что сжиматься могут только атрибуты $DATA и только при хранении в нерезидентном формате. Как разреженные серии, так и сжатие данных используются в NTFS для сокращения объема расходуемого дискового пространства. Флаг в заголовке атрибута указывает, что атрибут хранится в сжатом виде, а флаги в атрибутах $STANDARD_INFORMATION и $FILE_NAME также сообщают, что файл содержит сжатые атрибуты.

Перед сжатием содержимого атрибута данные делятся на фрагменты одинакового размера, называемые блоками сжатия. Размер блока сжатия указывается в заголовке атрибута. В каждом блоке сжатия возможна одна из трех ситуаций: Все кластеры заполнены нулями. В этом случае создается серия разреженных данных, размер которой совпадает с размером блока, а дисковое пространство не выделяется.

Количество кластеров после сжатия не изменилось (то есть сжатие оказалось малоэффективным). В этом случае блок не сжимается, а серия создается для исходных данных. Данные после сжатия занимают меньшее количество кластеров. В этом случае данные сжимаются и сохраняются в серии на диске. После сжатой серии создается разреженная серия, чтобы общая длина серии совпадала с количеством кластеров в блоке сжатия.

В следующем простом примере продемонстрирован каждый из этих сценариев. Предположим, размер блока сжатия равен 16 кластерам, а длина атрибута $DATA составляет 64 сектора (рис. 11.9). Содержимое делится на четыре блока, а каждый блок анализируется файловой системой. Первый блок сжимается до 16 кластеров, поэтому он сохраняется без сжатия. Второй блок заполнен одними нулями; для него создается разреженная серия из 16 кластеров, но кластеры на диске не выделяются.

Третий блок сжимается до 10 кластеров; сжатые данные записываются на диск в виде серии из 10 кластеров, к которой добавляется разреженная серия из 6 кластеров для данных, сокращенных в результате сжатия. Последний блок сжимается до 16 кластеров, поэтому он сохраняется без сжатия в виде серии из 16 кластеров.

Исходное содержимое


Блоки

сжатия

Дисковое

пространство

Серии

1

Начало: 100 Размер: 16

2

Начало: — Размер: 16

3

Начало: 150 Размер: 10

4

Начало: — Размер: 6

5

Начало: 160 Размер: 16

Рис. 11.9. Атрибут с двумя блоками, сохраняемыми без сжатия, одним разреженным блоком и одним блоком, сжимаемым до 10 кластеров

Когда ОС или программа анализа читает этот атрибут, она обнаруживает установленный флаг сжатия и преобразует серии во фрагменты, размер которых соответствует размеру блока сжатия. Первая серия по длине совпадает с блоком сжатия; следовательно, она хранится без сжатия. Вторая серия по длине совпадает с блоком сжатия и является разреженной; это означает, что она состоит из 16 кластеров, заполненных нулями. Третья серия образует размер блока только в сочетании с четвертой; третья серия занимает только 10 кластеров и нуждается в распаковке. Последняя серия по длине тоже совпадает с блоком, а следовательно, хранится без сжатия.

Последний пример был слишком простым, поэтому я представлю более сложный файл, показанный на рис. 11.10. Сложности объясняются тем, что исходная структура серий не делится на блоки сжатия напрямую. Чтобы обработать этот файл, необходимо сначала восстановить данные из шести серий, а затем разбить их на блоки сжатия из 16 кластеров.

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

Список серий

1 Начало: 100 Размер: 20
2 Начало: 210 Размер: 14
3 Начало: 289 Размер: 02
4 Начало: — Размер: 28
5 Начало: 359 Размер: 04
6 Начало: — Размер: 12

Объединенные

серии

Блоки

сжатия

Исходное

содержимое

Рис. 11.10. Сжатый атрибут с фрагментированными сериями, границы которых не совпадают с границами блоков сжатия

Шифрование атрибутов

В NTFS также предусмотрена возможность шифрования содержимого атрибутов. В этом разделе приводится обзор того, как это делается и какие данные существуют на диске. Теоретически шифроваться могут любые атрибуты, но Windows поддерживает шифрование только для атрибутов $DATA. Шифруется только содержимое, но не заголовок атрибута. Для файла создается атрибут $LOGGED_UTILITY_STREAM с ключами, необходимыми для расшифровки данных.

В Windows шифроваться могут как отдельные файлы, так и целые каталоги. Зашифрованный каталог не содержит зашифрованных данных, но любой файл или каталог, созданный в этом каталоге, будет зашифрован. У зашифрованных файлов или каталогов в атрибуте $STAN DARD_IN FORMATION устанавливается специальный флаг, и у каждого зашифрованного атрибута в заголовке тоже устанавливается флаг.

Основы криптографии

Прежде чем объяснять, как криптографические функции реализованы в NTFS, я приведу краткий обзор основных концепций криптографии. Шифрованием

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

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

Асимметричные алгоритмы используют один ключ для шифрования, а другой — для дешифрования. Например, ключ «spot» может использоваться для преобразования простого текста в зашифрованный, а ключ «felix» — для расшифровки зашифрованного текста. В самом распространенном варианте асимметричного шифрования один из ключей делается открытым, то есть общедоступным, а другой хранится в секрете. Любой желающий может зашифровать данные с общим ключом, но их расшифровка возможна только с закрытым (приватным) ключом. Разумеется, ключи, применяемые на практике, гораздо длиннее слов «spot» и «felix». Как правило, длина ключей превышает 1024 бит.

Реализация в NTFS

При шифровании атрибута $DATA в NTFS применяется симметричный алгоритм DESX. Для каждой записи MFT, содержащей шифрованные данные, генерируется один случайный ключ, который называется ключом шифрования файла (FEK, File Encryption Key). Если запись содержит несколько атрибутов $DATA, все они шифруются одним ключом FEK.

Ключ FEK хранится в зашифрованном виде в атрибуте $LOGGED_UTILITY_STREAM. Атрибут содержит список полей расшифровки данных (DDF, Data Decryption Fields) и полей восстановления данных (Data Recovery Fields). DDF создается для каждого пользователя, имеющего доступ к файлу, и содержит код SID (Security ID) пользователя, данные шифрования и ключ FEK, зашифрованный открытым ключом пользователя. Поле восстановления данных создается для каждого метода восстановления данных и содержит ключ FEK, зашифрованный с открытым ключом восстановления данных; он используется в тех случаях, когда администратору или другому привилегированному пользователю потребуется обратиться к данным (рис. 11.11).

При расшифровке атрибута $DATA система обрабатывает атрибут $L0GGED_UTIL- ITY_STREAM и находит запись DDF пользователя. Закрытый ключ пользователя используется для дешифрования ключа FEK, а ключ FEK — для дешифрования

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

Рис. 11.11. Процесс шифрования, начиная с содержимого файла и открытых ключей и заканчивая шифрованным содержимым и шифрованными ключами

$DATA

Атрибут

Рис. 11.12. Процесс дешифрования, начиная с шифрованного содержимого, ключей и пароля и заканчивая дешифрованным содержимым

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

присутствует небольшой дефект: система создает временный файл с именем EFS0.TMP, содержащий текстовую версию шифруемого файла. Завершив шифрование исходного файла, ОС удаляет временный файл, но его содержимое не стирается. Таким образом, текстовая версия файла продолжает существовать, и его можно восстановить, пока запись MFT не будет выделена другому файлу. Копии незашифрованных данных также могут найтись в пространстве подкачки. Также сообщалось, что в случае нарушения прав администратора, контроллера домена или другой учетной записи, настроенной как агент восстановления, появляется возможность дешифрования любых файлов, поскольку такие учетные записи обладают доступом ко всем файлам [Microsoft, 1999].

<< | >>
Источник: Кэрриэ Б.. Криминалистический анализ файловых систем. 2007

Еще по теме Другие концепции атрибутов:

  1. Атрибуты и структуры данных индексов
  2. Расширенные атрибуты
  3. Стандартные атрибуты файлов
  4. Атрибуты индексов NTFS
  5. Атрибуты записей MFT
  6. Расширенные атрибуты UFS2
  7. 1.2.2. Отбор и найм как атрибуты рыночного хозяйствования
  8. Тема 6.1. Политический плюрализм и многопартийность как неотъемлемые атрибуты демократии
  9. 3. ЮРИДИЧЕСКОЕ СОДЕРЖАНИЕ КОНЦЕПЦИИ ГОСПОДСТВА ПРАВА: ЦЕЛИ, СТРУКТУРНОЕ НАПОЛНЕНИЕ, НАПРАВЛЕННОСТЬ РЕГУЛЯТИВНОГО ВОЗДЕЙСТВИЯ, СВЯЗЬ С ДРУГИМИ СОПОСТАВИМЫМИ ПО СВОЕЙ СУЩНОСТИ КОНЦЕПЦИЯМИ
  10. е) Другие качества