Факторизация с помощью эллиптических кривых

Материал из testwiki
Перейти к навигации Перейти к поиску

Факторизация с помощью эллиптических кривых (Шаблон:Lang-en, сокр. ECM) или Метод Ленстры факторизации с помощью эллиптических кривых (Шаблон:Lang-en) — алгоритм факторизации натурального числа с использованием эллиптических кривых. Данный алгоритм имеет субэкспоненциальную сложностьШаблон:Sfn. ECM является третьим по скорости работыШаблон:Sfn после общего метода решета числового поля и метода квадратичного решета.

На практике лучше всего подходит для нахождения небольших простых делителей числа, и поэтому считается узкоспециализированнымШаблон:Sfn алгоритмом.

Является лучшим алгоритмомШаблон:Sfn для поиска простых делителей длины 20-25 знаков (размером 64…83 бит), потому что его сложность в основном зависит от наименьшего простого делителя p, а не от факторизируемого числа.

Часто используется для выявления (отбрасывания) небольших простых делителей числа. Если полученное после работы алгоритма число все ещё является составным, то остальные сомножители — большие числа, и для дальнейшего разложения имеет смысл использовать более общие алгоритмы факторизации.

Самый большой делитель, найденный использованием этого алгоритма, имеет длину 83 знака и был найден Райаном Проппером (Шаблон:Lang-en) 7 сентября 2013 г[1].

Алгоритм

Алгоритм факторизации (нахождения нетривиального делителя) натурального числа nШаблон:Sfn:

  1. Выбирается случайная эллиптическая кривая E над n, с уравнением вида E: y2=x3+ax+b(modn), на этой кривой выбирается нетривиальная точка P(x0,y0). Это может быть сделано следующим образом:
    1. Случайным образом выбираются числа x0,y0,a n.
    2. Вычисляется b=y02x03ax0(modn).
  2. Выбирается целое число e, являющиеся произведением большого количества малых чисел. Например, в качестве e можно выбрать:
    • Факториал B! некоторого небольшого числа B.
    • Произведение нескольких малых простых чисел в малых степенях. То есть выбираются простые числа li (не превосходящие некоторое число B), и степени αi, такие, что результат возведения li в соответствующую степень liαi не превосходит некоторого числа C:
    e=Bαi, где αi=logC — наибольший из возможных показателей, при котором αiC.
  3. Вычисляется произведение eP на эллиптической кривой E:
    eP=PPe, где  — операция сложения, определённая по групповому закону.
    Операция сложения требует нахождения углового коэффициента отрезка, соединяющего суммируемые точки, и, следовательно, требует выполнения операции деления по модулю n. Операция деления по модулю осуществляется с помощью расширенного алгоритма Евклида. В частности, деление на некоторое число v (mod n) включает в себя нахождение Шаблон:Math. В случае Шаблон:Math 1, Шаблон:Math n, -сложение не даст какой-то точки осмысленной на эллиптической кривой, из чего следует, что Шаблон:Math — нетривиальный делитель n. Исходя из этого, в процессе вычисления eP возможны следующие случаи:
    • Если в процессе вычисления не встретились необратимые элементы Шаблон:Math, то необходимо выбрать другие эллиптическую кривую E и точку P(x0,y0) и повторить алгоритм сначала.
    • Если на каком-то этапе eP=PPe=, где (ee), то необходимо выбрать другие эллиптическую кривую E и точку P(x0,y0) и повторить алгоритм сначала, потому что точка останется неизменной после дальнейших операций сложения.
    • Если на каком-то этапе вычислений Шаблон:Math 1 и Шаблон:Math n, то Шаблон:Math — искомый нетривиальный делитель n.

Обоснование

Уравнение y2=x3+ax+b, взятое по модулю числа n задаёт эллиптическую кривую E. Если числа p и q — два простых делителя числа n, то вышеупомянутое уравнение будет верно и при взятии по модулю p или по модулю q. То есть E1: y2=x3+ax+b(modp) и E2: y2=x3+ax+b(modq) задают, соответственно, две эллиптические кривые (меньшие, чем E). Однако E1 и E2 с заданной операцией сложения  — не только эллиптические кривые: они также являются группами. Пусть они содержат Np и Nq элементов, соответственно, тогда если:

  1. P — любая точка исходной кривой
  2. ki — положительные числа, такие что: kiP= на E1
  3. k — минимальное из ki

То по теореме Лагранжа верно, что

  1. k — делитель Np
  2. NpP=

Аналогичное утверждение справедливо и для кривой по модулю q.

Порядок группы точек, лежащих на эллиптической кривой |E| над Zp, согласно теореме Хассе ограничен: Шаблон:Math |E|p + 1 + 2p

Для случайно выбранной эллиптической кривой порядки Np и Nq являются случайными числами, ограниченными по теореме Хассе (см. ниже). Маловероятно, что большинство простых делителей Np и Nq совпадают, и вероятно, что при вычислении eP встретится некоторый kP= по модулю р, но не по модулю q, или наоборот. Если это так, то kP не существует на исходной кривой, а в вычислениях было найдено такое v, что либо НОД (v, p) = p, либо НОД (v, q) = q, но не одновременно. Тогда НОД (v, n) является нетривиальным делителем числа n.

ECM является доработкой более старого P-1 метода ПоллардаШаблон:Sfn. Алгоритм Шаблон:Math находит такие простые делители p, что Шаблон:Math — B-гладкое для некоторого небольшого B. Для любого e, кратного Шаблон:Math, и для любого a, взаимно простого с p по малой теорема Ферма верно, что Шаблон:Math. Тогда Шаблон:Math с большой вероятностью будет делителем n. Однако, Алгоритм Шаблон:Math не сработаетШаблон:Sfn, когда у Шаблон:Math есть большие простые делители. ECM в этом случае сработает корректно, потому что вместо рассмотрения мультипликативной группы над Zp, порядок которой всегда равен Шаблон:Math, рассматривается группа случайной эллиптической кривой над конечным полем Zp.

Порядок группы точек, лежащих на эллиптической кривой |E| над Zp, согласно теореме Хассе ограничен: Шаблон:Math |E| Шаблон:Math. Представляется важным исследовать Шаблон:Sfn вероятность того, что в этом интервале может лежать некоторое гладкое число (в этом случае существуют кривые, порядок которых — гладкое число). Не существует доказательств того, что в интервале Хассе есть всегда некоторое гладкое число, однако использованием эвристических вероятностных методов, теоремы Канфилда-Эрдёша-Померанса(Шаблон:Lang-en)Шаблон:Sfn и L-нотации получается оценка, что достаточно взять Шаблон:Math кривых до получения гладкого порядка группы. Это эвристическая оценка хорошо применима на практике.

Пример

ФакторизацияШаблон:Sfn числа n = 455839.

Выбирается эллиптическая кривая и точка, лежащая на этой кривой

y2=x3+5x5,P=(1,1).

Последовательно вычисляется 10!P:

1. Вычисляются координаты точки P2=2!P=2P.

  • Тангенс угла наклона касательной в точке P равен:
s=dydx=3x2+52y=4.
  • Координаты точки P2:
x2=s22x1=14(modn),
y2=s(x1x2)y=4(114)1=53(modn)..
  • Можно показать, что точка 2P действительно лежит на кривой:
(53)2=2809=143+5145.

2. Вычисляется P3=3!P=6P.

  • Тангенс угла наклона касательной в точке 2P составляет
s=(3196+5)/(2(53))=593/106=322522(modn).
Для вычисления 593 / 106 по модулю n можно воспользоваться расширенным алгоритмом Евклида: 455839 = 4300·106 + 39, далее 106 = 2·39 + 28, далее 39 = 28 + 11, далее 28 = 2·11 + 6, далее 11 = 6 + 5, далее 6 = 5 + 1. Следовательно, НОД(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. Откуда 1/106 = 81707 (mod 455839), таким образом, −593 / 106 = 322522 (mod 455839).
  • С учётом вычисленного s, вычисляются координаты точки 2(2P), так же, как это было сделано выше: 4P = (259851, 116255). Можно показать, что точка действительно лежит на нашей эллиптической кривой.
  • Суммированием 4P и 2P находится P3=(179685,28708).

3. Аналогичным образом можно вычислить P4=4!P, P5=5!P, и так далее. В момент вычисления 640P можно заметить, что требуется вычисление обратного элемента к 599 (mod 455839). Так как 455839 делится на 599, искомое разложение найдено: 455839 = 599·761.

Вычислительная сложность

Пусть наименьший делитель числа n равен p. Тогда количество выполняемых арифметических операций можно оценить величинойШаблон:Sfn: e(2+o(1))lnpln(lnp)ln2n (или Lp[1/2;2] в L-нотации). Если заменить p на n1/2, то получим субэкспоненциальную оценку сложности: Ln[1/2;1].

Если сравнивать метод эллиптических кривых с другими методами факторизации, то этот метод относится к классу субэкспоненциальныхШаблон:Sfn методов факторизации, а, значит, работает быстрее любого экспоненциального метода. Если сравнивать его с методом квадратичного решета (QS) и методом решета числового поля (NFS), то все зависит от размера наименьшего делителя числа nШаблон:Sfn. Если число n выбрано как в RSA в виде произведения двух простых чисел примерно одинаковой длины, то метод эллиптических кривых имеет ту же оценку, что и метод квадратичного решета, но уступает методу решета числового поляШаблон:Sfn.

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

Прежде чем рассмотреть проективную плоскость над n, стоит рассмотреть обычную проективную плоскость над ℝ: вместо точек рассматриваются прямые, проходящие через 0. Прямая может быть задана с помощью ненулевой точки (x,y,z) следующим образом: для любой точки (x,y,z) этой прямой ⇔ ∃ c ≠ 0, такие что x' = cx, y' = cy и z' = cz. В соответствии с этим отношением эквивалентности, пространство называется проективной плоскостью (P2). Точки плоскости (x:y:z), соответствуют линиям трёхмерного пространства, проходящим через 0. Отметим, что точка (0:0:0) не существует в этом пространстве, так она не задаёт прямой, проходящей через 0. Алгоритм Ленстры не предполагает обязательного использования поля ℝ, конечное поле также обеспечивает структуру группу над эллиптической кривой. Однако та же кривая, но с операциями над n, не образует группу, если n не является простым числом. Метод факторизации с помощью эллиптических кривых использует особенности работы закона сложения в случаях, когда n — не простое.

Алгоритм факторизации в проективных координатахШаблон:Sfn:. Нейтральный элемент в этом случае задается точкой на бесконечности (0:1:0). Пусть Шаблон:Mvar — целое и положительное число, эллиптическая кривая E(Zn)={(x:y:z)P2 | y2z=x3+axz2+bz3}.

  1. Выбираются xP,yP,a n (Шаблон:Mvar ≠ 0).
  2. Вычисляется b=yP2xP3axP. Эллиптическая кривая Шаблон:Mvar задаётся как y2=x3+ax+b (форма Вейерштрасса). С использованием проективных координат эллиптическую кривую можно записать в виде однородного уравнения ZY2=X3+aZ2X+bZ3. P=(xP:yP:1) лежит на этой кривой.
  3. Выбирается верхняя граница B. Примечание: факторы могут быть только в случае, когда порядок группы Шаблон:Mvar над p — B-гладкое число. Это означает, что все простые факторы, Шаблон:Mvar над p должны быть меньше или равны Шаблон:Mvar.
  4. Вычисляется k=НОК(1,,B).
  5. Вычисляется P+P++Pk в кольце E(n). Важно заметить, что если |E(n)| - B-гладкое, и Шаблон:Mvar — простое (в этом случае n — поле), то kP=(0:1:0). Однако в случае, если |E(p)| - B-гладкое для некоторого числа Шаблон:Mvar, являющегося делителем Шаблон:Mvar, результат может быть не равен (0:1:0), потому что операции сложения и умножения могут не так хорошо работать, если Шаблон:Mvar не является простым числом. Таким образом возможно найти нетривиальный делитель Шаблон:Mvar.
  6. Если делитель не был найден, то алгоритм повторяется с шага 2.

В пункте 5 вычисление kP может быть невозможно, так как сложение двух точек над эллиптической кривой требует вычисления (x1x2)1, что не всегда возможно, если Шаблон:Mvar не является простым числом. Возможно вычисление суммы двух точек следующим способом, не требующим простоты Шаблон:Mvar (не требующим того, чтобы n являлось полем):

  • λ=y1y2,
  • x3=λ2x1(x1x2)2x2(x1x2)2,
  • y3=λ(x1(x1x2)2x3)y1(x1x2)3,
  • R=P+Q=(x3(x1x2):y3:(x1x2)3), координаты в дальнейшем максимально упрощаются (нетривиальный делитель Шаблон:Mvar найден, если при упрощении возникает ошибка).

Использование кривых Эдвардса

Использование кривых Эдвардса позволяетШаблон:Sfn снизить количество модульных операций и уменьшить время выполнения алгоритма по сравнению с эллиптическими кривыми в форме Вейерштрасса (y2=x3+ax+b(modp)) и в форме Монтгомери (By2=x3+Ax2+x).

Определение: Пусть k — это поле, характеристикой которого не является число 2, и пусть dk{0,1}. Тогда кривая Эдвардса EE,d определяется как x2+y2=1+dx2y2. Существуют пять способов построить множество точек на кривой Эдварса: множество аффинных точек, множество проективных точек, множество инвертированных точек (Шаблон:Lang-en), множество расширенных точек (Шаблон:Lang-en) и множество завершённых точек (Шаблон:Lang-en). Например, множество аффинных точек задаётся как: {(x,y)A2:x2+y2=1+dx2y2}.

Операция сложения: Закон сложения задаётся формулой (e,f),(g,h)(eh+fg1+degfh,fheg1degfh).

Точка (0,1) — это нейтральный элемент, а обратная к точке (e,f) это (e,f).

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

Пример сложения: Можно продемонстрировать закон сложения на примере эллиптической кривой в форме Эдвардса с d=2: x2+y2=1+2x2y2, и точки P1=(1,0) на ней. Предлагается проверить, что сумма P1 с нейтральным элементом (0,1) равна P1. Действительно:

x3=x1y2+y1x21+dx1x2y1y2=1
y3=y1y2x1x21dx1x2y1y2=0

У каждой эллиптической кривой в форме Эдварса существует точка порядка 4. Поэтому периодическая группа кривой Эдвардса над изоморфна 4,8,12,2×4 или 2×8.

Для факторизации с помощью алгоритма Ленстры наиболее интересныШаблон:Sfn случаи 12 и 2×8.

Пример кривой, которая содержит периодическую группу, изоморфную 12:

x2+y2=1+dx2y2 с точкой (a,b), лежащей на единичном круге с центром в точке (0,-1).

  • b(2,0){1,1/2},a2=(b2+2b) и d=2b+1a2b2=2b+1b3(b+2)
  • a=u21u2+1,b=(u1)2u2+1 и d=(u2+1)3(u24u+1)(u1)6(u+1)2,u{0,±1}.

a(1/u)=a(u),b(1/u)=b(u),d(1/u)=d(u)

См. также

Примечания

Шаблон:Примечания

Литература

Ссылки

Шаблон:Теоретико-числовые алгоритмы