Назад в библиотеку

Эффективная и своевременная взаимная аутентификация

Авторы: Dave Otway, Owen Rees
Источник: ACM SIGOPS (Special Interest Group on Operating Systems) Operating Systems Review, Volume 21, Issue 1 (Jan. 1987), 8–10. — [Ссылка]

Автор перевода: Афанасьева А.А

Аннотация

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

Введение

Этот протокол является развитием протоколов зашифрованной аутентификации через доверенную третью сторону, разработанных Нидхэмом и Шредером [1] и усовершенствованных Бирреллом [2]. Он также устраняет слабость, на которую указали Деннинг и Сакко [3], в результате чего злоумышленник, обнаруживший сессионый ключ, может повторно использовать соответствующий аутентификатор для инициирования мошеннических разговоров. Его разработка была вызвана наблюдением Роджера Нидхэма о том, что один из основных принципов своевременной аутентификации заключается в том, что подозрительная сторона всегда должна создавать проблему. При взаимной аутентификации обе стороны с подозрением относятся друг к другу и к свежести аутентификационных данных; поэтому каждая из них должна генерировать независимые запросы, чтобы убедиться в своевременности взаимодействия. Такой запрос должен быть возвращен как часть аутентификатора, зашифрованного в закрытом ключе запрашиваемой стороны. Важным свойством такого запроса является то, что ранее он не использовался для аутентификации двух заинтересованных сторон. Это свойство может быть гарантировано либо сохранением всех ранее использованных запросов, либо использованием чисел из монотонно возрастающей последовательности (например, по времени), либо вероятностно путем случайной генерации достаточно большого числа.

Предварительная информация и утверждения

Прежде, чем произойдет аутентификация, каждая сторона должна обладать следующей информацией:

где Pn — имя участника аутентификации, который является n-ой стороной, а Kn — закрытый ключ Pn. Каждая сторона считает, что закрытые ключи известны только соответствующим участникам и доверенной службе аутентификации.

Протокол

Успешная взаимная аутентификация состоит из следующей последовательности сообщений (показана на рисунке 1), где под {X}K имеется ввиду открытый текст X, зашифрованный ключом K:

  1. Первая сторона отправляет сообщение CPlP2 {RlCPlP2}K1 второй стороне. C — это одновременно идентификатор разговора и общий запрос, сгенерированный первой стороной, который должен быть зашифрован обеими сторонами. Rl — это конкретный запрос первой стороны, а {RlCPlPl}K1 — это зашифрованный запрос на взаимную аутентификацию P1 и P2. C должен быть в открытом виде, чтобы вторая сторона могла его зашифровать. Он также может использоваться для сопоставления всех сообщений в одной и той же последовательности аутентификации и может быть идентификатором, используемым на базовом уровне протокола. P1P2 должен быть открытым, чтобы идентифицировать участников для других сторон, в частности, служба аутентификации нуждается в них для поиска соответствующих закрытых ключей.
  2. Вторая сторона генерирует свой собственный конкретный запрос R2 и соответствующий запрос {R2CP1P2}K2 , включая общий вызов C. Затем она отправляет сообщение CP2P2{R1CP1P2}K1{R2CP1P2}K2 в службу аутентификации.
  3. Служба аутентификации ищет K1 и K2, используя P1 и P2, затем расшифровывает оба запроса и проверяет, что они образуют совпадающую пару (т.е. оба содержат CP1P2). Если это так, она генерирует сессионный ключ KC и возвращает ответ C{R1KC}K1{R2KC}K2, содержащий соответствующую пару зашифрованных аутентификаторов, идентифицированных C, второй стороне.
  4. Вторая сторона расшифровывает второй аутентификатор {R2KC}K2, используя свой закрытый ключ K2, чтобы получить свой собственный запрос R2 и ключ разговора KC, затем пересылает ответ C{R1KC}K1, содержащий первый аутентификатор, идентифицированный C, первой стороне. Первая сторона расшифровывает первый запрос. аутентификатор {R1KC}K1 использует свой закрытый ключ K1 для получения своего собственного запроса R1 и сессионного ключа KC.
Последовательность сообщений в ходе аутентификации

Рисунок 1

Последующая информация и утверждения

Служба аутентификации способна расшифровать оба запроса аутентификации {R1CP1P2}K1 и {R2CP1P2}K2, используя закрытые ключи предполагаемых участников. Если они совпадают (т.е. оба содержат CP1P2), то он знает, что каждый из них был сгенерирован какой-либо стороной, которая знала закрытый ключ соответствующего участника, и что обе стороны хотели общаться друг с другом (из-за P1P2) в некоторое совпадающее время (из-за C). Служба аутентификации не знает, имело ли место злонамеренное воспроизведение всего сообщения, она просто выдает информацию, которая не представляет ценности ни для кого, кроме двух подлинных сторон.

После того, как вторая сторона расшифровала свой аутентификатор {R2KC}K2, используя свой закрытый ключ K2, она знает, что если R2 соответствует ее первоначальному запросу, то ответ является своевременным и был сгенерирован службой аутентификации. Поскольку служба аутентификации выдает соответствующую пару аутентификаторов только в том случае, если исходная пара запросов была подлинной и совпадала, вторая сторона аутентифицирует P1, как первую сторону, и KC в качестве секретного ключа сессии.

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

Поскольку первая сторона выбрала общий запрос C, она знает, что запрос второй стороны должен был быть своевременным, чтобы служба аутентификации могла проверить совпадение двух запросов, но у второй стороны все еще нет уверенности в том, что исходный запрос от первой стороны не был повторно использован. Однако, на данном этапе обе стороны должны владеть секретным ключом сессии KC. Это значит, что своевременное получение сообщения, правильно зашифрованного c KC, гарантирует второй стороне, что первая сторона действительно владеет K1 и, следовательно, должна быть связана с P1.

Обсуждение

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

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

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

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

Известный открытый текст CP1P2, зашифрованный закрытыми ключами K1,K2, больше не является проблемой для современных потоковых шифров, особенно если ему всегда предшествует случайное число.

Благодарность

Мы хотели бы поблагодарить Роджера Нидхэма за его полезный анализ и рекомендации.

Литература

  1. NEEDHAM, R. M., and SCHROEDER, M. D. Using encryption for authentication in large networks of computers. Commun. ACM 21, 12 (Dec. 1978), 993-999.
  2. BIRRELL, A. D. Secure communication using remote procedure calls. ACM Trans. Computer Systems 3, 1 (Feb 1985), 1-14.
  3. DENNING, D. E., and SACCO, G. M. Timestamps in key distribution protocols. Commun. ACM24, 8 (Aug. 1981), 533-536.