Метод факторизации Диксона
В чисел теории метод факторизации Диксона (также метод случайных квадратов Диксона) [ 1 ] или алгоритм Диксона общего назначения факторизации целых чисел ) — алгоритм ; это прототип метода факторной базы . В отличие от других методов факторной базы, его оценка времени выполнения сопровождается строгим доказательством, которое не опирается на предположения о свойствах гладкости значений, принимаемых полиномом.
Алгоритм был разработан Джоном Д. Диксоном , математиком из Карлтонского университета , и опубликован в 1981 году. [ 2 ]
Основная идея
[ редактировать ]Метод Диксона основан на нахождении сравнения квадратов по модулю целого числа N, которое предназначено для факторизации. Метод факторизации Ферма находит такое соответствие, выбирая случайные или псевдослучайные значения x и надеясь, что целое число x 2 mod N — идеальный квадрат (в целых числах):
Например, если N = 84923 (начав с 292, первого числа, большего √ N , и считая вверх), 505 2 mod 84923 равно 256, квадрату 16. Итак (505 − 16)(505 + 16) = 0 mod 84923 . Вычисление наибольшего общего делителя 505 - 16 и N с использованием алгоритма Евклида дает 163, что является коэффициентом N .
На практике выбор случайных значений x займет непрактично много времени, чтобы найти соответствие квадратов, поскольку существует только √ N квадратов меньше N .
Метод Диксона заменяет условие «является квадратом целого числа» на гораздо более слабое условие «имеет только небольшие простые множители»; например, 292 квадрата меньше 84923; 662 числа меньше 84923, простые делители которых равны всего 2,3,5 или 7; и 4767, все простые делители которых меньше 30. (Такие числа называются B-гладкими относительно некоторой границы B .)
Если чисел много квадраты которого можно факторизовать как за фиксированный набор малых простых чисел, линейная алгебра по модулю 2 на матрице даст подмножество чьи квадраты объединяются в произведение маленьких простых чисел в четную степень, то есть подмножество квадраты которого умножаются на квадрат (надеюсь, другого) числа по модулю N.
Метод
[ редактировать ]Предположим, что составное число N факторизуется. граница B Выбирается и определяется факторная база называется P ), набор всех простых чисел, меньших или равных B. ( которая Далее целые положительные числа z ищутся такие, что z 2 mod N является B -гладким. Поэтому мы можем написать для подходящих показателей a i ,
Когда создано достаточное количество этих отношений (обычно достаточно, чтобы число отношений было на несколько раз больше размера P ), методы линейной алгебры , такие как метод исключения Гаусса , можно использовать для перемножения этих различных отношений в таким образом, чтобы все показатели простых чисел в правой части были четными:
Это дает сравнение квадратов вида a 2 ≡ б 2 (mod N ), который можно превратить в факторизацию N , N = НОД ( a + b , N ) × ( N /НОД( a + b , N )). Эта факторизация может оказаться тривиальной (т. е. N = N × 1 ), что может произойти только в том случае, если a ≡ ± b (mod N ), и в этом случае необходимо сделать еще одну попытку с другой комбинацией отношений; но если достигается нетривиальная пара множителей N , алгоритм завершается.
Псевдокод
[ редактировать ]input: positive integer output: non-trivial factor of Choose bound Let be all primes repeat for to do Choose such that is -smooth Let such that end for Find non-empty such that Let while return
Пример
[ редактировать ]В этом примере будет предпринята попытка факторизовать N = 84923, используя границу B = 7. базой фактора Тогда будет P = {2, 3, 5, 7}. Можно осуществлять поиск целых чисел между и N, квадраты которого по модулю N являются B -гладкими . Предположим, что два из найденных чисел — 513 и 537:
Так
Затем
То есть,
Полученная факторизация равна 84923 = НОД(20712 - 16800, 84923) × НОД(20712 + 16800, 84923) = 163 × 521.
Оптимизации
[ редактировать ]Квадратичное решето — это оптимизация метода Диксона. Он выбирает значения x, близкие к квадратному корню из N, такие, что x 2 по модулю N невелик, что значительно увеличивает вероятность получения гладкого числа.
Другие способы оптимизации метода Диксона включают использование лучшего алгоритма для решения матричного уравнения, используя преимущества разреженности матрицы: число z не может иметь больше, чем коэффициенты, поэтому каждая строка матрицы почти полностью состоит из нулей. На практике блочный алгоритм Ланцоша часто используется . Кроме того, размер факторной базы необходимо выбирать осторожно: если она слишком мала, будет трудно найти числа, которые полностью факторизуются по ней, а если она слишком велика, придется собирать больше отношений.
Более сложный анализ, использующий приближение, согласно которому все простые делители числа меньше с вероятностью около (аппроксимация функции Дикмана-де Брюйна ), указывает на то, что выбор слишком маленькой факторной базы намного хуже, чем слишком большой, и что идеальный размер факторной базы равен некоторой степени .
Оптимальная сложность метода Диксона равна
в обозначении big-O , или
в L-нотации .
Ссылки
[ редактировать ]- ^ Кляйнъунг, Торстен; и др. (2010). «Факторизация 768-битного модуля RSA». Достижения криптологии – CRYPTO 2010 . Конспекты лекций по информатике. Том. 6223. стр. 333–350. дои : 10.1007/978-3-642-14623-7_18 . ISBN 978-3-642-14622-0 . S2CID 11556080 .
- ^ Диксон, доктор юридических наук (1981). «Асимптотически быстрая факторизация целых чисел» . Математика. Комп. 36 (153): 255–260. doi : 10.1090/S0025-5718-1981-0595059-1 . JSTOR 2007743 .