Эллиптическая кривая Edwards25519


В свою очередь, сама кривая основана на схеме подписи Ed25519. Несмотря на то, что используется не изменённая версия кривой, в остальном Monero не совсем следует схеме Ed25519.

Кривая edwards25519 ирационально эквивалентна кривой Curve25519.

Определение

Это стандартное определение кривой edwards25519, и тут нет ничего специфичного для Monero, кроме согласованных названий. Согласованные названия взяты из документа CryptoNote и широко используются в литературе по Monero.

Уравнение кривой

−x^2 + y^2 = 1 − (121665/121666) * x^2 * y^2

Примечание:

  • Кривая является двумерной (ничего особенного, как и все кривые, которые изучались в средней школе).

  • Кривая отражается ниже оси y из-за y^2 части уравнения (не является полиномом).

Базовая точка: G

Базовой точкой является определённая точка на кривой, используемая в качестве основы для дальнейших вычислений. Она произвольно выбирается авторами кривой просто для стандартизации схемы.

Следует отметить, что в данном случае достаточно указать значение y и знак значения x, так как определённый x может быть вычислен при помощи уравнения кривой.

G = (x, 4/5)  # берётся точка с положительным x

# Шестнадцатеричное представление базовой точки:
5866666666666666666666666666666666666666666666666666666666666666    

Порядок базовой точки, равный целому числу: l

С точки зрения расположения «полотно», на котором рисуется кривая, должно иметь конечное «разрешение», таким образом, координаты точки должны «обёртываться» в некоторой точке. Это достигается за счёт значения по модулю l (L в нижнем регистре). Другими словами, l определяет максимальную скалярную величину, которую мы можем использовать.

l = 2^252 + 27742317777372353535851937790883648493
# => 7237005577332262213973186563042994240857116359379907606001950938285454250989

l является простым числом, которое указывают авторы кривой.

На практике оно обозначает надёжность приватного ключа.

Общее количество точек на кривой

Общее количество точек на кривой также обозначается простым числом:

q = 2^255 - 19

На практике не все точки являются «полезными», поэтому надёжность приватного ключа ограничивается l, как было указано выше.

Реализация

Monero использует (очевидно, изменённый) вариант реализации Ref10, предложенный Дэниелом Дж. Бернштейном (Daniel J. Bernstein).

Ссылки