SSL
Установка соединения обеспечивается в несколько этапов:
- Клиент устанавливает соединение с сервером и запрашивает защищенное подключение. Это может обеспечиваться либо установлением соединения на порт, который изначально предназначен для работы с SSL/TLS, например, 443, либо дополнительным запросом клиентом установки защищенного соединения после установки обычного.
- При установке соединения клиент предоставляет список алгоритмов шифрования, которые он «знает». Сервер сверяет полученный список со списком алгоритмов, которые «знает» сам сервер, и выбирает наиболее надежный алгоритм, после чего сообщает клиенту, какой алгоритм использовать
- Сервер отправляет клиенту свой цифровой сертификат, подписанный удостоверяющим центром, и открытый ключ сервера.
- Клиент может связаться с сервером доверенного центра сертификации, который подписал сертификат сервера, и проверить, валиден ли сертификат сервера. Но может и не связываться. В операционной системе обычно уже установлены корневые сертификаты центров сертификации, с которыми сверяют подписи серверных сертификатов, например, браузеры.
- Генерируется сеансовый ключ для защищенного соединения. Это делается следующим образом: — Клиент генерирует случайную цифровую последовательность - сеансовый ключ — Клиент шифрует ее открытым ключом сервера и посылает результат на сервер — Сервер расшифровывает полученную последовательность при помощи закрытого ключа Учитывая, что алгоритм шифрования является асимметричным, расшифровать последовательность может только сервер. При использовании асимметричного шифрования используется два ключа — приватный и публичный. Публичным отправляемое сообщение шифруется, а приватным расшифровывается. Расшифровать сообщение, имея публичный, ключ нельзя.
- Таким образом устанавливается зашифрованное соединение. Данные, передаваемые по нему, шифруются и расшифровываются сеансовым ключом до тех пор, пока соединение не будет разорвано
TLS
Разницы между SSL и TLS нет, потому что TLS 1.0 = SSL 3.1