TLS (Transport Layer Security) — это криптографический протокол, обеспечивающий безопасное общение в сети, например, между веб-браузером и сервером.
Ключевые функции:
- Аутентификация: Проверка подлинности сторон (обычно с использованием X.509 сертификатов).
- Конфиденциальность: Шифрование передаваемых данных для исключения несанкционированного доступа.
- Целостность: Проверка того, что данные не были изменены в процессе передачи.
Протокол TLS работает на транспортном уровне модели OSI (или выше, в зависимости от конкретной реализации и контекста). Он пришел на смену SSL (Secure Sockets Layer). Текущие актуальные версии: TLS 1.2 и TLS 1.3.
В контексте Go, TLS используется в стандартной библиотеке net/http для поддержки HTTPS.
go
Взаимодействие происходит в несколько этапов (Handshake):
- ClientHello: Клиент отправляет список поддерживаемых версий TLS, наборов шифров и другие параметры.
- ServerHello: Сервер выбирает оптимальные параметры из предложенных клиентом.
- Certificate: Сервер отправляет свой сертификат.
- ServerKeyExchange (опционально): Обмен ключами шифрования.
- CertificateRequest (опционально): Сервер может запросить сертификат клиента для двусторонней аутентификации.
- ServerHelloDone: Сервер сообщает о завершении своей части Handshake.
- Certificate (опционально): Клиент отправляет свой сертификат.
- ClientKeyExchange: Клиент отправляет зашифрованный с использованием публичного ключа сервера pre-master секрет, который используется для генерации сессионных ключей.
- CertificateVerify (опционально): Клиент проверяет подпись сервера.
- ChangeCipherSpec: Клиент и сервер сообщают о переходе на использование согласованных сессионных ключей.
- Finished: Финализация Handshake с обменом сообщений, зашифрованных новыми ключами, для проверки успешности процедуры.
TLS обеспечивает надежный уровень безопасности для сетевых коммуникаций, являясь стандартом для HTTPS и других протоколов, требующих защиты данных.