Московский государственный университет имени М.В.Ломоносова
Опубликован: 19.11.2003 | Доступ: свободный | Студентов: 10888 / 4034 | Оценка: 4.36 / 4.13 | Длительность: 13:09:00
ISBN: 978-5-9556-0102-1
Лекция 12:

Алгоритмы обмена ключей и протоколы аутентификации

< Лекция 11 || Лекция 12: 1234

Протоколы аутентификации

Рассмотрим основные протоколы, обеспечивающие как взаимную аутентификацию участников, так и аутентификацию только одного из участников.

Взаимная аутентификация

Данные протоколы применяются для взаимной аутентификации участников и для обмена ключом сессии.

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

Такие повторы называются replay-атаками. Рассмотрим возможные примеры подобных replay-атак:

  1. Простое повторение: противник просто копирует сообщение и повторяет его позднее.
  2. Повторение, которое не может быть определено: противник уничтожает исходное сообщение и посылает скопированное ранее сообщение.

Один из возможных подходов для предотвращения replay-атак мог бы состоять в присоединении последовательного номера (sequence number) к каждому сообщению, используемому в аутентификационном обмене. Новое сообщение принимается только тогда, когда его последовательный номер правильный. Трудность данного подхода состоит в том, что каждому участнику требуется поддерживать значения sequence number для каждого участника, с которым он взаимодействует в данный момент. Поэтому обычно sequence number не используются для аутентификации и обмена ключами. Вместо этого применяется один из следующих способов:

  1. Отметки времени: участник А принимает сообщение как не устаревшее только в том случае, если оно содержит отметку времени, которая, по мнению А, соответствует текущему времени. Этот подход требует, чтобы часы всех участников были синхронизированы.
  2. Запрос/ответ: участник А посылает в запросе к В случайное число ( nonce - number only once ) и проверяет, чтобы ответ от В содержал корректное значение этого nonce.

Считается, что подход с отметкой времени не следует использовать в приложениях, ориентированных на соединение, потому что это технически трудно, так как таким протоколам, кроме поддержки соединения, необходимо будет поддерживать синхронизацию часов различных процессоров. При этом возможный способ осуществления успешной атаки может возникнуть, если временно будет отсутствовать синхронизация часов одного из участников. В результате различной и непредсказуемой природы сетевых задержек распределенные часы не могут поддерживать точную синхронизацию. Следовательно, процедуры, основанные на любых отметках времени, должны допускать окно времени, достаточно большое для приспособления к сетевым задержкам, и достаточно маленькое для минимизации возможности атак.

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

Использование симметричного шифрования

Для обеспечения аутентификации и распределения ключа сессии часто используется двухуровневая иерархия ключей симметричного шифрования. В общих чертах эта стратегия включает использование доверенного центра распределения ключей ( KDC ). Каждый участник разделяет секретный ключ, называемый также мастер-ключом, с KDC. KDC отвечает за создание ключей, называемых ключами сессии, и за распределение этих ключей с использованием мастер-ключей. Ключи сессии применяются в течение короткого времени для шифрования только данной сессии между двумя участниками.

Большинство алгоритмов распределения секретного ключа с использованием KDC, включает также возможность аутентификации участников.

Протокол Нидхэма и Шредера

Предполагается, что секретные мастер-ключи KA и KB разделяют соответственно А и KDC и В и KDC . Целью протокола является безопасное распределение ключа сессии KS между А и В. Протокол представляет собой следующую последовательность шагов:

1. A -> KDC:  IDA || IDB || N1
2. KDC -> A:  EKa [KS || IDB || N1 || 
             EKb [KS || IDA] ]
3. A -> B:    EKb [KS || IDA]
4. B -> A:    EKS [N2]
5. A -> B:    EKS [f (N2)]
  1. А запрашивает у KDC ключ сессии для установления защищенного соединения с В. Сообщение включает идентификацию А и В и уникальный идентификатор данной транзакции, который обозначен как N1 и называется nonce. Nonce может быть временной меткой, счетчиком или случайным числом; минимальное требование состоит в том, чтобы он отличался для каждого запроса. Кроме того, для предотвращения подделки желательно, чтобы противнику было трудно предугадать nonce. Таким образом, случайное число является лучшим вариантом для nonce.
  2. KDC отвечает сообщением, зашифрованным ключом KА. Таким образом, только А может расшифровать сообщение, и А уверен, что оно получено от KDC , так как предполагается, что кроме А и KDC этот ключ не знает никто. Это сообщение включает следующие элементы, предназначенные для А:
    • Одноразовый ключ сессии.
    • Идентификатор В.
    • nonce, который идентифицирует данную сессию .

    А должен убедиться, что полученный nonce равен значению nonce из первого запроса. Это доказывает, что ответ от KDC не был модифицирован при пересылке и не является повтором некоторого предыдущего запроса. Кроме того, сообщение включает два элемента, предназначенные для В:

    • Одноразовый ключ сессии KS.
    • Идентификатор А IDA.

    Эти два последних элемента шифруются мастер-ключом, который KDC разделяет с В. Они посылаются В при установлении соединения и доказывают идентификацию А.

  3. А сохраняет у себя ключ сессии и передает В информацию от KDC , предназначенную В: ЕKb [KS || IDA]. Так как эта информация зашифрована KВ, она защищена от просмотра. Теперь В знает ключ сессии ( KS ), знает, что другим участником является А, ( IDA ) и что начальная информация передана от KDC , т.к. она зашифрована с использованием KB.

    В этой точке ключ сессии безопасно передан от А к В, и они могут начать безопасный обмен. Тем не менее, существует еще два дополнительных шага:

  4. Используя созданный ключ сессии, В пересылает A nonce N2.
  5. Также используя KS, А отвечает f (N2), где f - функция, выполняющая некоторую модификацию N2.

Эти шаги гарантируют B, что сообщение, которое он получил, не изменено и не является повтором предыдущего сообщения.

Заметим, что реальное распределение ключа включает только шаги 1 - 3, а шаги 4 и 5, как и 3, выполняют функцию аутентификации.

А безопасно получает ключ сессии на шаге 2. Сообщение на шаге 3 может быть дешифровано только B. Шаг 4 отражает знание В ключа KS, и шаг 5 гарантирует В знание участником А ключа KS и подтверждает, что это не устаревшее сообщение, так как используется nonce N2. Шаги 4 и 5 призваны предотвратить общий тип replay-атак. В частности, если противник имеет возможность захватить сообщение на шаге 3 и повторить его, то это должно привести к разрыву соединения.

Разрывая рукопожатие на шагах 4 и 5, протокол все еще уязвим для некоторых форм атак повторения. Предположим, что противник Х имеет возможность скомпрометировать старый ключ сессии. Маловероятно, чтобы противник мог сделать больше, чем просто копировать сообщение шага 3. Потенциальный риск состоит в том, что Х может заставить взаимодействовать А и B, используя старый ключ сессии. Для этого Х просто повторяет сообщение шага 3, которое было перехвачено ранее и содержит скомпрометированный ключ сессии. Если В не запоминает идентификацию всех предыдущих ключей сессий с А, он не сможет определить, что это повтор. Далее Х должен перехватить сообщение рукопожатия на шаге 4 и представиться А в ответе на шаге 5.

Протокол Деннинга

Деннинг предложил преодолеть эту слабость модификацией протокола Нидхэма и Шредера, которая включает дополнительную отметку времени на шагах 2 и 3:

1. A -> KDC:  IDA || IDB
2. KDC -> A:  EKa [KS || IDB || T || 
              EKb [KS || IDA || T] ]
3. A -> B:    EKb [KS || IDA || T]
4. B -> A:    EKS [N1]
5. A -> B:    EKS [f (N1)]

Т - это отметка времени, которая гарантирует А и B, что ключ сессии является только что созданным. Таким образом, и А, и В знают, что распределенный ключ не является старым. А и В могут верифицировать временную отметку проверкой, что

|Clock - T| < \Delta t_{1} + \Delta t_{2}

где \Delta  t_{1} - оцениваемое нормальное расхождение между часами KDC и локальными часами (у А или B ) и t2 - ожидаемая сетевая задержка времени. Каждый участник может установить свои часы, ориентируясь на определенный доверенный источник. Поскольку временная отметка Т шифруется с использованием секретных мастер-ключей, взломщик, даже зная старый ключ сессии, не сможет достигнуть цели повторением шага 3 так, чтобы В не заметил искажения времени.

Шаги 4 и 5 не были включены в первоначальное представление, но были добавлены позднее. Эти шаги подтверждают А, что В получил ключ сессии.

Протокол Деннинга обеспечивает большую степень безопасности по сравнению с протоколом Нидхэма и Шредера. Однако данная схема требует доверия к часам, которые должны быть синхронизированы в сети. В этом есть определенный риск, который состоит в том, что распределенные часы могут рассинхронизироваться в результате диверсии или повреждений. Проблема возникает, когда часы отправителя спешат по отношению к часам получателя. В этом случае противник может перехватить сообщение от отправителя и повторить его позднее, когда отметка времени в сообщении станет равной времени на узле получателя. Это повторение может иметь непредсказуемые последствия.

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

Протокол аутентификации с использованием билета

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

1. A -> B:   IDA || Na
2. B -> KDC: IDB || Nb || EKb [IDA || Na || Tb]
3. KDC -> A: EKa [IDB || Na || KS || Tb] || 
             EKb [IDA || KS || Tb] || Nb
4. A -> B:   EKb [IDA || KS || Tb] || EKS [Nb]
  1. А инициализирует аутентификационный обмен созданием nonce Na и посылкой его и своего идентификатора к В в незашифрованном виде. Этот nonce вернется к А в зашифрованном сообщении, включающем ключ сессии, гарантируя А, что ключ сессии не старый.
  2. B сообщает KDC , что необходим ключ сессии. Это сообщение к KDС включает идентификатор В и nonce Nb. Данный nonce вернется к В в зашифрованном сообщении, которое включает ключ сессии, гарантируя B, что ключ сессии не устарел. Сообщение В к KDC также включает блок, зашифрованный секретным ключом, разделяемым В и KDC . Этот блок используется для указания KDC , когда заканчивается время жизни данного ключа сессии. Блок также специфицирует намеченного получателя и содержит nonce, полученный от А. Этот блок является своего рода "верительной грамотой" или "билетом" для А.
  3. KDC получил nonces от А и В и блок, зашифрованный секретным ключом, который В разделяет с KDC . Блок служит билетом, который может быть использован А для последующих аутентификаций. KDC также посылает А блок, зашифрованный секретным ключом, разделяемым А и KDC . Этот блок доказывает, что В получил начальное сообщение А (IDB), что в нем содержится допустимая отметка времени и нет повтора ( Na ). Этот блок обеспечивает А ключом сессии ( KS ) и устанавливает ограничение времени на его использование ( Тb ).
  4. А посылает полученный билет В вместе с nonce B, зашифрованным ключом сессии. Этот билет обеспечивает В ключом сессии, который тот использует для дешифрования и проверки nonce. Тот факт, что nonce B расшифрован ключом сессии, доказывает, что сообщение пришло от А и не является повтором.

Данный протокол аутентифицирует А и В и распределяет ключ сессии. Более того, протокол предоставляет в распоряжение А билет, который может использоваться для его последующей аутентификации, исключая необходимость повторных контактов с аутентификационным сервером. Предположим, что А и В установили сессию с использованием описанного выше протокола и затем завершили эту сессию. Впоследствии, но до истечения лимита времени, установленного протоколом, А может создать новую сессию с B. Используется следующий протокол:

1. A -> B:  EKb [IDA || KS || Tb], Na'
2. B -> A:  Nb', ES [Na']
3. A -> B:  ES [Nb']

Когда В получает сообщение на шаге 1, он проверяет, что билет не просрочен. Заново созданные nonces Na' и Nb' гарантируют каждому участнику, что не было атак повтора. Время Tb является временем относительно часов B. Таким образом, эта временная метка не требует синхронизации, потому что В проверяет только им самим созданные временные отметки.

< Лекция 11 || Лекция 12: 1234
Роман Попов
Роман Попов

После прохождения курса Стандарты инфрмационной безопасности мне предложено получение Удостоверения о повышении квалификации от НИУ ВШЭ по программе Менеджмент информационной безопасности. Программа включает в себя ряд курсов которые я уже ранее проходил. Какой порядок действий в данном случае? Как прозводится перезачет результатов? И какие экщамены мне надо еще доздать чтобы получить удостоверение?

Андрей Осипов
Андрей Осипов

Здравствуйте! Хотелось бы прояснить следующий вопрос: у МТИ приостановлена государственная аккредитация и когда будет восстановлена- неизвестно, а в диплом о профпереподготовке выдается на базе МТИ (как я понял). Как будет обстоять дело с получением диплома?

Вопрос важный и актуальный, потому что необходимо срочно пройти обучение и получить диплом и не хотелось бы тратить время и платить деньги зря (если диплом окажется недействительным и т.п.). Разъясните, пожалуйста, подробнее ситуацию.

Сергей Пантелеев
Сергей Пантелеев
Россия, Москва
Геннадий Шестаков
Геннадий Шестаков
Беларусь, Орша