forked from vlsergey/infosec
-
Notifications
You must be signed in to change notification settings - Fork 0
/
el-gamal_protocol.tex
24 lines (20 loc) · 2.73 KB
/
el-gamal_protocol.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
\textbf{Протокол Эль-Гамаля}\index{протокол!Эль-Гамаля} относится к протоколам с аутентификацией одного из двух легальных пользователей.
\selectlanguage{russian}
\begin{enumerate}
\item Для начала стороны выбирают общие параметры $p, g$, где $p$ -- большое простое число, а $g$ -- примитивный элемент поля $\Z_p^*$.
\item Сторона $B$ создаёт свои закрытый и открытый ключи:
\[ \SK_B = b, ~ \PK_B = g^b \mod p, \]
$b$ -- случайное секретное число, $2 \leq b \leq p-1$.
Открытый ключ $\PK_B$ находится в общем открытом доступе для всех сторон, поэтому криптоаналитик $E$ не может подменить его -- подмена будет заметна.
\item Сторона $A$ вырабатывает свой секрет $x$, сеансовый ключ
\[ K_A = (\PK_B)^x = g^{bx} \mod p \]
и отправляет $B$:
\[ A \rightarrow B: ~ g^x \mod p. \]
\item Сторона $B$, получив от $A$ число $g^x \mod p$, использует его и свой секрет $\SK_B = b$, чтобы создать свой ключ
\[ K_B = (g^x)^{\SK_B} = g^{bx} \mod p, \]
то есть сеансовые ключи обеих сторон совпадают:
\[ K_A = K_B = K. \]
\end{enumerate}
Достоинством этого протокола является следующее его свойство. Если ключи $K_A$ и $K_B$ совпали и стороны могут обмениваться информацией, то сторона $A$ аутентифицирует сторону $B$, так как для шифрования она использовала открытый ключ $B$, который не может быть незаметно подменён, и только сторона $B$ может расшифровывать сообщения.
Что касается криптоаналитика в качестве <<человека посередине>>, то он может отправлять ложные сообщения, но не может узнать ключ $K$ и читать сообщения.
Есть протоколы, в которых стороны, осуществляющие обмен информацией, являются равноправными. Они называются протоколами взаимной аутентификации.