Реферат Баранский И. В
Скачать 466.2 Kb.
|
Министерство образования и науки РФ Федеральное государственное бюджетное образовательное учреждение высшего образования «Уральский государственный педагогический университет» Институт математики, информатики и информационных технологий Кафедра информатики, информационных технологий и методики обучения информатике ТЕХНОЛОГИЯ РАЗРАБОТКИ КЛИЕНТ-СЕРВЕРНЫХ ПРИЛОЖЕНИЙ НА ЯЗЫКЕ JAVA Выпускная квалификационная работа по направлению «02.03.02 Фундаментальная информатика и информационные технологии» Исполнитель: студент ИИМиИТ группы Б-41 Баранский И.В. Работа допущена к защите Руководитель: к.п.н, доцент кафедры «___»____________2017 г. ИИТиМОИ Газейкина А.И. Зав. кафедрой _____________ Екатеринбург – 2017 Реферат Баранский И.В. ТЕХНОЛОГИЯ РАЗРАБОТКИ КЛИЕТН-СЕРВЕРНЫХ ПРИЛОЖЕНИЙ НА ЯЗЫКЕ JAVA, выпускная квалификационная работа: 50 стр., рис. 15, табл. 3, библ. названий 24. Ключевые слова: объектно-ориентированный язык программирования Java, сокеты, архитектуры клиент-серверных приложений, алгоритмы шифрования. Объект исследования: процесс разработки клиент-серверного приложения на Java. Цель работы: создать технологию разработки клиент-сервера и клиент-серверное приложение на объектно-ориентированном языке Java. Работа направлена на разработку приложения с двухуровневой клиент-серверной архитектурой по созданной технологии разработки клиент-серверного приложения. Рассматривается специфика разработки приложений на языке программирования Java. ходе работы было создано клиент-серверное приложение «Chat». Исходные коды написаны на языке программирования Java. Оглавление ВВЕДЕНИЕ 4 ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗРАБОТКИ КЛИЕНТ-СЕРВЕРНЫХ ПРИЛОЖЕНИЙ НА ЯЗЫКЕ JAVA 6 1.1 РАЗРАБОТКА КЛИЕНТ-СЕРВЕРНЫХ ПРИЛОЖЕНИЙ 6 1.2 ОСОБЕННОСТИ РАЗРАБОТКИ КЛИЕНТ-СЕРВЕРНЫХ ПРИЛОЖЕНИЙ НА ЯЗЫКЕ JAVA 16 1.3 ТЕХНИЧЕСКОЕ ЗАДАНИЕ 24 ГЛАВА 2. РАЗРАБОТКА КЛИЕНТ-СЕРВЕРНОГО ЧАТА НА ЯЗЫКЕ JAVA 27 2.1 ТЕХНОЛОГИЯ РАЗРАБОТКИ КЛИЕНТ-СЕРВЕРНОГО ПРИЛОЖЕНИЯ 27 2.2 РАЗРАБОТКА КЛИЕНТ-СЕРВЕРНОГО ПРИЛОЖЕНИЯ 30 2.3 РЕЗУЛЬТАТЫ АПРОБАЦИИ 44 ЗАКЛЮЧЕНИЕ 47 БИБЛИОГРАФИЧЕСКИЙ СПИСОК 48 Введение Возможность передачи информации на расстоянии интересовала людей всегда. Для того чтобы обмениваться информацией не только при личной встрече, но и на больших расстояниях, люди изобретали всё новые технические средства, протягивали структурированные кабельные сети по всему миру, организовывали почтовые системы, запускали спутники связи. С развитием информационных технологий стали возможным еще более глобальные коммуникации. Сегодня люди с легкостью по всему миру могут обмениваться не только сообщениями, но и графикой и звуковой и другими видами информации. Историческим «докомпьютерным» предшественником чатов, несомненно, являлся телефон. Ни телеграф, ни почта не могли позволить общаться в реальном времени и не были доступны в домашних условиях. Изобретение и распространение телефона вызвало настоящую революцию способах и средствах общения. Возможность поговорить с собеседником в реальном времени на другом континенте казалась настоящим чудом. Язык Java является основой практически для всевозможных типов сетевых приложений и всеобщим стандартом для разработки встроенных и мобильных приложений, веб-контента, игр, и корпоративного программного обеспечения. В мире насчитывается более девяти миллионов специалистов, разрабатывающих приложения на Java, которая позволяет эффективно разрабатывать, тестировать, внедрять и использовать программное обеспечение [14]. Объект исследования: процесс разработки клиент-серверногоприложения на Java. Предмет исследования: технология разработки клиент-сервера сдвухуровневой архитектурой. Цель исследования: создать технологию разработки клиент-сервера иклиент-серверное приложение на объектно-ориентированном языке Java. Задачи: Рассмотреть подходы и принципы создания клиент-серверных приложений. Проанализировать особенности разработки клиент-серверных приложений на языке Java. Обосновать технологию разработки клиент-серверных приложений. Разработать клиент-серверное приложение «Chat» на языке Java и протестировать его. Провести экспертную оценку разработанного приложения. Глава 1. Теоретические основы разработки клиент-серверных приложений на языке Java 1.1 Разработка клиент-серверных приложений Процесс разработки программного обеспечения – набор правил, согласно которой построена разработка программного обеспечения. Приложение можно назвать клиент серверным если оно включает в себя клиент-серверную архитектуру. Разработку клиент-серверного приложения необходимо начинать с выбора архитектуры клиент-сервера. Архитектура «клиент-сервер» характеризуется наличием по крайне мере двух взаимодействующих, самостоятельных процессов – клиента и сервера. Процессы, осуществляющие некоторую службу, например, службу базы данных или файловой системы, называются серверами, а процессы, запрашивающие службы у серверов посредством посылки запроса и последующего ожидания ответа от сервера, называются клиентами. Фактически эти процессы – программное обеспечение, которое установлено на разных вычислительных машинах и взаимодействующее между собой через вычислительную сеть посредством сетевых протоколов, но они могут быть расположены также и на одной машине. Рисунок 1. Двухуровневая архитектура клиент-сервер Любая архитектура клиент-сервера должна включать в себя три основных компонента: ввод и отображение данных (интерфейс с пользователем); прикладные функции, характерные для данной предметной области; управление информационными ресурсами (базой даных или файловой системой и т.д). классической архитектуре клиент-сервер необходимо распределять три основные части приложения по двум физическим программным обеспечениям. Компания Gartner Group, специализирующейся в области исследования информационных технологий, выводит следующие пять двухзвенных (two-tier, 2-tier) моделей взаимодействия клиента и сервера (двухзвенными они называются потому, что три компонента приложения различным образом распределяются между двумя узлами) [10]. Рисунок 2. Модели взаимодействия двухзвенной (двухуровневой) архитектуры клиент-сервер Плюсы двухуровневой архитектуры: Есть возможность для масштабирования Относительная экономия на оборудовании Минусы: Масштабируется только вертикально (увеличение производительности компонентов системы); Сложность интеграции новых возможностей (в зависимости от реализации трех компонентов между клиентом и сервером); Многоуровневая архитектура (N-tier или multi-tier, иногда его называют трехуровневая архитектура или трехзвенная архитектура, но это частный случай) представляет собой дальнейшее совершенствование технологии «клиент-сервер». В трехзвенной архитектуре вся обработка данных, ранее входившая в клиентские приложения или полностью была на сервере либо эти два звена делили её функции между собой, выделяется в отдельное звено, называемое сервером приложений. Рисунок 3. Многоуровневая архитектура клиент-сервер Плюсы многоуровневой архитектуры: Масштабируемость (за счёт горизонтальной масштабируемости сервера приложений и мультиплексирования соединений); Интегрируемость (за счёт изолированности уровней друг от друга); Доступность из веб-браузера или из тонкого клиента (т.к клиент занимается только отображением информации пользователю в удобном виде); Высокая безопасность; Минусы: Высокая стоимость, дополнительные расходы на администрирование; Разработка такой системы гораздо сложнее чем двухзвенной. Клиент-серверная система должна иметь достойный уровень безопасности информации, хранимой и передаваемой между звеньями системы. Разработчику такой системы нужно добиться согласованной работы средств защиты различных звеньев, и не усложнять жизнь рядовых пользователей, дабы не заставлять их в поисках нужных данных пробираться через множество слоев защиты отвечая на однотипные вопросы: «Стой, кто идет?». Под безопасностью информационной системы понимается защищенность системы от случайного или преднамеренного вмешательства в нормальный процесс ее функционирования, от попыток хищения (несанкционированного получения) информации и её модификации. При передаче информации по каналам связи используются криптографические алгоритмы шифрования. Существует несколько классификаций КА алгоритмов одна из них делит по числу ключей, применяемых в конкретном алгоритме: бесключевые КА – не используют в вычислениях никаких ключей; одноключевые КА – работают с одним ключевым параметром (секретным ключом); двухключевые КА – на различных стадиях работы в них применяются два ключевых параметра: секретный и открытый ключи [1]. Рисунок 4. Классификация криптоалгоритмов защиты информации Хеширование – это метод криптозащиты, представляющий собой контрольное преобразование информации: из данных неограниченного размера путем выполнения криптографических преобразований вычисляется хэш-значение фиксированной длины, однозначно соответствующее исходным данным.
Симметричное шифрование использует один ключ, с помощью которого производится как шифрование, так и расшифровка с использованием одного и того же алгоритма симметричного шифрования. Этот ключ передается двум участникам взаимодействия безопасным образом до передачи зашифрованных данных. Симметричное шифрование можно разделить на два вида: блочное и поточное, в некоторых классификациях они не разделяются и считается, что поточное шифрование – это шифрование блоков единичной длины. Блочное шифрование характеризуется тем, что информация предварительно разбивается на блоки зафиксированной длины (например, 64 или 128 бит). При этом в различных криптографических алгоритмах или даже в разных режимах работы одного и того же алгоритма блоки могут шифроваться как независимо друг от друга, так и «со сцеплением», т. е. когда результат шифрования текущего блока данных зависит от значения предыдущего блока или от результата шифрования предыдущего блока. Таблица 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]. асимметричным алгоритмам относятся: RSA (аббревиатура от фамилий Rivest, Shamir и Adleman) – основывающийся на вычислительной сложности задачи факторизации больших целых чисел, стала первой системой, пригодной и для шифрования, и для цифровой подписи. ECC (Elliptic curve cryptography) – использует алгебраическую систему, которая описывается в терминах точек эллиптических кривых, для реализации асимметричного алгоритма шифрования. Схема Эль-Гамаля (Elgamal) – вариант Диффи-Хеллмана, который может быть использован как для шифрования, так и для электронной подписи. Электронная подпись (ЭП) – это особый реквизит документа, который позволяет установить отсутствие искажения информации в электронном документе с момента формирования ЭП и подтвердить принадлежность ЭП владельцу. Значение реквизита получается в результате криптографического преобразования информации. Сертификат электронной подписи – документ, который подтверждает принадлежность открытого ключа (ключа проверки) ЭП владельцу сертификата. Выдаются сертификаты удостоверяющими центрами (УЦ) или их доверенными представителями. Владелец сертификата ЭП – физическое лицо, на чье имя выдан сертификат ЭП в удостоверяющем центре. У каждого владельца сертификата на руках два ключа ЭП: закрытый и открытый. Закрытый ключ электронной подписи (ключ ЭП) позволяет генерировать электронную подпись и подписывать электронный документ. Владелец сертификат обязан в тайне хранить свой закрытый ключ. Согласно Федеральному закону №63-ФЗ «Об электронной подписи», имеет место деление на[23]: простую электронную подпись; усиленную неквалифицированную электронную подпись; усиленную квалифицированную электронную подпись. Простая электронная подпись посредством использования кодов, паролей или иных средств подтверждает факт формирования ЭП определенным лицом. алгоритмам (схемам) использованием открытого ключа для создания электронной подписи относятся: DSA (Digital Signature Algorithm) – основан на вычислительной сложности взятия логарифмов в конечных полях. GHR (аббревиатура от фамилий Gennaro, Halevi и Rabin) – схема цифровой подписи с открытым ключом. Схема Шнорра (schnorr scheme) – безопасность алгоритма основывается на трудности вычисления дискретных логарифмов. Уровень защиты всей системы определяется степенью защиты ее самого уязвимого звена, которым, как правило, являются включенные в сеть персональные (клиентские) компьютеры [18]. данном параграфе были изложены основные теоретические сведенья о приложении с архитектурой клиент-сервера и алгоритмы шифрования т.к проблема защиты всегда носила реактивный характер: хакеры находили «дыры» в системе защиты, а компании спешно искали средства, чтобы закрыть обнаружившиеся бреши. Если поначалу понятие «хакер» ассоциировалось с образом способного молодого человека, который «шарит» по чужим сетям ради любопытства, то сегодня пиратский бизнес поставлен на профессиональную основу и им занимаются вполне взрослые и квалифицированные люди. Понятно, что и интерес у них к чужой информации исключительно коммерческий. Существуют хакерские электронные доски объявлений, где фигурируют расценки на добычу секретной информации, идет обмен известными (хакерам) паролями и кодами доступа к чужим информационным системам. |