Рейтинг:7

Найдите параметры эллиптической кривой, a и b, учитывая две точки на кривой

флаг th

Я новичок в криптографии на эллиптических кривых и работаю над задачей CTF, в которой используются эллиптические кривые. В настоящее время я пытаюсь найти генератор, $G$, и мне даны открытый и закрытый ключи, $P$ и $к$, ул. $P = [k]G$, а также еще одна случайная точка на кривой. Я знаю порядок, $n$, группы, и я знаю два простых числа, $р$ и $q$, которые являются единственными факторами $n$.

я читать что если у вас есть закрытый и открытый ключи, вы можете вычислить генератор как...

$$G = [k^{-1}]P\pmod n$$

... куда $k^{-1} = n - k$.

Это все здорово, но, к сожалению, я не знаю параметров, $а$ и $b$, эллиптической кривой, $у^2 = х^3 + топор + б$, поэтому у меня возникают проблемы с умножением точек EC на $к^{-1}$.

Я подумал, что, поскольку я знаю значения двух точек на кривой, у меня по существу есть следующая система линейных уравнений:

\начать{выравнивать} y_1^2 &= x_1^3 + ax_1 + b\ y_2^2 &= x_2^3 + ax_2 + b\ \end{выравнивание}

Я попытался решить это с помощью решателя теоремы z3, но получил ответ, утверждающий, что система неудовлетворительна. Затем я попытался изменить свою систему уравнений так, чтобы обе части уравнения рассчитывались по модулю. $n$, но это привело к тому, что z3 долго не мог найти решение, предположительно потому, что $а$ и $b$ являются 128-битными числами и $n$ представляет собой 512-битное число. Это заставило меня вспомнить мои уроки информатики в бакалавриате, где я изучал различные проблемы в области информатики, и это похоже на Целочисленное программирование, который является NP-полным.

Следовательно, можно ли эффективно вычислить параметры, $а$ и $b$, эллиптической кривой, если я знаю порядок $n$ и две точки $P$ и $Q$ на кривой?

knaccc avatar
флаг es
Чтобы инвертировать $k$, чтобы получить $k^{-1}$, вам нужно сделать «обратное по модулю мультипликативное». См. https://en.wikipedia.org/wiki/Modular_multiplicative_inverse.
Рейтинг:8
флаг in

Даны две точки на кривой $P=(x_1,y_1), Q=(x_2,y_2)$ мы можем определить параметры короткой формы Вейерштрасса $y^2 = x^2 + топор +b$. Вставьте координаты точек в уравнение кривой, чтобы получить два уравнения, как вы это сделали;

\начать{выравнивать} y_1^2 &= x_1^3 + ax_1 + b &\pmod{n} \ y_2^2 &= x_2^3 + ax_2 + b &\pmod{n}\ \hline & & \text{вычитание}\ y_1^2 - y_2^2 &= x_1^3 - x_2^3 + a (x_1 - x_2) &\pmod{n}\ (y_1 ^ 2 - y_2 ^ 2) - (x_1 ^ 3 - x_2 ^ 3)&= a (x_1 - x_2) &\pmod{n}\ [(y_1^2 - y_2^2) -(x_1^3 - x_2^3)] \cdot (x_1 - x_2)^{-1}&= a &\pmod{n}\ \end{выравнивание}

Чтобы иметь возможность найти $а$ проблема только в существовании модульный мультипликативный обратный из $(x_1 - x_2)$ к $\bмод п$.

  • Если $\gcd((x_1 - x_2),n) = 1$ тогда модулярная мультипликативная обратная существует и может быть легко найдена с помощью Расширенный алгоритм Евклида (Ext-GCD)
  • Если $\gcd((x_1 - x_2),n) \neq 1$ тогда нет обратного (см. Что, если ниже).
  • Отметим, что в случае $x_1 - x_2 = 0$ тогда у нас есть $\gcd(0,n) = n.$ Другими словами, обратного нет.

Один раз $а$ успешно найден, находя $b$ это проще. Подставьте известное в уравнение, затем найдите единственное неизвестное. $b$.


SageMath для модульной инверсии;

Zn = целые числа (12)
а = Zn(5)
б = а^-1
а

если установлено $а = 4$ то вы получите ошибку: ZeroDivisionError: инверсия Mod(4, 12) не существует.


Что, если Нет обратного $(x_1 - x_2)$ к $\bmod{n}$. Можем ли мы найти решения ниже?

$$(y_1^2 - y_2^2) -(x_1^3 - x_2^3)= a (x_1 - x_2) \pmod{n} \label{a}\tag{1}$$

Да, мы все еще можем найти решения для $\ref{а}$ но они не будут уникальными.

Лемма: Если $д$ является наибольшим общим делителем a и m, то линейная конгруэнция $ax \equiv b \pmod m$ имеет решения тогда и только тогда, когда $д$ делит $b$. Если $д$ делит $b$, то есть ровно $д$ решения

Чтобы найти их, из $a/d \cdot x \equiv b/d \pmod{m/d}$. Ясно, что $\gcd(а/д,м/д)=1$. Тогда мы можем инвертировать $а/д$ и решить для $х$. затем $\{x, x+\dfrac{m}{d},x+\dfrac{2m}{d}, \ldots, x+\dfrac{(d-1)m}{d} \}$ являются $д$ решения уравнения $\ref{а}$.

Ожидается, что для каждого из решений будет свой $b$, поэтому для однозначного определения потребуется дополнительная информация.

2.71828-asy avatar
флаг in
Уравнение $ab = c (\text{mod} n)$ может выполняться, даже если ни a, ни b не имеют мультипликативного обратного. Разве правильное условие не должно состоять в том, делит ли $(y_1^2 - y_2^2) - (x_1^3 - x_2^3)$ $\gcd(x_1 - x_2, n)$?
kelalaka avatar
флаг in
@2.71828-asy Возьмем случай $4x \equiv 6 \bmod 10$, $4x = 6 + 10 k$ делим на 2, имеем $2x = 3 \bmod 5$, поэтому $x = 4$, а другой $x+5$, так как оба удовлетворяют $4x \equiv 6 \bmod 10$, они оба являются решениями. Обратное, однако, должно быть уникальным!
2.71828-asy avatar
флаг in
Итак, поскольку мы знаем, что $a$ должно быть уникальным, мы знаем, что ищем инверсию, а не решение?
kelalaka avatar
флаг in
@ 2.71828-asy, отвечая в первом случае, я тоже рассматривал этот случай. Однако я не думал, что ОП понадобится, чтобы он так сосредоточился на уникальном решении. Добавил часть для этого. Во втором взгляде я увидел, что они могут понадобиться. Добавлено как **Что, если**, спасибо. Это очень распространенная проблема в решениях шифра Хилла, которую мы предлагаем посмотреть...
jinscoe123 avatar
флаг th
@kelalaka Спасибо! Ваше объяснение помогло мне осознать свою ошибку. Я делал обычное деление на $(x_1 - x_2)$, а не модульное деление.
kelalaka avatar
флаг in
@ jinscoe123 ECC немного сложен, поскольку есть поле, в котором координаты образуют группу по закону сложения. Однако каждая операция выполняется с базовым полем. Я поставил Sagemath, чтобы отметить, что нужна специальная команда, чтобы позволить $a \in \mathbb Z_5$ или обрабатывать себя на других языках программирования.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.