Skip to content

Commit 632d9b7

Browse files
committed
Обновлён раздел про трёхпроходные протоколы
1 parent e9f07b3 commit 632d9b7

File tree

1 file changed

+50
-65
lines changed

1 file changed

+50
-65
lines changed

protocols/three-pass.tex

Lines changed: 50 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -9,29 +9,28 @@ \section{Трёхпроходные протоколы}
99
\item Алиса и Боб соединены незащищённым каналом связи, открытым для прослушивания (но не для модификации) злоумышленником.
1010
\item Каждая из сторон имеет пару из открытого и закрытого ключей $K_A$, $k_A$, $K_B$, $k_B$ соответственно.
1111
\item Сторонами выбрана и используется коммутативная функция шифрования:
12-
\begin{align*}
13-
D_{A} \left( E_{A} \left( X \right) \right) &= X & ~~\forall ~ X, \left\{ K_A, k_a \right\}; \\
14-
E_{A} \left( E_{B} \left( X \right) \right) &= E_B \left( E_A \left( X \right) \right) & ~~\forall ~ K_A, K_B, X.
15-
\end{align*}
12+
\[\begin{array}{lll}
13+
D_{A} \left( E_{A} \left( X \right) \right) = X & \forall X, \left\{ K_A, k_a \right\}; \\
14+
E_{A} \left( E_{B} \left( X \right) \right) = E_B \left( E_A \left( X \right) \right) & \forall ~ K_A, K_B, X.
15+
\end{array}\]
1616
\end{itemize}
1717

18-
Протокол состоит из трёх шагов (отсюда и название).
19-
\begin{enumerate}
20-
\item Алиса создаёт новый секретный сеансовый ключ $K_S$, шифрует его с помощью своего ключа $K_A$ и посылает сообщение Бобу:
21-
\[ Alice \to ~ E_A \left( K_S \right) ~ \to Bob. \]
22-
\item Боб получает это сообщение, шифрует его с помощью своего ключа $K_B$ и посылает сообщение Алисе:
23-
\[ Bob \to ~ E_B \left( E_A \left( K_S \right) \right) ~ \to Alice. \]
24-
Алиса, получив сообщение $E_B \left( E_A \left( K_S \right) \right)$, использует свой закрытый ключ $k_A$ для расшифрования:
25-
\[ D_A \left( E_B \left( E_A \left( K_S \right) \right) \right) = D_A \left( E_A \left( E_B \left( K_S \right) \right) \right) = E_B \left( K_S \right). \]
26-
\item Алиса передаёт Бобу сообщение, в котором новый секретный сеансовый ключ зашифрован уже только ключом Боба:
27-
\[ Alice \to ~ E_B \left( K_S \right) ~ \to Bob. \]
28-
Боб, получив сообщение $E_B \left( K_S \right)$, использует свой ключ $k_B$ для расшифрования:
29-
\[ D_B \left( E_B \left( K_S \right) \right) = K_S. \]
30-
\end{enumerate}
18+
Протокол состоит из трёх проходов с передачей сообщений (отсюда и название) и одного заключительного, на котором Боб получает ключ.
19+
\begin{protocol}
20+
\item[(1)] Алиса выбирает новый сеансовый ключ $K$
21+
\item[{}] $Alice \to \left\{ E_A \left( K \right) \right\} \to Bob$
22+
\item[(2)] $Bob \to \left\{ E_B \left( E_A \left( K \right) \right) \right\} \to Alice$
23+
\item[(3)] Алиса, используя коммутативность функции шифрования,
24+
\[ D_A \left( E_B \left( E_A \left( K \right) \right) \right) = D_A \left( E_A \left( E_B \left( K \right) \right) \right) = E_B \left( K \right). \]
25+
\item[{}] $Alice \to \left\{ E_B \left( K \right) \right\} \to Bob$
26+
\item[(4)] Боб расшифровывает $D_B \left( E_B \left( K \right) \right) = K$
27+
\end{protocol}
3128

32-
В результате стороны получают общий секретный ключ $K_S$.
29+
В результате стороны получают общий секретный ключ $K$.
3330

34-
Общим недостатком всех подобных протоколов является отсутствие аутентификации сторон. Конечно, в случае пассивного криптоаналитика это не требуется, но в реальной жизни всё-таки нужно рассматривать все возможные модели (в том числе активного криптоаналитика) и использовать такие протоколы, которые предполагают взаимную аутентификацию сторон.
31+
Общим недостатком всех подобных протоколов является отсутствие аутентификации сторон. Конечно, в случае пассивного криптоаналитика это не требуется, но в реальной жизни всё-таки нужно рассматривать все возможные модели (в том числе активного криптоаналитика) и использовать такие протоколы, которые предполагают взаимную аутентификацию сторон. Также, в отличие от схемы Диффи~---~Хеллмана, новый ключ выбирается инициатором сеанса, что позволяет инициатору, исходя не из лучших побуждений, заставить второго участника использовать устаревший сеансовый ключ.
32+
33+
Если говорить в терминах свойств безопасности, то все представители данного класса протоколов декларируют только аутентификацию ключа (G7). В отличие от схемы Диффи~---~Хеллмана, трёхпроходные протоколы не требуют выбора новых <<мастер>>-ключей для каждого сеанса протокола, из-за чего нельзя гарантировать ни совершенную прямую секретность (G9), ни формирование новых ключей (G10).
3534

3635
\subsection{Тривиальный вариант}
3736

@@ -40,26 +39,19 @@ \subsection{Тривиальный вариант}
4039
Перед началом протокола обе стороны имеют свои секретные ключи $K_A$ и $K_B$, представляющие собой случайные двоичные последовательности с равномерным распределением символов. Функция шифрования определяется как $E_i( X ) = X \oplus K_i$, где $X$ это сообщение, а $K_i$ -- секретный ключ. Очевидно, что:
4140
\[ \forall i, j, X: E_i \left( E_j \left( X \right) \right) = X \oplus K_j \oplus K_i = X \oplus K_i \oplus K_j = E_j \left( E_i \left( X \right) \right) \]
4241

43-
\begin{enumerate}
44-
\item Алиса генерирует новый сеансовый ключ, шифрует его своим секретным ключом $K_A$ и посылает Бобу:
45-
\[\begin{array}{l}
46-
E_A(K) = K \oplus K_A, \\
47-
Alice \to ~ E_A(K) ~ \to Bob.
48-
\end{array}\]
49-
\item Боб шифрует полученное сообщение уже своим ключом и отправляет Алисе:
50-
\[\begin{array}{l}
51-
E_B(E_A(K)) = K \oplus K_A \oplus K_B, \\
52-
Bob \to ~ E_B(E_A(K)) ~ \to Alice.
53-
\end{array}\]
54-
\item Используя коммутативность операции шифрования, Алиса <<снимает>> шифрование своим ключом и отправляет результат Бобу:
55-
\[ D_A \left( E_B \left( E_A \left( K \right) \right) \right) = K \oplus K_A \oplus K_B \oplus K_A = K \oplus K_B = E_B \left( K \right). \]
56-
\[ Alice \to ~ E_B \left( K \right) ~ \to Bob. \]
57-
Боб, получив сообщение $K \oplus K_B$, выполняет расшифрование:
58-
\[ D_B( E_B( K ) ) = K \oplus K_B \oplus K_B = K. \]
59-
В результате Алиса и Боб знают общий сеансовый ключ $K$.
60-
\end{enumerate}
61-
62-
Предложенный выбор коммутативной функции шифрования совершенной секретности был назван неудачным, так как существуют ситуации, при которых криптоаналитик может определить ключ $K$. Предположим, что криптоаналитик перехватил все три сообщения:
42+
\begin{protocol}
43+
\item[(1)] Алиса выбирает новый сеансовый ключ $K$
44+
\item[{}] $Alice \to \left\{ E_A \left( K \right) = K \oplus K_A \right\} \to Bob$
45+
\item[(2)] $Bob \to \left\{ E_B \left( E_A \left( K \right) \right) = K \oplus K_A \oplus K_B \right\} \to Alice$
46+
\item[(3)] Алиса, используя коммутативность функции шифрования,
47+
\[ D_A \left( E_B \left( E_A \left( K \right) \right) \right) = K \oplus K_A \oplus K_B \oplus K_A = K \oplus K_B = E_B \left( K \right). \]
48+
\item[{}] $Alice \to \left\{ E_B \left( K \right) = K \oplus K_B \right\} \to Bob$
49+
\item[(4)] Боб расшифровывает $D_B \left( E_B \left( K \right) \right) = K \oplus K_B \oplus K_B = K$
50+
\end{protocol}
51+
52+
По окончании сеанса протокола Алиса и Боб знают общий сеансовый ключ $K$.
53+
54+
Предложенный выбор коммутативной функции шифрования совершенной секретности является неудачным, так как существуют ситуации, при которых криптоаналитик может определить ключ $K$. Предположим, что криптоаналитик перехватил все три сообщения:
6355
\[ K \oplus K_A, ~~ K \oplus K_A \oplus K_B, ~~ K \oplus K_B. \]
6456
Сложение по модулю 2 всех трёх сообщений даёт ключ $K$. Поэтому такая система шифрования не применяется.
6557

@@ -74,37 +66,30 @@ \subsection{Бесключевой протокол Шамира}\index{прот
7466
\forall X: (X^a)^{a'} = X. \\
7567
\end{array}\]
7668

77-
Последнее выражение верно по следствию из малой теоремы Ферма\index{теорема!Ферма малая}. Операции шифрования и расшифрования определяются следующим образом (на примере Алисы):
78-
\[\begin{array}{ll}
79-
\forall X < p: & E_A( X ) = X^{a} \mod p, \\
80-
& D_A( X ) = X^{a'} \mod p, \\
81-
& D_A( E_A( X ) ) = X^{aa'} = X \mod p. \\
69+
Последнее выражение верно по следствию из малой теоремы Ферма\index{теорема!Ферма малая}. Операции шифрования и расшифрования определяются следующим образом:
70+
\[\begin{array}{lll}
71+
\forall M < p: & C = E( M ) = M^{a} & \mod p, \\
72+
& D( C ) = C^{a'} & \mod p, \\
73+
& D_A( E_A( M ) ) = M^{aa'} = M & \mod p. \\
8274
\end{array}\]
8375

84-
\begin{enumerate}
85-
\item Алиса создаёт новый сеансовый ключ $K < p$, шифрует его своим секретным ключом $a$ и посылает сообщение Бобу:
86-
\[\begin{array}{l}
87-
E_A(K) = K ^ a \mod p, \\
88-
Alice \to ~ E_A(K) ~ \to Bob.
89-
\end{array}\]
90-
\item Боб шифрует полученное сообщение уже своим ключом и отправляет Алисе:
91-
\[\begin{array}{l}
92-
E_B(E_A(K)) = K^{ab} \mod p, \\
93-
Bob \to ~ E_B(E_A(K)) ~ \to Alice.
94-
\end{array}\]
95-
\item Используя коммутативность операции шифрования, Алиса <<снимает>> шифрование своим ключом и отправляет результат Бобу:
96-
\[ D_A \left( E_B \left( E_A \left( K \right) \right) \right) = \left( K^{ab} \right) ^{a'} = K^{aa'b} = K^{b} = E_B \left( K \right) \mod p. \]
97-
\[ Alice \to ~ E_B \left( K \right) ~ \to Bob. \]
98-
Боб, получив сообщение $K \oplus K_B$, выполняет расшифрование:
99-
\[ D_B( E_B( K ) ) = K \oplus K_B \oplus K_B = K. \]
100-
В результате Алиса и Боб знают общий сеансовый ключ $K$.
101-
\end{enumerate}
76+
\begin{protocol}
77+
\item[(1)] Алиса выбирает новый сеансовый ключ $K < p$
78+
\item[{}] $Alice \to \left\{ E_A \left( K \right) = K^a \bmod p \right\} \to Bob$
79+
\item[(2)] $Bob \to \left\{ E_B \left( E_A \left( K \right) \right) = K^{ab} \bmod p \right\} \to Alice$
80+
\item[(3)] Алиса, используя коммутативность функции шифрования,
81+
\[ D_A \left( E_B \left( E_A \left( K \right) \right) \right) = K^{aba'} = K^b = E_B \left( K \right) \mod p. \]
82+
\item[{}] $Alice \to \left\{ E_B \left( K \right) = K^b \right\} \to Bob$
83+
\item[(4)] Боб расшифровывает $D_B \left( E_B \left( K \right) \right) = K^{bb'} \bmod p = K$
84+
\end{protocol}
85+
86+
По окончании сеанса протокола Алиса и Боб знают общий сеансовый ключ $K$.
10287

10388
Предположим, что криптоаналитик перехватил три сообщения:
10489
\[ \begin{array}{l}
105-
y_1 = K^a \mod p, \\
106-
y_2 = K^{ab} \mod p, \\
107-
y_3 = K^b \mod p. \\
90+
y_1 = K^a \bmod p, \\
91+
y_2 = K^{ab} \bmod p, \\
92+
y_3 = K^b \bmod p. \\
10893
\end{array} \]
10994

11095
Чтобы найти ключ $K$, криптоаналитику надо решить систему из этих трёх уравнений, что имеет очень большую вычислительную сложность, неприемлемую с практической точки зрения, если все три числа $a, b, ab$ достаточно велики. Предположим, что $a$ (или $b$) мало. Тогда, вычисляя последовательные степени $y_3$ (или $y_1$), можно найти $a$ (или $b$), сравнивая результат с $y_2$. Зная $a$, легко найти $a^{-1}\mod(p-1)$ и $K=(y_1)^{a^{-1}}\mod p$.

0 commit comments

Comments
 (0)