Протокол Нидхема – Шредера - Needham–Schroeder protocol
В Протокол Нидхема – Шредера является одним из двух ключевых транспортных протоколов, предназначенных для использования в незащищенной сети, оба предложены Роджер Нидхэм и Майкл Шредер.[1] Это:
- В Протокол симметричного ключа Нидхема – Шредера, на основе симметричный алгоритм шифрования. Он составляет основу Kerberos протокол. Этот протокол направлен на создание ключ сеанса между двумя сторонами в сети, как правило, для защиты дальнейшего обмена данными.
- В Протокол открытого ключа Нидхема – Шредера, на основе криптография с открытым ключом. Этот протокол предназначен для обеспечения взаимной аутентификация между двумя сторонами, общающимися в сети, но в предлагаемой форме небезопасно.
Симметричный протокол
Здесь, Алиса (A) инициирует связь с Бобом (B). S - это сервер, которому доверяют обе стороны. В сообщении:
- A и B - личности Алисы и Боба соответственно.
- KВ КАЧЕСТВЕ симметричный ключ, известный только A и S
- KBS симметричный ключ, известный только B и S
- NА и нB находятся одноразовые номера порожденные A и B соответственно
- KAB симметричный сгенерированный ключ, который будет ключ сеанса сеанса между A и B
Протокол может быть определен следующим образом в обозначение протокола безопасности:
- Алиса отправляет сообщение на сервер, идентифицируя себя и Боба, сообщая серверу, что она хочет связаться с Бобом.
- Сервер генерирует и отправляет обратно Алисе копию, зашифрованную под для Алисы, чтобы переслать Бобу, а также копию для Алисы. Поскольку Алиса может запрашивать ключи для нескольких разных людей, одноразовый номер гарантирует Алисе, что сообщение свежее и что сервер отвечает на это конкретное сообщение, а включение имени Боба говорит Алисе, с кем она должна поделиться этим ключом.
- Алиса пересылает ключ Бобу, который может расшифровать его с помощью ключа, которым он поделился с сервером, тем самым аутентифицируя данные.
- Боб отправляет Алисе одноразовый номер, зашифрованный под чтобы показать, что у него есть ключ.
- Алиса выполняет простую операцию с одноразовым номером, повторно шифрует его и отправляет обратно, подтверждая, что она все еще жива и что у нее есть ключ.
Атаки на протокол
Протокол уязвим для повторная атака (как определено Деннинг и Сакко[2]). Если злоумышленник использует старое скомпрометированное значение KAB, он может затем воспроизвести сообщение Бобу, который примет его, будучи не в состоянии сказать, что ключ не свежий.
Устранение атаки
Этот недостаток исправлен в Протокол Kerberos путем включения отметка времени. Это также можно исправить с помощью одноразовых номеров, как описано ниже.[3] В начале протокола:
- Алиса отправляет Бобу запрос.
- Боб отвечает одноразовым номером, зашифрованным под его ключом с Сервером.
- Алиса отправляет сообщение на сервер, идентифицируя себя и Боба, сообщая серверу, что она хочет связаться с Бобом.
- Обратите внимание на включение одноразового номера.
Затем протокол продолжается, как описано в последних трех шагах, как описано в исходном протоколе. над. Обратите внимание, что отличается от .Включение этого нового одноразового номера предотвращает повторное воспроизведение скомпрометированной версии поскольку такое сообщение должно иметь форму который злоумышленник не может подделать, так как у него нет .
Протокол открытого ключа
Это предполагает использование алгоритм шифрования с открытым ключом.
Здесь Алиса (A) и Боб (B) используют доверенный сервер (S) для распространения открытых ключей по запросу. Эти ключи:
- KPA и KSAсоответственно открытая и закрытая половины пары ключей шифрования, принадлежащих A (S означает «секретный ключ» здесь)
- KPB и KSB, аналогичные принадлежащим B
- KPS и KSS, похожий на принадлежность S. (Обратите внимание, что эта пара ключей будет использоваться для цифровые подписи, т.е. KSS используется для подписи сообщения и KPS используется для проверки. KPS должны быть известны A и B до запуска протокола.)
Протокол работает следующим образом:
- A запрашивает открытые ключи B у S
- S отвечает открытым ключом KPB вместе с личностью B, подписанной сервером в целях аутентификации.
- A выбирает случайное NА и отправляет его Б.
- Теперь B знает, что A хочет связаться, поэтому B запрашивает открытые ключи A.
- Сервер отвечает.
- B выбирает случайное NB, и отправляет его A вместе с NА доказать способность дешифровать с помощью KSB.
- А подтверждает NB в B, чтобы доказать способность дешифровать с помощью KSA
В конце протокола A и B знают личности друг друга и знают как NА и нB. Эти nonce не известны перехватчикам.
Атака на протокол
К сожалению, этот протокол уязвим для атака "человек посередине". Если самозванец может убедить чтобы инициировать сеанс с ними, они могут передавать сообщения и убедить что он общается с .
При игнорировании трафика к S и от S, который остается неизменным, атака выполняется следующим образом:
- A отправляет NА I, который расшифровывает сообщение с помощью KSI
- Я передаю сообщение B, делая вид, что A общается
- B отправляет NB
- Я передаю его на А
- A расшифровывает NB и подтверждает это мне, кто это узнает
- Я повторно шифрую NB, и убеждает B, что она его расшифровала
В конце атаки B ложно полагает, что A общается с ним, и что NА и нB известны только A и B.
Следующий пример иллюстрирует атаку. Алиса (A) хотела бы связаться со своим банком (B). Мы предполагаем, что самозванец (I) успешно убеждает A в том, что это банк. Как следствие, A использует открытый ключ I вместо использования открытого ключа B для шифрования сообщений, которые она намеревается отправить в свой банк. Следовательно, A отправляет мне свой одноразовый номер, зашифрованный открытым ключом I. Я расшифровываю сообщение, используя свой закрытый ключ, и связываюсь с B, отправляя ему одноразовый номер A, зашифрованный открытым ключом B. B не имеет возможности узнать, что это сообщение было фактически отправлено I. B отвечает своим собственным одноразовым номером и шифрует сообщение открытым ключом A. Поскольку я не владею закрытым ключом A, они должны передать сообщение A, не зная содержимого. A расшифровывает сообщение своим закрытым ключом и отвечает одноразовым номером B, зашифрованным открытым ключом I. Я расшифровываю сообщение, используя свой закрытый ключ, и теперь у него есть одноразовые номера A и B. Таким образом, теперь они могут выдавать себя за банк и клиент соответственно.
Исправляем атаку "человек посередине"
Атака была впервые описана в статье 1995 г. Гэвин Лоу.[4]В статье также описана фиксированная версия схемы, называемая Протокол Нидхема – Шредера – Лоу. Исправление включает в себя модификацию шестого сообщения для включения личности респондента, то есть мы заменяем:
с фиксированной версией:
и злоумышленник не может успешно воспроизвести сообщение, поскольку A ожидает сообщения, содержащего идентификатор I, тогда как сообщение будет иметь идентификатор B.
Смотрите также
Рекомендации
- ^ Нидхэм, Роджер; Шредер, Майкл (декабрь 1978). «Использование шифрования для аутентификации в больших компьютерных сетях». Коммуникации ACM. 21 (12): 993–999. CiteSeerX 10.1.1.357.4298. Дои:10.1145/359657.359659. S2CID 7704786.
- ^ Деннинг, Дороти Э.; Сакко, Джованни Мария (1981). «Метки времени в протоколах распределения ключей». Коммуникации ACM. 24 (8): 533–535. Дои:10.1145/358722.358740. S2CID 3228356.
- ^ Нидхэм, Р. М.; Шредер, М. (1987). «Повторная проверка подлинности». Обзор операционных систем ACM SIGOPS. 21 (1): 7. Дои:10.1145/24592.24593. S2CID 33658476.
- ^ Лоу, Гэвин (ноябрь 1995 г.). «Атака на протокол аутентификации с открытым ключом Нидхема-Шредера». Письма об обработке информации. 56 (3): 131–136. CiteSeerX 10.1.1.394.6094. Дои:10.1016/0020-0190(95)00144-2. Получено 2008-04-17.
внешняя ссылка
- Роджер Нидхэм и Майкл Шредер (1978). «Открытый ключ Нидхема-Шредера». Laboratoire Spécification et Vérification.CS1 maint: использует параметр авторов (связь)
- Роджер Нидхэм и Майкл Шредер (1978). "Симметричный ключ Нидхема Шредера". Laboratoire Spécification et Vérification.CS1 maint: использует параметр авторов (связь)
- Гэвин Лоу (1995). «Фиксированная версия открытого ключа Нидхема-Шредера Лоу». Laboratoire Spécification et Vérification.CS1 maint: использует параметр авторов (связь)