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

Материал из testwiki
Версия от 11:40, 5 января 2025; imported>РобоСтася (Алгоритм: замена html-тегов списков на разметку, replaced: <li> → * (15), removed: <ol>, </ol>)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

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

exp((6493+o(1))(logn)13(loglogn)23)=Ln[13,6493]

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

История

В 1988 году английский математик Шаблон:Нп1 описал новый метод факторизации целых чисел специальной формы (2n±C), проиллюстрировав его разложением седьмого числа Ферма F7=2128+1. В отличие от метода квадратичного решета, в котором просеивание выполняется в кольце всех целых чисел, в методе предлагалось использовать кольцо целых чисел Z([23/2]) над числовым полем Q(23/2). Рукопись была приложена к письму, адресованному Шаблон:Iw, также копии получили Ричард Брент, Шаблон:Iw, Хендрик Ленстра, Шаблон:Iw и Х. Суяма. В этом письме Поллард предположил, что возможно этот метод может быть использован для разложения девятого числа Ферма.[2]

В 1990 году А. Ленстра, Х. Ленстра, Марк Манассе и Поллард описали первую крупномасштабную реализацию нового метода с некоторыми усовершенствованиями. Они показали, что на числах специального вида алгоритм работает быстрее, чем все остальные известные методы факторизации. Также в работе обсуждается идея Джо Бухлера и Карла Померанса об усовершенствовании метода для разложения любых целых чисел и приводятся наброски решения этой задачи.[3]

Позднее Леонард Макс Адлеман предложил использовать квадратичный характер для нахождения квадратов в числовом поле. Это предоставило альтернативное решение проблемы, поднятой Бухлером и Померансом, и улучшило предположительное время работы решета числового поля в применении к числам не специального вида.[4]

В том же году А. Ленстра, Х. Ленстра, Манассе и Поллард представили разложение девятого числа Ферма с помощью метода числового поля. В соответствующей работе обсуждаются многие детали этого разложения.[5]

Наконец, в работе «Факторизация целых чисел с помощью решета числового поля» Бухлер, Х. Ленстра и Померанс описали метод решета числового поля в применении к числам, которые не обязательно имеют специальный вид.[6] Эта реализация алгоритма содержала шаг, предполагающий вычисления с использованием чрезвычайно больших чисел. Джин-Марк Кувейгнес в своей работе описал способ обойти это.[7]

Итоги раннего развития метода подвёл сборник статей под редакций А. Ленстры и Х. Ленстры.[8] В том числе сборник включал статью Бернштейна и А. Ленстры, описывающую очередную улучшенную реализацию алгоритма. Статья вошла в сборник под заголовком «Общий метод решета числового поля».[9]

Суть метода

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

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

  • Метод факторизации Ферма для факторизации натуральных нечетных чисел n, состоящий в поиске таких целых чисел x и y, что x2y2=n, что ведет к разложению n=(xy)(x+y).
  • Нахождение подмножества множества целых чисел, произведение которых — квадрат[10]
  • Составление факторной базы: набора {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) неприводимый в кольце [x] полиномов с целыми коэффициентами многочлен

f1(x)=xd+ad1xd1++a0

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

F1(a,b)=bdf1(a/b)=ad+ad1ad1b+ad2ad2b2+...+a0bd (2)

Определим второй полином f2(x)=xm и соответствующий однородный многочлен F2(a,b)=abm.

Выберем два положительных числа L1 и L2, определяющих область просеивания (англ. sieve region):

SR={1bL1,L2aL2}

Пусть θ — корень f1(x). Рассмотрим кольцо полиномов [θ]. Определим множество, называемое алгебраической факторной базой FB1, состоящее из многочленов первого порядка вида abθ с нормой (2), являющейся простым числом. Эти многочлены — простые неразложимиые в кольце алгебраических целых поля K=[θ]. Ограничим абсолютные значения норм полиномов из FB1 константой B1.

Определим рациональную факторную базу FB2, состоящую из всех простых чисел, ограниченных сверху константой B2.

Определим множество FB3, называемое факторной базой квадратичных характеров. Это множество полиномов первого порядка cdθ, норма которых - простое число. Должно выполняться условие FB1FB3=.

Выполним просеивание многочленов {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,H;(a,b)S(abm)=B2,B

Определим многочлен

g(θ)=f12(θ)(a,b)S(abθ)

где f1(x) — производная f1(x)

Многочлен g(θ) является полным квадратом в кольце полиномов (θ). Пусть тогда α(θ) есть корень из g(θ) и B — корень из B2.

Строим отображение ϕ:θm, заменяя полином α(θ) числом α(m). Это отображение является кольцевым гомоморфизмом кольца алгебраических целых чисел K в кольцо , откуда получаем соотношение:

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), как это делается, например, в методе квадратичного решета.

Подробное описание алгоритма можно найти, например, в [11] и [12].

Реализации

До 2007 года наиболее успешной реализацией считалось программное обеспечение, разработанное и распространяемое Центром математики и информатики (CWI) в Нидерландах, распространявшееся под закрытой лицензией.

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

Некоторые другие реализации общего метода решета числового поля:

Достижения

В 1996 году с помощью алгоритма было получено разложение числа RSA-130. Позднее с помощью метода были факторизованы, например, числа RSA-140[13], и RSA-155[14]. На разложение последнего потребовалось более 8000 mips лет. 9 мая 2005 года Ф. Бар, М. Бом, Йенс Франке и Т. Клейнжунг объявили, что они разложили число RSA-200, используя общий метод решета числового поля.

В 2009 году группе учёных из Швейцарии, Японии, Франции, Нидерландов, Германии и США удалось успешно вычислить данные, зашифрованные при помощи криптографического ключа стандарта RSA длиной 768 битов.[15] Как следует из описания работы, вычисление значений ключа осуществлялось общим методом решета числового поля. По словам исследователей, после их работы в качестве надежной системы шифрования можно рассматривать только RSA-ключи длиной 1024 бита и более.[16]

См. также

Примечания

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

  1. Шаблон:Статья
  2. Шаблон:Cite
  3. Шаблон:Cite
  4. Шаблон:Cite
  5. Шаблон:Статья
  6. Шаблон:Статья
  7. Шаблон:Статья
  8. Шаблон:Cite
  9. Шаблон:Статья
  10. И. В. Агафонова Факторизация больших целых чисел и криптография Шаблон:Wayback.
  11. Шаблон:Cite
  12. Шаблон:Книга
  13. Cavallar S., Dodson B., Lenstra A. K., Leyland P. C., Lioen W. M., Montgomery P. L., Murphy B., te Riele H. J. J., Zimmerman P. Factorization of RSA-140 using the number field sieve / CWI Report MAS-R9925, September 1999.
  14. Cavallar S., Lioen W. M., te Riele H. J. J., Dodson B., Lenstra A. K., Montgomery P. L., Murphy B. et al. Factorization of 512-bit RSA-modulus / CWI Report MAS-R0007, February 2000.
  15. Анонс факторизации RSA-768 Шаблон:Wayback Шаблон:Ref-en
  16. Факториация RSA-768 Шаблон:Wayback Шаблон:Ref-en