% Лекция 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: дописать