Сурков Л.В. - Туннелирование соединений с использованием протокола SSL (1075635), страница 3
Текст из файла (страница 3)
Если это происходит, то клиент и сервер вычислят различныезначения хэшей сообщения рукопожатия. В результате чего стороны не примут друг отдруга сообщения Finished. Без знания секрета злоумышленник не сможет исправитьсообщение Finished, поэтому атака может быть обнаружена.Алгоритмы, использующиеся в SSL: Для обмена ключами и проверки их подлинности применяются: RSA, DiffieHellman, ECDH, SRP, PSK. Для аутентификации: RSA, DSA, ECDSA. Для симметричного шифрования: RC2, RC4, IDEA, DES, Triple DES или AES,Camellia. Для хеш-функций: SHA, MD5, MD4 и MD2.9МГТУ им. БауманаКафедра ИУ-62011Сурков Л.В.Корпоративные сетиЛабораторный практикум «Туннелирование соединений с использованием протокола SSL»Rev.
01TLSTLS (Transport Layer Security) — криптографический протокол, обеспечивающийзащищённую передачу данных между узлами в сети Интернет.TLS-протокол основан на протоколе Netscape SSL версии 3.0 и состоит из двух частей— TLS Record Protocol и TLS Handshake Protocol. Различия между SSL 3.0 и TLS 1.0незначительны, но, всё же они есть.TLS предоставляет возможности аутентификации и безопасной передачи данных черезИнтернет с использованием криптографических средств. Часто происходит лишьаутентификация сервера, в то время как клиент остается неаутентифицированным.
Длявзаимной аутентификации каждая из сторон должна поддерживать инфраструктуруоткрытого ключа (PKI), которая позволяет защитить клиент-серверные приложения отперехвата сообщений, редактирования существующих сообщений и создания поддельных.SSL включает в себя три основных фазы: Диалог между сторонами, целью которого является выбор алгоритмашифрования Обмен ключами на основе криптосистемс открытымключомилиаутентификация на основе сертификатов. Передача данных, шифруемых при помощи симметричных алгоритмовшифрованияКлиент и сервер, работающие по TLS, устанавливают соединение, используяпроцедуру handshake («рукопожатие»).
В течение этого handshake клиент и серверпринимают соглашение относительно параметров, используемых для установлениязащищенного соединения.Последовательность действий при установлении TLS-соединения: клиент подключается к серверу, поддерживающему TLS, и запрашиваетзащищенное соединение; клиент предоставляет список поддерживаемых алгоритмов шифрования и хешфункций; сервер выбирает из списка, предоставленного клиентом, наиболее устойчивыеалгоритмы, которые также поддерживаются сервером, и сообщает о своемвыборе клиенту; серверотправляетклиентуцифровойсертификатдлясобственнойаутентификации. Обычно цифровой сертификат содержит имя сервера, имядоверенного центра сертификации и открытый ключ сервера;10МГТУ им.
БауманаКафедра ИУ-62011Сурков Л.В.Корпоративные сетиЛабораторный практикум «Туннелирование соединений с использованием протокола SSL»Rev. 01 клиент может связаться с сервером доверенного центра сертификации иподтвердить аутентичность переданного сертификата до начала передачиданных; для того чтобы сгенерировать сеансовый ключ для защищенного соединения,клиент шифрует случайно сгенерированную цифровую последовательностьоткрытым ключом сервера и посылает результат на сервер. Учитываяспецифику алгоритма асимметричного шифрования, используемого дляустановления соединения, только сервер может расшифровать полученнуюпоследовательность, используя свой закрытый ключ;Согласно протоколу TLS приложения обмениваются записями, инкапсулирующими(хранящими внутри себя) информацию, которая должна быть передана.
Каждая из записейможет быть сжата, дополнена, зашифрована или идентифицирована MAC (кодаутентификации сообщения) в зависимости от текущего состояния соединения (состоянияпротокола). Каждая запись в TLS содержит следующие поля: content type (определяет типсодержимого записи), поле, указывающее длину пакета, и поле, указывающее версиюпротокола TLS.Когда соединение только устанавливается, взаимодействие идет по протоколу TLShandshake, content type которого 22.Простой пример установления соединения: Клиент посылает сообщение ClientHello, указывая наиболее последнюю версиюподдерживаемого TLS протокола, случайное число и список поддерживаемыхметодов шифрования и сжатия, подходящих для работы с TLS. Сервер отвечает сообщением ServerHello, содержащим: выбранную серверомверсию протокола, случайное число, посланное клиентом, подходящийалгоритм шифрования и сжатия из списка предоставленного клиентом. Сервер посылает сообщение Certificate, которое содержит цифровой сертификатсервера (в зависимости от алгоритма шифрования этот этап может бытьпропущен) Сервер может запросить сертификат у клиента, в таком случае соединениебудет взаимно аутентифицировано. Сервер отсылает сообщение ServerHelloDone, идентифицирующее окончаниеhandshake. Клиент отвечает сообщением ClientKeyExchange, которое содержит открытыйключ PreMasterSecret или ничего (опять же зависит от алгоритма шифрования).11МГТУ им.
БауманаКафедра ИУ-62011Сурков Л.В.Корпоративные сетиЛабораторный практикум «Туннелирование соединений с использованием протокола SSL»Rev. 01 Клиент и сервер, используя ключ PreMasterSecret и случайно сгенерированныечисла, вычисляют общий секретный ключ. Вся остальная информация о ключебудет получена из общего секретного ключа (и сгенерированных клиентом исервером случайных значений). Клиент посылает сообщение ChangeCipherSpec, которое указывает на то, чтовся последующая информация будет зашифрована установленным в процессеhandshake алгоритмом, используя общий секретный ключ. Это сообщенияуровня записей и поэтому имеет тип 20, а не 22. Клиент посылает сообщение Finished, которое содержит хеш и MAC,сгенерированные на основе предыдущих сообщений handshake. Сервер пытается расшифровать Finished-сообщение клиента и проверить хеш иМАС.
Если процесс расшифровки или проверки не удается, handshake считаетсянеудавшимся, и соединение должно быть оборвано. Сервер посылает ChangeCipherSpec и зашифрованное сообщение Finished, и всвою очередь клиент тоже выполняет расшифровку и проверку.С этого момента handshake считается завершённым, протокол установленным. Всепоследующее содержимое пакетов идет с типом 23, а все данные будут зашифрованы.Также можно привести ещё один пример работы протокола с более подробнымобъяснением:На рисунке описаны основные сообщения, которыми обмениваются пользователь(Боб) и веб-сервер (Элис). Пользователь, использует браузер для доступа к серверу,который поддерживает SSL.
Такая ситуация может возникать, например, при заказетовара по Интернет.12МГТУ им. БауманаКафедра ИУ-62011Сурков Л.В.Корпоративные сетиЛабораторный практикум «Туннелирование соединений с использованием протокола SSL»Rev. 01Прежде чем веб-сервер начнет взаимодействовать с клиентом, на веб-сервере долженбыть установлен сертификат подписанный центром сертификатов (CA). Браузер клиентадолжен знать этот центр сертификатов (доверять ему).
Это значит, что сертификат этогоцентра сертификатов уже установлен в браузере и срок действия сертификата не истек.Если сертификат не установлен, то при доступе клиента к веб-серверу, у него высветитсясообщение предлагающее принять или отклонить сертификат веб-сервера, так как онподписан неизвестным центром сертификатов.Для получения сертификата Элис необходимо:1. Подготовить запрос на получение сертификата для отправки его CA:o Сгенерировать пару открытый/закрытый ключ (с помощью утилитыгенерации ключей, которая обычно есть в веб-сервере).o Сгенерировать запрос на получение сертификата, который включаетвсебяидентифицирующуюинформациюокомпанииЭлис(Distinguished Name) и открытый ключ.o Отправить запрос на получение сертификата выбранному CA(например, запрос может быть отправлен почтой).2.
В ответ на запрос CA отправляет Элис цифровой сертификат, вкотором содержится открытый ключ Элис, подписанный CA.3. После получения ответа от CA, Элис помещает цифровой сертификатв базу сертификатов веб-сервера. После того как Элис установила13МГТУ им. БауманаКафедра ИУ-62011Сурков Л.В.Корпоративные сетиЛабораторный практикум «Туннелирование соединений с использованием протокола SSL»Rev. 01цифровой сертификат подписанный CA, она может начинать работу склиентами.
Когда Боб обращается к веб-серверу Элис, выполняютсятакие действия:4. Боб обращается с веб-серверу Элис. При этом броузер Бобаавтоматически скачает цифровой сертификат с веб-сервера Элис.5. Браузер Боба определит доверяет ли он CA, который подписалцифровой сертификат Элис:o Сертификат CA дожен быть уже установлен в браузере Боба.o Если сертификат установлен и срок его действия не истек, тодальнейший процесс будет прозрачным для Боба.o Браузер дешифрует цифровой сертификат Элис с помощью открытогоключа CA, который получен из цифрового сертификата CA.o Теперь у браузера Боба есть открытый ключ Элис.6. Боб отправляет Элис сообщение в котором содержится сессионныйключ и шифрует его с помощью открытого ключа Элис:o Сессионный ключ используется для шифрования трафика между Бобом и Элис.o Этот ключ симметричный и будет использоваться для шифрования идешифрования данных передаваемых между Бобом и Элис.o Так как сообщение можно расшифровать только закрытым ключем Элис, тосессионный ключ безопасно доставляется на веб-сервер Элис.7.