Протокол SSL поддерживает следующие методы обмена ключами

Таблица 3. Алгоритмы, определяемые протоколом Handshake

Функция Алгоритм
Обмен ключами RSA, Fortezza, Диффи-Хеллмана
Поточное симметричное шифрование RC4 с ключом 40 или 128 бит
Блочное симметричное шифрование DES, DES40, 3DES, RC2, IDEA, Fortezza
Хеширование MD5, SHA

Таблица 4. Cipher Suite SSL

Обмен ключами Симметричное шифрование Хеширование Электронная подпись
RSA Без шифрования MD5 или SHA  
  RC4-40 MD5  
  RC4-128 MD5 или SHA  
  RC2 CBC 40 MD5  
  IDEA CBC SHA  
  DES40 CBC SHA  
  DES CBC SHA  
  3DES EDE CBC SHA  
Диффи-Хеллмана DES40 CBC SHA DSS или RSA
  DES CBC SHA DSS или RSA
  3DES EDE CBC SHA DSS или RSA

· 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 байтов. Эти числа формируются отдельно для каждого соединения и инкрементируются каждый раз при отправке сообщения через указанное соединение. Этот механизм предоставляет некоторую защиту от атак перехвата и повтора, так как не допускает использование ранее отправленных сообщений.

Закрытый ключ для каждого направления не зависит от всех остальных ключей, и каждое соединение имеет свой собственный ключ.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: