creep9 (663382), страница 5
Текст из файла (страница 5)
Для нашей планеты естественным пределом является площадь земной поверхности. Если выразить поверхность земного шара (считая океаны, пустыни, Арктику с Антарктикой) в квадратных миллиметрах, и на каждый миллиметр поместить по миллиону таких процессоров, то в год мощность такого вычислительного устройства составит 5.1 * 1052 операций, что эквивалентно длине в 175-176 бит. Если исходить из предположения, что стойкость шифра должна составлять 100 лет, то за указанный период такая система сможет перебрать 5 *1054 ключей, что составит 181-182 бита. И это притом, что никакие вычислительные ресурсы процессоров не тратятся на согласование их взаимной работы в системе, на решение задачи дешифрования и т.д.
Таблица 2.3
Варианты перебора ключа раскладок клавиатуры
Раскладка | Символы | Варианты | Минимальная длина пароля |
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ | 68 | 2.11*Е18 | 10 |
ABCDEFGHIJKLMNOPQRSTUVWXYZ АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ | 58 | 2.49*Е19 | 11 |
0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ | 42 | 3.01*Е19 | 12 |
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ | 36 | 4.74*Е18 | 12 |
АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ | 32 | 3.67*Е19 | 13 |
ABCDEFGHIJKLMNOPQRSTUVWXYZ | 26 | 6.45*Е19 | 14 |
0123456789 | 10 | 1*Е19 | 19 |
Из проведенного нами исследования можно сделать вывод, что для обеспечения надежности достаточно использовать алгоритмы с длиной ключа не менее 64 битов, а применять и разрабатывать алгоритмы с длиной ключа более 128 бит экономически не выгодно. Однако, как правило, для генерации ключа используется пароль, который в свою очередь часто содержит лишь символы латинского алфавита. В таком случае для обеспечения необходимой защиты требуется использовать пароль не короче 12 символов, что соответствует 56-битному ключу. 16-символьный гарант пароль соответствует 75-битному ключу и гарантирует достаточную защиту от прямой атаки.
3.2 Разработка программы
На текущий момент имеется несколько языков программирования высокого уровня, позволяющих создавать полноценные программы, предназначенные для работы в среде Microsoft Windows 9x. Мы выбрали хорошо известный язык C++, который обладает следующими достоинствами: во-первых, C++ обладает универсальностью и может быть использован для создания программ любого уровня сложности, а во-вторых, эффективный машинный код обеспечивает высокую скорость работы программы, что особенно немаловажно. Применяемые библиотеки и разработанные программные функции описаны ниже:
Таблица 3.1
Использованные библиотеки
Stdio.h | Работа с файлами |
String.h | Работа со строками |
Stdlib.h | Вспомогательные процедуры |
Time.h | Время |
Dos.h | Прерывания |
Таблица 3.2
Программные процедуры
Init_xor_table | Инициализация S-бокса |
Use_xor_table | Гаммирование данных через S-бокс |
SwaBits | Перестановка |
Init_hash | Инициализация хэширования |
Calc_hash | Хэширование |
Add_hash | Сложение данных в хэше |
Flush_hash | Очистка буффера хэша |
Make_cryption_table | Работа S-бокса |
Error | Декларация об ошибке |
LookUp | Возврат номера символа в строке |
UpStr | Перекодировка пароля |
LnTrim | Обрезка строки после |
Read_pwl_file | Чтение PWL-файла |
Dump_pwl_file | Просмотр ресурсов PWL-файла |
Enum_hdl | Прерывание программы |
Voc_pwl_file | Работа со словарем |
Try_pwl_file | Подбор пароля |
Main | Главная процедура |
Разработанная программа проводит криптоанализ на основе открытого текста. Так как имя пользователя всегда известно, то его можно использовать для проверки правильности расшифровки программа сравнивает дешифрованное имя пользователя с введенным именем. При запуске в зависимости от ключей, заданных в командой строке, программа вызывает вспомогательные функции, перечисленные следующем параграфе.
Далее программа осуществляет чтение зашифрованного PWL-файла, после чего либо начинает его расшифровку, либо просмотр ресурсов. Для PWL-файлов, создаваемых операционной системой Microsoft Windows 95, программа позволяет определить нестойкие пароли, генерируемые по ниже описанному алгоритму.
Алгоритм генерации ключа по паролю в Microsoft Windows 95
Имеем ключ (двойное слово) и пароль до 20-и символов.
1) Обнулить ключ.
2) Привести пароль к верхнему регистру.
3) Для каждого символа пароля, начиная с первого:
а) прибавить код символа к ключу
б) повернуть ключ влево 7 раз.
Данный алгоритм слаб тем, что при выбранной длине ключа в двойное слово, множество различных ключей 232 оказывается неизмеримо меньше множества различных паролей. Это означает, что существуют пароли, которые операционная система не различает.
Для PWL-файлов, создаваемых новыми версиями в операционных системах Microsoft Windows OSR2 и 98, программа осуществляет перебор ключей.
Алгоритм генерации ключа по паролю в Microsoft Windows OSR2 и 98
Имеем ключ (двойное слово) и пароль до 128-и символов.
1) Обнулить ключ.
2) Привести пароль к верхнему регистру.
3) Для каждого символа пароля, начиная с первого:
а) прибавить код символа к ключу
б) повернуть ключ влево 16 раз.
Далее программа перебирает пароли до тех пор, пока расшифрованное имя пользователя не совпадет с ранее введенным. При совпадении работа заканчивается.
Таблица 3.3
Скорость работы программы
Используемая машина | Скорость работы в секунду для Windows 3.11 и Windows 95 без Service Pack | Скорость работы в секунду для Windows 95 с Service Pack, OSR2 и 98 |
AMD K5 - 100 | 53000 | 29000 |
Intel Pentium - 120 | 61000 | 31000 |
Intel Pentium - 166 | 76000 | 39000 |
Pentium II -166 | 87000 | 45000 |
Intel Celeron – 400 | 153000 | 101000 |
Intel Celeron - 700 | 304000 | 192000 |
Продолжение сессии
Просмотр файла
Взлом файла по ключу



















Рис. 6. Блок-схема основной программы.
3.3 Функции программы
Разработанная программа запускается из командной строки с ниже перечисленными ключами:
/BF[:S] [ИмяPwlФайла] [ИмяПользователя]
- для выполнения взлома PWL-файла перебором. Пароли последовательно будут изменяться и проверяться на корректность совпадения.
/EN: [ИмяСекцииПеребора]
- добавьте это к ключу /BRUTEFORCE для того, чтобы выбрать желаемую секцию перебора из .CFG файла. Секция перебора по умолчанию описана в конфигурационном файле.
/F: [СтартоваяДлина]
- добавьте это к ключу /BRUTEFORCE для определения желаемой длины начального пароля с которого начнется процесс перебора. По умолчанию длинна равна нулю.
/IN: [НачальныйПароль]
- добавьте это к ключу /BRUTEFORCE для выбора начального пароля. Перебор начнется с значения представленного данным ключем. Этот ключ несовместим с ключем /FROM.
/D: [ПарольОстановки]
- добавьте это к ключу /BRUTEFORCE для выбора пароля остановки. Перебор завершится при достижении данного пароля. Этот ключ несовместим с ключем /NUMBER.
/NUM: [КоличествоИтераций]
- добавьте это к ключу /BRUTEFORCE для выбора количества попыток перебора. Программа будет остановлена после совершения данного количества переборов паролей. Этот ключ несовместим с ключем /DONE.
/VOC [:S] [ИмяPwlФайла] [ИмяПользователя] [МаскаСловарей]
- для обнаружения пароля PWL-файла с помощью словаря.
/CON [:S] [ИмяФайлаСессии]