Штрих в определении кривой Secp256k1
Премьер $р$ является частью проектирования, анализа и определения кривой, которая определяет $\mathbb{F_P}$. Если кто-то использует другой $р$ затем у них есть разные кривые, которые необходимо проанализировать, затем опубликовать и распространить для связи с этой кривой.
Для того, чтобы общаться $р$, уравнение кривой (здесь $(а,б)$), базовая точка $G$, бесконечно удаленная точка, порядок кривой $n$, и кофактор $ч$ предусмотрены в стандарте.
это шестерка $T = (p,a,b,G,n,h)$ и для Secp256k1 является;
- ''p'' = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F
- = $2^{256} - 2^{32} - 2^9 - 2^8 - 2^7 - 2^6 - 2^4 - 1$
Кривая $E: y^2 = x^3+ax+b$ над $\mathbb{F}_p$ определяется:
- ''а'' = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
- ''b'' = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000007
Базовая точка G в сжатом виде:
- ''G'' = 02 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798
а в несжатом виде:
- ''G'' = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6858B419 8F44419
Наконец, порядок «n» в «G» и кофакторе:
- ''n'' = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141
- ''ч'' = 01
$а,б,р,г$ достаточно для связи, однако нет необходимости пересчитывать остальные.
Небольшой пример, чтобы продемонстрировать, что они совершенно разные.
К = ГФ (19)
E = Эллиптическая кривая (K, [0,7])
печать (Е)
печать (E.order())
печать (E.abelian_group())
тогда $n = 12$ и группа кривых изоморфна $\mathbb{Z}_6 \oplus \mathbb{Z}_2$
К = GF(31)
E = Эллиптическая кривая (K, [0,7])
печать (Е)
печать (E.order())
печать (E.abelian_group())
тогда $n = 21$ и группа кривых изоморфна $\mathbb{Z}_{21}$
Конечно, можно найти два кортежа, $(p_1,a_1,b_1)$ и $(p_2,a_2,b_2)$ так, чтобы они имели одинаковые группы точек.Это не проблема, просто нужна стандартизированная шестерка.
Мы ограничены $\mathbb{F}_p$?
Если вы спрашиваете, мы всегда должны использовать основное поле $\mathbb{F}_p$ тогда ответ нет. Любое конечное поле $\mathbb{F}_{p^m}$ хорошо, если безопасно и быстро. Видеть Фгриё ответ для деталей.
Порядок группы кривых
Некоторые кривые, такие как secp256k1, имеют простой порядок (т. е. количество точек простое). Другие, такие как Curve25519 и Curve448, не имеют простых порядков. Это помогает им иметь представление Монтгомери, которое имеет быстрое скалярное умножение на лестницу Монтгомери. У других может быть менее эффективная лестница Джойса.
Мы не хотим, чтобы порядок кривой был равен $р$ в этом случае кривая является аномальной и небезопасной.
Модуль в скалярном умножении
скалярное умножение $[к]П$ на самом деле это означает добавление $P$ сам $к$-раз. Более формально;
позволять $k \in\mathbb{N}\обратная косая черта\{ 0\}$
\начать{выравнивать}
[k]:&E \к E\
&P\mapsto [k]P=\underbrace{P+P+\cdots+P}_{\text{$k$ раз}}.\end{align}
и будучи личностью $[0]P = \mathcal{O}$.
При вычислении этого мы используем порядок точек $P$, если кривая имеет простой порядок, такой как secp256k1, то все элементы, кроме единицы, имеют один и тот же простой порядок. У нас есть это равенство
$$[k]P = [k \bmod \text{ord}(P)]P$$
и мы используем $P$с первоочередным приказом смягчить атаки.