summaryrefslogtreecommitdiff
path: root/cryptography/lectures/lecture28.tex
diff options
context:
space:
mode:
authorAndrew Guschin <guschin.drew@gmail.com>2023-05-05 15:05:42 +0400
committerAndrew Guschin <guschin.drew@gmail.com>2023-05-05 15:05:42 +0400
commit14ba71d9e77e449888e85c4c5e14c4d93ad11dbf (patch)
tree34eef4ff1b7be0474ee66b8af33a3f5504d03595 /cryptography/lectures/lecture28.tex
parent29b48da7da705f108131600df975367db81d6e4b (diff)
Добавлены лекции 26 и 28
Diffstat (limited to 'cryptography/lectures/lecture28.tex')
-rw-r--r--cryptography/lectures/lecture28.tex125
1 files changed, 125 insertions, 0 deletions
diff --git a/cryptography/lectures/lecture28.tex b/cryptography/lectures/lecture28.tex
new file mode 100644
index 0000000..8d097a4
--- /dev/null
+++ b/cryptography/lectures/lecture28.tex
@@ -0,0 +1,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}
+