Анализ криптостойкости методов защиты информации в операционных системах Microsoft Window 9x (doklad)

Посмотреть архив целиком

ВСТУПЛЕНИЕ

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

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

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

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



АЛГОРИТМ RC4

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

Существенное повышение производительности микропроцессоров вызвало усиление интереса к программным методам реализации криптоалгоритмов. Одним из самых первых подобных криптоалгоритмов, получившим широкое распространение, стал RC4. Алгоритм RC4 - это потоковый шифр с переменной длиной ключа, разработанный компанией RSA Data Security. Он обладает следующими свойствами:

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

высокой скоростью.

компактностью в терминах размера кода, и особо удобен для процессоров с побайтно-ориентированной обработкой.

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

простотой и легкостью выполнения.

В течение семи лет этот алгоритм был фирменным секретом и детали о его конструкции предоставлялись только после подписания договора о неразглашении, но кто-то анонимно распространил исходный код алгоритма через Internet. В настоящее время алгоритм RC4 реализован в более чем двух десятках коммерческих криптографических продуктов, включая Microsoft Windows, Lotus Notes и Oracle Secure SQL, а также является частью спецификации стандарта сотовой связи CDPD.

Как и все потоковые алгоритмы, RC4 генерирует гамму, которая используется для шифрования. Криптогенератор имеет подстановочную таблицу (S-бокс 8 х 8): S0, S1, . . ., S255. Входами генератора являются числа от 0 до 255. Подстановка является функцией от ключа изменяемой длины. Генератор имеет два счетчика i и j, инициализируемых нулевым значением.

Для генерации случайного байта гаммы выполняются следующие операции:

i = (i+1) mod 256

j = (j+Si) mod 256

swap (Si, Sj)

t = (Si+Sj) mod 256

K = St

Байт K складывается операцией XOR с открытым текстом для выработки шифротекста, либо с шифротекстом для получения байта открытого текста. Шифрование происходит весьма быстро - примерно в 10 раз быстрее DES-алгоритма. Инициализация S-бокса столь же проста. На первом шаге он заполняется линейно:

S0 = 0, S1 = 1, . . ., S255 = 255.

Затем еще один 256-байтный массив полностью заполняется ключом, для чего ключ повторяется соответствующее число раз в зависимости от длины: K0, K1, . . ., K255. Индекс j обнуляется. Затем:

for i=0 to 255

j = (j+Si+Ki) mod 256

swap (Si , Sj)

Схема показывает, что RC4 может принимать примерно 21700 (256! * 2562) возможных состояний. S-бох медленно изменяется в процессе работы: параметр i обеспечивает изменение каждого элемента, а j отвечает за то, чтобы эти элементы изменялись случайным образом.

До последнего времени в открытой литературе практически не было публикаций по криптоанализу алгоритма RC4. Компания RSA Data Security объявила, что шифр обладает иммунитетом к методам линейного и дифференциального криптоанализа, высоко не линеен и не похоже, чтобы у него были короткие циклы.

Первой открытой публикацией по теме RC4 можно считать работу Йована Голича, представленную на конференции Eurocrypt '97. В ней отмечается, что для последовательностей, генерируемых RC4, не подходят методы статистического анализа. Но для блоков, размер которых превышает размер внутренней памяти генератора, всегда существует линейная статистическая слабость. Линейная статистическая слабость - это линейное соотношение между битами гаммы, которое выполняется с вероятностью, отличающейся от 1/2.

Длина выходной последовательности, требуемая для выявления статистической слабости с корреляционным коэффициентом c, составляет O(c-2), то требуемая длина близка к 240. С практической точки зрения данная линейная модель может быть использована для выделения по шифротексту генератора RC4 среди других криптосистем, а также для восстановления параметра n.

В 2000 году была опубликована статья Скотта Флюера и Дэвида Мак-Гри посвященная статистистическому анализу потокового генератора RC4. Полученные в ней результаты сократили длину выходной последовательности, необходимой для выявления статистической слабости, до 230. Полученный результат указывает на существенную слабость генератора.

WINDOWS 95, 98


В операционных системах Microsoft Windows 95, 98 для аутентификации пользователя используется имя пользователя, а для подтверждения введенного имени – процедура аутентификации, использующая символьный пароль пользователя.

Управление доступом к ресурсам в операционных системах Windows 95, 98 осуществляется с помощью механизма профилей. Для этого создаются профили пользователей. Профиль пользователя в хранится в файле user.dat, который содержит учетную запись пользователя. Все профили системы содержатся в этом файле.

Для аутентификации в операционных системах Microsoft Windows 95, 98 используются, хранящиеся в директории операционной системы, файлы *.PWL, которые содержат хешированную парольную информацию. Документация по их структуре отсутствует, поэтому нами было проведено исследование этих файлов и было выяснен их формат.

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

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

Но при реализации этого алгоритма в Microsoft Windows 95 была допущена следующая ошибка: поскольку имя пользователя известно заранее, то первые 20 байт гаммы тривиально вычисляются. Но, т.к. эта же гамма накладывается на каждый ресурс, то можно дешифровать и первые 20 байт каждого ресурса! Отсутствие смены гаммы при шифровании разных полей - это основная ошибка применения алгоритма RC4 в данном случае. Между тем, достаточно было накладывать гамму на ресурсы, не используя первых засвеченных ее байт, что и было реализовано в Microsoft Windows 98 обнаружена существенная ошибка.

Другая ошибка заключается в том, что алгоритм сопоставления ключа паролю слаб тем, что при выбранной длине ключа, множество различных ключей 232 оказывается неизмеримо меньше множества различных паролей. Это означает, что существуют пароли, которые Windows 95 не отличает друг от друга. Это делает совершенно бессмысленными допускаемые в Windows 95 длинные пароли и эффективная длина пароля соответствует только пяти символам! Правда, это не означает, что для каждого пароля найдется эквивалент из пяти символов, т.к. множество паролей отображается на множество ключей неравномерно. В Microsoft Windows 98 эта ошибка была также исправлена и теперь длина ключа составляет не 32, а 128 бит.

Зависимость криптостойкости от ключа

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

1. увеличения производительности отдельного процессора.

2. увеличения количества процессоров в системе.

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

Предположим, что размер процессора равен размеру атома. Тогда в наших обозначениях быстродействие гипотетического процессора выразится формулой F = Vc/Ra = 3 * 1018 операций в секунду, где Vc = 3 * 10 8 м/с скорость света в вакууме, а Ra = 10-10 м - размеры атомов. Столько раз за 1 секунду свет пройдет размеры атома. Поскольку период обращения Земли вокруг Солнца составляет 365,2564 суток или 31 558 153 секунд, то за один год такой процессор выполнит 94 674 459 * 1018  1026 операций. Более быстрый процессор в нашей вселенной невозможен в принципе.

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

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

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

Для нашей планеты естественным пределом является площадь земной поверхности. Если выразить поверхность земного шара (считая океаны, пустыни, Арктику с Антарктикой) в квадратных миллиметрах, и на каждый миллиметр поместить по миллиону таких процессоров, то в год мощность такого вычислительного устройства составит 5.1 * 1052 операций, что эквивалентно длине в 175-176 бит. Если исходить из предположения, что стойкость шифра должна составлять 100 лет, то за указанный период такая система сможет перебрать 5 *1054 ключей, что составит 181-182 бита. И это притом, что никакие вычислительные ресурсы процессоров не тратятся на согласование их взаимной работы в системе, на решение задачи дешифрования и т.д.

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


Программа анализа PWL-файлов

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

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

Выводы PWL-файлов

Проанализировав сегодняшнюю ситуацию с реальными криптографическими продуктами, мы пришли к выводу, что криптография, представленная на коммерческом рынке, не предоставляет достаточного уровня безопасности. Сегодня в компьютерную безопасность вкладываются миллиарды долларов, и большинство денег тратится на нестойкие продукты. В настоящей работе было проведено исследование криптографических методов защиты информации, применяемых популярных операционных системах семейства Microsoft Windows 95, 98, и была написана программа общим объемом около тысячи строк программного кода для анализа си. Рассматриваемый алгоритм RC4 используется в более чем двадцати программных продуктах и результаты данной работы относятся к большому числу программных продуктов, используемых в различных областях.

В ходе работы был сделаны следующие выводы:

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

  • На компьютерах с операционной системой Microsoft Windows 95 необходимо модернизировать операционную систему. Поскольку переход на программное обеспечение других фирм вызовет значительные сложности, то достаточно ограничиться новыми версиями OSR2 и Windows 98.

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

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

10




Случайные файлы

Файл
11146.rtf
3302-1.rtf
71501.rtf
50475.rtf
90221.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.