From 14ba71d9e77e449888e85c4c5e14c4d93ad11dbf Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Fri, 5 May 2023 15:05:42 +0400 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B?= =?UTF-8?q?=20=D0=BB=D0=B5=D0=BA=D1=86=D0=B8=D0=B8=2026=20=D0=B8=2028?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cryptography/lectures/lecture28.tex | 125 ++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 cryptography/lectures/lecture28.tex (limited to 'cryptography/lectures/lecture28.tex') 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} + -- cgit v1.2.3