Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теоретико-числовые алгоритмы в криптографии.pdf
Скачиваний:
233
Добавлен:
23.03.2015
Размер:
2.46 Mб
Скачать

170

 

 

Гл. 6.

Факторизация многочленов над конечными полями

 

3 шаг. Если y < x, то x := y и вернуться на 2-й шаг. Иначе x будет

искомым значением [

 

].

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конец алгоритма.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Покажем, что алгоритм выдает верный ответ. Если t > 0, то выпол-

нено неравенство

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t +

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

Поэтому в алгоритме всегда x [

 

 

 

n], так как из неравенства x +

 

 

 

 

 

x

2

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n следует, что x +

 

 

 

 

 

[2

 

 

 

 

n] 2[

 

n]. Пусть на 3 шаге выпол-

 

x

 

 

 

 

 

нено неравенство

 

 

 

 

 

Мы хотим доказать, что

x =

[

 

 

 

 

 

 

 

 

 

 

 

n]. Предполо-

y x.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

жим, что x [

 

 

]

+ 1, и придем к противоречию. Действительно,

 

n

 

 

 

 

 

 

 

 

 

!

x +

 

 

 

"

 

 

 

!

 

 

− x

 

 

 

 

 

 

 

 

 

 

 

0 y

x =

x

x =

x

< 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

n

 

 

 

 

 

2

"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

n

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

поскольку x >

 

 

n и

 

 

 

 

 

<

 

 

n, т. е.

 

 

 

 

 

− x

[

 

n]

[ n] 1 = 1.

 

 

 

x

x

 

 

 

x

 

 

 

С помощью данного

алгоритма можно

 

решать уравнения x2 = n,

n N, в целых числах; прежде чем извлекать корень из n, следует проверить, является ли n квадратичным вычетом по нескольким небольшим модулям, см. [89, гл. 1].

§ 6.3. Алгоритм Берлекэмпа

Пусть p — простое число, q = pm. В данном параграфе мы опишем алгоритм Берлекэмпа (см. [7; 31, гл. 4; 63]) для разложения унитарного многочлена f(x) GF(q) [x] на множители. Пусть deg f(x) = n 2. Обозначим

f(x) = f1 (x)e1 . . . fk (x)ek

(6.5)

разложение f(x) на различные неприводимые унитарные многочлены f1 (x), . . . , fk (x). Сначала мы покажем, как нахождение разложения (6.5) сводится к нахождению разложения многочлена

f˜ (x) = fi1 (x) . . . fil (x), 1 i1 < i2 < . . . < il z,

(6.6)

не имеющего кратных неприводимых множителей. Для этого рассмотрим

d(x) = НОД(f(x), f (x)).

§ 6.3. Алгоритм Берлекэмпа

171

Если f (x) — нулевой многочлен, то f(x) = g0 (xp), где g0 (y) GF(q) [y].

Поскольку

возведение в степень p является

автоморфизмом по-

ля GF(q)

и pтак как

p(A + B)p = Ap + Bp для

всех A, B GF(q) [x],

то f(x) = g0 (x ) = (g(x))

, и задача разложения f(x) сводится к нахожде-

нию разложения g(x), имеющего меньшую степень. Коэффициенты g(x) быстро вычисляются по коэффициентам f(x), если GF(q) не слишком велико и m > 1. Если же q = p (т. е. m = 1), то g(x) = g0 (x), поскольку ap = a для всех a GF(p).

Предположим теперь, что f (x) — ненулевой многочлен. Тогда оче-

видно, что

d(x) = f1 (x)v1 . . . fk (x)vk ,

где vi = ei 1 при p ei, vi = ei при p | ei. При этом найдется vi = ei. Тогда многочлен f˜ (x) = f(x)/d(x) равен произведению тех из многочленов f1 (x), . . . , fk (x), для которых p ei. Если мы разложим f˜ (x) на неприво-

димые множители, то затем пробными делениями найдем показатели ei

такие, что p ei. Вычислим f(x)/ fi (x)ei . У этого многочлена произ-

i : p ei

водная будет нулевой. Если он отличен от константы, то мы представим его в виде gˆ (x)p, как это описано выше, и далее будем раскладывать gˆ (x) аналогичным образом, и т. д.

Замечание 6.8. В [89, гл. 3, алгоритм 3.4.2] описан алгоритм, кото-

рый находит представление унитарного многочлена f(x) Z/pZ [x] в виде f(x) = Ai (x)i, где Ai (x) Z/pZ [x], Ai не имеют кратных неприво-

i 1

димых множителей, и при i = j(Ai (x), Aj (x) = 1.

Далее мы будем считать, что в разложении (6.5) все показатели ei равны 1.

Теорема 6.9. Пусть h(x) GF(q) [x], 1 deg h(x) < n, и выполнено

условие

h(x)q ≡ h(x) (mod f(x)).

Тогда справедливо равенство

 

f(x) =

НОД(f(x), h(x) − c),

(6.7)

 

c q

 

 

GF( )

 

причем правая часть этого равенства представляет собой нетривиальное разложение f(x) на взаимно простые множители.

Доказательство. Поскольку при c1, c2 GF(q), c1 = c2, многочлены h(x) − c1 и h(x) − c2 взаимно просты, то множители в правой части (6.7) взаимно просты. Поскольку deg(h(x) − c) < n, то из выполнения равенства (6.7) следует, что это нетривиальное разложение

172

Гл. 6. Факторизация многочленов над конечными полями

f(x) (т. е. (6.7) шей степени). h(x)q − h(x) =

есть разложение f(x) на несколько многочленов мень-

Само же равенство (6.7) следует теперь из того, что

(h(x) − c) 0 (mod f(x)), и из взаимной простоты

c GF(q)

многочленов h(x) − c при различных c GF(q).

 

]

такой, что 1

Определение

6.10. Многочлен

( )

( ) [

 

 

q

≡ h(x) (mod

h x

GF q

x

 

deg h(x) < n, h

(x)

 

f(x)),

называется

f-разлагающим

многочленом.

Из теоремы 6.9 следует, что если мы построим какой-нибудь f-раз- лагающий многочлен, то сможем с его помощью разложить f(x) на не менее чем два множителя. Опишем процедуру построения таких многочленов.

Теорема 6.11. Определим матрицу B = bij i,j=0,...,n−1 из сравнений

n−1

 

j

. . . , n − 1.

xiq ≡ bijxi (mod f(x)), i = 0,

=0

 

Многочлен h(x) = a0 + a1x + . . . + an−1xn−1 творять условию h(x)q ≡ h(x) (mod f(x))

когда

(a0, . . . , an−1)B = (a0, . . .

GF(q) [x] будет удовлетогда и только тогда,

, an−1),

т. е. тогда и только тогда, когда вектор его коэффициентов является левым собственным вектором матрицы B с собственным значением 1.

Доказательство. Условие h(x)q ≡ h(x) (mod f(x)) равносильно ус-

ловию

n−1 n−1

aixiq ≡ aixi (mod f(x)).

i=0 i=0

Отсюда по определению матрицы B получим равенство

n−1

n−1

n−1

 

ai

bijxj = aixi,

=0 j=0

=0

i

 

i

поэтому

 

 

n−1

 

j = 0, . . . , n − 1,

bij = aj,

=0

 

 

i

 

 

что равносильно утверждению теоремы.

h2,ixi. С его помощью, применяя теорему 6.9,

§ 6.3. Алгоритм Берлекэмпа

173

Алгоритм Берлекэмпа.

f(x) GF(q) [x],

На входе алгоритма задан унитарный многочлен

deg f(x) = n 2, про который известно, что он не имеет кратных неприводимых множителей. На выходе — разложение f(x) на неприводимые множители.

1

шаг. Вычислить матрицу B из теоремы 6.11.

 

2

шаг. Найти базис пространства решений системы линейных урав-

нений

= 0,

 

 

B1 .x.0.

(6.8)

 

xn−1

 

 

где B1 = (B − In)T , In — единичная матрица, знак (·)T означает транспонирование. Пусть e1 = (1, 0, . . . , 0), e2, . . . , ek — найденный базис.

Замечание 6.12. Поскольку xiq 1 (mod f(x)) при i = 0, то в матрице B первая строка всегда имеет вид (1, 0, . . . , 0), и первый столбец матрицы B1 будет нулевым. Поэтому e1 = (1, 0, . . . , 0) будет присутствовать в базисе пространства решений.

3 шаг. При k = 1 многочлен f(x) неприводим; вообще, найденное значение k равно количеству неприводимых делителей f(x) в GF(q) [x]. При k > 1 надо взять e2 = (h2,0, . . . , h2,n−1) и построить f — разлагаю-

щий многочлен h2 (x) = n−1

i=0

т. е. вычисляя НОД(f(x), h2 (x) − c) при c GF(q), найти разложение

f(x) = g1 (x) . . . gl (x),

где gi (x) GF(q) [x], l 2. Если l = k, то алгоритм останавливается. Ес-

ли l < k, то мы берем e3 = (h30 . . . , h3,n−1), строим h3 (x) = n−1 h3ixi; вы-

i=0

числяя НОД(gi (x), h3 (x) − c) для найденных gi (x), мы получаем дальнейшее разложение f(x), и т. д. Алгоритм закончит работу, когда мы переберем все базисные векторы e2, . . . , ek, и для соответствующих им многочленов hi (x) вычислим наибольшие общие делители найденных множителей f(x) с hi (x) − c, c GF(q).

Замечание 6.13. Алгоритм останавливается, как только мы найдем разложение f(x) на k множителей, где k = n − rank B1.

Конец алгоритма.

Теорема 6.14. Алгоритм Берлекэмпа работает корректно и находит полное разложение f(x) на множители.

174 Гл. 6. Факторизация многочленов над конечными полями

Доказательство. Поскольку f(x) = f1 (x) . . . fk (x) — произведение различных унитарных неприводимых многочленов, то по китайской теореме об остатках для любого набора c1, . . . , ck GF(q) существует единственный многочлен h(x) GF(q) [x] такой, что h(x) ≡ ci (mod fi (x)), i = 1, . . . , k, deg h(x) < n. Этот многочлен h(x) удовлетворяет условию

h(x)q ≡ cqi ≡ ci ≡ h(x) (mod fi (x)), i = 1, . . . , k,

и поэтому является f-разлагающим. Обратно, любой f-разлагающий

многочлен h(x) удовлетворяет соотношению

hq (x) − h(x) (h(x) − c) 0 (mod f(x)),

c GF(q)

откуда для каждого fi (x) найдется c = ci такое, что h(x) ≡ ci (mod fi (x)). Таким образом, мы получили взаимно однозначное соответствие между f-разлагающими многочленами h(x) и наборами ci, . . . , ck GF(q). Поскольку по теореме 6.11 вектор коэффициентов (h0, . . . , hn−1) многочлена h(x) удовлетворяет системе уравнений (6.8), то ранг матрицы B1 равен n − k, и пространство решений k-мерно. Обозначим через h1 (x), . . . , hk (x) f-разлагающие многочлены, векторы коэффициентов которых образуют базис пространства решений системы (6.8); мы считаем, что h1 (x) = 1. Пусть fi (x) и fj (x) — какие-либо два неприводимых делителя f(x), i = j. Мы хотим показать, что найдется номер u, 2 u k, и постоянная c GF(q) такая, что

hu (x) ≡ c (mod fi (x)),

hu (x) ≡ c (mod fj (x)).

Предположим противное, т. е. для

всех u = 2, . . . , k при некоторых

cu GF(q) выполнены сравнения hu (x) ≡ cu (mod fi (x) · fj (x)). То же верно и для u = 1, так как h1 (x) = 1 = c1. Но тогда, поскольку любой f-разлагающий многочлен h(x) является линейной комбинацией над GF(q) многочленов h1 (x), . . . , hk (x), то

h(x) ≡ c (mod fi (x) · fj (x)),

где c GF(q), c зависит от h(x). Однако найдется f-разлагающий многочлен h(x) такой, что

h(x) 0 (mod fi (x)), h(x) 1 (mod fj (x)).

Полученное противоречие завершает доказательство теоремы и обоснование алгоритма Берлекэмпа.

Замечание 6.15. Сложность алгоритма составляет O(n3 + qkn) арифметических операций (см. [22, с. 191]). Поэтому алгоритм будет

§ 6.4. Метод Кантора—Цассенхауза

175

эффективен лишь для сравнительно небольших значений q (в частности, из-за перебора c GF(q) на 3 шаге алгоритма); т. е. для небольших полей.

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

Приведем еще два результата, связанных с факторизацией многочленов из GF(q) [x]. В работе [197] приведен следующий результат, позволяющий установить четность количества неприводимых делителей f(x).

Теорема 6.16. Пусть p — простое число, f(x) Z/pZ, deg f(x) =

=n < p. Пусть D — дискриминант f(x), w — число неприводимых

D = (1)n−w.

p

Другой результат о f-разлагающих многочленах приведен в [31, теорема 4.3].

Теорема 6.17.

Пусть f(x) GF(q) [x] — унитарный многочлен,

f(x) = f1 (x) . . . fk (x)

— разложение

f(x)

на

различные унитар-

ные неприводимые многочлены,

где

k 2.

Пусть deg fi (x) = ni,

i = 1, . . . , k, N = НОК(n1, . . . , nk). Положим

T (x) = x + xq + xq2 + . . . + xqN−1 ,

и определим многочлены Ti (x) GF(q) [x]:

Ti (x) ≡ T (xi) (mod f(x)), deg Ti (x) < n, i = 1, 2, . . .

Тогда по крайней мере один из многочленов T1 (x), . . . , Tn−1 (x) является f-разлагающим.

§ 6.4. Метод Кантора—Цассенхауза

Зафиксируем простое число p. Пусть f(x) Z/pZ [x], f(x) унитарен и не имеет кратных неприводимых множителей. Ниже мы опишем алгоритм, который для заданного d N находит произведение всех неприводимых делителей f(x), имеющих степень d. Предварительно докажем лемму.

Лемма 6.18. Пусть g(x) Z/pZ [x] — унитарный неприводимый многочлен.

1.Если deg g(x) = d, то g(x) делит xpd − x.

2.Если g(x) делит xpd − x и g(x) не делит xpe − x для всех e < d,

то deg g(x) = d.

176 Гл. 6. Факторизация многочленов над конечными полями

Доказательство. Первое утверждение следует из того, что K = = Z/pZ [x]/(g(x)) = GF(pd), и элемент x ≡ x (mod g(x)) K удовле-

творяет соотношению xpd = x. Для доказательства второго утверждения обозначим l = deg g(x), K1 = GF(pl) = Z/pZ [x]/(g(x)). Посколь-

ку xpl ≡ x (mod g(x)), то из условия утверждения следует, что l d.

С другой стороны, для произвольного многочлена f(x) Z/pZ [x]

вы-

полнены соотношения

 

f(x)pd = f(xpd) ≡ f(x) (mod g(x)).

(6.9)

Поскольку K1 является циклической группой порядка pl 1 и порождается элементом f(x) (mod g(x)) для некоторого f(x) Z/pZ [x], то из (6.9) следует, что pl 1 | pd 1, т. е. l d. Значит, l = d, что и требовалось доказать.

Применим лемму 6.18. Рассмотрим

B1 (x) = НОД(f(x), xp − x).

Очевидно, B1 (x) состоит из всех неприводимых делителей f(x) первой степени. Заменим f(x) на f1 (x) = f(x)/B1 (x). Тогда вычислим

B2 (x) = НОД(f1 (x), xp2 − x).

B2 (x) состоит из всех неприводимых делителей f(x) второй степени. Положим f2 (x) = f1 (x)/B2 (x). Продолжая этот процесс, мы получим, что

Bd (x) = НОД(fd−1 (x), xpd − x)

состоит из всех неприводимых делителей f(x), имеющих степень d; далее fd (x) = fd−1 (x)/Bd (x), и т. д.

Замечание 6.19. Этот алгоритм нахождения произведений всех неприводимых делителей f(x), имеющих фиксированную степень, можно применять до того, как мы применяем алгоритм Берлекэмпа для факторизации f(x).

Лемма 6.20. Пусть g(x) Z/pZ [x], g(x) унитарен, deg g(x) = d, причем все неприводимые делители g(x) имеют одинаковую степень и g(x) не имеет кратных делителей. Многочлен g(x) неприводим тогда и только тогда, когда xpd ≡ x (mod g(x)) и для любого простого q, делящего d,

НОД xpd/q − x, g(x) = 1.

Доказательство. Необходимость очевидна. Докажем достаточность. Если g(x) приводим и имеет неприводимый делитель g1 (x), deg g1 (x) = l < d, то g1 (x) | xpl − x. Кроме того, по условию l | d, l = d/k.

§ 6.4. Метод Кантора—Цассенхауза

177

Если k простое, то мы получили противоречие условию леммы. Если k = qr, где r 2, и q — простое, то мы также получили противоречие, поскольку g1 (x) | xpl − x | xplr − x = xd/q − x.

Далее мы считаем, что f(x) Z/pZ [x], f(x) бесквадратен, и все его неприводимые делители имеют одинаковую степень d, известную нам. Сейчас мы опишем метод Кантора—Цассенхауза для факторизации f(x) (см. [85]). В нем различаются случаи p = 2 и p > 2.

Теорема 6.21. Если p > 2, то для любого многочлена T = T (x)Z/pZ [x] справедливо равенство

f(x) = НОД(f(x), T) НОД(f(x), T(pd1)/2 + 1) НОД(f(x), T(pd1)/2 1).

Доказательство. Все элементы поля GF(pd) представляют собой

корни многочлена xpd − x. Пусть T = T (x) Z/pZ [x]. Тогда многочлен T (x)pd − T (x) = T (xpd) − T (x) делится на xpd − x. Из леммы 6.18 следует, что f(x) делит Tpd − T = T (T(pd1)/2 1) (T(pd1)/2 + 1), причем поскольку p > 2, то многочлены T, T(pd1)/2 1 и T(pd1)/2 + 1 взаимно просты. Теорема доказана.

Замечание 6.22. Можно доказать, что для случайно выбранного многочлена T Z/pZ [x] такого, что deg T 2d − 1, наибольший общий делитель D = НОД(f(x), T(pd1)/2 1) нетривиален с вероятностью, близкой к 1/2, см. [89, гл. 3, § 3.4.4]. Факторизация f(x) методом Кантора—Цассенхауза как раз состоит в случайном выборе T и вычислении D. Если deg D = 0 или deg D = deg f(x), то выбирается другой многочлен T; иначе мы факторизуем D и f(x)/D тем же способом. При этом найденные делители f(x), имеющие степень d, являются по условию неприводимыми.

Теперь рассмотрим случай p = 2.

Теорема 6.23. Пусть p= 2, U(x) = x+ x2 + x4 + . . . + x2d−1 Z/2Z [x]. Тогда для любого многочлена T = T (x) Z/2Z [x] справедливо равенство

f(x) = НОД(f(x), U(T)) НОД(f(x), U(T) + 1).

Доказательство. Поскольку

U(T) = T + T2 + . . . + T2d−1 ,

U(T)2 = U(T2) = T2 + T4 + . . . + T2d ,

то

U(T) + U(T)2 = T2d + T = T2d − T.

Дальнейшие рассуждения аналогичны доказательству теоремы 6.21.

12 О. Н. Василенко