В этой лекции объясняется, как ключ для шифрования в TLS передаётся без использования сложного алгоритма Diffie-Hellman.
Диаграмма процесса
Перед отправкой сертификата с сервера в веб-браузер происходит согласование набора шифров. Клиент предлагает поддерживаемые наборы шифров, а веб-сервер выбирает один из них. Затем веб-сервер отправляет сертификат веб-браузеру. Веб-браузер проверяет сертификат. Успешная проверка означает аутентификацию веб-сервера. После этого начинается генерация ключа безопасности. Веб-браузер генерирует случайный ключ и шифрует его с помощью открытого ключа, полученного из сертификата веб-сервера. Зашифрованный ключ отправляется на веб-сервер. Любой может перехватить этот зашифрованный ключ, но расшифровать его и получить доступ к данным можно только при наличии соответствующего закрытого ключа, которым обладает только веб-сервер. Используя свой закрытый ключ, веб-сервер расшифровывает ключ. После расшифровки обе стороны (веб-браузер и веб-сервер) обладают одним и тем же ключом для шифрования данных. Так передаётся ключ для шифрования без сложного алгоритма. Об алгоритме Diffie-Hellman поговорим в следующей лекции.
Недостатки такого способа
На стороне веб-браузера используется открытый ключ веб-сервера для шифрования данных, а сертификат веб-сервера — для аутентификации. Это означает, что одна и та же пара ключей RSA используется для аутентификации и шифрования данных. Это небезопасно, так как пара открытый/закрытый ключ статична и существует до тех пор, пока действителен сертификат веб-сервера. Доступ к закрытому ключу веб-сервера позволит расшифровать всё общение между этим веб-сервером и другими клиентами, включая ключ для шифрования данных.
Резюме
Следует избегать такого способа передачи ключа, когда это возможно. Пара ключей RSA должна использоваться только для аутентификации веб-сервера, а не для шифрования данных.
В следующей лекции мы рассмотрим генерацию ключа с использованием другого алгоритма.