Протокол Нідгема — Шредера — Вікіпедія
Протокол Нідгема-Шредера узагальнює два комунікаційні протоколи, призначені для незахищених мереж. Обидва запропоновані Роджером Нідгемом і Майклом Шредером.[1]
- Протокол Нідгема-Шредера з симетричними ключами заснований на алгоритмі симетричного шифрування. Він складає основу для протоколу Kerberos. Цей протокол спрямований на встановлення ключа сеансу між двома суб'єктами в мережі, використовується переважно для обміну повідомленнями.
- Протокол Нідгема-Шредера з відкритими ключами заснований на криптографічних алгоритмах з відкритим ключем. Цей протокол покликаний забезпечити взаємну автентифікацію між двома суб'єктами. Однак оригінальний варіант протоколу містить вразливості.
Припустимо Аліса (А) хоче зв'язатися з Бобом (B). S — сервер, якому довіряють обидві сторони.
Визначення:
- A і B відповідно Аліса і Боб
- KAS симетричний ключ, який знають тільки A та S
- KBS симетричний ключ, який знають тільки B та S
- NA та NB випадкові числа (nonce), A і B відповідно
- KAB симетричний, згенерований ключ, який буде сесійним ключем у сесії між A та B
Протокол можна представити у наступному вигляді:
- Аліса відправляє повідомлення на сервер, щоб ідентифікувати себе та Боба, і говорить серверу що хоче зв'язатися з Бобом.
- Сервер генерує і відправляє Алісі оригінал ключа, а також його копію зашифровану під , щоб Аліса могла його безпечно відправити Бобу. Так як Аліса може зв'язуватися із кількома різними людьми одночасно, потрібне її випадкове число, для ідентифікації з'єднання. Також включається ім'я Боба, щоб вказати Алісі кому пересилати зашифрований ключ.
- Аліса відправляє ключ Бобу, який може його розшифрувати за допомогою свого ключа (KBS) і таким чином автентифікуватися.
- Боб відправляє Алісі своє випадкове число (NB) зашифроване ключем , щоб засвідчити що у нього є ключ.
- Аліса розшифровує NB віднімає від нього одиницю, знов шифрує його ключем і відправляє Бобу, щоб засвідчити, що саме вона досі на зв'язку.
Протокол вразливий до атаки повторного відтворення (дослідили Деннінг і Сакко). Якщо зловмисник володіє старими значеннями KAB, він може повторно відправити повідомлення Бобу і той його прийме, бо не знатиме що ключ застарілий.
Цей недолік фіксується у протоколі Кербера шляхом впровадження мітки. Вона також може бути закрита, додаванням випадкового числа (nonce), як описано далі.
На початку протоколу:
- Аліса відправляє Бобу запит.
- Боб відповідає своїм випадковим числом (nonce) зашифрованим під його ключем (KBS)
- Аліса відправляє повідомлення на сервер, щоб ідентифікувати себе та Боба, і говорить серверу що хоче зв'язатися з Бобом.
- Зверніть увагу, що з'явився аргумент випадкове число.
Далі протокол працює за тим же алгоритмом, що наведений вище. Зверніть увагу, що і різні. Додавання випадкового числа, унеможливлює використання атаки повторного відтворення за допомогою застарілих ключів , тому що ключем KBS володіють тільки Боб та довірений сервер.
Використовує асиметричні алгоритми шифрування.
Розглянемо, Аліса (А), Боб (B) і перевірений сервер (S).
Визначення:
- KPA і KSA, відповідно публічний та приватний ключі шифрування для A
- KPB і KSB, аналогічно для B
- KPS і KSS, аналогічно для S. (Зверніть увагу, що KSS використовують для шифрування, а для розшифрування KPS).
Робота протоколу:
- A відправляє запит до S на отримання відкритого ключа B.
- S повертає відкритий ключ KPB який відповідає B, підписаний сервером для затвердження автентичності.
- A визначає NA і відправляє його Бобу (B).
- B відправляє запит до S на отримання відкритого ключа A.
- Сервер відповідає.
- B генерує NB і відправляє його разом з NA, щоб підтвердити здатність розшифровувати ключем KSB.
- A відправляє NB Бобу (B), щоб підтвердити здатність розшифровувати ключем KSA.
Після завершення алгоритму A і B впевнені один в одному і знають NA і NB. Ці числа відомі тільки для A і B.
На жаль, цей протокол вразливий до атаки «Людина всередині». Зловмисник може почати сесію з А і ретранслювати її Бобу (B) і таким чином представити себе перед B, як A.
Пропустимо запити до і від сервера, вони залишаються незмінними, схема атака виглядає так:
- A посилає NA зашифроване KSI.
- I перенаправляє повідомлення до B, маскуючись під A.
- B відправляє NB.
- I перенаправляє повідомлення до A.
- A розшифровує NB і відправляє підтвердження до I.
- I перешифровує NB, і відправляє до B для підтвердження.
Після атаки B помилково думає, що спілкується з A і що NA і NB знає тільки A і B.
Атака вперше була описана в 1995 у роботі Гевіна Лоу.[2] Там також присутня оновлена схема протоколу (яка застерігає від атаки), названа протоколом Нідгема-Шредера-Лоу. Виправлення полягає у заміні шостого запиту, тобто нам треба змінити:
на новий запит:
- ↑ Needham, Roger; Schroeder, Michael (December 1978). Using encryption for authentication in large networks of computers. Communications of the ACM. 21 (12): 993—999. doi:10.1145/359657.359659.
- ↑ Lowe, Gavin (November 1995). An attack on the Needham-Schroeder public key authentication protocol. Information Processing Letters. 56 (3): 131—136. doi:10.1016/0020-0190(95)00144-2. Архів оригіналу за 24 серпня 2007. Процитовано 17 квітня 2008.
- Опис протоколу з відкритим ключем [Архівовано 23 жовтня 2008 у Wayback Machine.] (англ.)
- Протоколи із симетричними ключами [Архівовано 6 грудня 2012 у WebCite] (англ.)
- Зміни Лоу у протоколі з відкритими ключами [Архівовано 6 грудня 2012 у WebCite] (англ.)
![]() | Це незавершена стаття з криптографії. Ви можете допомогти проєкту, виправивши або дописавши її. |