Изменения

Перейти к: навигация, поиск

SSL/TLS

3510 байт добавлено, 01:10, 12 декабря 2016
Добавил record и стаб введения.
=Протоколы SSL и TLS=
'''SSL (Secure Sockets Layer)''' и '''TLS (Transport Level Security)''' {{---}} криптографические протоколы, обеспечивающие защищенную передачу данных в компьютерной сети.
=Соединение, защищенное протоколом TLS, обладает одним или несколькими следующими свойствами:* ''Безопасность'': симметричное шифрование защищает передаваемую информацию от прочтения посторонними лицами.* ''Аутентификация'': "личность" участника соединения можно проверить с помощью асимметричного шифрования.* ''Целостность'': каждое сообщение содержит код ('''Message Authentication Code, MAC'''), с помощью которого можно проверить, что данные не были изменены или потеряны в процессе передачи. Протокол TLS делится на два слоя: TLS Record и TLS Handshake. ===Подтверждение связи (handshake)====
[[Файл:Handshake.png|border|right|Схема подтверждения связи]]
# Клиент посылает сообщение '''ClientHello''', указывающее версию SSL или TLS и поддерживаемые клиентом методы шифрования (англ. ''CipherSuite''). Это сообщение также содержит случайное число (набор байт), которое используется в последующих вычислениях. Протокол также позволяет указать поддерживаемые клиентом методы сжатия данных.
# Если сервер потребовал у клиента сертификат, клиент отсылает набор байт, зашифрованный его секретным ключом, и свой цифровой сертификат, или оповещение об отсутствии сертификата.
# Сервер проверяет сертификат клиента.
# Клиент и сервер отправляют друг другу сообщение '''ChangeCipherSpec''', объявляя об изменении режима передачи данных с незащищенного на защищенный.
# Клиент отправляет сообщение '''Finished''', зашифрованное секретным ключом, и таким образом завершает подтверждение связи со своей стороны.
# Аналогичные действия производит сервер.
# На протяжении данной сессии клиент и сервер могут обмениваться сообщениями, зашифрованными секретным ключом.
 
====Возобновление сессии====
# Клиент посылает сообщение '''ClientHello''', используя ID сессии, которую нужно возобновить.
# Сервер проверяет, есть ли у него в кэше соответствующий идентификатор. Если есть и сервер способен возобновить сессию, он отсылает клиенту сообщение '''ServerHello''' с этим же ID сессии. Если нет, сервер генерирует новый ID сессии и выполняет процедуру handshake с клиентом.
# Клиент и сервер обмениваются сообщениями '''ChangeCipherSpec''', а затем '''Finished'''.
# Передача данных по защищенному каналу возобновляется.
 
===Протокол записи===
Этот слой защищает данные с помощью ключей, полученных при подтверждении связи, и проверяет целостность и источник входящих сообщений. Он выполняет следующие функции:
* Разбиение исходящих сообщений на блоки нужного размера и "склеивание" входящих сообщений.
* Сжатие исходящих сообщений и распаковку входящих (используется не всегда).
* Применение кода аутентификации к исходящим сообщениям и проверку входящих с помощью MAC.
* Шифрование исходящих сообщений и дешифровку входящих.
 
После обработки протоколом TLS Record зашифрованные данные передаются на слой TCP для передачи.
74
правки

Навигация