Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Анализ и синтез криптографических алгоритмов.DOC
Скачиваний:
103
Добавлен:
02.05.2014
Размер:
99.33 Кб
Скачать

Алгоритмы факторизации

1. Прямой перебор. В трудах Эрмита, Сильвестера и Чебышева была получена оценка для кол-ва простых чисел, предшествующих числу Х: .

2. Алгоритм Евклида. Все алгоритмы, которые мы будем рассматривать, исп-ют алгоритм нахождения НОД. Наиб. эффективным для нахожд-я НОД явл. алгоритм Евклида:

ЕСЛИа12,ТОНОД:=а1,КОНЕЦ

ИНАЧЕа1:=max(a1,a2), a2:=min(a1,a2)

a1 целочисленно делится наa2, остаток заносится вa3

ЕСЛИа3=0,ТОНОД:=а2,КОНЕЦ

а1:=а2, а2:=а3,ИДТИ НА2

3. Алгоритм Полларда. Пусть p – наим. простой сомножитель факторизуемого числаn, и пусть в рез-те случ. генерирования чисел удалось получить 2 числа а иb, причем а≡b mod p. Тогда (a-b)/p иp=НОД(a-b, n), т.е. факторизациюn можно свести к получ-ю 2-х чисел а иb, дающих при делении наpодинаковые остатки. Однако с большой вер-ю можно получить а иb, не выполняя полного перебора.

Пусть задано число r<p. Оценим вероятность того, что случайно создавr разных чисел, мы получим их все с разными остатками при делении наp. Эта вероятность будет зависеть отr иp: .

(при этом использовалось: ). При ростеr вер-тьV(r,p) падает очень быстро. Если .

Рассмотрим алгоритм порождения псевдослучайных чисел по модулю n:

Инициализация x0[1,n-1]

(общий шаг). Наk-том шаге, гдеk=1,2,… порождается числоxk=P(xk-1), гдеP – полином. В кач-веP можно выбрать разл. ф-ции, напр.,f(x)=x2+1. Используя описанный датчик, порождаем случ. посл-тьx1,x2,…,xk. Последнее числоxkxj mod p (гдеj изм-ся отk (?????)). Для осущ-я проверки необх-мо исп-ть след. теорему: Пустьxk иxj порождены полиномиальными датчиками, где . xk (?????????). Тогда дляа>0 верноxj+axk+a mod p

(?????????)

Идея алг-ма Полларда. Из теоремы следует, что для факторизации числа xk

(???????????)

Инициализация. x0, k:=0

k:=k+1

Получаем xk:=P(xk-1)

Если k – нечёт., то идти к 2

j:=k/2. Найти НОД(n, |xk-xj|)

Если НОД=1, идти к 2.

Если НОД<n, тоp:=НОД, Конец

Если НОД делится не только на р, но и на n(????????) идти к 1.

В пп. 4 и 5 алгоритма х2сравнивается с х1, разность равна 1. (?????????) Для ускорения работы алгоритма вместо того, чтобы для каждой разн-ти считать НОД, форм-ся произвед-еd=d1d2…dr. После того, как наберетсяrсомножителей, считается НОД(d,n). Обычным рез-том будет НОД=1 и приходится начинать заново. Если же НОД=n, то необх-мо проанализировать все сомнож-лиd, т.к. может оказаться, что один из множителей делится наp, а другой наq (???????????)

Алгоритм факторизации, основанный на сравнимости квадратов

Предположим, что нам удается найти 2 разных по модулю nчислаxиyтаких, чтоx2y2 mod n (x>y), тогда мы можем разложитьx2-y2=(x-y)(x+y). n  x2-y2, тогдаx2-y2 делится наn и еслиn=pq, то может иметь место: 1)pq x-y ; 2) pq x+y; 3) p x-y и q x+y; 4) p x+yи q x-y. Если мы рассматриваем 3) и 4), то находя соответствующий НОД можно факторизоватьn. Рассмотрим подход для факторизации. Базой В назовем мн-во чисел р0, р1, р2,..., рb, где р0=-1, а р1, р2,..., рb - этоbштук простых чисел, начиная с 2 в порядке возрастания, т.е. -1, 2, 3, 5, 7, 11, 13, 17,... ПустьL=[n]. Для каждого числаai=L+i, гдеi=1, 2,...., вычислимqi, которое явл-ся наименьшим по абсолютной величине остатком по модулюnчислааi2.Рассмотрим простой пример: пусть необходимо разложитьn=221, L=14, a1=L+1=15, q1=4, q1=p12. Степень 2 заносят в соответствующий столбец таблицы и начинаем обрабатыватьа2=16. Необходимо продолжить таблицу, пока в последнем столбце не окажетсяb+2 прочерков (в нашем примере 6 прочерков).

Таблица.

Степени при множителях из базы (4 столбец) записаны в 4-ом столбце, а также нули в незаполненных клетках, выбираются только строчки, где в последней строке прочерки, образуют матрицу Д размера 5 на 6:

Д=.

Из матрицы Д надо выделить подматрицу Д’из всех столбцов и части строк, чтобы сумма эл-тов в каждом столбце была четной. Это простая задача линейной алгебры. Необходимо заменить в Д все четные числа - 0, а нечетные - 1 и ввести сложение по модулю 2. Все св-ва сохраняются и необходимо найти линейно зависимые строки. Найдем матрицу Д’.F.e. выделим нижние строки, они соответствуют 6, 7 и 8 строке таблицы. 202(-1237)mod n; 212-1mod n; 222(237)mod n. Перемножаем эти сравнения след-щим образом: (202122)2(237)2 mod 221; (-43)243 mod 221. Чтобы найти более удобный вариант ищется другая подматрица Д’,f.e. ее можно составить из строк 3 и 5 матрицы Д, в таблице это будет 5 и 7 строка. 192(-1)34mod 221; 212(-1)mod 221. Перемножая эти сравнения: (1921)292mod 221; (-43)292mod 221, -43=1921-221-221=-43. Теперь необходимо найти НОД: НОД(221, 43-9)=НОД (221, 34)=17; НОД(221, 43+9)=НОД(221, 52)=13. Вывод: 221=1317.