Протокол Нідгема — Шредера: відмінності між версіями
[неперевірена версія] | [неперевірена версія] |
Вилучено вміст Додано вміст
ZéroBot (обговорення | внесок) м r2.7.1) (робот додав: en:Needham–Schroeder protocol |
Немає опису редагування |
||
Рядок 1:
{{Cite journal
| | | | |title=Using encryption for authentication in large networks of computers.
|journal=Communications of the ACM
|volume=21
| | | |doi=10.1145/359657.359659
| }}
</ref>
* Протокол ''Нідхема-Шредера'' з симетричними ключами заснований на [[шифрування з симетричними ключами|алгоритмі симетричного шифрування]]. Він
* Протокол ''Нідхема-Шредера'' з відкритими ключами
== Симетричний протокол ==
Припустимо Аліса (А) хоче
Визначення:
Рядок 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:
=== Латка на діру ===
Цей недолік
На початку протоколу:
Рядок 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 перешифровує
Після атаки 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>
== Див. також ==
* [[Кербер (протокол)|Протокол Кербера]]
* [[Протокол Отвея-Рііса]]
Рядок 141 ⟶ 151:
* [[Протокол Ньюмана — Стабблбайна]]
== Примітки ==
{{Примітки}}
== Посилання ==
* [http://www.lsv.ens-cachan.fr/spore/nspk.html
* [http://www.lsv.ens-cachan.fr/spore/nssk.html
* [http://www.lsv.ens-cachan.fr/spore/nspkLowe.html
{{DEFAULTSORT:Протокол Нідхема-Шредера}}
[[Категорія:Автентифікація]]
[[Категорія:
[[Категорія:
[[Категорія:Інтернет-протоколи]]
|