Назад | Перейти на главную страницу

Как сервер запоминает набор шифров, согласованный при рукопожатии в TLS?

Я нигде не мог найти удовлетворительного ответа на этот вопрос. Надеюсь получить здесь передышку!

Клиент и сервер вступают в рукопожатие, решают, какой набор шифров будет использовать, скажем, X.

Теперь, когда клиент в следующий раз отправит запрос (обычный), он будет зашифрован, а затем отправлен.

Рассмотрим схему: -

Здесь в Transaction1 согласовывается набор шифров? Запрос отправлен в Transaction2. Поскольку http является протоколом без сохранения состояния, Transaction2 не будет знать Transaction1, тогда как он узнает, о чем были переговоры? Используется ли он сеанс ИЛИ эта информация отправляется с каждым запросом? В любом случае запрос должен быть расшифрован, чтобы найти идентификатор сеанса ИЛИ набор шифров. Так что я не думаю, что это будет сделано в любом случае.

Когда используется кэширование сеанса TLS, идентификатор сеанса предоставляется клиентом. в ясном, как часть ClientHello сообщение, которое запускает рукопожатие TLS. (Таким образом, расшифровка не необходимо узнать идентификатор сеанса TLS.) Затем сервер может проверить свой кэш на предмет этого идентификатора сеанса и найти ранее согласованную информацию сеанса SSL, кэшированную для этого идентификатора сеанса, которая будет включать (среди прочего) согласованный набор шифров.

Если, с другой стороны, используется билет сеанса TLS, тогда информация о сеансе TLS (включая набор шифров) зашифрованный сервером и кэшируется клиентом (аналогично cookie). Когда клиент выполняет затем рукопожатие TLS с этим сервером, он отправляет этот зашифрованный «билет сеанса»; сервер расшифровывает билет и получает (среди прочего) согласованный набор шифров.

Надеюсь это поможет!