Факторизация эллиптической кривой Ленстры

редактировать

Факторизация эллиптической кривой Ленстры или метод факторизации эллиптической кривой (ECM ) - это быстрый, суб экспоненциальный алгоритм времени для целочисленной факторизации, который использует эллиптические кривые. Для факторинга общего назначения ECM является третьим по скорости известным методом факторинга. Вторым по скорости является многократное полиномиальное квадратичное сито, а самым быстрым является сито общего числового поля. Факторизация эллиптической кривой Ленстры названа в честь Хендрика Ленстры.

Практически говоря, ECM считается алгоритмом факторинга специального назначения, так как он наиболее подходит для поиска малых факторов. В настоящее время это все еще лучший алгоритм для делителей, не превышающих от 50 до 60 цифр, поскольку время его работы определяется размером наименьшего множителя p, а не размером номер n для факторизации. Часто ECM используется для удаления небольших множителей из очень большого целого числа с множеством множителей; если оставшееся целое число по-прежнему составное, то оно имеет только большие множители и факторизуется с использованием универсальных методов. Самый большой фактор, обнаруженный с помощью ECM, состоит из 83 десятичных цифр и был обнаружен 7 сентября 2013 года Р. Проппером. Увеличение количества тестируемых кривых увеличивает шансы нахождения фактора, но они не линейные с увеличением количества цифр.

Содержание
  • 1 Алгоритм
  • 2 Почему алгоритм работает?
  • 3 Пример
  • 4 Алгоритм с проективными координатами
  • 5 Скрученные кривые Эдвардса
  • 6 Этап 2
  • 7 GMP-ECM и EECM-MPFQ
  • 8 Метод гиперэллиптической кривой (HECM)
  • 9 Квантовая версия (GEECM)
  • 10 См. Также
  • 11 Ссылки
  • 12 Внешние ссылки
Алгоритм

Метод факторизации эллиптической кривой Ленстры для нахождения множителя данного натурального числа n {\ displaystyle n}n работает следующим образом:

  1. Выберите случайный эллиптический кривая над Z / n Z {\ displaystyle \ mathbb {Z} / n \ mathbb {Z}}\ mathbb {Z} / n \ mathbb {Z} , с уравнением вида y 2 = x 3 + ax + b (mod n) {\ displaystyle y ^ {2} = x ^ {3} + ax + b {\ pmod {n}}}{\ displaystyle y ^ {2} = x ^ {3} + ax + b {\ pmod {n}}} вместе с нетривиальным point P (x 0, y 0) {\ displaystyle P (x_ {0}, y_ {0})}P (x_ {0}, y_ {0}) на нем.
    Это можно сделать, выбрав сначала случайным образом x 0, y 0, a ∈ Z / n Z {\ displaystyle x_ {0}, y_ {0}, a \ in \ mathbb {Z} / n \ mathbb {Z}}{\ displaystyle x_ {0}, y_ {0}, a \ in \ mathbb {Z} / n \ mathbb {Z}} , а затем установив b = y 0 2 - x 0 3 - ax 0 (mod n) {\ displaystyle b = y_ {0} ^ {2} -x_ {0} ^ {3} -ax_ {0} {\ pmod {n}}}b = y_ {0} ^ {2} -x_ {0} ^ {3} -ax_ {0} {\ pmod n} , чтобы убедиться, что точка находится на кривой.
  2. Можно определить сложение двух точек на кривой, чтобы определить группу . Законы сложения приведены в статье об эллиптических кривых.
    . Мы можем формировать повторяющиеся кратные точки P {\ displaystyle P}P: [k] P = P +… + P (k раз) {\ displaystyle [k] P = P + \ ldots + P {\ text {(k раз)}}}{\ displaystyle [k] P = P + \ ldots + P {\ text {(k раз)}}} . Формулы сложения включают взятие модульного наклона хорды, соединяющей P {\ displaystyle P}Pи Q {\ displaystyle Q}Q , и, таким образом, разделение между остаточными классами по модулю n {\ displaystyle n}n , выполняется с использованием расширенного алгоритма Евклида. В частности, деление на некоторый v mod n {\ displaystyle v {\ bmod {n}}}{\ displaystyle v {\ bmod {n}}} включает вычисление gcd (v, n) {\ displaystyle \ gcd (v, n)}{\ displaystyle \ gcd (v, n)} .
    Предполагая, что мы вычисляем наклон в форме u / v {\ displaystyle u / v}u / v с gcd (u, v) = 1 {\ displaystyle \ gcd (u, v) = 1}{\ displaystyle \ gcd (u, v) = 1} , тогда, если v = 0 mod n {\ displaystyle v = 0 {\ bmod {n}}}{\ displaystyle v = 0 {\ bmod {n}}} , результат сложение точки будет иметь вид ∞ {\ displaystyle \ infty}\infty , точка «на бесконечности», соответствующая пересечению «вертикальной» линии, соединяющей P (x, y), P ′ (X, - y) {\ displaystyle P (x, y), P '(x, -y)}{\displaystyle P(x,y),P'(x,-y)}и кривая. Однако, если gcd (v, n) ≠ 1, n {\ displaystyle \ gcd (v, n) \ neq 1, n}{\ displaystyle \ gcd (v, n) \ neq 1, n} , то добавление точки не даст значимой точки на Кривая; но, что более важно, gcd (v, n) {\ displaystyle \ gcd (v, n)}{\ displaystyle \ gcd (v, n)} является нетривиальным множителем n {\ displaystyle n}n .
  3. Вычислить [k] P {\ displaystyle [k] P}{\ displaystyle [k] P} на эллиптической кривой (mod n {\ displaystyle {\ bmod {n}}}{\ bmod n} ), где k {\ displaystyle k}k - произведение множества малых чисел: скажем, произведение малых простых чисел в малых степенях, как в алгоритме p-1, или фактор B! {\ displaystyle B!}{\ displaystyle B!} для некоторых не слишком больших B {\ displaystyle B}B . Это можно сделать эффективно, по одному небольшому фактору за раз. Скажем, чтобы получить [B! ] P {\ displaystyle [B!] P}{\ displaystyle [B!] P} , сначала вычисляем [2] P {\ displaystyle [2] P}{ \ displaystyle [2] P} , затем [3] ( [2] P) {\ displaystyle [3] ([2] P)}{\ displaystyle [3] ([2 ] P)} , затем [4] ([3!] P) {\ displaystyle [4] ([3!] P)}{\ displaystyle [4] ([3!] P)} и так далее. B {\ displaystyle B}B выбрано достаточно маленьким, чтобы B {\ displaystyle B}B добавление точек могло быть выполнено в разумные сроки.
    • Если мы закончим все вышеперечисленные вычисления, не обнаружив необратимых элементов (mod n {\ displaystyle {\ bmod {n}}}{\ bmod n} ), это означает, что эллиптические кривые '(по модулю простых чисел) порядок не гладкий, поэтому нам нужно попробовать еще раз с другой кривой и начальной точкой.
    • Если мы встретим gcd (v, n) ≠ 1, m {\ displaystyle \ gcd (v, n) \ neq 1, m}{\ displaystyle \ gcd (v, n) \ neq 1, m} , все готово: это нетривиальный множитель n {\ displaystyle n}n .

Временная сложность зависит от размера наименьшего простого множителя числа и может быть представлена ​​выражением exp [(√2 + o (1)) √ln p ln ln p], где p - наименьший фактор n или L p [1 2, 2] {\ displaystyle L_ {p} \ left [{\ frac {1} {2}}, {\ sqrt {2}} \ right]}L_ {p} \ left [{ \ frac {1} {2}}, {\ sqrt {2}} \ right] , в L-нотации.

Почему алгоритм работает?

Если p и q являются двумя простыми делителями n, то y = x + ax + b (mod n) подразумевает то же уравнение также по модулю p и модулю q. Эти две эллиптические кривые меньшего размера с добавлением ⊞ {\ displaystyle \ boxplus}\ boxpl нас теперь являются настоящими группами . Если эти группы имеют N p и N q элементов, соответственно, то для любой точки P на исходной кривой по теореме Лагранжа k>0 минимально такое, что k P = ∞ {\ displaystyle kP = \ infty}кП = \ infty на кривой по модулю p означает, что k делит N p ; кроме того, N p P = ∞ {\ displaystyle N_ {p} P = \ infty}N_ {p} P = \ infty . Аналогичное утверждение верно для кривой по модулю q. Когда эллиптическая кривая выбирается случайным образом, тогда N p и N q являются случайными числами, близкими к p + 1 и q + 1, соответственно (см. Ниже). Следовательно, маловероятно, что большинство простых множителей N p и N q одинаковы, и весьма вероятно, что при вычислении eP мы встретим некоторое kP, равное ∞ по модулю p, но не по модулю q, и наоборот. В этом случае kP не существует на исходной кривой, и в вычислениях мы нашли некоторое v с либо gcd (v, p) = p, либо gcd (v, q) = q, но не обоими сразу. То есть gcd (v, n) дал нетривиальный множитель n.

ECM по своей сути является улучшением более старого алгоритма p - 1. Алгоритм p - 1 находит такие простые множители p, что p - 1 равно b-powersmooth для малых значений b. Для любого e, кратного p - 1 и любого a , относительно простого с p, по маленькой теореме Ферма мы имеем ≡ 1 (mod p). Тогда gcd (a - 1, n), скорее всего, даст множитель n. Однако алгоритм не работает, когда p - 1 имеет большие простые множители, как, например, в случае чисел, содержащих сильных простых чисел.

ECM преодолевает это препятствие, рассматривая группу случайной эллиптической кривой над конечным полем Zp, вместо того, чтобы рассматривать мультипликативная группа из Zp, которая всегда имеет порядок p - 1.

Порядок группы эллиптической кривой на Zpварьируется (довольно случайным образом) между p + 1 - 2√p и p + 1 + 2√p по теореме Хассе и, вероятно, будет гладким для некоторых эллиптических кривых. Хотя нет никаких доказательств того, что в интервале Хассе будет найден плавный групповой порядок, с использованием эвристических вероятностных методов, с подходящим образом оптимизированным выбором параметров и L-нотацией, мы можем ожидать попробовать кривые L [√2 / 2, √2], прежде чем получить плавный групповой порядок. Эта эвристическая оценка очень надежна на практике.

Пример

Следующий пример взят из Trappe Washington (2006) с некоторыми добавленными деталями.

Мы хотим разложить n = 455839 на множители. Выберем эллиптическую кривую y = x + 5x - 5 с точкой P = (1, 1) на ней и попробуем вычислить (10!) P.

Наклон касательной в некоторой точке A = (x, y) равен s = (3x + 5) / (2y) (mod n). Используя s, мы можем вычислить 2A. Если значение s имеет вид a / b, где b>1 и gcd (a, b) = 1, мы должны найти модульную инверсию b. Если он не существует, gcd (n, b) является нетривиальным множителем n.

Сначала мы вычисляем 2P. У нас s (P) = s (1,1) = 4, поэтому координаты 2P = (x ′, y ′) равны x ′ = s - 2x = 14 и y ′ = s (x - x ′) - y = 4 (1 - 14) - 1 = –53, все числа понятны (mod n). Просто чтобы убедиться, что этот 2P действительно находится на кривой: (–53) = 2809 = 14 + 5 · 14 - 5.

Затем мы вычисляем 3 (2P). У нас есть s (2P) = s (14, -53) = –593/106 (mod n). Используя алгоритм Евклида : 455839 = 4300 · 106 + 39, затем 106 = 2 · 39 + 28, затем 39 = 28 + 11, затем 28 = 2 · 11 + 6, затем 11 = 6 + 5, то 6 = 5 + 1. Следовательно, gcd (455839, 106) = 1 и работа в обратном направлении (версия расширенного алгоритма Евклида ): 1 = 6-5 = 2 · 6-11 = 2 · 28 - 5 · 11 = 7 · 28 - 5 · 39 = 7 · 106 - 19 · 39 = 81707 · 106 - 19 · 455839. Следовательно, 106 = 81707 (мод 455839) и –593/106 = –133317 (мод 455839). Зная это s, мы можем вычислить координаты 2 (2P), как мы делали выше: 4P = (259851, 116255). Просто чтобы убедиться, что это действительно точка на кривой: y = 54514 = x + 5x - 5 (mod 455839). После этого мы можем вычислить 3 (2 P) = 4 P ⊞ 2 P {\ displaystyle 3 (2P) = 4P \ boxplus 2P}3 (2P) = 4P \ boxplus 2P .

Мы можем аналогичным образом вычислить 4! P и так далее, но 8 ! P требует инвертирования 599 (мод 455839). Алгоритм Евклида дает, что 455839 делится на 599, и мы нашли факторизацию 455839 = 599 · 761.

Причина, по которой это сработало, состоит в том, что кривая (mod 599) имеет 640 = 2,5 точек, а (mod 761) имеет 777 = 3,7 37 точек. Кроме того, 640 и 777 - это наименьшие положительные целые числа k такие, что kP = ∞ на кривой (mod 599) и (mod 761), соответственно. С 8! кратно 640, но не 777, мы имеем 8! P = ∞ на кривой (mod 599), но не на кривой (mod 761), следовательно, повторное сложение здесь прервалось, давая факторизацию.

Алгоритм с проективными координатами

Прежде чем рассматривать проективную плоскость над (Z / n Z) / ∼, {\ displaystyle (\ mathbb {Z} / n \ mathbb {Z }) / \ sim,}{\ displaystyle (\ mathbb {Z} / n \ mathbb {Z}) / \ sim,} сначала рассмотрим «нормальное» проективное пространство над ℝ: вместо точек изучаются прямые, проходящие через начало координат. Линия может быть представлена ​​как ненулевая точка (x, y, z) {\ displaystyle (x, y, z)}(x, y, z) в соответствии с отношением эквивалентности ~, заданным следующим образом: (Икс, Y, Z) ∼ (Икс ', Y', Z ') {\ Displaystyle (х, у, z) \ sim (х', y ', z')}{\displaystyle (x,y,z)\sim (x',y',z')}⇔ ∃ c ≠ 0, такое что x '= c x, y' = c y и z '= c z. В соответствии с этим отношением эквивалентности пространство называется проективной плоскостью P 2 {\ displaystyle \ mathbb {P} ^ {2}}\ mathbb {P} ^ {2} ; точки, обозначенные как (x: y: z) {\ displaystyle (x: y: z)}(x: y: z) , соответствуют линиям в трехмерном пространстве, которые проходят через начало координат. Обратите внимание, что точка (0: 0: 0) {\ displaystyle (0: 0: 0)}(0: 0: 0) не существует в этом пространстве, поскольку для рисования линии в любом возможном направлении требуется хотя бы один x ', y' или z '≠ 0. Теперь заметьте, что почти все прямые проходят через любую заданную базовую плоскость, например, (X, Y, 1) -плоскость, в то время как прямые, точно параллельные этой плоскости, имеют координаты ( X, Y, 0), укажите направления однозначно, как «точки на бесконечности», которые используются в аффинной (X, Y) -плоскости, над которой она лежит.

В алгоритме используется только групповая структура эллиптической кривой над полем. Поскольку нам не обязательно нужно поле, конечное поле также будет обеспечивать групповую структуру на эллиптической кривой. Однако, учитывая ту же кривую и операцию над (Z / n Z) / ∼ {\ displaystyle (\ mathbb {Z} / n \ mathbb {Z}) / \ sim}{\ displaystyle (\ mathbb {Z} / n \ mathbb {Z}) / \ sim} с n not простое число не дает группы. Метод эллиптической кривой использует случаи отказа закона сложения.

Теперь сформулируем алгоритм в проективных координатах. Тогда нейтральный элемент задается бесконечно удаленной точкой (0: 1: 0) {\ displaystyle (0: 1: 0)}(0:1:0). Пусть n - (положительное) целое число, и рассмотрим эллиптическую кривую (набор точек с некоторой структурой на ней) E (Z / n Z) = {(x: y: z) ∈ P 2 | Y 2 Z знак равно Икс 3 + axz 2 + bz 3} {\ Displaystyle E (\ mathbb {Z} / n \ mathbb {Z}) = \ {(x: y: z) \ in \ mathbb {P} ^ { 2} \ | \ y ^ {2} z = x ^ {3} + axz ^ {2} + bz ^ {3} \}}{\ displaystyle E (\ mathbb {Z} / n \ mathbb {Z}) = \ {(x: y: z) \ in \ mathbb { P} ^ {2} \ | \ y ^ {2} z = x ^ {3} + axz ^ {2} + bz ^ {3} \}} .

  1. Выберите x P, y P, a ∈ Z / n Z {\ displaystyle x_ {P}, y_ {P}, a \ in \ mathbb {Z} / n \ mathbb {Z}}{\ displaystyle x_ {P}, y_ {P}, a \ in \ mathbb {Z} / n \ mathbb {Z}} с ≠ 0.
  2. Вычислить b = y P 2 - x P 3 - ax P {\ displaystyle b = y_ {P} ^ {2} -x_ {P} ^ {3} -ax_ {P}}b = y_ {P} ^ {2} -x_ {P} ^ {3} -ax_ {P} . Эллиптическая кривая E имеет тогда форму Вейерштрасса, заданную формулой y 2 = x 3 + ax + b {\ displaystyle y ^ {2} = x ^ {3} + ax + b}y^{2}=x^{3}+ax+bи с использованием проективных координат эллиптическая кривая задается однородным уравнением ZY 2 = X 3 + a Z 2 X + b Z 3 {\ displaystyle ZY ^ {2} = X ^ {3} + aZ ^ {2} X + bZ ^ {3}}ZY ^ {2} = X ^ {3} + aZ ^ {2} X + bZ ^ {3} . Он имеет точку P = (x P: y P: 1) {\ displaystyle P = (x_ {P}: y_ {P}: 1)}P=(x_{P}:y_{P}:1).
  3. Выберите верхнюю границу B ∈ Z { \ displaystyle B \ in \ mathbb {Z}}{\ displaystyle B \ in \ mathbb {Z}} для этой эллиптической кривой. Примечание. Вы найдете множители p, только если порядок групп эллиптической кривой E превышает Z / p Z {\ displaystyle \ mathbb {Z} / p \ mathbb {Z}}{\ displaystyle \ mathbb {Z} / p \ mathbb {Z}} (обозначается # E (Z / p Z) {\ displaystyle \ #E (\ mathbb {Z} / p \ mathbb {Z})}{\ displaystyle \ #E (\ mathbb {Z} / p \ mathbb {Z})} ) равно B-smooth, что означает, что все простые множители # E (Z / p Z) {\ displaystyle \ #E (\ mathbb {Z} / p \ mathbb {Z})}{\ displaystyle \ #E (\ mathbb {Z} / p \ mathbb {Z})} должны быть меньше или равно B.
  4. Вычислить k = lcm (1,…, B) {\ displaystyle k = {\ rm {lcm}} (1, \ dots, B)}k = {{\ rm {lcm}}} (1, \ dots, B) .
  5. Вычислить k P: = P + P + ⋯ + P {\ displaystyle kP: = P + P + \ cdots + P}kP: = P + P + \ cdots + P (k раз) в кольце E (Z / n Z) {\ Displaystyle E (\ mathbb {Z} / n \ mathbb {Z})}{ \displaystyle E(\mathbb {Z} /n\mathbb {Z})}. Обратите внимание, что если # E (Z / n Z) {\ displaystyle \ #E (\ mathbb {Z} / n \ mathbb {Z})}{\ displaystyle \ #E (\ mathbb {Z} / n \ mathbb {Z})} является B-гладким, а n - простым ( и поэтому Z / n Z {\ displaystyle \ mathbb {Z} / n \ mathbb {Z}}{\displaystyle \mathbb {Z} /n\mathbb {Z} }является полем), что k P = (0: 1: 0) { \ displaystyle kP = (0: 1: 0)}{\ displaystyle kP = (0: 1: 0)} . Однако, если только # E (Z / p Z) {\ displaystyle \ #E (\ mathbb {Z} / p \ mathbb {Z})}{\ displaystyle \ #E (\ mathbb {Z} / p \ mathbb {Z})} является B-гладким для некоторого делителя p из n произведение может не быть (0: 1: 0), потому что сложение и умножение не определены, если n не является простым. В этом случае можно найти нетривиальный делитель.
  6. Если нет, вернитесь к шагу 2. Если это произойдет, вы заметите это при упрощении произведения k P. {\ displaystyle kP.}{\ displaystyle kP.}

В пункте 5 сказано, что при определенных обстоятельствах может быть найден нетривиальный делитель. Как указано в статье Ленстры (Факторинг целых чисел с эллиптическими кривыми), для сложения требуется предположение gcd (x 1 - x 2, n) = 1 {\ displaystyle \ gcd (x_ {1} -x_ {2}, n) = 1}\ gcd (x_ {1} -x_ {2}, n) = 1 . Если P, Q {\ displaystyle P, Q}P, Q не являются (0: 1: 0) {\ displaystyle (0: 1: 0)}(0:1:0)и отдельный (в остальном сложение работает аналогично, но немного отличается), тогда сложение работает следующим образом:

  • Для вычисления: R = P + Q; {\ displaystyle R = P + Q;}R = P + Q; P = (x 1: y 1: 1), Q = (x 2: y 2: 1) {\ displaystyle P = (x_ {1}: y_ {1) }: 1), Q = (x_ {2}: y_ {2}: 1)}{\ displaystyle P = (x_ {1}: y_ {1}: 1), Q = (x_ {2}: y_ {2}: 1)} ,
  • λ = (y 1 - y 2) (x 1 - x 2) - 1 {\ displaystyle \ lambda = (y_ {1} -y_ {2}) (x_ {1} -x_ {2}) ^ {- 1}}\ lambda = (y_ {1} -y_ {2}) (x_ {1} -x_ {2}) ^ {{- 1}} ,
  • x 3 = λ 2 - x 1 - x 2 {\ displaystyle x_ {3} = \ lambda ^ {2} -x_ {1} -x_ {2}}x_ {3} = \ lambda ^ {2} -x_ {1} -x_ {2} ,
  • y 3 = λ (x 1 - x 3) - y 1 {\ displaystyle y_ {3} = \ lambda (x_ {1} -x_ { 3}) - y_ {1}}y_ {3} = \ lambda (x_ {1} -x_ {3}) - y_ {1} ,
  • R = P + Q = (x 3: y 3: 1) {\ displaystyle R = P + Q = (x_ {3}: y_ {3}: 1)}R=P+Q=(x_{3}:y_{3}:1).

Если сложение не удалось, это произойдет из-за ошибки при вычислении λ. {\ displaystyle \ lambda.}\ lambda. В частности, потому что (x 1 - x 2) - 1 {\ displaystyle (x_ {1} -x_ {2}) ^ {- 1}}(x_ {1} -x_ {2}) ^ {{- 1}} не всегда может быть вычислено, если n не является простым (и поэтому Z / n Z {\ displaystyle \ mathbb {Z} / n \ mathbb {Z}}{\displaystyle \mathbb {Z} /n\mathbb {Z} }не является поле). Без использования поля Z / n Z {\ displaystyle \ mathbb {Z} / n \ mathbb {Z}}{\displaystyle \mathbb {Z} /n\mathbb {Z} }можно вычислить:

  • λ ′ = y 1 - y 2 {\ displaystyle \ lambda '= y_ {1} -y_ {2}}\lambda '=y_{1}-y_{2},
  • x 3 ′ = λ ′ 2 - x 1 (x 1 - x 2) 2 - x 2 (x 1 - x 2) 2 {\ displaystyle x_ {3} '= {\ lambda'} ^ {2} -x_ {1} (x_ {1} -x_ {2}) ^ {2} -x_ {2} (x_ {1} - x_ {2}) ^ {2}}x_{3}'={\lambda '}^{2}-x_{1}(x_{1}-x_{2})^{2}-x_{2}(x_{1}-x_{2})^{2},
  • y 3 ′ = λ ′ (x 1 (x 1 - x 2) 2 - x 3 ′) - y 1 (x 1 - x 2) 3 {\ displaystyle y_ {3} '= \ lambda' (x_ {1} (x_ {1} -x_ {2}) ^ {2} -x_ {3} ') - y_ {1} (x_ {1} -x_ {2}) ^ {3}}y_{3}'=\lambda '(x_{1}(x_{1}-x_{2})^{2}-x_{3}')-y_{1}(x_{1}-x_{2})^{3},
  • R = P + Q = (x 3 ′ (x 1 - x 2): y 3 ′: (x 1 - x 2) 3) {\ displaystyle R = P + Q = ( x_ {3} '(x_ {1} -x_ {2}): y_ {3}' :( x_ {1} -x_ {2}) ^ {3})}R=P+Q=(x_{3}'(x_{1}-x_{2}):y_{3}':(x_{1}-x_{2})^{3}), и упростить, если возможно.

Это вычисление всегда допустимо, и если НОД Z-координаты равен n (1 или n), то при неудачном упрощении обнаруживается нетривиальный делитель n.

Скрученные кривые Эдвардса

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

Определение. Пусть k {\ displaystyle k}k будет полем, в котором 2 ≠ 0 {\ displaystyle 2 \ neq 0}2 \ neq 0 , и пусть a, d ∈ K ∖ {0} {\ displaystyle a, d \ in k \ setminus \ {0 \}}{\ displaystyle a, d \ in k \ setminus \ {0 \}} с a ≠ d {\ displaystyle a \ neq d}a \ neq d . Тогда скрученная кривая Эдвардса E E, a, d {\ displaystyle E_ {E, a, d}}E _ {{E, a, d}} задается как a x 2 + y 2 = 1 + d x 2 y 2. {\ displaystyle ax ^ {2} + y ^ {2} = 1 + dx ^ {2} y ^ {2}.}ax ^ { 2} + y ^ {2} = 1 + dx ^ {2} y ^ {2}. Кривая Эдвардса - это скрученная кривая Эдвардса, в которой a = 1 {\ displaystyle a = 1}a=1.

Существует пять известных способов построения набора точек на кривой Эдвардса: набор аффинных точек, набор проективных точек, набор перевернутых точек, набор расширенных точек. и набор завершенных точек.

Набор аффинных точек задается следующим образом:

{(x, y) ∈ A 2: ax 2 + y 2 = 1 + dx 2 y 2} {\ displaystyle \ {(x, y) \ in \ mathbb {A} ^ {2}: ax ^ {2} + y ^ {2} = 1 + dx ^ {2} y ^ {2} \}}{\ displaystyle \ {(x, y) \ in \ mathbb {A} ^ {2}: ax ^ {2 } + y ^ {2} = 1 + dx ^ {2} y ^ {2} \}} .

Закон сложения задается формулой

(e, f), (g, h) ↦ (eh + fg 1 + degfh, fh - aeg 1 - degfh). {\ displaystyle (е, f), (g, h) \ mapsto \ left ({\ frac {eh + fg} {1 + degfh}}, {\ frac {fh-aeg} {1-degfh}} \ right).}{\ displaystyle (e, f), (g, h) \ mapsto \ left ({\ frac {eh + fg} {1 + degfh}}, {\ frac {fh-aeg } {1-degfh}} \ right).}

Точка (0,1) является ее нейтральным элементом, а обратная величина (e, f) {\ displaystyle (e, f)}(e, f) равна (- e, f) {\ displaystyle (-e, f)}(-e, f) .

Другие представления определяются аналогично тому, как проективная кривая Вейерштрасса следует из аффинности.

Любая эллиптическая кривая в форме Эдвардса имеет точку порядка 4. Итак, торсионная группа кривой Эдвардса над Q {\ displaystyle \ mathbb { Q}}\ mathbb {Q} изоморфен либо Z / 4 Z, Z / 8 Z, Z / 12 Z, Z / 2 Z × Z / 4 Z {\ displaystyle \ mathbb {Z} / 4 \ mathbb {Z}, \ mathbb {Z} / 8 \ mathbb {Z}, \ mathbb {Z} / 12 \ mathbb {Z}, \ mathbb {Z} / 2 \ mathbb {Z} \ times \ mathbb {Z } / 4 \ mathbb {Z}}{\ displaystyle \ mathbb {Z} / 4 \ mathbb {Z}, \ mathbb {Z} / 8 \ mathbb {Z}, \ mathbb {Z} / 12 \ mathbb {Z}, \ mathbb {Z } / 2 \ mathbb {Z} \ times \ mathbb {Z} / 4 \ mathbb {Z}} или Z / 2 Z × Z / 8 Z {\ displaystyle \ mathbb {Z} / 2 \ mathbb {Z} \ times \ mathbb {Z} / 8 \ mathbb {Z}}{\ displaystyle \ mathbb {Z} / 2 \ mathbb {Z} \ times \ mathbb {Z} / 8 \ mathbb {Z}} .

Наиболее интересными случаями для ECM являются Z / 12 Z {\ displaystyle \ mathbb {Z} / 12 \ mathbb {Z}}{\ displaystyle \ mathbb {Z} / 12 \ mathbb {Z}} и Z / 2 Z × Z / 8 Z {\ displaystyle \ mathbb {Z} / 2 \ mathbb {Z} \ times \ mathbb {Z} / 8 \ mathbb {Z}}{\ displaystyle \ mathbb {Z} / 2 \ mathbb {Z} \ times \ mathbb {Z} / 8 \ mathbb {Z}} , поскольку они заставляют групповые порядки кривой по модулю простых чисел делятся на 12 и 16 соответственно. Следующие кривые имеют торсионную группу, изоморфную Z / 12 Z {\ displaystyle \ mathbb {Z} / 12 \ mathbb {Z}}{\ displaystyle \ mathbb {Z} / 12 \ mathbb {Z}} :

  • x 2 + y 2 = 1 + dx 2 y 2 {\ displaystyle x ^ {2} + y ^ {2} = 1 + dx ^ {2} y ^ {2}}{\ displaystyle x ^ {2} + y ^ {2} = 1 + dx ^ {2} y ^ {2}} с точкой (a, b) {\ displaystyle (a, b)}(a, б) где b ∉ {- 2, - 1/2, 0, ± 1}, a 2 = - (b 2 + 2 b) {\ displaystyle b \ notin \ {- 2, - 1 / 2,0, \ pm 1 \}, a ^ {2} = - (b ^ {2} + 2b)}b \ notin \ {- 2, -1 / 2,0, \ pm 1 \}, a ^ {2} = - (b ^ {2} + 2b) и d = - (2 b + 1) / ( a 2 b 2) {\ displaystyle d = - (2b + 1) / (a ​​^ {2} b ^ {2})}{\ displaystyle d = - (2b + 1) / (a ​​^ {2} b ^ {2})}
  • x 2 + y 2 = 1 + dx 2 y 2 {\ displaystyle x ^ {2} + y ^ {2} = 1 + dx ^ {2} y ^ {2}}{\ displaystyle x ^ {2} + y ^ {2} = 1 + dx ^ {2} y ^ {2}} с точкой (a, b) {\ displaystyle (a, b)}(a, б) где a = u 2 - 1 u 2 + 1, b = - (u - 1) 2 u 2 + 1 {\ displaystyle a = {\ frac {u ^ {2} -1} { u ^ {2} +1}}, b = - {\ frac {(u-1) ^ {2}} {u ^ {2} +1}}}{\ displaystyle a = {\ frac {u ^ {2} -1} {u ^ { 2} +1}}, b = - {\ frac {(u-1) ^ {2}} {u ^ {2} +1}}} и d = (u 2 + 1) 3 (u 2 - 4 u + 1) (u - 1) 6 (u + 1) 2, u ∉ {0, ± 1}. {\ displaystyle d = {\ frac {(u ^ {2} +1) ^ {3} (u ^ {2} -4u + 1)} {(u-1) ^ {6} (u + 1) ^ {2}}}, u \ notin \ {0, \ pm 1 \}.}d = {\ frac {(u ^ {2} +1) ^ {3} (u ^ {2} -4u + 1)} {(u-1) ^ {6} (u + 1) ^ {2}}}, u \ notin \ {0, \ pm 1 \}.

Каждую кривую Эдвардса с точкой порядка 3 можно записать способами, показанными выше. Кривые с торсионной группой, изоморфной Z / 2 Z × Z / 8 Z {\ displaystyle \ mathbb {Z} / 2 \ mathbb {Z} \ times \ mathbb {Z} / 8 \ mathbb {Z}}{\ displaystyle \ mathbb {Z} / 2 \ mathbb {Z} \ times \ mathbb {Z} / 8 \ mathbb {Z}} и Z / 2 Z × Z / 4 Z {\ displaystyle \ mathbb {Z} / 2 \ mathbb {Z} \ times \ mathbb {Z} / 4 \ mathbb {Z}}{\ displaystyle \ mathbb {Z} / 2 \ mathbb {Z} \ times \ mathbb {Z} / 4 \ mathbb {Z}} может быть более эффективным при поиске простых чисел.

Этап 2

Приведенный выше текст посвящен первому этапу факторизации эллиптической кривой. Там можно надеяться найти такой простой делитель p, что s P {\ displaystyle sP}sPявляется нейтральным элементом E (Z / p Z) {\ displaystyle E (\ mathbb { Z} / p \ mathbb {Z})}E ({\ mathbb {Z}} / p {\ mathbb {Z}}) . На втором этапе можно надеяться найти такой простой делитель q, что s P {\ displaystyle sP}sPимеет малый порядок простых чисел в E (Z / q Z) {\ displaystyle E (\ mathbb {Z} / q \ mathbb {Z})}E ({\ mathbb {Z}} / q {\ mathbb {Z}}) .

Мы надеемся, что порядок будет между B 1 {\ displaystyle B_ {1}}B_ {1} и B 2 {\ displaystyle B_ {2}}B_ {2} , где B 1 {\ displaystyle B_ {1}}B_ {1} определяется на этапе 1, а B 2 {\ displaystyle B_ {2}}B_ {2} - новый параметр этапа 2. Проверить наличие небольшого порядка s P {\ displaystyle sP}sPможно, вычислив (ls) P {\ displaystyle (ls) P}(ls) P по модулю n для каждого простого l.

GMP-ECM и EECM-MPFQ

Использование эллиптических кривых Twisted Edwards, а также другие методы были использованы Бернштейном и др. Для обеспечения оптимизированной реализации ECM. Его единственный недостаток заключается в том, что он работает с меньшими составными числами, чем более универсальная реализация GMP-ECM Циммермана.

Метод гиперэллиптических кривых (HECM)

В последнее время появились разработки по использованию гиперэллиптических кривых для разложения целых чисел на множители. Косет показывает в своей статье (2010 г.), что можно построить гиперэллиптическую кривую с родом два (так что кривая y 2 = f (x) {\ displaystyle y ^ {2} = f (x)}y ^ {2} = f (x) с f степени 5), что дает тот же результат, что и при одновременном использовании двух "нормальных" эллиптических кривых. Использование поверхности Куммера делает расчет более эффективным. Недостатки гиперэллиптической кривой (по сравнению с эллиптической кривой) компенсируются этим альтернативным способом расчета. Поэтому Коссет грубо утверждает, что использование гиперэллиптических кривых для факторизации не хуже, чем использование эллиптических кривых.

Квантовая версия (GEECM)

Бернштейн, Хенингер, Лу и Валента предлагают GEECM, квантовую версию ECM с кривыми Эдвардса. Он использует алгоритм Гровера, чтобы примерно удвоить размер найденных простых чисел по сравнению со стандартным EECM, предполагая, что квантовый компьютер с достаточно большим количеством кубитов и скоростью, сравнимой с классическим компьютером, на котором работает EECM.

См. Также
  • UBASIC для практической программы (ECMX).
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-26 06:18:18
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте