Информационная безопасность

         

Advanced ARJ Password Recovery


Эта программа (Advanced ARJ Password Recovery или, короче, AAPR) может быть использована для нахождения утерянных паролей ARJ архивов. Для извлечения паролей используются как метод "грубой силы", так метод "атаки по словарю".

Рисунок 7 Окно программы Advanced ARJ Password Recovery

Особенности программы:

Скорость перебора около двух миллионов паролей в секунду при использовании процессоров Pentium II и Pentium III

Поддержка всех методов сжатия

Поддержка самораспаковывающихся архивов

Возможна настройка параметров перебора паролей: вы можете указать длину, кодовую страницу или набор символов и некоторые другие параметры

Поддержка не английских букв при использовании метода "грубой силы"

"Атака при помощи словаря" с возможностью изменения слов

Если длина пароля более 10 символов, то не возможен подбор пароля за достаточное время.



Advanced RAR Password Recovery


Эта программа (Advanced RAR Password Recovery или ARPR) может быть использована для восстановления утерянных паролей RAR архивов. (Рис 9)

Рис.9 Окно программы Advanced RAR Password recovery

В настоящее время, нет известного метода извлечения пароля сжатого файла, так что единственные доступные методы - "brute force" ("метод посимвольного перебора"), взлом на основе словаря и нападения known-plaintext attacks (на основе известного текста). Вот - краткий список преимуществ ARPR:

Программа может работать с архивом, содержащим только один зашифрованный файл

Поддерживается самораспаковывающийся архив

Программа настраиваема: вы можете установить длину пароля (или диапазон длины), набор используемых символов и несколько других вариантов



Вы можете выбрать произвольный набор символов для атаки "brute force" (поддерживаются неанглийские символы) Доступно нападение на основе словаря

Доступна атака ""brute force with mask"

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

Программа может работать в фоновом режиме.

Известные ошибки и ограничения

Если архив содержит только один зашифрованный файл, и это сохранено без сжатия, только с шифрованием - скорость выполнения может быть ниже ожидаемой в связи с тем, что требуется расшифровка целого файла. Для архива RAR, созданного в версиях 2.9 и 3.x, скорость восстановления чрезвычайно низка (из-за очень сильного шифрования).



Advanced ZIP Password Recovery


Эта программа (Advanced ZIP Password Recovery или AZPR) может быть использована для восстановления утерянных паролей ZIP архивов.

Рисунок 8 Окно программы Advanced ZIP Password Recovery

Краткая характеристика возможностей AZPR:

Интуитивно понятный интерфейс;

Скорость перебора более двух миллионов паролей в секунду при использовании процессоров Pentium II и Pentium III;

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

Поддерживает все методы компрессии файлов;

Поддерживает самораспаковывающиеся архивы;

Возможна настройка параметров перебора паролей: вы можете указать длину, кодовую страницу или набор символов и некоторые другие параметры;

Поддержка не английских букв при использовании метода "грубой силы";

"Атака при помощи словаря" с возможностью изменения слов;

Максимальная длина пароля не ограничена.

Если длина пароля более 10 символов и пароль хорошо подобран, то он не может быть раскрыт за ограниченное время.



База данных учетных записей пользователей


Одним из основных компонентов системы безопасности Windows NT/2000/XP является диспетчер учетных записей пользователей. Он обеспечивает взаимодействие других компонентов системы безопасности, приложений и служб Windows NT/2000/XP с базой данных учетных записей пользователей (Security Account Management Database, сокращенно SAM). Эта база обязательно имеется на каждом компьютере с Windows NT/2000/XP. В ней хранится вся информация, используемая для аутентификации пользователей Windows NT/2000/XP при интерактивном входе в систему и при удаленном доступе к ней по компьютерной сети.

База данных SAM представляет собой один из разделов (hive) системного реестра (registry) Windows NT/2000/XP. Этот раздел принадлежит ветви (subtree) HKEY_LOCAL_MACHINE и называется SAM.

Он располагается в каталоге \winnt_root\System32\Config (winnt_root - условное обозначение каталога с системными файлами Windows NT/2000/XP) в отдельном файле, который тоже называется SAM. Основная часть информации в базе данных SAM хранится в двоичном виде. Доступ к ней обычно осуществляется с помощью диспетчера учетных записей. Изменять записи, хранящиеся в базе данных SAM, при помощи программ, которые напрямую редактируют реестр Windows NT/2000/ХР(REGEDT или REGEDT32), не рекомендуется. По умолчанию этого и нельзя делать, т. к. доступ к базе данных SAM запрещен для всех без исключения категорий пользователей Windows NT/2000/XP.



Чем нас пытаются взломать (Краткий обзор программ-взломщиков паролей)


,

Опубликовано:

Компьютер, к которому кто-то получил
физический доступ, больше не ваш
компьютер.



Что такое парольный взломщик?


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



Что такое - PWL файл?


Windows 95/98 сохраняет пароль в PWL файле. PWL файлы могут быть найдены в каталоге Windows. Их имена обычно сохраняются как USERNAME.PWL. PWL файл зашифрован и не просто из него извлечь пароли. Первый алгоритм шифрования версии Windows'95 был создан таким, который позволял создать программы для расшифровки PWL файлов. Однако в версии OSR2 этот недостаток был устранен.



DeBat


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

Данную программу можно скачать с сайта разработчика

Как видите, в данном случае не спасает и длина пароля.



Хранение паролей пользователей


Именно в учетных записях базы данных SAM находится информация о пользовательских именах и паролях, которая необходима для идентификации и аутентификации пользователей при их интерактивном входе в систему. Как и в любой другой современной многопользовательской ОС, эта информация хранится в зашифрованном виде. В базе данных SAM каждый пароль пользователя обычно бывает представлен в виде двух 16-байтовых последовательностей, полученных разными методами (Windows NT/2000/ХР и LAN).

В методе Windows NT/2000/ХР строка символов пользовательского пароля хешируется с помощью функции MD4. (В алгоритме хеширования MD4 исходная битовая последовательность дополняется так, чтобы ее длина в битах плюс 64 нацело делилась на 512. Затем к ней приписывается 64-битовое значение ее первоначальной длины. Полученная таким образом новая последовательность обрабатывается блоками по 512 бит с помощью специальной итерационной процедуры. В результате на выходе MD4 получается так называемая "выжимка" исходной последовательности, имеющая длину 128 бит. Алгоритм MD4 оптимизирован для 32-разрядных аппаратных платформ и работает довольно быстро).

В итоге из введенного пользователем символьного пароля получается 16-байтовая последовательность - хешированный пароль Windows NT/2000/ХР. Эта последовательность затем шифруется по DES-алгоритму, и результат шифрования сохраняется в базе данных SAM. При этом в качестве ключа используется так называемый относительный идентификатор пользователя (Relative Identifier, сокращенно RID), который представляет собой автоматически увеличивающийся порядковый номер учетной записи данного пользователя в базе данных SAM. Для совместимости с другим программным обеспечением корпорации Microsoft (Windows for Workgroups, Windows 95/98 и Lan Manager) в базе данных SAM хранится также информация о пароле пользователя в стандарте Lan Manager.

Для его формирования все буквенные символы исходной строки пользовательского пароля приводятся к верхнему регистру, и если пароль содержит меньше 14 символов, то он дополняется нулями. Из каждой 7-байтовой половины преобразованного таким образом пароля пользователя (длина пароля в Windows NT/2000/ХР ограничена 14 символами, ограничение накладывается диспетчером учетных записей), отдельно формируется ключ для шифрования некоторой фиксированной 8-байтовой последовательности по DES-алгоритму. DES-алгоритм является одним из самых распространенных алгоритмов шифрования данных. В США он имеет статус федерального стандарта. Это блочный алгоритм шифрования с симметричным ключом длиной 64 бита, из которых только 56 непосредственно используются при шифровании, а остальные 8 предназначены для контроля четности байтов ключа. При этом в качестве ключа используется PID (персональный идентификатор) пользователя).

Полученные в результате две 8-байтовые половины хешированного пароля Lan Manager еще раз шифруются по DES-алгоритму и помещаются в базу данных SAM.



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


Информация о паролях, занесенная в базу данных SAM, служит для аутентификации пользователей Windows NT/2000. При интерактивном или сетевом входе в систему введенный пароль сначала хешируется и шифруется, а затем сравнивается с 16-байтовой последовательностью, записанной в базе данных SAM. Если эти величины совпадают, пользователю разрешается вход в систему. Обычно в базе данных SAM хранятся в зашифрованном виде оба хешированных пароля. Однако в некоторых случаях ОС вычисляет только один из них. Например, если пользователь домена Windows NT/2000/2003 изменит свой пароль, работая на компьютере с Windows for Workgroups, то в его учетной записи останется только пароль Lan Manager. А если пользовательский пароль содержит более 14 символов или они не входят в так называемый набор поставщика оборудования (original equipment manufacturer, сокращенно OEM), то в базу данных SAM будет занесен только пароль Windows NT/2000/ХР.



Исследование словаря


Люди используют некоторые слова в качестве паролей чаще других. Частотные словари перечисляют наиболее популярные слова. Хорошие словари содержат сотни тысячи слов. Хороший частотный словарь содержит названия корпораций, заголовков кинофильма, торговые марки и т.д. Взлом с помощью словаря обычно происходит очень быстро, даже если используется огромный словарь. В пакет PwlTool не включаются словари. Можно использовать относительно малые словари (~80 КБ) словарь от или огромный (~9 МБ) В версии v6.0 имеется "гибридное исследование". Этот метод полезен для взлома паролей типа john43. Когда переключатель "гибридное исследование" включен, RePwl будет пробовать все варианты подобно wordXXX, где слово - слово от словаря, и XXX - суффикс, сформированный согласно параметрам настройки решения "в лоб".

Важно! Удостоверитесь, что все слова в словаре находятся в верхнем регистре.



Как работает парольный взломщик?


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

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

(Большой набор словарей можно найти на сайте )

К каждому слову из словаря парольный взломщик применяет одно или несколько правил, в соответствии с которыми оно видоизменяется и порождает дополнительное множество опробуемых паролей:

производится попеременное изменение буквенного регистра, в котором набрано слово;

порядок следования букв в слове меняется на обратный;

в начало и в конец каждого слова приписывается цифра 1;

некоторые буквы изменяются на близкие по начертанию цифры.

В результате, например, из слова password получается pa55w0rd).

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

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

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



Оценка надежности PWL файлов.


Система защиты паролей в OSR2 сделана профессионально и достоверна в терминах криптографии. Однако, несмотря на это, содержит несколько серьезных недостатков, а именно:

все пароли преобразованы к верхнему регистру, это значительно уменьшает количество возможных паролей;

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

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



Outlook Password Viewer.exe


Так как данная программа выполнена тем же автором, то она тоже не требует инсталляции и работает практически мгновенно. Рабочее окно программы приведено на рис. 12

Рис.11 Рабочее окно Outlook Password Viewer



Пароли MS Access


Пароли хранятся в заголовке файла. Заголовок зашифрован по RC4, но ключ шифрования имеет длину 32 бита и хранится в одной из системных DLL. Зная этот ключ, можно найти любой пароль на базу MS Access.



Последовательный перебор.


Выберите длину пароля и набор символов (A-Z по умолчанию)



The Bat! Password Viewer


Не требует инсталляции. Работает практически мгновенно. Рабочее окно программы приведено на рис.11

Рис.11 Рабочее окно The Bat! Password Viewer



Усиленная "атака в лоб"


Атака "в лоб" (поиск всех возможных паролей) не подходит для длинных паролей, потому что требуется слишком много времени. Главным образом имеются комбинации подобно jkqmzwd, которые являются полностью бессмысленными среди миллиардов и квинтильонов обыскиваемых паролей. Усиленная "атака в лоб"- оптимизированный алгоритм исследования, который только пробует 'разумные' пароли. В результате время взлома сокращается.

Но это также имеет некоторые недостатки:

Текущая версия поддерживает только английский язык.

Усиленная "атака в лоб" не восстанавливает пароли, которые содержат цифры или символы. Например, пароль 'soft4you' не восстанавливается с применением данного алгоритма.

Некоторые слова трудны для такого алгоритма атаки. Вы должны определить уровень как целое число в диапазоне 1 ... 26.Разумные значения для данного типа атаки - 9 .. 16 (значение по умолчанию - 13).

Для получения дополнительной информации посетите: - общая информация относительно паролей.

В результате проведенного анализа установлено максимальное время взлома паролей. Скорость перебора паролей 106000 паролей в секунду (Pentium III/550).

Общая оценка времени, необходимого для взлома методом "грубой силы":

Длина пароля Длина набора 26 (только буквы) 36 (буквы и цифры) 70 (все печатаемые символы) Русские буквы
4 Немедленно Немедленно 3 минуты Немедленно ы
5 1 минута 48 секунд 9 минут 3 часа 5 минут
6 50 минут 5 часов 48 минут 10 дней 17 часов 2 часа 53 минуты
7 22 часа 8 дней 17 часов 2 года 3 дня 26 часов
8 24 дня 314 дней 17 часов 138 лет 123 дня 12 часов
9 1 год 248 дней 30 лет 9363 года 10 лет

Подсчет времени взлома осуществляется самой программой PwlTool



Версии Windows


Первоначальная версия Windows 95 (также как Windows 3.11) содержала грубую ошибку, которая допускала простое декодирование PWL файлов. В OSR2 версии эта погрешность была исправлена, хотя проблемы защиты сохраняются. Windows 98 не отличается от OSR2 по смыслу защиты.

Существуют два формата PWL файлов. "Старый", поддерживаемый Windows 3.11 и Windows95 и "новый", применяемый в Windows95 OSR2 и Windows 98.

Старые PWL файлы значительно меньше защищены, чем новые. Обычно существует возможность прочитать сохраненные пароли немедленно, даже если вы не знаете пароль входа в систему. Известная программа, glide.exe, показывает все пароли, сохраненные в старом PWL файле. Однако она работает не всегда корректно, потому что использует неправильный алгоритм. PwlTool снабжен подобной функцией (также названной glide).



Возможные атаки на базу данных SAM


Обычно основным объектом атаки являются административные полномочия. Их можно получить, узнав в хешированном или символьном виде пароль администратора системы, который хранится в базе данных SAM. Поэтому именно на базу данных SAM бывает направлен главный удар взломщика парольной защиты Windows NT/2000/ХР.

По умолчанию в Windows NT/2000/ХР доступ к файлу \winnt_root\System32\Config\SAM заблокирован для всех без исключения ее пользователей. Тем не менее, с помощью программы NTBACKUP любой обладатель права на резервное копирование файлов и каталогов Windows NT/2000/ХР может перенести этот файл с жесткого диска на магнитную ленту. Резервную копию реестра можно также создать утилитой REGBAK из состава Windows NT Resource Kit. Кроме того, несомненный интерес для любого взломщика представляют резервная копия файла SAM (SAM.SAV) в каталоге \winnt_root\System32\Config и сжатая архивная копия SAM (файл SAM._) в каталоге \winnt_root\Repair.

Также указанный файл можно получить, загрузившись с дискеты или CD-ROM и воспользовавшись программой NTFSDOS или аналогичной. В случае наличия загрузки двух операционных систем (например, Windows 98 и Windows 2000) процесс копирования файла SAM существенно упрощается.

При наличии физической копии файла SAM извлечь хранимую в нем информацию не представляет большого труда. Загрузив файл SAM в реестр любого другого компьютера с Windows NT/2000/ХР (например, с помощью команды Load Hive программы REGEDT32), можно детально изучить учетные записи пользователей, чтобы определить их значения PID и шифрованные варианты хешированных паролей. Зная PID пользователя и имея зашифрованную версию его хешированного пароля, компьютерный взломщик может попытаться расшифровать этот пароль, чтобы использовать его для получения сетевого доступа к другому компьютеру. Однако для интерактивного входа в систему одного лишь знания хешированного пароля недостаточно. Необходимо получить его символьное представление.

Для восстановления пользовательских паролей ОС Windows NT в символьном виде существуют специальные парольные взломщики.
Они выполняют как прямой подбор паролей, так и поиск по словарю, а также используют комбинированный метод взлома парольной защиты, когда в качестве словаря задействуется файл с заранее вычисленными хешированными паролями, соответствующими символьным последовательностям, которые часто применяются в качестве паролей пользователей операционных систем. Одной из самых известных программ взлома паролей Windows NT/2000/ХР является LC4. На рисунке 1 приведено основное рабочее окно этой программы, предназначенной для работы на компьютерах с ОС Windows 95/98, Windows NT/2000/XP.



Однако следует понимать, что программой взлома можно воспользоваться так же и для проверки надежности ваших паролей. Для этого необходимо:



выбрать пункт меню Вычисление PwDump и Sniff в окне Параметры.

Задается имя пользователя. (Имя пользователя Windows NT/2000/ХР может содержать до 20 символов верхнего или нижнего регистра, за исключением следующих: " / \ [ ] : ; | = , + * ? < > . и пробелов.)

Задается пароль, который может содержать до 14 символов.

После задания имени и пароля следует нажать на кнопку вычислить. Результат можно сохранить в виде PwDump- или Sniff-файла.

Также существует задание параметров атаки по словарю:



Обычное использование словаря;

Записанные дважды слова;

Обратный порядок символов слов;

Усеченные до заданного количества символов слова;

Слова без гласных, за исключением заглавной;

Транслитерация русских букв латинскими по заданной таблице транслитерации;

Замена раскладки локализации латинской раскладкой клавиатуры;

Замена латинской раскладки клавиатуры раскладкой локализации;

А также множество других параметров взлома.

Другим примером взломщика паролей является программа SAMInside ()

Программа SAMInside выполняет следующие функции:



Получение информации о пользователях из SAM-файлов Windows NT/2000/XP.

Подбор паролей пользователей из SAM-файлов.

Подбор паролей пользователей из SAM-файлов операционных систем Windows'2000/XP, зашифрованных системным ключом Syskey.

SAMInside является первой в мире программой, которая ломает защиту ключом Syskey.

Дополнительно включает в себя следующие возможности:



Подбор паролей не только к LMHash, но и к NTHash.

Работа с SAM-файлом, который используется в данный момент системой.

Импорт хэшей из текстовых файлов, полученных в результате работы других программ (L0phtCrack, pwdump и др.).

Генерация LMHash/NTHash по определенному паролю.

Проверка введенного пароля на всех пользователях.

Перебор по словарю.

Отображение найденных паролей с верным регистром букв.

Более удобная работа с хэшами пользователей.


Проблему безопасности компьютерных сетей надуманной


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

рассмотрение принципов работы парольных взломщиков различных программных продуктов;
проверка уровня защиты операционных систем Windows 9x/NT/2000;
проведение попыток взлома паролей пользователей операционных систем;
выработка рекомендаций по повышению устойчивости парольной защиты операционных систем;
применение парольных взломщиков для оценки уровня защищенности компьютеров и компьютерных сетей на базе вышеуказанных операционных систем.

Взлом паролей архивов


Многие пользователи архивируют свои данные с помощью популярных архиваторов ARJ, ZIP, RAR. Затем этим архивам задается пароль, а их содержимое шифруется. Но подбор паролей к архивам не ARJ, ZIP, RAR не составляет особого труда. Достаточно воспользоваться программами Advanced ARJ Password Recovery, Advanced ZIP Password Recovery, Advanced RAR Password Recovery. Все они используют следующие виды взлома:

Brute-Forсe ("атака в лоб") последовательный перебор всевозможных комбинаций символов;

Метод последовательного перебора (если известна хотя бы часть пароля);

Атака по словарю;

Гибридный метод (атака по словарю + метод последовательного перебора).

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



Взлом паролей документов MS Office.


При использовании утилиты Advanced Office XP Password Recovery возможно восстановление паролей всех документов. Несмотря на то, что MS Word, шифруя документ, использует довольно сложный алгоритм (пароль не сохраняется внутри файла), он может быть вскрыт с использованием метода "грубой силы" или атаки по словарю. Средняя скорость при использовании процессора Pentium II составляет 80-100 тысяч паролей в секунду.



Взлом паролей ОС Windows 9x


Однако не стоит забывать, что существует гораздо более простой способ взлома сетевых паролей. Так как в большинстве организаций сегодня ОС клиентской машины является Windows 95/98, то соответственно, гораздо проще организовать взлом парольной защиты данной ОС, ведь пароль в таком файле хранится только в верхнем регистре (большими буквами), зная это гораздо удобнее и проще затем подобрать необходимый пароль сети.

Для взлома паролей Windows 95/98 существует большое количество программ, но остановимся на самой популярной из них PwlTool 6.0, на примере которой производились исследования.

На рисунке 6 приведено основное рабочее окно этой программы, предназначенной для работы на компьютерах с ОС Windows 95/98, Windows NT/2000.

PwlTool - набор инструментальных средств восстановления пароля. Основная программа - RePwl. Эта программа позволяет восстановить иногда забытый или потерянный пароль входа в систему для Windows 3.11, Windows 95 (первоначальная версия и OSR2) и Windows 98. Это также дает возможность просмотреть пароли, сохраненные в PWL файле.



Взлом паролей учетных записей электронной почты


Для обзора взломщиков паролей учетных записей воспользуемся двумя программами. Так как наиболее популярными клиентами почты являются The Bat! и Microsoft Outlook Express, то именно учетные записи этих клиентов мы и будем рассматривать, хотя существуют программы взлома паролей и под более "экзотические" клиенты.



Взлом шифрованной файловой системы (Encrypted File System)


Для взлома Encrypted File System (EFS) может быть использовано программное обеспечение Advanced EFS Data Recovery производства компании "Элкомсофт" (Российская Федерация). Демонстрационную версию данного программного обеспечения можно получить по адресу

Стартовое окно программы - Рис.5

Рис5. Окно программы Advanced EFS Data Recovery

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

Для файлов, зашифрованных в операционной системе Windows 2000, если Ключ Базы данных Учетной записи (SYSKEY) сохранена на гибком диске, или если опция "Password Startup" была установлена, Вы должны знать один из следующих паролей, чтобы быть суметь расшифровать файлы:

пароль запуска или гибкий диск запуска

пароль пользователя, который зашифровал файлы

пароль Агента Восстановления (если - возможно)

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



Прочитав все вышеизложенное, можно прийти


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

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

Защита документов MS Excel


В MS Excel используются те же технологии защиты, что и в MS Word. Отличие составляют только пароли на книги/листы. Хеши паролей хранятся в документе. Самое парадоксальное, что длина хеша всего 16 бит. Следовательно для каждого хеша существует множество подходящих паролей. Например можно защитить лист паролем "test" и попытаться его открыть при помощи пароля "zzyw".

Отличие пароля защиты книги от пароля листа состоит в том, что документ шифруется.



Защита Windows NT/2000/ХР от парольных взломщиков


Вывод однозначен: одна из главных задач системного администратора Windows NT/2000/ХР состоит в защите информации, которая хранится в базе данных SAM, от несанкционированного доступа. С этой целью ему необходимо:

ограничить физический доступ к компьютерам сети и, прежде всего, - к контроллерам доменов;

установить пароли BIOS на включение компьютеров и на изменение их настроек BIOS;

рекомендуется отключить загрузку компьютеров с гибких и компакт-дисков;

для обеспечения контроля доступа к файлам и папкам Windows NT/2000/ХР системный раздел жесткого диска должен иметь формат NTFS;

каталог \winnt_root\repair средствами ОС необходимо закрыть для доступа всех пользователей, включая администраторов, и разрешать к ней доступ только во время работы утилиты RDISK, которая создает в этом каталоге архивные копии системного реестра Windows NT/2000;

следить за тем, где и как хранятся дискеты аварийного восстановления (Emergency Repair Disks) и архивные копии на магнитных лентах, если на последних присутствует дубликат системного реестра Windows NT/2000/ХР.

Дополнительно можно порекомендовать следующее:

Если компьютер с Windows NT/2000/ХР входит в домен, то по умолчанию имена и хешированные пароли последних десяти пользователей, регистрировавшихся на этом компьютере, сохраняются (кэшируются) в его локальном системном реестре (в разделе SECURITY\Policy\Secrets раздела HKEY_LOCAL_MACHINE). Чтобы отменить кэширование паролей на компьютерах домена, нужно с помощью утилиты REGEDT32 в раздел Microsoft\WindowsNT\CurrentVersion\Winlogon раздела HKEY_LOCAL_MACHINE добавить параметр CashedLogonsCount, установив его значение равным нулю, а тип - REG_SZ.

Для защиты базы данных SAM можно применить утилиту SYSKEY. Эта утилита позволяет включить режим дополнительного шифрования информации о паролях, которая хранится в базе данных SAM. Уникальный 128-битовый ключ для дополнительного шифрования паролей (так называемый ключ шифрования паролей - Password Encryption Key, сокращенно - PEK) автоматически сохраняется в системном реестре для дальнейшего использования.




Рисунок 3 Диалоговое окно утилиты SYSKEY для задания способа хранения системного ключа.

Перед помещением в системный реестр ключ PEK шифруется при помощи другого 128-битового ключа, который называется системным ключом (System Key) и может храниться либо в системном реестре, либо в файле с именем STARTUP.KEY в корневом каталоге на отдельной гибкой дискете.

Можно не сохранять системный ключ на магнитном носителе (рисунок 3), и тогда каждый раз при запуске ОС он будет вычисляться с помощью алгоритма MD5 (Алгоритм хеширования MD5 очень похож на MD4 и по способу дополнения исходной битовой последовательности, и по методу ее обработки, и по размеру получаемой "выжимки" (те же 128 бит). Однако каждый 512-битовый блок подвергается не трем, как в MD4, а четырем циклам преобразований, и поэтому алгоритм MD5 работает несколько медленнее, чем MD4) на основе пароля, набираемого на клавиатуре в диалоговом окне утилиты SYSKEY. Последние два способа хранения системного ключа обеспечивают максимальную защиту паролей в базе данных SAM. Однако они приводят к невозможности автоматической перезагрузки ОС, поскольку для завершения процесса перезагрузки потребуется либо вставить дискету с системным ключом и подтвердить ее наличие в дисководе путем нажатия кнопки OK в появившемся диалоговом окне, либо вручную ввести с клавиатуры системный ключ.

Для повышения стойкости паролей пользователей операционной системы Windows NT/2000/ХР к взлому рекомендуется с помощью утилиты Диспетчер пользователей (User Manager) установить длину пользовательских паролей не менее 8 символов и активизировать режим устаревания паролей, чтобы пользователи периодически их обновляли (рисунок 4). Чем выше вероятность атак на парольную защиту Windows NT/2000/ХР, тем короче должен быть срок такого устаревания. А чтобы пользователи не вводили свои старые пароли повторно, необходимо включить режим хранения некоторого числа ранее использовавшихся паролей.



Рисунок 4 Задание правил работы с паролями с помощью Диспетчера пользователей.



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

В ходе исследования устойчивости паролей к взлому использовалось программное обеспечение для взлома Windows NT/2000/ХР SAMInside. Исследование производилось на компьютере AMD 2400 XP+. Объем применяемого словаря составил 9 мегабайт.

Выяснено следующее:



Скорость перебора паролей составляет 5310986 паролей/сек

Если пароль состоит из стандартных слов английского (русского) языка, то время взлома составляет до 2 минут (в зависимости от величины словаря).

При применении паролей длиной 8 символов и составленных из цифр время взлома составляет 18 секунд.

При применении паролей длиной 8 символов и составленных из цифр и букв английского алфавита время взлома составляет до 6 суток.

При применении паролей длиной не менее 8 символов и составленных из букв, цифр и спецсимволов время соответственно увеличивается до 61 суток.


Данные, управляемые правами доступа


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

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



Доверительная открытая платформа


Пол Инглэнд, Батлер Лэмпсон, Джон Манферделли, Маркус Пейнадо, Брайан Уиллман

07.08.2003

Предлагаемая Microsoft схема Next-Generation Secure Computing Base расширяет возможности персональных компьютеров, оснащая их механизмами, обеспечивающими программное обеспечение средствами защиты от операционной системы, от драйверов устройств, от BIOS и от других программных средств, выполняемых на данной машине.

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

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

Назовем причины, под воздействием которых пользователи открытых систем подвергаются тем или иным опасностям.

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

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



Функционирование с аутентификацией


Традиционные системы контроля доступа защищают данные от несанкционированного доступа с помощью механизмов аутентификации, таких, как пароли, биометрические средства или смарт-карты. По поступлении каждого запроса на допуск запускается системный компонент, страж (guard), являющийся частью доверительной вычислительной платформы (trusted computing base). Страж предоставляет доступ или отказывает в нем, проверяя запросы на доступ по таким критериям, как пользователь, запрос и политика контроля доступа, применяемая данной системой [1]. Решения о предоставлении доступа отчасти зависят от того, какая программа направляет запрос. К примеру, пользователь может санкционировать доступ к содержащим финансовую информацию файлам лишь для нескольких программ.

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



Инициализация


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

В данном процессе загрузки участвует и сопроцессор безопасности, необходимый для реализации режима функционирования с проверкой прав доступа; он может определять идентичность запущенного монитора или получать о ней надежную информацию. Кроме того, он реализует во встроенных программах примитивы хранения запечатанных данных и засвидетельствования. В качестве сопроцессора безопасности можно будет использовать Trusted Platform Module [10], который разрабатывается в рамках альянса Trusted Computing Platform Alliance.

Сопроцессор предоставляет также и другие услуги, как связанные, так и не связанные с режимом проверки прав доступа. Так, он оснащен генератором случайных чисел, а также аппаратно реализованными монотонными счетчиками.



Использование программных идентификаторов


Программные идентификаторы используются, в частности механизмами хранилищ запечатанных данных (sealed storage) и засвидетельствования (attestation).

Хранилище запечатанных данных. Реализованный с помощью средств криптографии механизм контроля доступа, в котором предполагается, что запечатывающий компонент (sealer) указывает, какие программы (определяемые по идентификатору кода) могут прочитать, или «распечатывать» данный секрет. Данный метод обеспечивает конфиденциальность и целостность хранимых данных. В принципе примитивы метода могут быть реализованы на любом системном уровне. К примеру, его можно реализовать аппаратно в форме службы для операционной системы, либо в операционной системе в форме службы для приложений.

На рис. 1 представлены примитивы Seal и Unseal. Программы могут вызывать примитив Seal и называть свой программный идентификатор (так происходит в большинстве случаев) или программный идентификатор какой-либо другой программы как объекта, имеющего доступ к данной информации. Если примитив Unseal вызывается программой, идентификатор которой «запечатан», он возвращает «запечатанный» секрет и программный идентификатор запечатывающего компонента (sealer). Если обратившаяся с запросом программа имеет другой идентификатор, Unseal возвращает ошибку.

Seal предназначен для локального хранения секретных данных. «Запечатанные» секреты недоступны для других компьютеров. Существует достаточно широкий диапазон возможностей реализации примитивов Seal и Unseal [6]. В общем случае уровень реализации — будь то аппаратный уровень или операционная система — должен иметь доступ к криптографическому ключу K.

В демонстрационной реализации Seal создает структуру данных, содержащую секретную строку, предоставленную программой, которая запустила механизм, идентификатор программы, для которой должны быть открыты запечатанные данные, а также идентификатор программы, вызвавшей Seal, — чтобы распечатывающий элемент мог идентифицировать источник данных [7]. Для шифрования этой структуры данных и защиты ее целостности в механизме Seal используется примитив шифрования с аутентификацией (authenticated encryption primitive), который может сочетать шифрование и аутентификацию сообщения.


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

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

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

Засвидетельствование. Хранение запечатанных данных есть ограниченная форма симметричного шифрования, при использовании которой программы обеспечивают длительное хранение долгосрочных секретов. Засвидетельствование же — это вариант шифрования с открытым ключом, обеспечивающий программам возможность предъявления удаленным контрагентам своих прав доступа через предоставление своих программных идентификаторов [8].

Для реализации механизма засвидетельствования платформа должна располагать сертифицированной парой открытый/секретный ключ. Рассмотрим вариант подписи, который мы называем Quote. В ходе операции Quote осуществляется конкатенация строки, предоставленной программой, которая хочет засвидетельствовать свои права доступа, и программного идентификатора данной программы; затем созданная таким образом структура данных подписывается секретным ключом для конфиденциальных данных, а полученный результат возвращается вызывающему объекту.Запрашивающая программа может направить эту подписанную структуру данных удаленному контрагенту. Как правило, к таким сообщениям прилагаются сертификаты платформы, обеспечивающие возможность использования ключа данной платформы.

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


Конфиденциальность


Режим функционирования с аутентификацией содержит элементы, на базе которых можно создавать гораздо более мощные средства защиты персональных и секретных данных на персональных компьютерах. Так, если в программе для торговли акциями маркер аутентификации (authentication token), санкционирующий торговые операции с акциями, хранится с использованием механизма хранения запечатанных данных, вирусы и другие неизвестные приложения не смогут получить доступ к данным и использовать их либо направить их некоему удаленному получателю. Другой пример: если даже средства безопасности машины неверно настроены — скажем, в нарушение требований безопасности файловая система открыта для совместного использования — при копировании запечатанных данных на другую машину они теряют всякий смысл. Наконец, у локального приложения, зараженного «троянским конем», изменится программный идентификатор, в результате чего он не сможет распечатать секретные данные и, соответственно, использовать их во вред владельцу этих данных.

Короче говоря, неизвестным или ненадежным программам будет очень трудно взломать персональные данные, защищенные с помощью упомянутых механизмов.



Модели угроз


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

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

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

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

В худшем случае противник может получить в свое распоряжение все конфиденциальные данные, которые хранились на взломанной машине (запечатанные данные), а также секретный ключ засвидетельствования. Завладение последним позволяет противнику выдавать себя за легитимную систему при взаимодействии с удаленными компьютерами. Если раскрытая информация будет широко использоваться (к примеру, если секретный ключ засвидетельствования будет размещен в Internet), эту информацию можно установить и отозвать ключ засвидетельствования.
В противном случае для выявления нужно будет задействовать какой-нибудь дополнительный механизм, например, проверки аппаратных средств корпоративной сети ответственным за безопасность служащим.

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

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

Прикладные программы систем NGSCB, предоставляющие конфиденциальные данные машинам, которые расположены в потенциально доступной для представителей недружественных организаций физической среде, должны учитывать возможность взлома некоторых машин и попадания конфиденциальных данных в чужие руки. Вытекающие из этого последствия для таких приложений зависят от множества факторов, которые определяются спецификой самого приложения. Так, если речь идет о предназначенных для широкого распространения и защищенных законом об авторских правах развлекательных приложениях, их дистрибьютор должен исходить из того, что какая-то часть получателей работает на взломанных машинах, и что эти люди могут обойти систему защиты соответствующих копий и заняться их распространением в собственных интересах. Коммерческие последствия этого зависят, помимо прочего, от эффективности избранного канала распространения [11].

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


Задача NGSCB состоит в том, чтобы сохранить, обеспечить безопасность и открытость, удовлетворяя в то же время требования коммерчески успешных массовых операционных систем.

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

Литература

B. Lampson, "Protection", Proc. 5th Princeton Symp. Information Sciences and Systems, Princeton Univ., Mar. 1971; reprinted in ACM Operating Systems Review, 1974, Jan. J. McLean, "Security Models", Encyclopedia of Software Engineering, 3rd ed., J. Marciniak, ed., Wiley Press, 1994. E. Meijer, J. Gough, "Technical Overview of the Common Language Runtime", tech. report, Microsoft, 2001; http://research.microsoft.com/~emeijer/Papers/CLR.pdf. P. Johns, "Signing and Marking ActiveX Controls", Developer Network News, 1996. 15 Oct. D.S. Wallach et al., "Extensible Security Architectures for Java", tech. report 546-97, Dept. of Computer Science, Princeton Univ., 1997. Apr. P. England, M. Peinado, "Authenticated Operation of Open Computing Devices", Proc. 7th Australasian Conf. Information Security and Privacy (ACISP), Springer-Verlag, 2002. M. Bellare, C. Namprempre, "Authenticated Encryption: Relations among Notions and Analysis of the Generic Composition Paradigm", Advances in Cryptology, Asiacrypt 00, Springer-Verlag, 2000. B. Lampson et al., "Authentication in Distributed Systems: Theory and Practice", ACM Trans. Computer Systems, 1992. Nov. R. Goldberg, "Survey of Virtual Machine Research", Computer, 1974. June Trusted Computing Platform Alliance, TCPA Main Specification Version 1.1, 2001. P. Biddle et al., "The Darknet and the Future of Content Protection", Proc. 2002 ACM Workshop on Digital Rights Management, Springer-Verlag, 2003.

Пол Инглэнд (pengland@microsoft.com) — специалист по архитектуре программных средств подразделения Microsoft Security Business Unit. Батлер Лэмпсон (blampson@microsoft.com) — заслуженный инженер подразделения Microsoft Research. Джон Манферделли (jmanfer@microsoft.com) — генеральный менеджер подразделения Microsoft Windows Trusted Platform and Infrastructure. Маркус Пейнадо (marcuspe@microsoft.com) — специалист в области архитектуры. Брайан Уиллман (bryanwi@microsoft.com) — специалист в области программной архитектуры.

Paul England, Butler Lampson, John Manferdelli, Marcus Peinado, Bryan Willman, A Trusted Open Platform. IEEE Computer, July 2003. IEEE Computer Society, 2003, All rights reserved. Reprinted with permission.


Модернизация


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

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

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

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



Надежные маршруты


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



Next-Generation Secure Computing Base


Цель разработанной корпорацией Microsoft схемы Next-Generation Secure Computing Base (NGSCB) состоит в том, чтобы обеспечить надежные средства контроля доступа при сохранении открытости архитектуры персональных компьютеров. В отличие от закрытых систем NGSCB дает возможность использовать любое программное обеспечение, однако при этом операционные системы и приложения защищают себя от других программ, выполняемых на той же машине. К примеру, данная платформа может сделать касающиеся домашних финансов данные недоступными для программ, которым пользователь не дал санкции на такой доступ.

Для обеспечения описанного режима функционирования платформы NGSCB реализуют:

изоляцию друг от друга операционных систем и процессов (изоляция ОС связана с мониторами виртуальных машин, однако благодаря реализации ряда важных нововведений NGSCB надежнее, нежели традиционные решения категории VMM: небольшой монитор может изолировать себя и другие надежные компоненты от BIOS, драйверов устройств и прочих низкоуровневых модулей): аппаратные и программные примитивы безопасности, позволяющие программным модулям хранить свои секреты и предъявлять свои полномочия локальным и удаленным объектам (эти примитивы обеспечивают надежность реализованных в ОС средств защиты доступа, не лишая платформу возможности запуска других операционных систем).

Режим безопасности, который позволяет запускать любые программы, однако требует, чтобы в них были четко идентифицированы решения, касающиеся прав доступа, мы будем называть функционированием с аутентификацией, а аппаратно-программную платформу, обеспечивающую такой режим, — доверительной открытой системой (trusted open system).

Разработка NGSCB осуществлялась с учетом целого ряда требований, предъявляемых к коммерческим средам. И главное из этих требований состояло в сохранении открытости архитектуры, обеспечивающей возможность добавления к платформе любых аппаратных периферийных устройств и выполнения любых программ без привлечения «центральной инстанции».
Более того, система должна функционировать на устаревших персональных компьютерах. Мы внесли изменения в важнейшие компоненты платформы, однако архитектура ПК по большей части оставалась неизменной. Система должна была оставаться совместимой с подавляющей частью существующих периферийных устройств. Наконец, изменения в аппаратной части не должны были оказывать существенного влияния на стоимость производства ПК.

Нашей главной заботой была надежность (assurance, это слово можно перевести также как «гарантия, уверенность, твердость» — прим. пер.) Данное понятие — не конкретная функция защиты; оно отражает степень уверенности владельца системы в ее корректном функционировании, особенно в ситуации, когда на нее предпринимается атака. Еще одна задача состояла в том, чтобы обеспечить функционирование с аутентификацией.

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


Обзор NGSCB


В NGSCB режим функционирования с аутентификацией реализуется в контексте полной системы.



Операции хеширования


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

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

В NGSCB предусмотрен ряд программных и аппаратных механизмов, позволяющих снять остроту этих проблем. Так, разработчики средств хранения запечатанных данных позаботились о том, чтобы они не «разглашали» сведений, позволяющих идентифицировать платформу. Механизм Seal, как на аппаратном, так и на программном уровне, добавляет к объекту «запечатанные данные» случайную информацию, так что злонамеренные программы, неоднократно обращающиеся к Seal с запросом о получении одних и тех же данных, каждый раз получают другое значение.

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



Определение программного идентификатора


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

Простейший пример — «контрольный код» (cryptographic digest) или «хэш» исполнимого образа программы. В рамках этой модели операционная система не строит предположений относительно безопасности приложений, хранимых на диске или в сети. Если данное приложение будет модифицировано, изменится его «хэш» — а значит, и его «индивидуальность», а также услуги, на которые оно вправе претендовать [3-5].



Поставщики услуг идентификации


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

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

Выгоды от проведения засвидетельствований очевидны; с другой стороны, бесконтрольное раскрытие идентификатора платформы чревато серьезными последствиями. Исходя из этого, Microsoft поощряет создание независимыми производителями программ-поставщиков услуг идентификации (identity service provider), которые должны выступать в качестве доверенных посредников между поставщиками услуг и их клиентами. Пользователи могут настраивать свои платформы таким образом, чтобы выполнение процедуры засвидетельствования было разрешено одной или нескольким программам-поставщикам услуг идентификации. Затем они могут запрашивать вторичные маркеры засвидетельствования, которые подтверждают идентичность доверенной платформы, не раскрывая информации о ней. Пользователи могут получать неограниченное число этих псевдонимов для выполнения повседневных транзакций в среде Web.

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



Приложения


NGSCB обеспечивает мощную инфраструктуру защиты для выполнения широкого набора прикладных программ.



Программируемые смарт-карты


Обычно смарт-карты реализуют криптографические протоколы и обеспечивают защиту секретных ключей. На случай потери или кражи они часто оснащаются защитным механизмом: чтобы такая карта могла начать работу, в главное устройство должен быть введен короткий пароль или персональный идентификационный код (personal identification number, PIN).

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

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



Программная идентичность родовых программ


Конкретные действия запущенных на выполнение программ часто зависят от данных, получаемых ими из внешних источников. Самый яркий тому пример — интерпретатор. Программная идентификация интерпретатора особого значения не имеет; в данном случае его лучше всего определять как «интерпретатор A, выполняющий сценарий B». Для отражения этого обстоятельства мы можем определить программный идентификатор «родовой» программы как хэш конкатенации программы и вводимых в нее данных.

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



Реализация режима функционирования с аутентификацией


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



Регистрация в сети


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

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

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



Резервное копирование и перенос данных


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

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



Санкционирование транзакций


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

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

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



Удостоверение документов подписью


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

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

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



Выделение разделов


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

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

Теоретически можно примирить эти взаимоисключающие требования с помощью выделения на машине разделов (machine partitioning) и одновременного выполнения на одном и том же оборудовании двух или большего числа изолированных друг от друга операционных систем [9]. Одна из них может быть традиционной массовой системой, ответственной за управление большинством устройств и за выполнение любых старых приложений. Другие системы могут быть специально предназначены для создания высоконадежной вычислительной среды. Такую среду можно реализовать с помощью высоконадежных операционных систем, с помощью обычных операционных систем, помещенных в изолированную ограниченную область («песочницу») средствами монитора виртуальных машин, или через автономные приложения.

Рис. 2. Схема NGSCB. Монитор делит машину на два раздела, один из которых (на рисунке слева) предназначен для немодифицированной старой операционной системы, а второй (справа) — для более компактного, обеспечивающего защиту данных диспетчера системы, именуемого nexus. Во втором разделе выполняются приложения, называемые агентами. Они функционируют в изолированном адресном пространстве и имеют доступ к примитивам режима с проверкой прав доступа. Nexus и его агенты могут иметь доступ к защищенным средствам пользовательского ввода и вывода
<
На рис. 2 представлена конфигурация NGSCB, построенная на базе специальной высоконадежной операционной системы. В левой части рисунка показаны программные средства, выполняемые на современных компьютерах массовой архитектуры — операционная система, драйверы устройств и приложения. В правой части рисунка представлено компактное ядро высоконадежной ОС (nexus), а также выполняемые на нем приложения и агенты. Обе системы сосуществуют в пространстве одного компьютера. Монитор машины изолирует системы, чтобы ни одна из них не могла влиять на работу другой.

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


Загрузка ядра и функционирование с аутентификацией


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

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

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