From f9b917e3135b27caf54d4e595e30cbe7ece935ae Mon Sep 17 00:00:00 2001
From: Andrew Guschin <guschin@altlinux.org>
Date: Tue, 6 Aug 2024 23:54:54 +0400
Subject: =?UTF-8?q?=D0=9B=D0=B5=D0=BA=D1=86=D0=B8=D0=B8=20=D0=BF=D0=BE=20?=
 =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D1=8F=D0=BC=20=D0=B1=D0=B5=D0=B7?=
 =?UTF-8?q?=D0=BE=D0=BF=D0=B0=D1=81=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20=D0=B8?=
 =?UTF-8?q?=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B0=D0=BC=20=D0=B0=D0=BB?=
 =?UTF-8?q?=D0=B3=D0=B5=D0=B1=D1=80=D0=B0=D0=B8=D1=87=D0=B5=D1=81=D0=BA?=
 =?UTF-8?q?=D0=BE=D0=B9=20=D0=B3=D0=B5=D0=BE=D0=BC=D0=B5=D1=82=D1=80=D0=B8?=
 =?UTF-8?q?=D0=B8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 crypto-algebra/lectures/lecture13.tex | 183 ++++++++++++++++++++++++++++++++++
 1 file changed, 183 insertions(+)
 create mode 100644 crypto-algebra/lectures/lecture13.tex

(limited to 'crypto-algebra/lectures/lecture13.tex')

diff --git a/crypto-algebra/lectures/lecture13.tex b/crypto-algebra/lectures/lecture13.tex
new file mode 100644
index 0000000..7b6414f
--- /dev/null
+++ b/crypto-algebra/lectures/lecture13.tex
@@ -0,0 +1,183 @@
+% Лекция 13 (04.12.23)
+
+Соответствие $x \\ x'$ является взаимно однозначным и легко вычислимым.
+
+\begin{example}
+  Встроим открытый текст в координату точки эллиптической кривой, определённой
+  над конечным полем $\FF_{32} = \FF_{2^5}$. Пусть эллиптическая кривая $E(\FF_{32})$
+  задана уравнением
+  \begin{equation*}
+    y^2 + xy = x^3 + t;
+  \end{equation*}
+  поле $\FF_{32}$ задано полиномом
+  \begin{equation*}
+    t^5 + t^2 + 1,
+  \end{equation*}
+  таким образом, $\FF_{32} = \FF_2 / (t^5 + t^2 + 1)$.
+
+  Кривая имеет 16 точек. Открытый текст $t^3 + 1$ не является $x$-координатой
+  точки кривой. Вычисляем
+  \begin{align*}
+    \sqrt{t} &= t^{2^{5 - 1}} = t^{16} = * \\
+    t^5 &= -t^2 - 1 = t^2 + 1; \\
+    t^6 &= tt^5 = t(t^2 + 1) = t^3 + t; \\
+    t^7 &= t^4 + t^2; \\
+    t^8 &= t^5 + t^3 = t^3 + t^2 + 1; \\
+    t^{16} &= (t^8)^2 = t^6 + 2t^5 + t^4 + 2t^3 + 2t^3 + 2t^2 + 1
+    = t^4 + t^3 + t + 1. \\
+    * &= t^4 + t^3 + t + 1.
+  \end{align*}
+
+  Заменяем элемент $t^3 + 1$ на элемент, заданный уравнением
+  \begin{equation*}
+    \frac{1}{x} = \frac{1}{t^4 + t^3 + t + 1} + \frac{1}{t^3 + 1}.
+  \end{equation*}
+
+  Получаем необходимую $x$-координату точки кривой:
+  \begin{align*}
+    \frac{1}{x} &= \frac{t^4 + t^3 + t + 1 + t^3 + 1}{(t^4 + t^3 + t + 1)(t^3 + 1)} = \\
+                &= \frac{t(t^3 + 1)}{(t^4 + t^3 + t + 1)(t^3 + 1)} = \\
+                &= \frac{t}{t^4 + t^3 + t + 1}; \\
+    x &= t^3 + t^2 + \frac{1}{t} + 1 = \\
+      &= t^3 + t^2 + (t^4 + t) + 1 = \\
+      &= t^4 + t^3 + t^2 + t + 1.
+  \end{align*}
+\end{example}
+
+%% NOTE: 3.3.2
+\subsubsection{Установление сеансового ключа}
+
+Рассмотрим аналог ключевого обмена Диффи--Хеллмана. Предположим, что Алиса и Боб
+хотят договориться о ключе, которым будут впоследствии пользоваться в некоторой
+классической криптосистеме.
+
+Ключом может служить <<случайная>> точка на эллиптической кривой $E$, так как
+Алиса и Боб могут заранее договориться о способе преобразования её в целое число
+(например, взять образ её координаты $x$ при некотором установленном в системе
+простом отображении из $\FF_q$ в натуральные числа).
+
+Итак, предположим, что $E$ --- эллиптическая кривая над $\FF_q$, а $Q$ ---
+согласованная (и общеизвестная) точка на кривой. Желательно, чтобы точка $Q$
+имела весьма большой порядок (равный либо $\#E(\FF_q)$, либо большому делителю
+$\#E(\FF_q)$).
+
+Здесь точка $Q$ играет ту же роль, что и образующий элемент $g$ в системе
+Диффи--Хеллмана для конечных полей.
+
+Договорённость может быть предварительной, или эллиптическая кривая может
+создаваться непосредственно в ходе сеанса связи.
+
+Для установления сеансового ключа Алиса и Боб выполняют следующий протокол:
+\begin{enumerate}
+  \item
+    Алиса случайным образом выбирает целое число $k_A$, которое держит в секрете.
+  \item
+    Алиса вычисляет точку $k_A Q \in E$ и посылает её Бобу (возможно открыто).
+  \item
+    Боб случайным образом выбирает целое число $k_B$, которое держит в секрете.
+  \item
+    Боб вычисляет точку $k_B Q \in E$ и посылает её Алисе (возможно открыто).
+  \item
+    Алиса умножает точку, которую она получила от Боба, на свой секретный ключ
+    $k_A$. Боб умножает точку, которую он получил от Алисы, на свой секретный
+    ключ $k_B$, тем самым получая общий ключ
+    \begin{equation*}
+      P = k_A k_B Q \in E
+    \end{equation*}
+\end{enumerate}
+
+Ева, которая бы хотела шпионить за Алисой и Бобом, должна была бы определить $P
+= k_A k_B Q$, зная $Q$, $k_A Q$ и $k_B Q$, но не зная $k_A$ или $k_B$.
+
+Задача подслушивателя называется <<задачей Диффи--Хеллмана для эллиптических
+кривых>>.
+
+Систему Диффи--Хеллмана можно взломать, если решить <<проблему дискретного
+логарифма>> в группе точек эллиптической кривой $E$.
+
+\subsubsection{Шифрование}
+
+Протокол Диффи--Хеллмана модифицируется для передачи сообщений, используя
+идею Эль-Гамаля. Пусть $E$ --- эллиптическая кривая над $\FF_q$, а $Q$ ---
+согласованная (и общеизвестная) точка на кривой.
+
+Предположим, что набор единиц сообщения был встроен в $E$ некоторым
+согласованным образом, и Боб хочет послать Алисе сообщение $M \in E$.
+
+\begin{enumerate}
+  \item
+    Алиса случайным образом выбирает целое число $k_A$, которое держит в секрете.
+  \item
+    Алиса вычисляет точку $k_A Q \in E$ и посылает её Бобу (возможно открыто).
+  \item
+    Боб случайным образом выбирает целое число $k_B$, которое держит в секрете.
+  \item
+    Боб вычисляет точку $k_B Q \in E$ и посылает её Алисе (возможно открыто).
+  \item
+    Боб выбирает другое секретное случайное целое число $l$.
+  \item
+    Боб отправляет Алисе пару точек
+    \begin{equation*}
+      (lQ, M + l(k_A q)).
+    \end{equation*}
+  \item
+    Чтобы расшифровать сообщение, Алиса умножает первую точку в паре на своё
+    секретное $k_A$, а затем вычитает результат из второй точки в паре:
+    \begin{equation*}
+      (M + l(k_A Q)) - k_A(lQ) = M.
+    \end{equation*}
+\end{enumerate}
+
+Данную систему также можно будет взломать, если решить <<проблему дискретного
+логарифма>> в группе точек эллиптической кривой $E$.
+
+
+\subsubsection{Цифровая подпись}
+
+\paragraph{Протокол цифровой подписи Эль-Гамаля.}
+
+В протоколе цифровой подписи Эль-Гамаля открытый ключ проверки подписи сожержит
+уравнение эллиптической кривой $E(F)$, образующую $Q$ простого порядка $r$ и
+точку $P = lQ$.
+
+Секретным ключом формирования подписи является показатель $l$. Кроме того, в
+протоколе подписи используется хэш-функция $h$ и функция $f$. В качестве
+функции $f(R)$ могут использоваться функции от координат: $x_R$, $y_R$,
+$x_R + y_R$ и т. п.
+
+Для получения цифровой подписи под сообщением $M$ необходимо выполнять
+следующие действия (шаги) по алгоритму:
+\begin{enumerate}
+  \item вычислить хэш-код сообщения $M: h(m)$;
+  \item
+    сгенерировать случайное (псевдослучайное) целое число $k$, удовлетворяющее
+    неравенству
+    \begin{equation*}
+      0 < k < r;
+    \end{equation*}
+  \item
+    вычислить точку эллиптической кривой $R = kQ$, $R = (x_R, y_R)$;
+  \item
+    вычислить значение $s$ из решения сравнения
+    \begin{equation}
+      h(m) \equiv lf(R) + ks \pmod{r}
+      \label{eq:23}
+    \end{equation}
+\end{enumerate}
+
+При этом необходимо, чтобы выполнялось неравенство $f(R) \neq 0 \pmod{r}$, в
+противном случае вернуться к шагу 2. Если $f(R) \equiv 0 \pmod{r}$, то подпись
+не зависит от персонального ключа.
+
+Исходными данными этого процесса являются ключ подписи $l$ и подписываемое
+сообщение $M$, а входным результатом --- цифровая подпись $(R, s)$.
+
+При этом можно сократить объём подписи, задав вместо $R$ только координату
+$x_R$ и знак координаты $y_R$ (0, если $y_R < \frac{p}{2}$, и 1, если $y_R
+> \frac{p}{2}$), тогда при проверке подписи необходимо будет восстановить
+координату $y_R$ решением квадратного уравнения в поле $F$.
+
+Для проверки цифровой подписи $(R, s)$ под полученным сообщением $M$ необходимо
+выполнять следующие действия (шаги) по алгоритму:
+
+%% TODO: дописать
-- 
cgit v1.2.3

