В математика в Кривая Монтгомери это форма эллиптическая кривая, отличается от обычного Форма Вейерштрасса, представлен Питер Л. Монтгомери в 1987 г.[1] Он используется для определенных вычислений, в частности в различных криптография Приложения.
Определение
Кривая Монтгомери уравнения
![{ textstyle { frac {1} {4}} y ^ {2} = x ^ {3} + 2,5x ^ {2} + x}](https://wikimedia.org/api/rest_v1/media/math/render/svg/507e08b7aad52ef861a63865bdd7575fe402060b)
Кривая Монтгомери над поле K определяется уравнение
![{ displaystyle M_ {A, B}: By ^ {2} = x ^ {3} + Ax ^ {2} + x}](https://wikimedia.org/api/rest_v1/media/math/render/svg/442cda26be6a0633cb59f817e5933625b67aa493)
для некоторых А, B ∈ K и с B(А2 − 4) ≠ 0.
Обычно это изгиб рассматривается над конечное поле K (например, над конечным полем q элементы, K = Fq) с характеристика отличается от 2 и с А ≠ ±2 и B ≠ 0, но они также рассматриваются рациональные с такими же ограничениями для А и B.
Арифметика Монтгомери
Можно проделать некоторые «операции» между точки эллиптической кривой: «складываем» две точки
состоит из поиска третьего
такой, что
; "удвоение" точки состоит из вычисления
(Для получения дополнительной информации об операциях см. Групповой закон ) и ниже.
Точка
на эллиптической кривой в форме Монтгомери
можно представить в координатах Монтгомери
, куда
находятся проективные координаты и
за
.
Обратите внимание, что при таком представлении точки теряется информация: действительно, в этом случае нет различия между аффинные точки
и
потому что они оба даны точкой
. Однако с помощью этого представления можно получить кратные точки, то есть заданные
, вычислить
.
Теперь, учитывая два момента
и
: их сумма дается точкой
чей координаты находятся:
![X_ {m + n} = Z_ {m-n} ((X_m-Z_m) (X_n + Z_n) + (X_m + Z_m) (X_n-Z_n)) ^ 2](https://wikimedia.org/api/rest_v1/media/math/render/svg/4b0f17b85bf890fca81b007b7303143cdc40268b)
![Z_ {m + n} = X_ {m-n} ((X_m-Z_m) (X_n + Z_n) - (X_m + Z_m) (X_n-Z_n)) ^ 2](https://wikimedia.org/api/rest_v1/media/math/render/svg/476f6b678ae046e7934f8e9ad89193cfb94ce3db)
Если
, тогда операция становится «удвоением»; координаты
даются следующими уравнениями:
![4X_nZ_n = (X_n + Z_n) ^ 2 - (X_n-Z_n) ^ 2](https://wikimedia.org/api/rest_v1/media/math/render/svg/ea40cfd9be313ac46148acc1e2ce697d3fbc7bcd)
![Х_ {2n} = (X_n + Z_n) ^ 2 (X_n-Z_n) ^ 2](https://wikimedia.org/api/rest_v1/media/math/render/svg/cbbc201c9240078b452987ad02c03595e7f589df)
![Z_ {2n} = (4X_nZ_n) ((X_n-Z_n) ^ 2 + ((A + 2) / 4) (4X_nZ_n))](https://wikimedia.org/api/rest_v1/media/math/render/svg/f7695802b7b703643e17156916de0f0291ef4d8d)
Первая рассмотренная выше операция (добавление ) имеет временные затраты 3M+2S, куда M обозначает умножение двух общих элементы поля, на котором задана эллиптическая кривая, а S обозначает возведение в квадрат генерального элемента поля.
Вторая операция (удвоение) требует затрат времени 2.M + 2S + 1D, куда D обозначает умножение общего элемента на постоянный; обратите внимание, что константа
, так
можно выбрать, чтобы иметь небольшойD.
Алгоритм и пример
Следующий алгоритм представляет собой удвоение точки.
на эллиптической кривой в форме Монтгомери.
Предполагается, что
. Стоимость этой реализации составляет 1M + 2S + 1 * A + 3add + 1 * 4. Здесь M обозначает необходимое умножение, S указывает квадраты, а a относится к умножению на A.
![XX_1 = X_1 ^ 2 ,](https://wikimedia.org/api/rest_v1/media/math/render/svg/2f0e5ed7bd82f5726d6b657ecd39c55cd5a41f7c)
![{ Displaystyle X_ {2} = (XX_ {1} -1) ^ {2} ,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c665c68c35462f435d62a9ff594aa069b7c04e4d)
![{ Displaystyle Z_ {2} = 4X_ {1} (XX_ {1} + aX_ {1} +1) ,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f967097dc4a57471ad069e8ea2d34ee747ac62a8)
Пример
Позволять
быть точкой на кривой
.В координатах
, с
,
.
Потом:
![XX_1 = X_1 ^ 2 = 4 ,](https://wikimedia.org/api/rest_v1/media/math/render/svg/f3e16e1acc2cfdb75c18deb8c77bfd178bc83fa5)
![{ Displaystyle X_ {2} = (XX_ {1} -1) ^ {2} = 9 ,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d3dd9da175d6c96974b427ced3b090c53561b3e2)
![{ Displaystyle Z_ {2} = 4X_ {1} (XX_ {1} + AX_ {1} +1) = 24 ,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/faf3ebfa98ba06b4e7cddcf6f0e391d82802eb3f)
Результат - это точка
такой, что
.
Добавление
Учитывая два очка
,
на кривой Монтгомери
в аффинных координатах точка
представляет, геометрически третья точка пересечения между
и линия, проходящая через
и
. Есть возможность найти координаты
из
, следующим образом:
1) рассмотрим общую линию
в аффинной плоскости и пропустить
и
(наложим условие), таким образом получим
и
;
2) пересечь прямую с кривой
, заменяя
переменная в уравнении кривой с
; следующее уравнение третьей степени получается:
![{ displaystyle x ^ {3} + (A-Bl ^ {2}) x ^ {2} + (1-2Blm) x-Bm ^ {2} = 0.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2830c3fab88b12e0bd66074d7bf441d3644ccea3)
Как уже отмечалось ранее, это уравнение имеет три решения, которые соответствуют
координаты
,
и
. В частности, это уравнение можно переписать как:
![(х-х_1) (х-х_2) (х-х_3) = 0](https://wikimedia.org/api/rest_v1/media/math/render/svg/b49e885cdcfc022717f4aa9e5e8e367f4fdb7aca)
3) Сравнивая коэффициенты двух идентичных уравнений, приведенных выше, в частности коэффициенты членов второй степени, получаем:
.
Так,
можно записать в терминах
,
,
,
, в качестве:
![{ displaystyle x_ {3} = B left ({ frac {y_ {2} -y_ {1}} {x_ {2} -x_ {1}}} right) ^ {2} -A-x_ { 1} -x_ {2}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/91a22ee8c2db6cf8ad2a2bda6c506420140b0f72)
4) Найти
координата точки
достаточно подставить значение
в соответствии
. Обратите внимание, что это не даст смысла
напрямую. Действительно, этим методом находятся координаты точки
такой, что
, но если нужна итоговая точка суммы между
и
, то необходимо заметить, что:
если и только если
. Итак, учитывая суть
, необходимо найти
, но это легко сделать, изменив знак на
координата
. Другими словами, необходимо будет изменить знак
координата, полученная подстановкой значения
в уравнении линии.
Итак, координаты точки
,
находятся:
![x_3 = frac {B (y_2-y_1) ^ 2} {(x_2-x_1) ^ 2} -A-x_1-x_2 = frac {B (x_2y_1-x_1y_2) ^ 2} {x_1x_2 (x_2-x_1) ^ 2}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ac1b977d44f6a84a92d52ab2c55fc651669478c4)
![y_3 = frac {(2x_1 + x_2 + A) (y_2-y_1)} {x_2-x_1} - frac {B (y_2-y_1) ^ 3} {(x_2-x_1) ^ 3} -y_1](https://wikimedia.org/api/rest_v1/media/math/render/svg/96251d347f7e12e04f7cc684b6c8eebbf729bf6b)
Удвоение
Учитывая точку
на кривой Монтгомери
, смысл
геометрически представляет собой третью точку пересечения между кривой и прямой, касательной к
; Итак, чтобы найти координаты точки
достаточно следовать тому же методу, который указан в формуле сложения; однако в этом случае строка у = лк + м должен касаться кривой в точке
, так что если
с
![{ displaystyle f (x, y) = x ^ {3} + Ax ^ {2} + x-By ^ {2},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0a24124d8a79b42c164b7b8ba9d34763130323d8)
тогда значение л, который представляет собой склон линии, определяется как:
![l = - left. frac { partial f} { partial x} right / frac { partial f} { partial y}](https://wikimedia.org/api/rest_v1/media/math/render/svg/27e5343df6367c6f9613178892d909eeaecb44ab)
посредством теорема о неявной функции.
Так
и координаты точки
,
находятся:
![{ displaystyle { begin {align} x_ {3} & = Bl ^ {2} -A-x_ {1} -x_ {1} = { frac {B (3x_ {1} ^ {2} + 2Ax_ { 1} +1) ^ {2}} {(2By_ {1}) ^ {2}}} - A-x_ {1} -x_ {1} & = { frac {(x_ {1} ^ { 2} -1) ^ {2}} {4By_ {1} ^ {2}}} = { frac {(x_ {1} ^ {2} -1) ^ {2}} {4x_ {1} (x_ {1} ^ {2} + Ax_ {1} +1)}} [8pt] y_ {3} & = (2x_ {1} + x_ {1} + A) l-Bl ^ {3} -y_ {1} & = { frac {(2x_ {1} + x_ {1} + A) (3 {x_ {1}} ^ {2} + 2Ax_ {1} +1)} {2By_ {1} }} - { frac {B (3 {x_ {1}} ^ {2} + 2Ax_ {1} +1) ^ {3}} {(2By_ {1}) ^ {3}}} - y_ {1 }. end {выравнивается}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2ce2a17af104efe86d0db8f1b044f868fde9e710)
Эквивалентность скрученным кривым Эдвардса
Позволять
- поле с характеристикой, отличной от 2.
Позволять
- эллиптическая кривая в форме Монтгомери:
![{ displaystyle M_ {A, B}: Bv ^ {2} = u ^ {3} + Au ^ {2} + u}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1c15f710abd67a4be758200e375100477d89d2f8)
с
, ![{ displaystyle B in K smallsetminus {0 }}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2e2af717a56d8b9932feaf8094507778049b8681)
и разреши
- эллиптическая кривая в скрученной форме Эдвардса:
![E_ {a, d} : ax ^ 2 + y ^ 2 = 1 + dx ^ 2y ^ 2, ,](https://wikimedia.org/api/rest_v1/media/math/render/svg/c13c6ef64b22c9116e8a2e80e4a94cf6e23aba74)
с ![{ displaystyle a, d in K smallsetminus {0 }, quad a neq d.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7c4a128529dc9d581809f04c9d8dd451202b5b1d)
Следующая теорема показывает бирациональная эквивалентность между кривыми Монтгомери и искривленная кривая Эдвардса:[2]
Теорема (i) Всякая скрученная кривая Эдвардса бирационально эквивалентна кривой Монтгомери над
В частности, закрученная кривая Эдвардса
бирационально эквивалентна кривой Монтгомери
куда
, и
.
В карта:
![psi ,: , E_ {a, d} rightarrow M_ {A, B}](https://wikimedia.org/api/rest_v1/media/math/render/svg/808bdb74992b80edd8afea13e163b29c0f91ce86)
![(x, y) mapsto (u, v) = left ( frac {1 + y} {1-y}, frac {1 + y} {(1-y) x} right)](https://wikimedia.org/api/rest_v1/media/math/render/svg/5ebeeafaa685bec69282ed1b55e2a721d01ca6cf)
является бирациональной эквивалентностью из
к
, с инверсией:
: ![M_ {A, B} rightarrow E_ {a, d}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8f7936dcc404b51bd5fd02050b3c1714e888e9ae)
![(u, v) mapsto (x, y) = left ( frac {u} {v}, frac {u-1} {u + 1} right),
a = frac {A + 2} {B}, d = frac {A-2} {B}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4837ad2123e2a1571860d66d010dd394a50b8528)
Обратите внимание, что эта эквивалентность двух кривых верна не везде: действительно, карта
не определен в точках
или же
из
.
Эквивалентность кривым Вейерштрасса
Любую эллиптическую кривую можно записать в форме Вейерштрасса. В частности, эллиптическая кривая в форме Монтгомери
: ![{ displaystyle By ^ {2} = x ^ {3} + Ax ^ {2} + x,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a8ccc51b12e1092c3cbdf1ae5c5d0513fdac261e)
можно преобразовать следующим образом: разделите каждый член уравнения на
к
, и подставим переменные Икс и у, с
и
соответственно, чтобы получить уравнение
![{ displaystyle v ^ {2} = u ^ {3} + { frac {A} {B}} u ^ {2} + { frac {1} {B ^ {2}}} u.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/82a91d980907ee82eef33f9c2d53f78d8e31399d)
Чтобы получить отсюда краткую форму Вейерштрасса, достаточно заменить ты с переменной
:
![{ displaystyle v ^ {2} = left (t - { frac {A} {3B}} right) ^ {3} + { frac {A} {B}} left (t - { frac {A} {3B}} right) ^ {2} + { frac {1} {B ^ {2}}} left (t - { frac {A} {3B}} right);}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d3a5adc9c1ccce5c9a5c5dcdc6ae21967e9b8a89)
наконец, это дает уравнение:
![{ displaystyle v ^ {2} = t ^ {3} + left ({ frac {3-A ^ {2}} {3B ^ {2}}} right) t + left ({ frac {2A ^ {3} -9A} {27B ^ {3}}} right).}](https://wikimedia.org/api/rest_v1/media/math/render/svg/644d1c775800dce1327795b07315427219ca4821)
Следовательно, отображение задается как
: ![{ displaystyle M_ {A, B} rightarrow E_ {a, b}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/03fd874706e684ee0699114b9dca8410f5bebf7e)
![{ displaystyle (x, y) mapsto (t, v) = left ({ frac {x} {B}} + { frac {A} {3B}}, { frac {y} {B} } right), a = { frac {3-A ^ {2}} {3B ^ {2}}}, b = { frac {2A ^ {3} -9A} {27B ^ {3}}} }](https://wikimedia.org/api/rest_v1/media/math/render/svg/cb6d429b73e8f9f0f3b7c3d40dd631a62c84b2b3)
Напротив, эллиптическая кривая над базовым полем
в форме Вейерштрасса
: ![{ displaystyle v ^ {2} = t ^ {3} + at + b}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6c71f66d30677e762b5c31d45604a0a8dae92853)
можно преобразовать в форму Монтгомери тогда и только тогда, когда
имеет порядок, кратный четырем, и удовлетворяет следующим условиям:[3]
имеет хотя бы один корень
; и
является квадратичным вычетом в
.
Когда эти условия выполнены, то при
у нас есть отображение
: ![{ displaystyle E_ {a, b} rightarrow M_ {A, B}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/dbfe66cc8364d3b9192af8f9fc7fdc2e3d8e0f5c)
.
Смотрите также
Примечания
Рекомендации
внешняя ссылка