Установка соединения TLS
В новой лекции по компьютерным сетям рассказываю, как выполняется установка соединения в протоколе TLS. Перед тем как передавать данные по TLS, клиент и сервер должны выполнить несколько предварительных действий:
- Договориться, какой набор шифров TLS будет использоваться для защиты данных.
- Договориться, какой набор шифров TLS будет использоваться для защиты данных.
- Проверить подлинность сервера, к которому подключается клиент (иногда сервер дополнительно проверяет подлинность клиента).
- Обменяться ключами симметричного шифрования и MAC.
Именно эти действия и выполняются в процессе соединения.
В лекции рассказываю, как устроена установка соединения в современной версии TLS 1.3. Для этого в TLS есть специальный Handshake Protocol, который работает поверх протокола записей (Record Protocol).
Также в TLS 1.3 есть сокращенный процесс установки соединения 0-RTT, который нужен для восстановления существующей сессии TLS. Если клиент и сервер ранее уже устанавливали соединения и обменивались ключами симметричного шифрования, то с помощью 0-RTT можно переиспользовать эти ключи и сразу в первом же сообщении отправлять зашифрованные данные. Однако это негативно влияет на безопасность.
Чтобы корректно закрыть соединение, клиент и сервер должны отправить друг другу сообщения close_notify протокола оповещений (Alert Protocol). В случае ошибки соединение разрывается в одностороннем порядке, при этом нужно отправить сообщение об ошибке Error Alert.
протокол tls
установка соединения tls