
Протокол ssl поддерживает следующие методы обмена ключами
RSA. Секретный ключ шифруется с помощью открытого ключа получателя. Для этого отправителю должен быть доступен сертификат этого открытого ключа.
Анонимный метод Диффи-Хеллмана. Используется базовый алгоритм Диффи-Хеллмана, но без аутентификации сторон. Такой режим уязвим для вторжений типа «человек в середине» (man-in-the-middle), что делает его непригодным для коммерческого использования.
Метод Диффи-Хеллмана с фиксированными параметрами. Используется базовый алгоритм Диффи-Хеллмана, при этом сертификат сервера содержит открытые параметры алгоритма. Клиент посылает свои открытые параметры будущего ключа либо в сертификате, если требуется аутентификация клиента, либо в сообщении обмена ключами.
Метод Диффи-Хеллмана с одноразовыми параметрами (Ephemeral Diffie-Hellman) самый безопасный из трех представленных модификаций метода Диффи-Хеллмана. Предполагает использование временных (одноразовых) секретных ключей. Стороны обмениваются открытыми параметрами базового алгоритма Диффи-Хеллмана, подписанными с помощью закрытых ключей (RSA или DSS) отправителя. Получатель для проверки подписи использует соответствующий сертифицированный открытый ключ.
Fortezza. Метод, используемый в одноименной схеме шифрования.
Переменные состояния соединения SSL. Параметры, определяющие состояние соединения в течение сеанса SSL, могут устанавливаться индивидуально для каждого нового соединения. Эти параметры следующие:
Два случайных числа (идентификатора), server_random и client_random, длиной 32 байта каждый. Эти числа вычисляются сервером и клиентом соответственно в момент установления сеанса и для каждого нового соединения. Эти числа используются для вычисления закрытого ключа, что означает передачу чисел в незашифрованном виде в момент установления сеанса. Напротив, при установлении дополнительного соединения при активном сеансе используется процесс шифрования и числа передаются зашифрованными. Использование этих чисел защищает от атак с повторным применением сообщений, перехваченных в другом соединении (атака перехвата и повтора).
Два закрытых ключа, server MAC write secret и client MAC write secret. Эти ключи используются для вычисления кода аутентификации сообщения.
Разделяемый двумя сторонами секретный ключ для симметричного шифрования данных, называемый server write key на стороне сервера и client write key на стороне клиента. Длина ключа зависит от выбранного алгоритма шифрования и экспортных ограничений.
Два вектора инициализации (IV) для процедуры симметричного шифрования в режиме Cipher Block Chaining (CBC). Один вектор для сервера, другой для клиента. Размер вектора зависит от используемого алгоритма.
Два последовательных числа (порядковых номера), одно для сервера, другое для клиента, каждое длиной 8 байтов. Эти числа формируются отдельно для каждого соединения и инкрементируются каждый раз при отправке сообщения через указанное соединение. Этот механизм предоставляет некоторую защиту от атак перехвата и повтора, так как не допускает использование ранее отправленных сообщений.
Закрытый ключ для каждого направления не зависит от всех остальных ключей, и каждое соединение имеет свой собственный ключ.