1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
% Лекция 28 (05.05.23)
% TODO: дописать
В 1977--78 годах, работая в Массачусетском технологическом институте, они
создали шифр, названный RSA (по первым буквам фамилий), который произвёл
переворот в криптографии и открыл новый период в сфере защиты информации.
В настоящее время RSA --- самый распространённый метод шифрования используемый
в компьютерных сетях. В этом шифре осуществлена другая казавшаяся несбыточной мечта
криптографов: возможность защищённой связи без передачи секретного ключа.
\begin{enumerate}
\item
Пусть имеется компьютерная сеть, абоненты которой хотят обмениваться
информацией, не предназначенной для непредусмотренных пользователей.
Абонент A выбирает два больших (примерно по 100--300 цифр) простых числа
$p$ и $q$, находит их произведение $n = pq$.
Затем вычисляется $\varphi(n) = \varphi(pq) = \varphi(p) \varphi(q) = (p -
1)(q - 1)$.
Затем в кольце $\Z_{\varphi(n)}$ подбирает целое число $e > 1$ взаимно
простое с $\varphi(n)$. Затем он опубликовывает пару $(n, e)$ --- это его
\emph{открытый ключ}, он применяется для шифрования сообщений.
\item
Предположим, что другой абонент B желает отправить для A секретное
сообщение. Он переводит открытый текст в числовую форму $m$ (например,
заменяя a на 01, b --- на 02, $\dots$, z --- на 26, а пробел между словами
--- на 00). Если полученное число $m$ превышает $n$, его можно разбить на
последовательные части, каждая меньше $n$, так что для простоты пусть $m <
n$. Далее B вычисляет $c = m^e \pmod{n}$. Это криптограмма, которую он и
посылает абоненту A.
\item
Для того, чтобы её прочитать, A уже заготовил свой \emph{закрытый ключ} ---
число $d$, удовлетворяющее двум требованиям: $1 < d < n$ и $ed \equiv 1
\pmod{\varphi(n)}$.
Так как $e$ взаимно просто с $\varphi(n)$, то это сравнение имеет решение,
то есть такое число существует и притом только одно. Теперь A вычисляет
$c^d \pmod{n}$ и получает $m$.
\end{enumerate}
\begin{theorem}[Корректность метода шифрования RSA, Ривест, 1978 г.]
По построению шифра RSA $c^d \pmod{n} = m$.
\end{theorem}
\begin{example}
$p = 3, q = 11, n = pq = 3 \cdot 11 = 33$.
$\varphi(n) = \varphi(pq) = \varphi(p) \varphi(q) = (p - 1) (q - 1) = 2 \cdot
10 = 20$.
$e = 7$ (из кольца $Z_{20}$).
То есть открытый ключ --- (33, 7).
$ex = 7x \equiv 1 \pmod{20}$.
$d = 3; m = 2$.
\end{example}
Составим криптограмму:
\begin{equation*}
c = m^e \pmod{n} = 2^7 \pmod{33} = 128 \pmod{33} = 29
\end{equation*}
Таким образом, Боб посылает Алисе криптограмму $c = 29$.
Теперь $m = c^d \pmod{n} = 29^3 \pmod{33} = 2$.
Стойкость шифра RSA основана на задаче разложения на множители для больших
составных чисел, которая в настоящее время вычислительно (эффективно) не
разрешима.
\subsection{Криптосистема Эль-Гамаля}
Криптосистема Эль-Гамаля была предложена в 1985 году. Криптографическая
стойкость данной системы основа на сложности проблемы дискретных логарифмов.
\begin{enumerate}
\item
\textbf{Формирование системы.}
\begin{enumerate}
\item
Все участники разделяют в качестве системных параметров простое число
$p$ и образующий элемент $\alpha$ и мультипликативной группы $\Z^*_p$;
\item
Каждый участник $P$ случайным образом выбирает целое число $x_p$, $1
\leq x_p \leq p - 2$, которое держит в секрете;
\item
Каждый участник P вычисляет $y_p = \alpha^{x_p} \pmod{p}$ и
объявляет $y_p$ публичным ключом.
\end{enumerate}
\item
\textbf{Шифрование сообщения для Боба.}
Предположим, Алиса хочет послать секретное сообщение Бобу. Сообщение
представлено целым числом $0 \leq m \leq p - 1$.
\begin{enumerate}
\item Алиса выбирает случайное секретное число $0 \leq r \leq p - 1$;
\item Алиса вычисляет $R = \alpha^r \pmod{p}$;
\item Алиса вычисляет $S = m \cdot y_B^r \pmod{p}$;
\item Алиса посылает Бобу пару $(R, S)$.
\end{enumerate}
\item
\textbf{Расшифрование сообщения Бобом.}
\begin{enumerate}
\item
Боб получает пару $(R, S)$ и, используя своё секретное $x_B$,
восстанавливает сообщение $m$ путём следующего вычисления:
\begin{equation*}
\frac{s}{R^{x_B}} = m
\end{equation*}
\end{enumerate}
\end{enumerate}
|