You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
В результате стороны получают общий секретный ключ $K_S$.
29
+
В результате стороны получают общий секретный ключ $K$.
33
30
34
-
Общим недостатком всех подобных протоколов является отсутствие аутентификации сторон. Конечно, в случае пассивного криптоаналитика это не требуется, но в реальной жизни всё-таки нужно рассматривать все возможные модели (в том числе активного криптоаналитика) и использовать такие протоколы, которые предполагают взаимную аутентификацию сторон.
31
+
Общим недостатком всех подобных протоколов является отсутствие аутентификации сторон. Конечно, в случае пассивного криптоаналитика это не требуется, но в реальной жизни всё-таки нужно рассматривать все возможные модели (в том числе активного криптоаналитика) и использовать такие протоколы, которые предполагают взаимную аутентификацию сторон. Также, в отличие от схемы Диффи~---~Хеллмана, новый ключ выбирается инициатором сеанса, что позволяет инициатору, исходя не из лучших побуждений, заставить второго участника использовать устаревший сеансовый ключ.
32
+
33
+
Если говорить в терминах свойств безопасности, то все представители данного класса протоколов декларируют только аутентификацию ключа (G7). В отличие от схемы Диффи~---~Хеллмана, трёхпроходные протоколы не требуют выбора новых <<мастер>>-ключей для каждого сеанса протокола, из-за чего нельзя гарантировать ни совершенную прямую секретность (G9), ни формирование новых ключей (G10).
Перед началом протокола обе стороны имеют свои секретные ключи $K_A$ и $K_B$, представляющие собой случайные двоичные последовательности с равномерным распределением символов. Функция шифрования определяется как $E_i( X ) = X \oplus K_i$, где $X$ это сообщение, а $K_i$ -- секретный ключ. Очевидно, что:
41
40
\[\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) \]
42
41
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$. Предположим, что криптоаналитик перехватил все три сообщения:
63
55
\[ K \oplus K_A, ~~ K \oplus K_A \oplus K_B, ~~ K \oplus K_B. \]
64
56
Сложение по модулю 2 всех трёх сообщений даёт ключ $K$. Поэтому такая система шифрования не применяется.
Последнее выражение верно по следствию из малой теоремы Ферма\index{теорема!Ферма малая}. Операции шифрования и расшифрования определяются следующим образом (на примере Алисы):
78
-
\[\begin{array}{ll}
79
-
\forallX < 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
+
\forallM < 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. \\
82
74
\end{array}\]
83
75
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. \]
\item[(4)] Боб расшифровывает $D_B \left( E_B \left( K \right) \right) = K^{bb'} \bmod p = K$
84
+
\end{protocol}
85
+
86
+
По окончании сеанса протокола Алиса и Боб знают общий сеансовый ключ $K$.
102
87
103
88
Предположим, что криптоаналитик перехватил три сообщения:
104
89
\[\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. \\
108
93
\end{array} \]
109
94
110
95
Чтобы найти ключ $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