протокол Нидхема-Шредера для аутентификации с симметричным ключом
Исходные условия:
Алиса и Трент имеют общий ключ Kat; Боб и Трент имеют общий ключ Kbt. (Трент – это сервер аутентификации)
Цель
Алиса и Боб желают создать новый общий секретный ключ K.
1. Алиса генерирует случайное число Na и посылает Тренту сообщение: Алиса, Боб, Na.
2. Трент генерирует случайный ключ K и посылает Алисе следующую информацию: {Na, K, Боб,{K, Алиса}Kbt}kat.
3. Алиса расшифровывает сообщение {Na, K, Боб, {K, Алиса}Kbt}kat, проверяет число Na, устанавливает личность Боба и посылает ему информацию: Трент, {K, Алиса}kbt
4. Боб расшифровывает сообщение, устанавливает личность Алисы и посылает ей {Привет, Алиса, я – Боб, Nb}k. Где Nb – случайное число, сгенерированной Бобом.
5. Алиса посылает Бобу сообщение: {Я-Алиса, Nb-1}k
Обозначения:
{сообщение}k — шифртекст на ключе k.
Вопрос:
Зачем на шаге 5 Алиса вычитает из Nb единицу?
комментариев: 9796 документов: 488 редакций: 5664
В четвертом пункте Боб доказывает Алисе, что он Боб, а без пятого пункта Алиса не сможет доказать Бобу, что она Алиса.
Иначе кто-то может выдавать Бобу старые запросы Алисы из третьего пункта, а поскольку часов нет, то без проверки возможности поменять свежесгенирированный Бобом Nb никак не убедиться, что это уникальный запрос.
(Уменьшения на единицу понятное дело условность, с Nb можно было бы попросить сделать и другую подходящую операцию).
комментариев: 88 документов: 13 редакций: 3
4. Боб расшифровывает сообщение, устанавливает личность Алисы и посылает ей {Nb}k. Где Nb – случайное число, сгенерированной Бобом.
5. Алиса посылает Бобу сообщение: {Nb-1}k
чтобы уменьшить вероятность атаки воспроизведения из случайного числа при ответе и вычитается единица
Случайное число и так каждый раз разное. Зачем вообще манипуляции со случайным числом.
Зачем вообще делать с ним операции? К тому же на шаге 2 Трент ничего с числом полученным от Алисы не делает.
комментариев: 88 документов: 13 редакций: 3
если Боб пошлет {Nb}k, а Алиса тоже ответит {Nb}k, то это воспроизведение, которым может воспользоваться злоумышленник (чтобы выдать себя за Алису), если Алиса отправит {Nb-1}k, то шифротексты будут разные и атаку воспроизведения не произвести.
комментариев: 9796 документов: 488 редакций: 5664
Не будем оригинальными и посмотрим в самую правильную в данном случае книгу :)
Using Encryption for Authentication in Large Networks of Computers
Roger M. Needham and Michael D. Schroeder.
Xerox Palo Alto research Center.
Communications of the ACM. December 1978. Volume 21. Number 12.
Короче говоря, если не было бы этого шага, кто-то может перехватить известное сообщение Алисы: "сегодня я занята и не буду с тобой общаться", "Боб я никогда тебя не прощу!", "команда серверу Боба удалить все текущие даные" и периодически передавать это сообщение или отправить его не в нужный для Алисы и Боба момент.
Боб в ответ пошлёт запрос "Алиса, ты опять меня достаёшь какой-то ерундой?". А кто-то (Мэллори?) в ответ из предыдущего сеанса Алисы выдернет и повторно отправит стандартное сообщение: "Да я Алиса! Подтверждаю! Выполняйте немедленно! Конец связи".
А если так как описано в первом посте и Алиса на шаге 5 посылает Бобу {Я-Алиса, Nb-1}k, то Злоумышленник(Алиса) не смог бы составить такое сообщение {Я-Алиса, Nb-1}k и такое тоже {Я-Алиса, Nb}k. Получается что если протокол именно такой какой описан в первом посте, то вычитание единицы не нужно.
Вобщем это неточность в книге, так получается?
комментариев: 9796 документов: 488 редакций: 5664
Обычно некто Мэллори, выдающий себя за Алису для Боба и соотв. наоборот за Боба для Алисы.
так шифрование то симметричное: Боб посылает Алисе {Nb}k, чем отвечать Алисе? Тоже отправить {Nb}k обратно? Кстати да, в вашем изложении расхождение с оригинальным протоколом Нидхема-Шрёдера от 1978 года.
И в его поздних фиксах ничего такого нет:
Вот-вот, вопрос возник именно из-за этого расхождения :)
Потому что если бы пятый шаг выглядел как
5. A -> B: {A, Nb}к
то вычитать 1 было бы не нужно.
комментариев: 9796 документов: 488 редакций: 5664
Сообщения серверу (1.1) и от него (1.2) отправлять не нужно.
А два других шага будут:
A -> B: {CK, A}KB, {IA2 }CK {1.3'}
B -> A: {IA2 – 1, IB }CK {1.4'}
Пятый шаг остаётся прежним:
A -> B: {IB – 1 }CK {1.5}
Итого три шага, если доверие в виде совместного ключа уже было получено ранее и стороны его не хотят обновлять. Может вычитание единицы делалось с перспективой именно на такое использование?