Протокол Нідгема — Шредера: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
ZéroBot (обговорення | внесок)
м r2.7.1) (робот додав: en:Needham–Schroeder protocol
Немає опису редагування
Рядок 1:
Протокол '''Протокол Нідхема-Шредера''' узагальнює два [[комунікаційний протокол|комунікаційні протоколи]], призначені для незахищених мереж. Обидва запропоновані [[Роджер Нідхем|Роджером Нідхемом]] і [[Майкл Шредер|Майклом Шредером]].<ref name="needham-schroeder">
{{Cite journal
| last1=Needham
| first1=Roger
| last2=Schroeder
| first2=Michael |
|title=Using encryption for authentication in large networks of computers. |
|journal=Communications of the ACM |
|volume=21
| issue=12
| date=December 1978
| pages=993–999 |
|doi=10.1145/359657.359659
| postscript=<!--None-->
}}
</ref>
* Протокол ''Нідхема-Шредера'' з симетричними ключами заснований на [[шифрування з симетричними ключами|алгоритмі симетричного шифрування]]. Він Складаєскладає базисоснову для протоколу [[Кербер_Кербер (протокол)|КерберКербера]]. Цей протокол спрямований на встановлення ключа сеансу між двома суб’єктамисуб'єктами в мережі, використовується переважно для обміну повідомленнями.
* Протокол ''Нідхема-Шредера'' з відкритими ключами базуєтьсязаснований на [[асиметричні алгоритми шифрування|криптографічних алгоритмах з відкритим ключем]]. Цей протокол покликаний забезпечити взаємну [[автентифікація|автентифікацію]] між двома суб’єктамисуб'єктами. ПравдаОднак оригінальний варіант протоколу містить вразливості.
 
== Симетричний протокол ==
 
Припустимо Аліса (А) хоче зв’язатисязв'язатися з Бобом (B). S -&nbsp;— сервер, якому довіряють обидві сторони.
 
Визначення:
Рядок 24 ⟶ 32:
 
<math>A \rightarrow S: \left . A,B,N_A \right .</math>
: Аліса відправляє повідомлення на сервер, щоб ідентифікувати себе та Боба, і говорить серверу що хоче зв’язатисязв'язатися з Бобом.
<math>S \rightarrow A: \{N_A, K_{AB}, B, \{K_{AB}, A\}_{K_{BS}}\}_{K_{AS}}</math>
: Сервер генерує <math>{K_{AB}}</math> і відправляє Алісі оригінал ключа, а також його копію зашифровану під <math>{K_{BS}}</math>, щоб Аліса могла його безпечно відправити Бобу. Так як Аліса може зв’язуватисязв'язуватися із кількома різними людьми одночасно, потрібне її випадкове число, для ідентифікації з’єднанняз'єднання. Також включається ім’яім'я Боба, щоб вказати Алісі кому пересилати зашифрований ключ.
<math>A \rightarrow B: \{K_{AB}, A\}_{K_{BS}}</math>
: Аліса відправляє ключ Бобу, який може його розшифрувати за допомогою свого ключа (K<sub>BS</sub>) і таким чином автентифікуватися.
<math>B \rightarrow A: \{N_B\}_{K_{AB}}</math>
: Боб відправляє Алісі своє випадкове число (N<sub>B</sub>) зашифроване ключем <math>{K_{AB}}</math>, щоб засвідчити що у нього є ключ.
<math>A \rightarrow B: \{N_B-1\}_{K_{AB}}</math>
: Аліса розшифровує N<sub>B</sub> віднімає від нього одиницю, знов шифрує його ключем <math>{K_{AB}}</math> і відправляє Бобу, щоб засвідчити, що саме вона досі на зв’язкузв'язку.
 
=== Вразливості протоколу ===
Рядок 39 ⟶ 47:
 
=== Латка на діру ===
 
Цей недолік фікситьсяфіксується у [[Кербер (протокол)|протоколі Кербера]] шляхом впровадження мітки. Вона також може бути закрита, додаванням випадкового числа (nonce), як описано далі.
 
На початку протоколу:
Рядок 45 ⟶ 54:
:: <math>A \rightarrow B: A</math>
 
: Аліса відправляє Бобу запит.
 
:: <math>B \rightarrow A: \{A,\mathbf{N_B'}\}_{K_{BS}}</math>
 
: Боб відповідає своїм випадковим числом (nonce) зашифрованим під його ключем (K<sub>BS</sub>)
 
:: <math>A \rightarrow S: \left . A,B,N_A,\{A,\mathbf{N_B'}\}_{K_{BS}} \right .</math>
 
: Аліса відправляє повідомлення на сервер, щоб ідентифікувати себе та Боба, і говорить серверу що хоче зв’язатисязв'язатися з Бобом.
 
:: <math>S \rightarrow A: \{N_A, K_{AB}, B, \{K_{AB}, A,\mathbf{N_B'}\}_{K_{BS}}\}_{K_{AS}}</math>
 
: Зверніть увагу, що з’явивсяз'явився аргумент випадкове число.
 
Далі протокол працює за тим же алгоритмом, що наведений [[#Симетричний протокол|вище]]. Зверніть увагу, що <math> N_B' </math> і <math> N_B</math> різні. Додавання випадкового числа, унеможливлює використання [[атака повторного відтворення|атаки повторного відтворення]] за допомогою застарілих ключів <math>\{K_{AB}, A,\mathbf{N_B'}\}_{K_{BS}}</math>, тому що ключем K<sub>BS</sub> володіють тільки Боб та довірений сервер.
 
== Протокол з відкритим ключем ==
 
Використовує [[асиметричні алгоритми шифрування|асиметричні алгоритми шифрування]].
Рядок 70 ⟶ 79:
* K<sub>PA</sub> і K<sub>SA</sub>, відповідно публічний та приватний ключі шифрування для A
* K<sub>PB</sub> і K<sub>SB</sub>, аналогічно для B
* K<sub>PS</sub> і K<sub>SS</sub>, аналогічно для S. (Зверніть увагу, що K<sub>SS</sub> використовують для ''шифрування'', а для ''розшифрування'' K<sub>PS</sub> ).
 
Робота протоколу:
 
<math>A \rightarrow S: \left . A, B \right .</math>
: A відправляє запит до S на отримання відкритого ключа B.
<math>S \rightarrow A: \{K_{PB}, B\}_{K_{SS}}</math>
: S повертає відкритий ключ K<sub>PB</sub> який відповідає B, підписаний сервером для затвердження автентичності.
<math>A \rightarrow B: \{N_A, A\}_{K_{PB}}</math>
: A визначає N<sub>A</sub> і відправляє його Бобу (B).
<math>B \rightarrow S: \left. B, A \right .</math>
: B відправляє запит до S на отримання відкритого ключа A.
<math>S \rightarrow B: \{K_{PA}, A\}_{K_{SS}}</math>
: Сервер відповідає.
<math>B \rightarrow A: \{N_A, N_B\}_{K_{PA}}</math>
: B генерує N<sub>B</sub> і відправляє його разом з N<sub>A</sub>, щоб підтвердити здатність розшифровувати ключем K<sub>SB</sub>.
<math>A \rightarrow B: \{N_B\}_{K_{PB}}</math>
: A відправляє N<sub>B</sub> Бобу (B), щоб підтвердити здатність розшифровувати ключем K<sub>SA</sub>.
 
Після завершення алгоритму A і B впевнені один в одному і знають N<sub>A</sub> і N<sub>B</sub>. Ці числа відомі тільки для A і B.
 
=== Вразливості протоколу ===
 
На жаль, цей протокол вразливий до [[Атака «Людина всередині»|атаки «Людина всередині»]]. Зловмисник може почати сесію з А і ретранслювати її Бобу (B) і таким чином представити себе перед B, як A.
Рядок 98 ⟶ 107:
 
<math>A \rightarrow I: \{N_A, A\}_{K_{PI}}</math>
: A посилає N<sub>A</sub> зашифроване K<sub>SI</sub>.
<math>I \rightarrow B: \{N_A, A\}_{K_{PB}}</math>
: I перенаправляє повідомлення до B, маскуючись під A.
<math>B \rightarrow I: \{N_A, N_B\}_{K_{PA}}</math>
: B відправляє N<sub>B</sub>.
<math>I \rightarrow A: \{N_A, N_B\}_{K_{PA}}</math>
: I перенаправляє повідомлення до A.
<math>A \rightarrow I: \{N_B\}_{K_{PI}}</math>
: A розшифровує N<sub>B</sub> і відправляє підтвердження до I.
<math>I \rightarrow B: \{N_B\}_{K_{PB}}</math>
: I перешифровує N<sub>B</sub>, і відправляє до B для підтвердження.
 
Після атаки B помилково думає, що спілкується з A і що N<sub>A</sub> і N<sub>B</sub> знає тільки A і B.
Рядок 127 ⟶ 136:
}}
</ref>
Там також присутня оновлена схема протоколу (яка застерігає від атаки), названа протоколом '''Нідхема-Шредера-Лоу'''. Виправлення полягає у заміні шостого запиту, тобто нам треба змінити:
 
<math>B \rightarrow A: \{N_A, N_B\}_{K_{PA}}</math>
Рядок 135 ⟶ 144:
<math>B \rightarrow A: \{N_A, N_B, B\}_{K_{PA}}</math>
 
== Див. також ==
==See also==
 
* [[Кербер (протокол)|Протокол Кербера]]
* [[Протокол Отвея-Рііса]]
Рядок 141 ⟶ 151:
* [[Протокол Ньюмана — Стабблбайна]]
 
== Примітки ==
==References==
{{Примітки}}
{{Reflist}}
 
== Посилання ==
==External links==
* [http://www.lsv.ens-cachan.fr/spore/nspk.html - описОпис протоколу з відкритим ключем] {{ref-en}}
* [http://www.lsv.ens-cachan.fr/spore/nssk.html - протоколиПротоколи із симетричними ключами] {{ref-en}}
* [http://www.lsv.ens-cachan.fr/spore/nspkLowe.html - зміниЗміни Лоу у протоколі з відкритими ключами] {{ref-en}}
 
{{DEFAULTSORT:Протокол Нідхема-Шредера}}
[[Категорія:Автентифікація]]
[[Категорія:Контроль_доступуКонтроль доступу]]
[[Категорія:Інформаційна_безпекаІнформаційна безпека]]
[[Категорія:Інтернет-протоколи]]