Интернет магазин китайских планшетных компьютеров



Компьютеры - TLS - Алгоритм процедуры установления соединения по протоколу TLS handshake

05 июня 2011


Оглавление:
1. TLS
2. Алгоритм процедуры установления соединения по протоколу TLS handshake
3. Алгоритмы, использующиеся в TLS



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

  • Последовательность действий при установлении TLS-соединения:
    • клиент подключается к серверу, поддерживающему TLS, и запрашивает защищенное соединение;
    • клиент предоставляет список поддерживаемых алгоритмов шифрования и хеш-функций;
    • сервер выбирает из списка, предоставленного клиентом, наиболее устойчивые алгоритмы, которые также поддерживаются сервером, и сообщает о своем выборе клиенту;
    • сервер отправляет клиенту цифровой сертификат для собственной аутентификации. Обычно цифровой сертификат содержит имя сервера, имя доверенного центра сертификации и открытый ключ сервера;
    • клиент может связаться с сервером доверенного центра сертификации и подтвердить аутентичность переданного сертификата до начала передачи данных;
    • для того чтобы сгенерировать сеансовый ключ для защищенного соединения, клиент шифрует случайно сгенерированную цифровую последовательность открытым ключом сервера и посылает результат на сервер. Учитывая специфику алгоритма асимметричного шифрования, используемого для установления соединения, только сервер может расшифровать полученную последовательность, используя свой закрытый ключ;
Handshake в деталях

Согласно протоколу TLS приложения обмениваются записями, инкапсулирующими информацию, которая должна быть передана. Каждая из записей может быть сжата, дополнена, зашифрована или идентифицирована MAC в зависимости от текущего состояния соединения. Каждая запись в TLS содержит следующие поля: content type, поле, указывающее длину пакета, и поле, указывающее версию протокола TLS.

Когда соединение только устанавливается, взаимодействие идет по протоколу TLS handshake, content type которого 22.

Ниже описан простой пример установления соединения:

  1. Клиент посылает сообщение ClientHello, указывая наиболее последнюю версию поддерживаемого TLS протокола, случайное число и список поддерживаемых методов шифрования и сжатия, подходящих для работы с TLS.
  2. Сервер отвечает сообщением ServerHello, содержащим: выбранную сервером версию протокола, случайное число, посланное клиентом, подходящий алгоритм шифрования и сжатия из списка предоставленного клиентом.
  3. Сервер посылает сообщение Certificate, которое содержит цифровой сертификат сервера
  4. Сервер может запросить сертификат у клиента, в таком случае соединение будет взаимно аутентифицировано.
  5. Сервер отсылает сообщение ServerHelloDone, идентифицирующее окончание handshake.
  6. Клиент отвечает сообщением ClientKeyExchange, которое содержит открытый ключ PreMasterSecret или ничего.
  7. Клиент и сервер, используя ключ PreMasterSecret и случайно сгенерированные числа, вычисляют общий секретный ключ. Вся остальная информация о ключе будет получена из общего секретного ключа.
  8. Клиент посылает сообщение ChangeCipherSpec, которое указывает на то, что вся последующая информация будет зашифрована установленным в процессе handshake алгоритмом, используя общий секретный ключ. Это сообщения уровня записей и поэтому имеет тип 20, а не 22.
  9. Клиент посылает сообщение Finished, которое содержит хеш и MAC, сгенерированные на основе предыдущих сообщений handshake.
  10. Сервер пытается расшифровать Finished-сообщение клиента и проверить хеш и МАС. Если процесс расшифровки или проверки не удается, handshake считается неудавшимся, и соединение должно быть оборвано.
  11. Сервер посылает ChangeCipherSpec и зашифрованное сообщение Finished, и в свою очередь клиент тоже выполняет расшифровку и проверку.

С этого момента handshake считается завершённым, протокол установленным. Все последующее содержимое пакетов идет с типом 23, а все данные будут зашифрованы.



Просмотров: 2544


<<< Time Stamp Protocol
Trusted Platform Module >>>