Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.Начало.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
7 Мб
Скачать
☆
    1. Протокол ssl

Прикладные протоколы HTTP, SMTP, POP3, IMAP были созданы во времена, когда в сети Интернет не существовало способов несанкционированного использования компьютеров. Сейчас Интернет нельзя представить без защиты данных. Имена пользователей, номера кредитных карт и другая информация, передаваемая в открытом формате, уязвимы для вмешательства. В целях безопасности используются протоколы HTTPS, SMTPS, POP3S, IMAPS, SSH и др., которые хранят конфиденциальную информацию с применением SSL-шифрования.

      1. Шифрование данных

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

Симметричный ключ, применяется для шифрования данных на клиенте и сервере. Шифрование симметричным ключом обычно используется для большого объема данных, так как этот процесс быстрый. Обычно делают это с помощью алгоритмов DES (Data Encryption Standard) и AES (Advanced Encryption Standard.

Как правило, алгоритмы ассиметричных ключей более стойкие, их практически невозможно взломать. Для шифрования с применением ассиметричного (открытого) ключа существуют два ключа. Один из них используется в качестве открытого, сертификационный центр публикует открытый ключ в самом сертификате. Секретный ключ держится в тайне. Эти ключи работают в паре: если открытый ключ предназначен для шифрования данных, то расшифровать их можно только секретным ключом. Если данные шифруются секретным ключом, то открытый ключ должен их расшифровывать. Открытый ключ для шифрования данных доступен любому пользователю и использовать его для шифрования данных, расшифровать которые может только пользователь, у которого есть секретный ключ. Если пользователь шифрует данные, с помощью своего секретного ключа, любой другой может расшифровать данные, применяя соответствующий открытый ключ. Это является основой для цифровых подписей. Протокол SSL использует шифрование с открытым ключом, чтобы подтвердить клиенту подлинность сервера, и наоборот.

Самый распространенный алгоритм, к которому прибегают при шифровании с ассиметричными ключами – RSA.

Протокол SSL, совместно разработанный Netscape Communications и RSA Data Security, обеспечивает установление безопасного соединения между клиентом и сервером и безопасность по установленному сетевому соединению. На основании протокола SSL 3.0 был разработан стандарт RFC, получивший имя TLS.

Протокол SSL обеспечивает конфиденциальность обмена данными между клиентом и сервером, использующими TCP/IP на основе протокола HTTPS (Hypertext Transfer Protocol Secure). Данные, которые передаются по протоколу HTTPS, «упаковываются» в криптографический протокол SSL или TLS. В отличие от HTTP, для HTTPS по умолчанию используется TCP-порт 443 вместо 80. Подключение по SSL инициируется вызовом URL-адреса, начинающегося с https:// вместо http:// .

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

• аутентификация и клиента и сервера;

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

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

Когда сервер аутентифицируется, канал безопасен для попытки перехвата данных между веб-сервером и браузером. Аутентифицированный клиент должен предоставить сертификат серверу. Главная цель процесса обмена ключами – это создание секрета клиента (pre_master_secret), известного только клиенту и серверу и используемого для создания общего секрета (master_secret). Общий секрет необходим, чтобы создать сообщение для проверки сертификата, ключей шифрования, секрета MAC (Message Authentication Code) и сообщения «finished».

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

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

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

Протокол записи (Record Layer). Существует четыре протокола записи: протокол рукопожатия (handshake protocol), протокол тревоги (alert protocol), протокол изменения шифра (the change cipher spec protocol), протокол приложения (application data protocol).

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

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

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

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

Сообщение тревоги с критическим уровнем незамедлительно прерывает соединение.

Протокол приложения ADP (Application Data Protocol) применяется для шифрования данных на основе текущего состояния соединения.

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

Безопасный SSL-протокол размещается между двумя протоколами: тем, который использует программа-клиент (HTTP, FTP, IMAP, LDAP и т.д.) и транспортным протоколом TCP/IP. Создавая заслонки с обеих сторон, он защищает и передает данные на транспортный уровень.

Хеширование. Во время подтверждения подключения согласовывается также хеш-алгоритм. Хеш-функция принимает на входе сообщение произвольной длины и возвращает значение фиксированной длины. Хеш-значения играют роль идентификационной отметки и являются уникальными. Популярные хеш-алгоритмы – MD5 (Message Digest 5) и SHA-1 (Standard Hash Algorithm). MD5 создает 128-битное хеш-значение, а SHA-1 – 160-битное хеш-значение. Хеш-значение применяется для проверки целостности переданных данных. Это значение создается с использованием MAC(Message Authentication Code) – код проверки сообщения. MAC гарантирует, что данные не были изменены во время передачи. SSL использует MAC.