Другие журналы

научное издание МГТУ им. Н.Э. Баумана

НАУКА и ОБРАЗОВАНИЕ

Издатель ФГБОУ ВПО "МГТУ им. Н.Э. Баумана". Эл № ФС 77 - 48211.  ISSN 1994-0408

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

#5 Май 2005

РАЗРАБОТКА ПРОГРАММНОГО КОМПЛЕКСА, ОСУЩЕСТВЛЯЮЩЕГО ЗАЩИТУ ПЕРЕДАВАЕМОЙ ИНФОРМАЦИИ

Разработка программного комплекса, осуществляющего защиту передаваемой информации

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

 

УДК 004.056:061.68

 

Стриков Олег Анатольевич

гимназия № 44, 11 класс

 

Научный руководитель:

Медведев Николай Викторович,

кандидат технических наук, доцент,

заведующий кафедрой «Информационная безопасность»

МГТУ им. Н.Э. Баумана

 

Цели разработки

Целью разработки было создание приложения, способного обеспечивать безопасность сетевых переговоров как в Internet , так и в Intranet (ЛВС):

·        Программа использует малое количество сетевых ресурсов (трафика), т.к. передает лишь само сообщение и имя отправителя (без дополнительных «форматных» строк).

·        В целях экономии трафика (и для усложнения перехвата) существуют «личные» сообщения, которые отсылаются только абоненту (в случае коммутируемой сети), а не фильтруются самим клиентом (SSL Chat).

·        Многие существующие на данный момент системы являются «надстройкой» над уже существующим оборудованием (ICQ, Miranda, MSN Messanger) – это облегчает их использование в Internet, но полностью исключает использование в локальной сети (без установки дополнительного ПО на серверное оборудование (существуют версии серверного обеспечения ICQ, но их использование не легально)). Поэтому разработанное средство является полностью автономным и поставляет как Сервер-приложение и Клиент-приложение.

Многое серверное оборудование лишено возможности прямого контроля над сообщениями (они либо автоматически записываются в лог-файлы, либо вообще не доступны для модерирования). Сервер-приложение предоставляет администратору возможность не только просматривать все сообщения пользователей и их «входящие» ключи, но и запрещать доступ на произвольное время любому пользователю (по IP адресу). Многое существующее оборудование может производить отключения только в автоматическом порядке, но не даёт доступ администратору.

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

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

Был разработан режим работы, обеспечивающий повышенную безопасность системы. В этом случае переподключение осуществляется после передачи каждого сообщения, что является подобием «одноразового блокнота», если обеспечить генерацию случайных чисел (с использованием алгоритма установки состояния РСЛОС относительно движения курсора мыши). В этом случае даже если ключ будет взломан (с использованием большого количества системных ресурсов), то доступ будет возможен только к одному сообщению.

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

 

Аналогичное ПО

1.      STMMessanger (надстройка над ICQ full, Miranda , MSN Messanger)

·        Использование алгоритма, основанного на эллиптических кривых (новый метод).

·        Использование произвольно-битного ключа (<=1024).

·        Программа существует только в виде надстройки:

- обязательно требует установки родителя;

- делает невозможным использование в локальной сети;

- позволяет  «красть» информацию через «дыры» в родителе;

·        Зашифрованное сообщение содержит стандартный заголовок для определения зашифрованного сообщения.

·        Пароль вводит пользователь, что снижает степень случайности и позволяет использовать KeyLogger'ы.

·        Существует база паролей для общения с различными пользователями: "рекомендуется" многократное использование одинаковых паролей (ключей) => большое количество криптотекста.

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

 

2. Scrambler Messanger (надстройка над ICQ)

·        Малый размер, быстрый алгоритм.

·        Полная интеграция (нет доп. кнопок, только окно ввода пароля).

·        Нестойкий алгоритм (немного усложненный шифр Цезаря).

·        Минусы STMM (касательно использования «родителя»).

 

Теоретические основы

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1) число n - большое простое число;

    число g - примитивный корень по модулю n;

    числа постоянны и известны «клиенту» и «серверу».

2) после подключения клиент генерирует случайное число x и вычисляет:

X=g^x mod(n),

значение X передаётся «серверу».

3) «сервер» генерирует случайное число y и вычисляет:

Y=g^y mod(n),

значение Y передаётся «клиенту».

4) получив X, «сервер» вычисляет:

key=(X^y) mod(n)

и заносит его в массив сессионных ключей.

5) получив Y, «клиент» вычисляет:

key1=(Y^x) mod(n)

Итог:

key=(g^xy mod(n))=key1 => и «сервер» и «клиент» получили одинаковый сессионный ключ.

·        Для шифрования передаваемых сообщений используется потоковый шифр, основанный на РСЛОС(32,7,5,3,2,1,0) Начальное положение генератора определяется сессионным ключом (32 бита). При шифровании использован следующий принцип: если  выходной бит равен 1, то буква (знак) заменяется соответственно q_i+12, где i - позиция данного символа в строке. Такие проходы выполняются 141 раз (по длине кодовой строки) для полного перемешивания. Так как НОД(12,141)=1, то вероятности полного прохода строки (т.е. замены q_i на q_i) нет.

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

·        Для передачи сессионного ключа используется алгоритм «Диффи-Хеллмана для обмена ключами».

 

Реализация и особенности ПО

·        Реализована система цветового оповещения в случае прихода «личного» (синий) и «ошибочного» (красный) сообщений.

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

·        Присутствует возможность сохранения логов во внешний .logs файл, а также возможность просмотра в области сообщений.

·        Возможна печать текущего содержания области сообщений.

·        ПО снабжено системой помощи интерфейса WinHelp (MicroSoft Help WorkShop).

·        Включение/отключение функции быстрой помощи.

·        Контакт-лист.

·        Система быстрого запуска (autorun) с диска, системные файлы упакованы в инсталляционный файл.

·        Возможна генерация начального состояния РСЛОС как на основе системного времени, так и на основе движения курсором мыши в течении определенного промежутка времени.

·        Возможность наблюдения за программным трафиком (для администратора).

·        Возможность запрета доступа для определенных IP адресов (сервер) на определенное время. Программа поддерживает ранние версии пакета WinSock , что обеспечивает работу на ОС Windows NT.

·        Система автоматического переподключения через определенные промежутки времени  (указанные пользователем). Для усложнения поиска состояния РСЛОС переподключение происходит в случайный промежуток времени. Время до следующего переподключение определяется по формуле:

T = UserT +/- Random( UserT / 2 ).

·        Система контроля дублирования имён. Проверка единственности имени перенесена на приложение – клиент для уменьшения трафика.

·        Использование псевдослучайных подстановок, вычисляющихся из сессионного ключа пользователя:

P= (g^Key)mod n,

где P - изменение позиции относительно прошлого вхождения подстановки.

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

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

 

Технические характеристики

Client.exe

·        объём в памяти 528 Kb

·        подключаемые модули 3.8 Mb

·        HEAP memory 44 Kb

Server.exe

·        объём в памяти 660 Kb

·        подключаемые модули 4.7 Mb

·        HEAP memory 27 Kb

Платформа: Windows 9x, NT4, Me, XP

Язык разработки: C++ ( Win32API  & Borland C++ 5) , среда Borland Builder 5-6

 

Методы атаки на приложение и способы защиты

1. Использовать снифферы, для «прослушки» трафика:

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

·        При этом, если «прослушиваемая» сеть построена на коммуникаторах (switch), то атакующий не сможет провести зависимость между псевдослучайным числом и его номером в последовательности, что, несомненно, усложнит его задачу.

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

·        Перехват трафика сообщений дает возможность атакующему подобрать сессионный ключ абонента. Анализируя сообщения (или имея представление о содержании) по принципу «значимых частей», можно найти сессионный ключ пользователя (что будет значительно проще, чем «ломать» РСЛОС сервера). Однако результат взлома будет менее важен атакующему (если он не ставил целью взлом конкретного абонента). Обычно такого рода взломы проводятся за некоторое время до начала «общения», с целью не вызвать подозрение (которое может возникнуть, если передаваемая информация действительно важна). Однако в ПО ключи генерируются в момент подключения пользователя, т.е. если информация «устаревает» за малый промежуток времени 20-30 минут, то взлом, длящийся 120-... минут, смысл теряет.

·        Если же срок актуальности информации значительно больше, то можно передавать информацию порционно, осуществляя при этом переподключение к серверу (~10 сек).

·        Также безопасность существенно повышает «лишние» пробелы или другие управляющие символы (_!@) и т.д., так как цикл шифрации проходит несколько раз и соответственно «значения перехода» зависят от длины сообщения. (Например, сообщение «test test test» будет полностью отличаться от «test  test test»).

2. Спуффинг - подмена IP.

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

·        Если же атакующий сумел завладеть сессионным ключом пользователя (см. пункт 1), то, осуществляя спуффинг, IP вполне может выдавать себя за пользователя. Но в данном случае ему приходится пользоваться только «приватными» сообщениями, т.к. «общие» попадут и к «атакуемому» пользователю, что покажется ему «странным» и он может переподключиться к серверу и свести весь труд атакующего к нулю. Также необходимо учитывать, что атакующий не знает контакт-лист (правда только в том случае когда больше никто не подключался или отключался от сервера, что вполне возможно в течении долгого времени).

·        Из этого следует, что неплохим алгоритмом взлома является взлом 2 пользователей. Далее атакующий намеренно посылает общее сообщение от одного из пользователей (например, System Error) и, если пользователь не ознакомлен с работой системы, он отключается, а атакующий на аккаунт 2 пользователя получает полный контакт лист. Единственны недостатком данного метода, является то, что администратор видит весь сетевой трафик в окне сервер-программы и «необычное сообщение» может дать ему повод проверить сеть с помощью дополнительного оборудования, или для большей безопасности перезагрузить сервер или заблокировать доступ «недоверенным» пользователям.

3. Полулегальное подключение.

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

4. Взлом сервера / Внедрение на сервер.

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

·        Если же было совершено проникновение как к абоненту сети, то атакующий может попробовать установить оборудование, сканирующее оперативную память сервера с целью нахождения ключей. Этот вариант работает лучше вышеописанного, так как, во-первых, не создает подозрение, так как не заметен, а во-вторых, позволяет получить активные ключи, не обрывая соединения. Проблемой данного вида атак является то, что необходимо установить и запустить оборудование, что может быть запрещено администратором. Также такого рода оборудование обнаруживается средствами АнтиВирусных приложений или ProcessViewer'ами.

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

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

·        Возможен также вариант, когда атакующий пытается найти в оперативной памяти сервера адреса (IP) пользователей и подменяет их своими. При этом сервер будет отсылать сообщения не реальному абоненту, а злоумышленнику. Этот метод может быть замечен, если изменено слишком много адресов, по не приходящим адресатам сообщениям. Возможен более «хитрый» вариант. После взлома в оперативную память добавляет адрес нового пользователя с ключом равным 0 (проверка проходит только во время подключения). После это атакующий может читать (даже без знания ключа) общие сообщения.

 

Список литературы и используемых источников

1.      Шнаер Б. Прикладная криптография

2.      Казарин О.В. Безопасность программного обеспечения компьютерных систем. Монография. - М.: МГУЛ, 2003.

3.      Масленников М.Е. Практическая криптография. – С-Пб.: «bhv-Петербург», 2002.

4.      Баричев С.Г, Серов Р.Е. Основы современной криптографии. - М.: Горячая линия - Телеком, 2002.

5.      Страуструп Б. Язык программирования C++. – М.: Издательство БИНОМ, 2002.

6.      http://cryptography.ru

7.      http://securityfocus.com

 


Тематические рубрики:
Поделиться:
 
ПОИСК
 
elibrary crossref ulrichsweb neicon rusycon
 
ЮБИЛЕИ
ФОТОРЕПОРТАЖИ
 
СОБЫТИЯ
 
НОВОСТНАЯ ЛЕНТА



Авторы
Пресс-релизы
Библиотека
Конференции
Выставки
О проекте
Rambler's Top100
Телефон: +7 (915) 336-07-65 (строго: среда; пятница c 11-00 до 17-00)
  RSS
© 2003-2020 «Наука и образование»
Перепечатка материалов журнала без согласования с редакцией запрещена
 Тел.: +7 (915) 336-07-65 (строго: среда; пятница c 11-00 до 17-00)