summaryrefslogtreecommitdiff
path: root/crypto-algebra/lectures/lecture13.tex
diff options
context:
space:
mode:
authorAndrew Guschin <guschin@altlinux.org>2024-08-06 23:54:54 +0400
committerAndrew Guschin <guschin@altlinux.org>2024-08-06 23:54:54 +0400
commitf9b917e3135b27caf54d4e595e30cbe7ece935ae (patch)
tree8dec46094b92e792e326e10a728abaec202f76a0 /crypto-algebra/lectures/lecture13.tex
parentcc5ac702b1f50b76103e8ba2d4fc1751c0d0238f (diff)
Лекции по моделям безопасности и методам алгебраической геометрии
Diffstat (limited to 'crypto-algebra/lectures/lecture13.tex')
-rw-r--r--crypto-algebra/lectures/lecture13.tex183
1 files changed, 183 insertions, 0 deletions
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: дописать