Рейтинг@Mail.ru
Rambler's Top100




Не нашли нужную работу? Закажи реферат, курсовую, диплом на заказ

реферат на тему: Компьютерная безопасность

скачать реферат



Система шифрования Win3.11/Win95 глазами паталогоанатома

Артур Иванов, вед. прогр. КИИСиФЭ ПетрГУ

<Рисунок>

Сразу оговариваюсь, что все, что ниже будет сказано, имеет отношение только к Win3.11 и Win95, причем Win95 без установленного Service Pack 1. У OSR2 и Win98, а также у Win95 с установленным Service Pack 1, другая, хотя и похожая система шифрования, которая не имеет такого изобилия и разнообразия дыр и поэтому менее интересна для обсуждения. Отличить обе системы друг от друга можно по магическим числам в начале PWL-файла :

Win3.11 \ Win95 без Service Pack 1 / B0 46 4D 4E (видны буквы "MFN")

Win95 с Service Pack 1 \ OSR2 > E3 82 85 96 (в альтернативной кодировке Win98 / выглядит как "yВЕЦ")

Все, что далее будет сказано имеет отношение только к PWL-файлам, имеющим сигнатуру "MFN".

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

Формат PWL-файла

Содержимое PWL-файла производит весьма мутное впечатление. Строгая документация от MicroSoft по этому вопросу отсутствует due to security (саркастический смешок) reason, а сам я разбирался лишь в меру необходимости. Поэтому правильнее озаглавить - примерный формат PWL-файла, в предположении, что в нем не более 16-и ресурсов (похоже, что PWL-файл может содержать только кратное 16-и число ресурсов, используемых и неиспользуемых, но мне ни разу не попадался экземпляр более чем с 16-ю ресурсами).

0000: 4 байта - магическое число или сигнатура. Просто безполезное число. В разных форматах PWL-файлов оно разное. Чем и помогает их различать : B0 46 4D 4E - Win3.11/Win95 E3 82 85 96 - OSR2/Win98 0004: Дв. слово - очень странный счетчик. Что-то явно считает, но что ? 0008: Таблица из 256-и байт. Гордо называется Resource Link Index. Странная таблица. Ясно, что нулевой байт означает неиспользованный элемент. Но какая польза с ненулевого байта - не совсем ясно. Если в этой таблице встречается ненулевой байт N, то это означает, что в следующей таблице используется (не равен FF) элемент по смещению 108h+N. Но всю полезную информацию можно сразу извлечь из второй таблицы, не обращаясь к первой. 0108: Безхозный нулевой байт. Никому не мешает. 0109: Таблица Resource Key Entry из 255-и байт. Теперь неиспользуемый элемент обозначается уже байтом FF. Вероятно между созданием первой и второй таблиц программистом был пропущен стаканчик. Если в этой таблице находится M байтов N, не равных FF, то это означает, что в ресурсе номер N содержится M парольных записей. Обшее число не равных FF байт в таблице равно общему числу парольных записей. Отсюда ясно, что в PWL-файле не может быть более 255-и парольных записей и более 255-и ресурсов, их содержащих. 0208: 20 байт - имя пользователя в верхнем регистре, дополненное справа нулевыми байтами (русские буквы в Альтернативной кодировке). Данное поле служит для странного алгоритма определения подлинности пароля. Имя пользователя можно посмотреть в файле system.ini, в свойстве Password Lists и, если оно не длиннее восьми символов, то оно будет совпадать с именем PWL-файла. 021C: 17 слов - таблица указателей на начала ресурсов. 21C:Смещение в файле начала ресурса 0, относительно начала файла 21E:Смещение в файле начала ресурса 1, относительно начала файла 220:Смещение в файле начала ресурса 2, относительно начала файла ... 23A:Смещение в файле начала ресурса
Не нашли нужную работу? Закажи реферат, курсовую, диплом на заказ




F, относительно начала файла 23C:Смещение первого байта за концом файла (равно длине файла). Обе записи 208h-21Bh и 21Ch-23Dh образуют единое поле, которое зашифровано гаммой, накладываемой начиная со смещения 208h. 023E: Ресурс 0 Ресурс 1 Ресурс 2 ... Ресурс F В одном ресурсе может быть несколько парольных записей, следующих одна за другой. Первое слово каждой записи представляет собой длину записи, включая и это слово. Признаком конца цепочки записей является нулевое слово. Таким образом пустой ресурс - это просто нулевое слово. Тогда ясно, что если PWL-файл имеет длину 606 байт, то все ресурсы в нем пустые, т.к. 23Eh + 16*2 = 25Eh = 606. Каждый ресурс зашифрован гаммой, которая накладывается, начиная с его начала.

PWL-файл шифруется простым гаммированием, гамма генерируется алгоритмом RC4. При первой регистрации пользователя запрашивается пароль. Он приводится к верхнему регистру и сворачивается в ключ (двойное слово). Из этого ключа порождается гамма (псевдослучайная последовательность нулей и единиц). Эта гамма сложением по модулю два накладывается на каждый из ресурсов с его начала и зашифровывает их. Аналогично ресурсам зашифровывается поле 208h-23Dh, где хранится имя пользователя и таблица указателей на начала ресурсов.

При последующих регистрациях данным пользователем запрашивается пароль. Он приводится к верхнему регистру, опять сворачивается в ключ из которого опять порождается гамма. Если этой гаммой имя пользователя в поле 208h-21Bh расшифровывается правильно, то пароль считается введенным правильно. После чего расшифровываются таблица указателей на начала ресурсов и сами ресурсы PWL-файла. Расшифровка производится вторичным наложением гаммы сложением по модулю два (используется обратимость сложения по модулю два, то есть тот факт, что (X XOR Y) XOR Y = X ). Если имя пользователя не расшифровывается правильно, то пароль считается неправильным. Таким образом проверка правильности введенного пароля производится по совпадению первых 20-и байт порожденной из него гаммы с первыми 20-ю байтами гаммы от правильного пароля.

Этот алгоритм определения подлинности пароля является весьма оригинальным, т.к. при этом нигде не сохраняется ни зашифрованный пароль, ни хеш-функция (необратимое преобразование) пароля. Но, в то-же время, на удивление, нелепо реализованным. Ведь поскольку имя пользователя известно ЗАРАНЕЕ, то первые 20 байт гаммы тривиально вычисляются. Но, т.к. ТА-ЖЕ гамма накладывается на каждый ресурс (отсутствие смены гаммы при шифровании разных полей - это основная ошибка применения алгоритма RC4 в данном случае), то можно расшифровать и первые 20 байт каждого ресурса ! PWL-файл имеет избыточную информацию - есть указатели на начала ресурсов, но есть и длины записей в ресурсах и из одного можно вычислять другое. Если в ресурсах не более одной записи, то длина ресурса есть первое слово ресурса плюс два (длина первой записи ресурса плюс длина нулевого слова). Определяя по началу и длине данного ресурса начало следующего, рассчитывается вся таблица указателей на начала ресурсов в поле 21Ch-23Dh. В результате еще 2*17 = 34 байта добавляются к рассчитанной гамме. Если в ресурсах более одной записи, то начало следующего ресурса все равно можно найти с некоторой долей вероятности (после наложения гаммы второй байт ресурса будет равен второму байту гаммы, т.к. длина записей в ресурсе редко превышает 255, а 0 XOR X = X ). Этот алгоритм реализован в известной программе Glide,

скачать реферат
1 2 3 4

Не нашли нужную работу? Закажи реферат, курсовую, диплом на заказ

Внимание! Студенческий отдых и мегатусовка после сессии!


Обратная связь.

IsraLux отзывы Израиль отзывы