Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
протоколы_Интерн1.docx
Скачиваний:
5
Добавлен:
27.08.2019
Размер:
115.51 Кб
Скачать

Защищенные сокеты ssl

SSL (англ. Secure Sockets Layer — уровень защищённых сокетов) — криптографический протокол, который обеспечивает установление безопасного соединения между клиентом и сервером. SSL изначально разработан компанией Netscape Communications. Впоследствии на основании протокола SSL 3.0 был разработан и принят стандарт RFC, получивший имя TLS.

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

SSL предоставляет канал, имеющий 3 основные свойства: -Аутентификация. Сервер всегда аутентифицируется, в то время как клиент аутентифицируется в зависимости от алгоритма. -Надежность. Обмен сообщениями включает в себя проверку целостности. -Частность канала. Шифрование используется после установления соединения и используется для всех последующих сообщений.

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

Протокол был разработан для передачи только текста в кодировке ASCII, кроме того, первые спецификации требовали обнуления старшего бита каждого передаваемого байта. Это не даёт возможности отсылать текст на национальных языках (например, кириллице), а также отправлять двоичные файлы (такие как изображения, видеофайлы, программы или архивы). Для снятия этого ограничения был разработан стандарт MIME, который описывает способ преобразования двоичных файлов в текстовые. В настоящее время большинство серверов поддерживают 8BITMIME, позволяющий отправлять двоичные файлы так же просто, как текст. 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 байтов. Значительноe использование протокола SSL привело к формированию протокола HTTPS (Hypertext Transfer Protocol Secure), поддерживающего шифрование. Данные, которые передаются по протоколу HTTPS «упаковываются» в криптографический протокол SSL или TLS, тем самым обеспечивая защиту этих данных. Такой способ защиты широко используется в мире Веб для приложений, в которых важна безопасность соединения, например в платежных системах. В настоящее время HTTPS поддерживается наиболее популярными браузерами. В отличие от HTTP, для HTTPS по умолчанию используется TCP-порт 443.

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

TCPIP

В протоколах TCP и UDP (семейства TCP/IP), порт — системный ресурс выделяемый приложению для связи с другими приложениями, выполняемыми на хостах доступных через сеть (в том числе другим приложением, на этом же хосте) Немного о TCP IP

Главный протокол интернет TCP IP

В протоколах TCP и UDP (семейства TCP/IP), порт — системный ресурс выделяемый приложению для связи с другими приложениями, выполняемыми на хостах доступных через сеть (в том числе другим приложением, на этом же хосте).

Для каждого из протоколов TCP и UDP, стандарт определяет возможность одновременного выделения на хосте до 65536 уникальных портов, идентифицирующихся номерами от 0 до 65535. При передаче по сети номер порта в заголовке пакета используется (вместе с IP-адресом хоста) для адресации конкретного приложения (и конкретного, принадлежащего ему, сетевого соединения).

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

По умолчанию, приложению выдается порт с произвольным (например, ближайшим свободным большим 1024) номером. При необходимости, приложение может запросить конкретный (предопределённый) номер порта. Так веб-серверы обычно открывают для ожидания соединения предопределённый порт 80 протокола TCP. Сетевой порт — условное число от 1 до 65535, указывающее, какому приложению предназначается пакет.

Согласно IP, в каждом пакете присутствуют IP адрес узла-источника и IP адрес узла-назначения. В TCP пакетах дополнительно указываются порт источника и порт назначения. Узел назначения, получив пакет, смотрит на порт назначения и передает пакет соответствующему у себя приложению. Использование портов позволяет независимо использовать TCP протокол сразу многим приложениям на одном и том же компьютере.

Клиентом называют приложение, которое пользуется каким-то сервисом, предоставляемым другим приложением — Сервером, обычно на удаленном компьютере. Практически всегда клиент начинает исходящие соединения, а сервер ожидает входящих соединений (от клиентов), хотя бывают и исключения.

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

TLS

TLS (англ. Transport Layer Security) — криптографический протокол, обеспечивающий защищённую передачу данных между узлами в сети Интернет. TLS-протокол основан на протоколе Netscape SSL версии 3.0 и состоит из двух частей — TLS Record Protocol и TLS Handshake Protocol защищенный протокол TLS