TLS

TLS (англ.arrow-up-right transport layer security — Протокол защиты транспортного уровня[1]arrow-up-right), как и его предшественник SSLarrow-up-right (англ.arrow-up-right secure sockets layer — слой защищённых сокетов), — криптографические протоколыarrow-up-right, обеспечивающие защищённую передачу данных между узлами в сети Интернетarrow-up-right[2]arrow-up-right. TLS и SSL используют асимметричное шифрованиеarrow-up-right для аутентификации, симметричное шифрованиеarrow-up-right для конфиденциальности и коды аутентичности сообщенийarrow-up-right для сохранения целостности сообщений.

Данный протокол широко используется в приложениях, работающих с сетью Интернетarrow-up-right, таких как веб-браузерыarrow-up-right, работа с электронной почтойarrow-up-right, обмен мгновенными сообщениямиarrow-up-right и IP-телефония (VoIP)arrow-up-right.

TLS-протокол основан на спецификации протокола SSLarrow-up-right версии 3.0, разработанной компанией Netscape Communicationsarrow-up-right[3]arrow-up-right. Сейчас развитием стандарта TLS занимается IETFarrow-up-right. Последнее обновление протокола было в RFC 5246arrow-up-right (август 2008) и RFC 6176arrow-up-right (март 2011).

TLS даёт возможность клиент-серверным приложениям осуществлять связь в сети таким образом, что нельзя производить прослушиваниеarrow-up-right пакетов и осуществить несанкционированный доступarrow-up-right.

Так как большинство протоколов связи может быть использовано как с, так и без TLS (или SSL), при установке соединения необходимо явно указать серверу, хочет ли клиент устанавливать TLS. Это может быть достигнуто либо с помощью использования унифицированного номера портаarrow-up-right, по которому соединение всегда устанавливается с использованием TLS (как, например, порт 443 для HTTPSarrow-up-right), либо с использованием произвольного порта и специальной команды серверу со стороны клиента на переключение соединения на TLS с использованием специальных механизмов протокола (как, например, STARTTLSarrow-up-right для протоколов электронной почтыarrow-up-right). Как только клиент и сервер договорились об использовании TLS, им необходимо установить защищённое соединение. Это делается с помощью процедуры подтверждения связи[4]arrow-up-right[5]arrow-up-right. Во время этого процесса клиент и сервер принимают соглашение относительно различных параметров, необходимых для установки безопасного соединения.

Основные шаги процедуры создания защищённого сеанса связи:

  • клиент подключается к серверу, поддерживающему TLS, и запрашивает защищённое соединение;

  • клиент предоставляет список поддерживаемых алгоритмов шифрованияarrow-up-right и хеш-функцийarrow-up-right;

  • сервер выбирает из списка, предоставленного клиентом, наиболее надёжные алгоритмы среди тех, которые поддерживаются сервером, и сообщает о своём выборе клиенту;

  • сервер отправляет клиенту цифровой сертификат для собственной аутентификации. Обычно цифровой сертификатarrow-up-right содержит имя сервера, имя удостоверяющего центра сертификацииarrow-up-right и открытый ключarrow-up-right сервера;

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

  • для шифрования сессии используется сеансовый ключarrow-up-right. Получение общего секретного сеансового ключа клиентом и сервером проводится по протоколу Диффи-Хеллманаarrow-up-right. Существует исторический метод передачи сгенерированного клиентом секрета на сервер при помощи шифрования асимметричной криптосистемой RSA (используется ключ из сертификата сервера). Данный метод не рекомендован, но иногда продолжает встречаться на практике.

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

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

Last updated