Быстрая схема аутентификации и обмена ключами, устойчивая к DDoS-атаке

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

В±отать клиент-серверное приложение с помощью которого можно было бы проверить как поведет себя протокол в реальных условиях. Для полноценного теста необходимо использовать вычисления с большими числами, симметричные и ассиметричные методы шифрования а также криптостойкую хеш функцию. В результате были разработаны клиент и сервер в полной мере реализующие данный протокол и взаимодействующие через стек протоколов TCP\IP. Как клиент так и сервер реализованы для операционной системы Windows XP. Далее в этой главе приведем основные задачи, которые должны реализовывать клиент и сервер. Подробное рассмотрение и реализация этих задач будет рассмотренная в следующих главах.

5.2 Требования к серверу

Серверная часть приложения должна реализовывать следующие задачи:

1Принимать подключения от большого числа клиентов

2Корректно осуществлять обработку любых принятых от клиента пакетов

3Иметь набор криптографических функций необходимых для реализации протокола

4Хранить свой секретных ключ, открытые ключи клиентов, ID и соответствующий ключ для предварительной аутентификации

5Корректно измерять время работы протокола в различных условиях

6Иметь механизм изменения приоритетов для различных нитей приложения

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

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

1.1Требования к клиенту

Клиент должен выполнять следующие функции:

1Устанавливать соединение с клиентом

2Иметь набор криптографических функций необходимых для реализации протокола

3Хранить свой секретных ключ, открытый ключ сервера, ID и соответствующий ключ для предварительной аутентификации

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

5В зависимости от выбранной конфигурации реализовать общение с сервером как легальный или не легальный пользователь.

6. ТЕХНОЛОГИЧЕСКАЯ ПЛАТФОРМА

На основе предъявленных требований к приложению были выбраны следующие технологии реализации:

1среда разработки MSVS (microsoft visual studio) 2008

2языки программирования: С\С++, assembler(вставки)

3криптографическая библиотека OpenSSL

6.1 MSVS 2008

Visual Studio - мощная интегрированная среда разработки, обеспечивающая высокое качество кода на протяжении всего цикла разработки ПО, от проектирования до внедрения[11]. Используемая в этой работе версия была выпущена в ноябре 2007 года и стала первой средой, включающей визуальный конструктор для Windows Presentation Foundation (WPF) с линиями привязки и вкладками событий, поддерживающими разработку в стиле RAD. ля многопрофильных рабочих групп система Visual Studio Team System обеспечивала повышенную масштабируемость, включая поддержку непрерывной интеграции.

Кроме того, она предоставила в распоряжение веб-разработчиков инструменты форматирования CSS, возможность программирования в среде ASP.NET AJAX, а также поддержку IntelliSense для JavaScript. Введение языка LINQ (Language Integrated Query) обеспечило новые расширенные методы работы с данными и их обработки в среде Visual Basic и C#. Для повышения производительности приложения Visual Studio 2008 предоставляла инструменты анализа программного кода, включая метрики кода, которые помогали выявлять неэффективные или другие проблемные участки кода. Интегрированная система сборки проекта включала поддержку многопоточности как для сборки, так и для отладки.

6.2 C\C++

Си - стандартизированный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Денисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе UNIX. С тех пор он был портирован на многие другие операционные системы и стал одним из самых используемых языков программирования. Си ценят за его эффективность. Он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. Несмотря на то, что Си не разрабатывался для новичков, он активно используется для обучения программированию. В дальнейшем синтаксис языка Си стал основой для многих других языков[9].

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

В процессе своего развития язык Си лег в основу языка С++ но так как языки в последствии развивались независимо друг от друга в них стало появляться всё больше и больше несовместимостей.

C++ - компилируемый статически типизированный язык программирования общего назначения[9].

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