Рейтинг:0

Практическая проверка точки на кривой

флаг cn

Я использую кривую secp256r1. Его формулы

$y^2 == x^3 + a\cdot x + b$

$а$ = 0xffffffff000000010000000000000000000000000fffffffffffffffffffffffc (11579208921035624876269744694940757353008614341529031419553363130858639098)

$b$ = 0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b (410583637251521421293261297800472684091144410159937261955538140256

И я проверяю базовую точку $G$:

$G_x$ = 0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296 (48439561293906451759052585252797914202762949526040638799784400

$G_y$ = 0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5 (361342509567497957985851279195878881956611106672985015071907761841454)

Расчет левой стороны $у^2$ дает мне:

1305684092205373533040221077691077339148521389884908815529498583727542773586739078600732747106020956683600164371063053787771205051084393085089418365301881

Вычисление правой стороны $х^3 + а\cdot х + б$ дает:

113658155427813365024510503555061841058107074695539734801914243855899581676106121216742031186749037217068373713699401633275460693094202620308271598867055040123401752346577561684789671973397929725392419990583281258891711488349384075

Левая и правая стороны не равны.

Что я делаю не так в своих расчетах?

kelalaka avatar
флаг in
Отвечает ли это на ваш вопрос? [Подтвердить, что точка принадлежит secp256r1](https://crypto.stackexchange.com/questions/90151/verify-that-a-point-belongs-to-secp256r1) Точно такая же причина.
флаг cn
@kelalaka, да, если бы я выполнил мод с p с обеих сторон, и он стал бы равным. Он работает с базовой точкой и другими постоянными точками на кривой. Но у меня возникла проблема с очками, рассчитанными скалярным умножением. Я задал вопрос в другой теме. Теперь копаемся в моей реализации операции скалярного умножения, чтобы определить, что не так.
Рейтинг:1
флаг my

Что я делаю не так в своих расчетах?

Фактическое уравнение может быть выражено как:

$$y^2 \эквив x^3 + ax + b \pmod p$$

куда $р$ является характеристикой поля, которое использует P256. Работая в этой сфере, мы обычно понимаем, что находимся в $GF(p)$ и нет $\mathbb{Z}$ (и поэтому нам не нужно выписывать модуль), однако важно, чтобы мы понимали, что он есть.

Когда вы не уменьшаете модуль каждой стороны $р$ и посмотрите, работает ли он.

Когда я работаю с вычислениями P256, я обычно использую подсистему, которая выполняет модульное сокращение на каждом шаге (сложение, умножение); в этом случае он просто не подходит.

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

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