Автоматизированные системы обработки информации и управления

Автор: Пользователь скрыл имя, 11 Января 2012 в 15:12, курсовая работа

Краткое описание

Производственная практика является важным этапом подготовки квалифицированных специалистов. Она является видом учебно-вспомогательного процесса, в ходе которого закрепляется теоретические знания на производстве. Практика является завершающим этапом в процессе подготовки инженера к самостоятельной производственной деятельности. Она являлась подготовкой к работе с аппаратными и программными компонентами локальных вычислительных сетей. Я, Габлая Коба Зазаевич прошел производственную практику с 15.06.2011 по 12.07.2011 в ООО ”Айти сервис” в качестве веб разработчика.В своем отчете я описываю структуру, работу, сферу области деятельности ООО ”Айти сервис”.

Файлы: 1 файл

Чернышев Д.Е.doc

— 214.50 Кб (Скачать)
 
 
    1. Ознакомление  с протоколом SSL

Описание

 

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

SSL предоставляет  канал, имеющий 3 основных свойства:

Аутентификация. Сервер всегда аутентифицируется, в то время  как клиент аутентифицируется в  зависимости от алгоритма.

Целостность. Обмен  сообщениями включает в себя проверку целостности.

Частность канала. Шифрование используется после установления соединения и используется для всех последующих  сообщений.

В протоколе SSL все  данные передаются в виде записей-объектов, состоящих из заголовка и передаваемых данных. Передача начинается с заголовка. Заголовок содержит либо два, либо три байта кода длины. Причём, если старший бит в первом байте кода равен единице, то запись не имеет заполнителя и полная длина заголовка равна двум байтам, иначе запись содержит заполнитель и полная длина заголовка равна трём байтам. Код длины записи не включает в себя число байт заголовка. Длина записи 2-байтового заголовка:

RecLength = ((byte[ 0 ] & 0x7F) << 8) | byte[ 1 ];

Здесь byte[0] и byte[1] —  первый и второй полученные байты. Длина  записи 3-байтового заголовка:

RecLength = ((byte[ 0 ] & 0x3F) << 8) | byte[ 1 ];

Escape = (byte[ 0 ] & 0x40) != 0;

Padding = byte[ 2 ];

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

Теперь отправитель  «заполненной» записи добавляет  заполнитель после имеющихся  данных и шифрует всё это. Причем, содержимое заполнителя никакой  роли не играет. Из-за того, что известен объём передаваемых данных, заголовок может быть сформирован с учетом Padding.

В свою очередь получатель записи дешифрует всё поле данных и получает полную исходную информацию. Затем производится вычисление значения RecLength по известному Padding, и заполнитель  из поля данных удаляется. Данные записи SSL состоят из 3 компонент:

MAC_Data[Mac_Size] — (Message Authentication Code) — код аутентификации  сообщения Padding_Data[Padding] — данные  заполнителя Actual_Data[N] — реальные  данные

Когда записи посылаются открытым текстом, очевидно, что никакие шифры не используются. Тогда длина Padding_Data и MAC_Data равны нулю. При использовании шифрования Padding_Data зависит от размера блока шифра, а MAC_Data зависит от выбора шифра. Пример вычисления MAC_Data:

MacData = Hash(Secret, Actual_Data, Padding_Data, Sequence_Number);

Значение Secret зависит  от того, кто (клиент или сервер) посылает сообщение. Sequence_Number — счётчик, который  инкрементируется как сервером, так  и клиентом. Здесь Sequence_Number представляет собой 32-битовый код, передаваемый хэш-функции в виде 4 байт, причём, первым передаётся старший байт. Для MD2, MD5 MAC_Size равен 16 байтам (128 битам). Для 2-байтового заголовка максимальная длина записи равна 32767 байтов, а для 3-байтного заголовка — 16383 байтов.

 

История и развитие

 

Протокол SSL был изначально разработан компанией Netscape. Версия протокола 1.0 публично не выпускалась. Версия 2.0 была выпущена в феврале 1995 года, но «содержала много недостатков по безопасности, которые, в конечном счёте, привели  к созданию версии 3.0», которая была выпущена в 1996 году. Тем самым версия SSL 3.0 послужила основой для создания протокола TLS 1.0, стандарт протокола Internet Engineering Task Force (IETF) впервые был определен в RFC 2246 в январе 1999 года. Visa, Master Card, American Express и многие другие организации, работающие с интернет деньгами, имеют лицензию на использование протокола SSL для коммерческих целей в сети Интернет.

SSL работает модульным  способом. Тем самым SSL расширяемо  в соответствии с проектом  о поддержке передней и обратной совместимости и переговорам между соединениями в одноранговой сети.

 

Применение

 

Значительное использование  протокола SSL привело к формированию протокола HTTPS (Hypertext Transfer Protocol Secure), поддерживающего  шифрование. Данные, которые передаются по протоколу HTTPS, «упаковываются» в криптографический протокол SSL или TLS, тем самым обеспечивая защиту этих данных. Такой способ защиты широко используется в мире Веб для приложений, в которых важна безопасность соединения, например в платёжных системах. HTTPS поддерживается всеми браузерами. В отличие от HTTP, для HTTPS по умолчанию используется TCP-порт 443.

Изначально виртуальные  частные сети (VPN) на основе SSL разрабатывались  как дополнительная и альтернативная технология удалённого доступа на основе IPsec VPN. Однако, такие факторы, как достаточная надёжность и дешевизна сделали эту технологию привлекательной для организации VPN. Также SSL получил широкое применение в электронной почте.

 

Основные цели протокола  в порядке приоритетности

 

Криптографическая безопасность: SSL устанавливает безопасное соединение между двумя сторонами.

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

Расширяемость: SSL стремится  обеспечить рабочее пространство, в  котором новые открытые ключи  и трудоемкие методы шифрования могут  быть включены по мере необходимости.

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

 

Аутентификация и  обмен ключами

 

SSL поддерживает 3 типа  аутентификации:

аутентификация обеих  сторон (клиент — сервер),

аутентификация сервера  с неаутентифицированным клиентом

полная анонимность.

Всякий раз, когда  сервер аутентифицируется, канал безопасен  против попытки перехвата данных между веб-сервером и браузером, но полностью анонимная сессия по своей сути уязвима к такой  атаке. Анонимный сервер не может  аутентифицировать клиента. Если сервер аутентифицирован, то его сообщение сертификации должно обеспечить верную сертификационную цепочку, ведущую к приемлемому центру сертификации. Проще говоря, аутентифицированный клиент должен предоставить допустимый сертификат серверу. Каждая сторона отвечает за проверку того, что сертификат другой стороны еще не истек и не был отменен. Главная цель процесса обмена ключами — это создание секрета клиента (pre_master_secret), известного только клиенту и серверу. Секрет (pre_master_secret) используется для создания общего секрета (master_secret). Общий секрет необходим для того чтобы создать сообщение для проверки сертификата, ключей шифрования, секрета MAC (message authentication code) и сообщения «finished». При посылке верного сообщения «finished», тем самым стороны докажут что они знают верный секрет (pre_master_secret).

 

Анонимный обмен ключами

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

 

Обмен ключами при  использовании RSA и аутентификация

В этом случае обмен  ключами и аутентификация сервера  может быть скомбинирована. Открытый ключ также может содержаться в сертификате сервера или может быть использован временный ключ RSA, который посылается в сообщении обмена ключами от сервера. Когда используется временный ключ RSA, сообщения обмена подписываются server’s RSA или сертификат DSS. Сигнатура включает текущее значение сообщения Client_Hello.random, таким образом старые сигнатуры и старые временные ключи не могут повторяться. Сервер может использовать временный ключ RSA только однажды для создания сессии. После проверки сертификата сервера клиент шифрует секрет (pre_master_secret) при помощи открытого ключа сервера. После успешного декодирования секрета (pre_master_secret) создается сообщение «finished», тем самым сервер демонстрирует, что он знает частный ключ соответствующий сертификату сервера.

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

 

Обмен ключами при  использовании Diffie-Hellman и аутентификация

В этом случае сервер может также поддерживать содержащий конкретные параметры алгоритм Диффи-Хеллмана или может использовать сообщения  обмена ключами от сервера для  посылки набора временных параметров подписанных сертификатами DSS или RSA. Временные параметры хэшируются с сообщением hello.random перед подписанием, для того чтобы злоумышленник не смог совершить повтор старых параметров. В любом случае клиент может проверить сертификат или сигнатуру, для уверенности, что параметры принадлежат серверу.

Если клиент имеет  сертификат, содержащий параметры алгоритма Diffie-Hellman, то сертификат также содержит информацию требуемую для того чтобы  завершить обмен ключами. Заметим, что в этом случае клиент и сервер должны будут сгенерировать те же Diffie-Hellman результаты (pre_master_secret), каждый раз когда они устанавливают соединение. Для того чтобы предотвратить остановку секрета (pre_master_secret) в памяти компьютера на время дольше, чем необходимо, секрет должен быть переведен в общий секрет (master_secret) настолько быстро, на сколько это возможно. Параметры клиента должны быть совместимы с теми, которые поддерживает сервер для того, чтобы работал обмен ключами.

 

Протокол записи (Record Layer)

 

Протокол записи —  это уровневый протокол. На каждом уровне сообщения включают поля для длины, описания и проверки. Протокол записи принимает сообщения, которые нужно передать, фрагментирует данные в управляемые блоки, разумно сжимает данные, применяя MAC (message authentication code), шифрует и передаёт результат. Полученные данные он расшифровывает, проверяет, распаковывает, собирает и доставляет к более верхним уровням клиента.

Существует четыре протокола записи: протокол рукопожатия (handshake protocol), протокол тревоги (alert protocol), протокол изменения шифра (the change cipher spec protocol), протокол приложения (application data protocol). Если SSL реализация получает тип записи, который ей неизвестен, то эта запись просто игнорируется. Любой протокол созданный для использования совместно с SSL должен быть хорошо продуман, так как будет иметь дело с атаками на него. Заметим, что из-за типа и длины записи, протокол не защищен шифрованием. Внимание следует уделить тому, чтобы минимизировать трафик.

 

Протокол рукопожатия (handshake)

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

Рукопожатие начинается тогда, когда клиент подключается к SSL серверу. Запрос безопасного соединения представляет собой список поддерживаемых шифров и хэш-функций.

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

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

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

Информация о работе Автоматизированные системы обработки информации и управления