Опубликован: 26.01.2005 | Уровень: специалист | Доступ: платный | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 10:

Безопасное сетевое взаимодействие (часть 3)

Обмен ключа Диффи-Хеллмана

Обмен ключа Диффи-Хеллмана обеспечивает разделяемый секрет, который не может быть определен оппонентом. При обмене ключа используется подпись, создаваемая закрытым ключом сервера для аутентификации сервера и защиты от атак "man-in-the-middle".

Будем использовать следующие обозначения:

С - клиент;
S - сервер;
р - простое число;
g - генератор для подгруппы GF (p);
V_S - строка версии S ;
V_C - строка версии С ;
K_S - открытый ключ сервера S ;
I_C - сообщение KEXINIT C ;
I_S - сообщение KEXINIT S, которыми участники обменялись перед данными сообщениями.
  1. С создает случайное число х и вычисляет e = gx mod p. C посылает e к S.
    SSH_MSG_KEXDH_INIT
    e
  2. S создает случайное число у и вычисляет f = gy mod p. S получает e и вычисляет K = еу mod p, H = hash (V_C || V_S || I_C || I_S || K_S || e || f || K) и подпись s для Н своим закрытым ключом сервера. S посылает {K_S || f || s} к С. Операция подписывания может включать вторую операцию хэширования.
    SSH_MSG_KEXDH_REPLY
    открытый ключ сервера и сертификаты (K_S)
    f s
  3. С проверяет, действительно ли K_S является ключом сервера S, используя сертификаты или локальную БД. С также может принимать ключ без проверки, однако это делает протокол небезопасным против активных атак (но это может быть сделано из практических соображений во многих окружениях). Затем С вычисляет K = fx mod p, H = hash (V_C || V_S || I_C || K_S || e || f || K) и проверяет подпись s для Н.

    Хэш Н вычисляется от конкатенации следующих значений:

    V_C – строка версии клиента (CR и NL исключаются)
    V_C – строка версии сервера (CR и NL исключаются)
    I_C – содержимое сообщения SSH_MSG_KEXINIT клиента
    I_S – содержимое сообщения SSH_MSG_KEXINIT сервера
    K_Sключ хоста
    e – значение, посылаемое клиентом
    f – значение, посылаемое сервером
    K – разделяемый секрет

Эти значения называются хэшем обмена и используются для аутентификации сервера.

Алгоритм подписи применяется к значению Н. Большинство алгоритмов подписи включают хэширование. Например, ssh-dss определяет использование SHA. В этом случае данные, во-первых, хэшируются HASH, в результате чего вычисляется Н, и затем Н хэшируется с использованием SHA как часть операции подписывания.

Повторный обмен ключа

Повторный обмен ключа начинается посылкой SSH_MSG_KEXINIT пакета, когда не полностью выполнен обмен ключа. При получении данного сообщения участник должен ответить собственным сообщением SSH_MSG_KEXINIT за исключением того случая, когда полученный SSH_MSG_KEXINIT уже является повтором. Оба участника могут начать повторный обмен, но роли не должны меняться, т.е. сервер остается сервером, клиент остается клиентом.

Запрос сервиса

После выполнения обмена ключа клиент запрашивает один из следующих сервисов: ssh-userauth, ssh-connection.

Сервер должен ответить сообщением:

SSH_MSG_SERVICE_REQUEST
service name

Если сервер поддерживает сервис и разрешает клиенту использовать его, он должен ответить следующим сообщением:

SSH_MSG_SERVICE_ACCEPT
service name
Дополнительные сообщения

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

Сообщение разрыва соединения
SSH_MSG_DISCONNECT
reason code
description
language tag

Это сообщение вызовет немедленный разрыв соединения. Отправитель не должен посылать или получать какие-либо данные после этого сообщения, и получатель не должен принимать какие-либо данные после получения этого сообщения.

Обсуждение проблем безопасности

Данный протокол создает безопасный зашифрованный канал в небезопасной сети. Он выполняет аутентификацию сервера, обмен ключа, шифрование и обеспечение целостности передаваемых данных. Он также создает уникальный идентификатор сессии, который может использоваться протоколами более высокого уровня.

Данный протокол может использоваться без существования надежной взаимосвязи между ключом сервера и именем сервера. Такое использование небезопасно, но может быть необходимо в недостаточно защищенных критических окружениях, и тем не менее обеспечивает защиту от пассивных атак. Однако реализации протокола, выполняющиеся на верхнем уровне данного протокола, должны помнить о такой возможности.

Данный протокол разработан для использования поверх надежного транспорта. Протокол не дает возможности избежать атак типа отказ в обслуживании.

Евгений Виноградов
Евгений Виноградов

Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа?

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????

Ярослав Ханько
Ярослав Ханько
Украина
Jacob Liberman
Jacob Liberman
Нидерланды, Amsterdam