Файл: Теоретические основы разработки клиент серверных приложений на языке Java.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 16.05.2023

Просмотров: 1099

Скачиваний: 11

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение

Возможность передачи информации на расстоянии интересовала людей всегда. Для того чтобы обмениваться информацией не только при личной встрече, но и на больших расстояниях, люди изобретали всё новые технические средства, протягивали структурированные кабельные сети по всему миру, организовывали почтовые системы, запускали спутники связи. С развитием информационных технологий стали возможным еще более глобальные коммуникации. Сегодня люди с легкостью по всему миру могут обмениваться не только сообщениями, но и графикой и звуковой и другими видами информации. Историческим «докомпьютерным» предшественником чатов, несомненно, являлся телефон. Ни телеграф, ни почта не могли позволить общаться в реальном времени и не были доступны в домашних условиях. Изобретение и распространение телефона вызвало настоящую революцию способах и средствах общения. Возможность поговорить с собеседником в реальном времени на другом континенте казалась настоящим чудом.

Язык Java является основой практически для всевозможных типов сетевых приложений и всеобщим стандартом для разработки встроенных и мобильных приложений, веб-контента, игр, и корпоративного программного обеспечения. В мире насчитывается более девяти миллионов специалистов, разрабатывающих приложения на Java, которая позволяет эффективно разрабатывать, тестировать, внедрять и использовать программное обеспечение [14].

Объект исследования: процесс разработки клиент-серверного приложения на Java.

Предмет исследования: технология разработки клиент-сервера с двухуровневой архитектурой.

Цель исследования: создать технологию разработки клиент-сервера и клиент-серверное приложение на объектно-ориентированном языке Java.

Задачи:

1. Рассмотреть подходы и принципы создания клиент-серверных приложений.

2. Проанализировать особенности разработки клиент-серверных приложений на языке Java.

3. Обосновать технологию разработки клиент-серверных приложений.

4. Разработать клиент-серверное приложение «Chat» на языке Java и протестировать его.

5. Провести экспертную оценку разработанного приложения.

Глава 1. Теоретические основы разработки клиент серверных приложений на языке Java


1.1 Разработка клиент-серверных приложений

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

Архитектура «клиент-сервер» характеризуется наличием по крайне мере двух взаимодействующих, самостоятельных процессов – клиента и сервера.

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

Рисунок 1. Двухуровневая архитектура клиент-сервер

Любая архитектура клиент-сервера должна включать в себя три основных компонента:

• ввод и отображение данных (интерфейс с пользователем);

• прикладные функции, характерные для данной предметной области;

• управление информационными ресурсами (базой даных или файловой системой и т.д).

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

Компания Gartner Group, специализирующейся в области исследования информационных технологий, выводит следующие пять двухзвенных (two-tier, 2-tier) моделей взаимодействия клиента и сервера (двухзвенными они называются потому, что три компонента приложения различным образом аспределяются между двумя узлами) [10].

Рисунок 2. Модели взаимодействия двухзвенной (двухуровневой) архитектуры клиент-сервер

Плюсы многоуровневой архитектуры:

• Масштабируемость (за счёт горизонтальной масштабируемости сервера приложений и мультиплексирования соединений);

• Интегрируемость (за счёт изолированности уровней друг от друга);


• Доступность из веб-браузера или из тонкого клиента (т.к клиент занимается только отображением информации пользователю в удобном виде);

• Высокая безопасность; Минусы:

• Высокая стоимость, дополнительные расходы на администрирование;

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

Клиент-серверная система должна иметь достойный уровень безопасности информации, хранимой и передаваемой между звеньями системы. Разработчику такой системы нужно добиться согласованной работы средств защиты различных звеньев, и не усложнять жизнь рядовых пользователей, дабы не заставлять их в поисках нужных данных пробираться через множество слоев защиты отвечая на однотипные вопросы: «Стой, кто идет?».

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

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

Существует несколько классификаций КА алгоритмов одна из них делит по числу ключей, применяемых в конкретном алгоритме:

• бесключевые КА – не используют в вычислениях никаких ключей;

• одноключевые КА – работают с одним ключевым параметром (секретным ключом);

• двухключевые КА – на различных стадиях работы в них применяются два ключевых параметра: секретный и открытый ключи [1].

Рисунок 4. Классификация криптоалгоритмов защиты информации

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

Таблица 1. Алгоритмы криптографических хеш-функций

Алгоритм

Год

создания

Особенности

MD2 (Message Digest 2 Algorithm)

1989

После MD2 были разработаны MD4, MD5 и MD6 в 1990, 1991 и 2008 годах соответственно.

В 2011 году MD2 был официально списан из-за многочисленных успешных криптоатак. Сейчас использовать MD2 рекомендуют только в целях совместимости со старыми программами,

которые до сих пор полагаются на него.

SHA-1 (Secure Hash Algorithm 1

1995

В настоящее время SHA-1 больше нельзя считать надежным, большинство компаний переходят на SHA-2, которые построены на основе структуры Меркла – Дамгарда. После SHA-1 были разработаны SHA-2, SHA-3 в 2002 и

2008 годах соответственно.

Whirlpool

2000

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

этой цели.

Стрибог

2012

Действующий российский криптографический стандарт, определяющий алгоритм и процедуру вычисления хеш-функции. Разработан Центром защиты информации и специальной связи ФСБ России с участием ОАО «ИнфоТеКС» и

введенный в действие 1 января 2013 года.


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

Симметричное шифрование можно разделить на два вида: блочное и поточное, в некоторых классификациях они не разделяются и считается, что поточное шифрование – это шифрование блоков единичной длины.

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

Алгоритм

Год создания

Размер ключа (бит)

Размер блока (бит)

Число раундов

Метод построение шифра

DES

1977

56 + 8 про- верочных

64

16

Сеть Фейстеля

3DES

1978

168

64

48

Сеть Фейстеля

BassOmatic

1989

8 до 2048

2048

от 1

до 8

Подстановочно- перестановочная

сеть

RC2

1989

8 до 1024

64

18

Сеть Фейстеля

IDEA

1991

128

64

9

модификация сети Фейстеля

Cobra

1996

8-576

128

12

Сеть Фейстеля

CRYPTON

1998

128/192/256

128

12

Подстановочно- перестановочная

сеть

Camellia

2000

128/192 или 256

128

18/24

Сеть Фейстеля

Threefish

2008

256/512/1024

256/512/1024

72/80 –

при ключе в

1024

Подстановочно- перестановочная сеть

RC5

1994

0-2040

32/64 или 128

1-255

Сеть Фейстеля


Таблица 2. Алгоритмы симметричного блочного шифрования

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

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

Стойкость таких алгоритмов целиком зависит от внутренней структуры генератора ключевой последовательности. Если генератор выдает последовательность с небольшим периодом, то стойкость системы будет невелика. Напротив, если генератор будет выдавать бесконечную последовательность истинно случайных бит, то получится одноразовый блокнот с идеальной стойкостью [13].

К симметричным поточным алгоритмам относятся:

• A8 – используется для обеспечения конфиденциальности передаваемой по радиоканалу информации в стандарте мобильной сотовой связи GSM. A8 является одним из алгоритмов обеспечения секретности разговора в GSM вместе с A5 и A3.

• Decim – на основе регистра сдвига с линейной обратной связью, запатентован. Был представлен в проекте eSTREAM, где не прошёл дальше третьего этапа.

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

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

алгоритма – 2.0. Она вошла в портфолио eCRYPT, как потоковый шифр для аппаратной реализации.

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

• SOSEMANUK – использует как основные принципы из потокового шифра SNOW 2.0, так и некоторые преобразования, выведенные из блочного шифра SERPENT. Как утверждается, любая длина ключа достигает 128-битной защиты.

• VMPC – разрабатывался в качестве усиленного варианта популярного шифра RC4. Основа шифра – генератор псевдослучайных чисел, базой которого является односторонняя необратимая функция VMPC.

Асимметричное шифрование характеризуется применением двух типов ключей: открытого (k1) – для зашифровывания информации и секретного (k2) – для ее расшифровывания. Открытый ключ вычисляется из секретного: k1=f(k2) Эти алгоритмы шифрования основаны на применении однонаправленных функций. Согласно определению, функция y=f(x) является однонаправленной, если: ее легко вычислить для всех возможных вариантов x и для большинства возможных значений y достаточно сложно вычислить такое значение x, при котором y=f(x) [19].