Общий метод решета числового поля

Общий метод решета числового поля (, GNFS) — метод факторизации целых чисел. Является наиболее эффективным алгоритмом факторизации чисел длиной более 110 десятичных знаков. Сложность алгоритма оценивается эвристической формулой

exp((6493+o(1))(logn)13(loglogn)23)=Ln[13,6493]
  Метод является обобщением специального метода решета числового поля: тогда как последний позволяет факторизовать числа только некоторого специального вида, общий метод работает на множестве целых чисел, за исключением степеней простых чисел (которые факторизуются тривиально извлечением корней).

История


 В 1988 году английский математик описал новый метод факторизации целых чисел специальной формы (2n±C), проиллюстрировав его разложением седьмого числа Ферма F7=2128+1. В отличие от метода квадратичного решета, в котором просеивание выполняется в кольце всех целых чисел, в методе предлагалось использовать кольцо целых чисел Z([23/2]) над числовым полем Q(23/2). Рукопись была приложена к письму, адресованному , также копии получили Ричард Брент, Дж. Бриллхарт, , и Х. Суяма. В этом письме Поллард предположил, что возможно этот метод может быть использован для разложения девятого числа Ферма.
 В 1990 году А. Ленстра, Х. Ленстра, Марк Манассе и Поллард описали первую крупномасштабную реализацию нового метода с некоторыми усовершенствованиями. Они показали, что на числах специального вида алгоритм работает быстрее, чем все остальные известные методы факторизации. Также в работе обсуждается идея Джо Бухлера и Карла Померанса об усовершенствовании метода для разложения любых целых чисел и приводятся наброски решения этой задачи.
 Позднее Леонард Макс Адлеман предложил использовать квадратичный характер для нахождения квадратов в числовом поле. Это предоставило альтернативное решение проблемы, поднятой Бухлером и Померансом, и улучшило предположительное время работы решета числового поля в применении к числам не специального вида.
 В том же году А. Ленстра, Х. Ленстра, Манассе и Поллард представили разложение девятого числа Ферма с помощью метода числового поля. В соответствующей работе обсуждаются многие детали этого разложения.
 Наконец, в работе «Факторизация целых чисел с помощью решета числового поля» Бухлер, Х. Ленстра и Померанс описали метод решета числового поля в применении к числам, которые не обязательно имеют специальный вид. Эта реализация алгоритма содержала шаг, предполагающий вычисления с использованием чрезвычайно больших чисел. Джин-Марк Кувейгнес в своей работе описал способ обойти это.
 Итоги раннего развития метода подвёл сборник статей под редакций А. Ленстры и Х. Ленстры. В том числе сборник включал статью Бернштейна и А. Ленстры, описывающую очередную улучшенную реализацию алгоритма. Статья вошла в сборник под заголовком «Общий метод решета числового поля».

Суть метода


 Метод решета числового поля (как специальный, так и общий) можно представить как усовершенствование более простого метода — метода рационального решета, либо метода квадратичного решета. Подобные им алгоритмы требуют нахождение гладких чисел порядка n. Размер этих чисел экспоненциально растёт с ростом n. Метод решета числового поля, в свою очередь, требует нахождения гладких чисел субэкспоненциального относительно n размера. Благодаря тому, что эти числа меньше, вероятность того, что число такого размера окажется гладким выше, что и является причиной эффективности метода решета числового поля. Для достижения ускорения вычислений в рамках метода проводятся в числовых полях, что усложняет алгоритм, по сравнению с более простым рациональным решетом.

Основные принципы



  • Метод факторизации Ферма для факторизации натуральных нечетных чисел n, состоящий в поиске таких целых чисел x и y, что x2y2=n, что ведет к разложению n=(xy)(x+y).
  • Нахождение подмножества множества целых чисел, произведение которых — квадрат
  • Составление факторной базы: набора {1,p1,p2,,pn}, где pi — простые числа такие, что piB для некоторого B.
  • Просеивание выполняется подобно решету Эратосфена (откуда метод и получил своё название). Решетом служат простые числа факторной базы и их степени. При просеивании число не «вычёркивается», а делится на число из решета. Если в результате число оказалось единицей, то оно B-гладкое.
  • Основная идея состоит в том, чтобы вместо перебора чисел и проверки, делятся ли их квадраты по модулю n на простые числа из факторной базы, перебираются простые числа из базы и сразу для всех чисел вида x2n проверяется, делятся ли они на это простое число или его степень.

Алгоритм


 Пусть n — нечетное составное число, которое требуется факторизовать.
 Выберем степень неприводимого многочлена d3 (при d=2 не будет выигрыша в сравнении с методом квадратичного решета).
 Выберем целое m такое, что n1/(d+1)<m<n1/d, и разложим n по основанию m:

n=md+ad1md1++a0 (1)
  Свяжем с разложением (1) неприводимый в кольце Z[x] полиномов с целыми коэффициентами многочлен

f1(x)=xd+ad1xd1++a0
  Определим полином просеивания F1(a,b) как однородный многочлен от двух переменных a и b:

F1(a,b)=bdf1(a/b)=ad+ad1ad1b+ad2ad1b2+...+a0bd (2)
  Определим второй полином f2(x)=xm и соответствующий однородный многочлен F2(a,b)=abm.
 Выберем два положительных числа L1 и L2, определяющих область просеивания (англ. sieve region):

SR={1bL1,L2aL2}
  Пусть θ — корень f1(x). Рассмотрим кольцо полиномов Z[θ]. Определим множество, называемое алгебраической факторной базой FB1, состоящее из многочленов первого порядка вида abθ с нормой (2), являющейся простым числом. Эти многочлены — простые неразложимиые в кольце алгебраических целых поля K=Q[θ]. Ограничим абсолютные значения норм полиномов из FB1 константой B1.
 Определим рациональную факторную базу FB2, состоящую из всех простых чисел, ограниченных сверху константой B2.
 Определим множество FB3, называемое факторной базой квадратичных характеров. Это множество полиномов первого порядка cdθ, норма которых - простое число. Должно выполняться условие FB1FB3=\empty.
 Выполним просеивание многочленов {abθ(a,b)SR} по факторной базе FB1 и целых чисел {abm(a,b)SR} по факторной базе FB2. В результате получим множество M, состоящее из гладких пар (a,b), то есть таких пар (a,b), что НОД(a,b) = 1, полином и число abθ и abm раскладываются полностью по FB1 и FB2 соответственно.
 Найдём такое подмножество SM, что

(a,b)SNr(abθ)=H2,HZ;(a,b)S(abm)=B2,BZ
  Определим многочлен

g(θ)=f12(θ)(a,b)S(abθ)
  где f1(x) — производная f1(x)
 Многочлен g(θ) является полным квадратом в кольце полиномов Z(θ). Пусть тогда α(θ) есть корень из g(θ) и B — корень из B2.
 Строим отображение ϕ:θm, заменяя полином α(θ) числом α(m). Это отображение является кольцевым гомоморфизмом кольца алгебраических целых чисел ZK в кольцо Z, откуда получаем соотношение:

A2=g(m)2ϕ(g(α))2ϕ(f12(θ)(a,b)S(abθ))f12(m)(a,b)S(abm)f12(m)C2(modn)
  Пусть B=f(m)C. Найдём пару чисел (A,B) таких, что AB(modn). Тогда найдём делитель числа n, вычисляя НОД(n, A ± B), как это делается, например, в методе квадратичного решета.
 Подробное описание алгоритма можно найти, например, в и .

Реализации


 До 2007 года наиболее успешной реализацией считалось программное обеспечение разработанное и распространяемое Центром математики и информатики (CWI) в Нидерландах, распространявшееся под закрытой лицензией.
 В 2007 году реализовал часть алгоритма, занимающуюся окончательной обработкой данных, так, что она работала быстрее версии CWI. Этот код входит в библиотеку msieve. Msieve написана Пападопулосом и другими участниками проекта на C и включает в себя реализации общего метода решета числового поля и квадратичного решета. Распространяется на правах общественного достояния. Поддерживает распределенные вычисления. Последняя версия msieve может быть найдена на сайте автора.
 Некоторые другие реализации общего метода решета числового поля:

  • NFS@Home - исследовательский проект, направленный на факторизацию больших чисел с помощью общего метода решета числового поля, использующий сеть из подключившихся к проекту компьютеров для просеивания.
  • GGNFS, распространяется под GPL.
  • pGNFS
  • factor by gnfs
  • CADO-NFS
  • kmGNFS

Достижения


 В 1996 году с помощью алгоритма было получено разложение числа RSA-130. Позднее с помощью метода были факторизованы, например, числа RSA-140, и RSA-155. На разложение последнего потребовалось более 8000 mips лет. 9 мая 2005 года Ф. Бар, М. Бом, Йенс Франке и Т. Клейнжунг объявили, что они разложили число RSA-200, используя общий метод решета числового поля.
 В 2009 году группе учёных из Швейцарии, Японии, Франции, Нидерландов, Германии и США удалось успешно вычислить данные, зашифрованные при помощи криптографического ключа стандарта RSA длиной 768 битов. Как следует из описания работы, вычисление значений ключа осуществлялось общим методом решета числового поля. По словам исследователей, после их работы в качестве надежной системы шифрования можно рассматривать только RSA-ключи длиной 1024 бита и более.