Недостаток
симметричного шифрования в том, что оба участника должны знать секретное значение (ключ) для
того, чтобы осуществлять обмен сообщениями. Однако вы не можете передавать
эту информацию через Internet, поскольку злоумышленники могут перехватить ее
и в результате получить возможность расшифровывать все последующие
сообщения. Главный трюк SSL заключается в том, что он комбинирует асимметричное
и симметричное шифрование. Асимметричное шифрование используется только
при начальной передаче ключа — другими словами, соглашения о секретном
значении. Затем это секретное значение используется для симметричной шифровки
последующих сообщений, что гарантирует наилучшую возможную
производительность.
Весь процесс работает так:
- Клиент посылает запрос на соединение с сервером.
- Сервер подписывает свой сертификат и отправляет его клиенту. Это
завершает фазу квитирования ("рукопожатия").
- Клиент проверяет, издан ли сертификат СА, которому он доверяет. Если это
так, он переходит к следующему шагу. В сценарии с Web-браузером клиент
может предупредить пользователя "грозным" сообщением о том, что он
распознал СА и разрешает пользователю решать — продолжать ли дальше.
- Клиент сравнивает информацию в сертификате с информацией, присланной
сайтом (включая доменное имя и его открытый ключ). Клиент также
проверяет правильность сертификата стороны сервера — что он не был отменен и
издан заслуживающим доверия СА. Затем клиент принимает соединение.
- Клиент сообщает серверу, какие ключи шифрования он поддерживает для
коммуникации.
- Сервер выбирает наибольшую подходящую длину ключа и информирует
клиента.
- Используя указанную длину ключа, клиент случайным образом генерирует
симметричный ключ шифрования. Он будет использован в период
транзакции между сервером и клиентом. Это гарантирует оптимальную
производительность, поскольку симметричное шифрование намного быстрее
асимметричного.
- Клиент шифрует ключ сеанса, используя открытый ключ сервера (из
сертификата), и затем посылает серверу зашифрованный ключ сеанса.
- Сервер принимает зашифрованный ключ сеанса и расшифровывает его,
используя свой защищенный ключ. После этого и клиент, и сервер имеют
общий секретный ключ, и могут использовать его для шифрования
коммуникаций в период, пока длится сеанс.
Обратите внимание, что симметричный ключ генерируется случайным образом и используется только в период действия сеанса. Это ограничивает риск
нарушения безопасности. Во-первых, сложнее взломать шифрованное сообщения,
используя криптоанализ, поскольку не могут применяться сообщения из других
сеансов. Во-вторых, даже если ключ будет вычислен злоумышленником, он
останется действительным только в период существования одного сеанса.
предыдущая следующая страница вначало главы оглавление
815