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

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

§6.1. Введение. Вероятностный алгоритм решения алгебраических уравнений в конечных полях

В данной главе мы рассматриваем алгоритмы разложения на множители многочленов над конечными полями, а также некоторые методы решения алгебраических уравнений в конечных полях.

Пусть p — простое число, p > 2, f(x) GF(p) [x], deg f(x) = n 2. Рассмотрим вероятностный алгоритм решения уравнения f(x) = 0 в поле GF(p).

Алгоритм решения f(x) =0 в GF(p). 1 шаг. Вычислить

g(x) = НОД(f(x), xp − x) GF(p) [x].

Заметим, что все корни f(x) в GF(p) являются корнями многочлена g(x) кратности 1, и других корней у g(x) нет. Если deg g(x) = 0, то корней у f(x) в GF(p) нет. Если deg g(x) = 1, g(x) = x − a, то a — единственный корень f(x) в поле GF(p) (без учета кратности). Если deg g(x) = p, то все элементы GF(p) являются корнями f(x). Далее мы предполагаем, что 2 deg g(x) < p, и ищем корни g(x) в GF(p).

2 шаг. Случайным образом выбрать элемент GF(p) и вычислить

p−1 d(x) = НОД (x + ) 2 1, g(x) .

3 шаг. Если d(x) = 1 или d(x) = g(x), то вернуться на шаг 2. Если deg d(x) = 1, d(x) = x − b, то b — корень многочлена f(x); мы заносим его в список найденных корней, заменяем g(x) на g(x)/(x − b) и возвращаемся на шаг 2. Аналогично, при deg d(x) = deg g(x) 1 мы находим

x − b = , заносим b в список корней, заменяем g(x) на d(x) и воз-

вращаемся на 2-й шаг. Если 2 deg d(x) < deg g(x) 1, то мы рассматриваем вместо g(x) два его делителя — многочлены d(x) и g(x)/d(x),

§ 6.1. Введение. Вероятностный алгоритм решения уравнений в конечных полях 163

и к каждому из них мы применяем 2 и 3 шаги алгоритма, чтобы найти их корни.

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

Теорема 6.1. Если g(x) GF(p) [x], 2 deg g(x) < p и g(x) | xp − x, то при случайном выборе на 2-м шаге с вероятностью, не мень-

шей, чем 12 21p, будет выполнено неравенство 1 deg d(x) <

< deg g(x).

Доказательство. Пусть a1, a2 GF(p), a1 = a2, g(a1) = g(a2) = 0. Пусть = −a1, = −a2. Тогда

 

 

 

 

 

 

p−1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если

 

(ai + )

2 1 равно 0 или 2

при

 

i = 1, 2.

 

 

 

 

 

 

 

 

 

 

 

p−1

 

 

 

 

 

 

p−1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(a1 + ) 2 1 = (a2 + ) 2 1,

 

 

 

 

 

 

 

то

ровно

одно из

чисел a1, a2

является

корнем d(x)

и

 

поэтому

1 deg d(x) < deg g(x). Теперь предположим, что = −a1, −a2, и

 

 

 

 

 

 

 

 

 

p−1

 

 

 

 

 

 

p−1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(a1 + ) 2 1 = (a2 + ) 2 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p−1

 

 

p−1

 

Такие являются корнями многочлена (x + a1)

2 (x + a2)

 

2 , ко-

торый имеет степень

p −2

1

1.

Поэтому,

если

мы рассмотрим все

 

 

( ), то не более чем для 2

+

p − 1

1

=

 

p + 1

элементов много

-

 

 

 

GF p

 

 

 

 

 

 

 

 

 

2

 

2

 

 

 

 

 

 

 

 

 

член d(x) может не удовлетворять неравенству 1

deg d(x) < deg g(x).

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Теорема 6.2. В условиях теоремы 6.1 обозначим через k сте-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

1

;

пень deg g(x); тогда вероятность будет равна 1

 

+ O

 

2k−1

p

постоянная в O(·) зависит от k.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Лемма 6.3. Пусть g(x) = i=1

(x − ai), где ai GF(p), ai

различны;

пусть

, . . . ,

k

какой-либо фиксированный набор из

 

 

1. Рас-

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

±

 

 

 

 

смотрим , удовлетворяющие условиям

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 p − 1,

 

 

ai

+

= i,

 

i = 1, . . . , k.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

Тогда количество таких равно N = 2pk + O(p), где постоянная в O(·) зависит от k.

11*

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

Выведем теорему 6.2 из

леммы. Пусть 0 p − 1, = −ai,

i = 1, . . . , k. Предположим, что deg d(x) = 0. Тогда

p−1

 

 

(ai + ) 2 1 = 0,

i = 1, . . . , k.

Следовательно,

 

 

p−1

= 1,

 

(ai + ) 2

i = 1, . . . , k,

т. е. 1 = . . . = k = 1. Теперь рассмотрим случай deg d(x) = k. Тогда аналогично получаем, что

p−1

 

(ai + ) 2

= 1, i = 1, . . . , k,

откуда 1 = . . . = k = 1. Таким

образом, среди всех значений ко-

личество тех , для которых 1 deg d(x) < k, будет по лемме равно

p

 

k

 

2

 

 

p

+ O(

 

) . Отсюда следует утверждение теоремы 6.2.

 

 

p

 

 

2k

 

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

фиксированный квадратичный невы-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

чет по модулю p. Положим di

= a, если i = 1, и di = 1, если i = 1.

Рассмотрим систему уравнений

 

 

 

 

 

 

 

 

 

 

 

 

 

y.

2

 

 

 

 

(.x. .+. .a.1.). .(mod. . . . .p. ),. .

 

 

 

 

 

 

 

 

 

 

 

 

1. .. .d.

1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

d

 

(x + a ) (mod p),

 

 

 

 

 

 

 

 

 

 

 

 

y

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

 

k

относительно неизвестных

x

,

y1, . . . , yk Z/pZ. Обозначим для крат-

 

 

 

 

 

 

 

 

 

 

d

 

 

 

 

 

кости (d) =

 

. Уравнение y2 ≡ d (mod p) имеет 1 + (d) решений.

 

p

Поэтому

число решений системы равно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p−1

 

k

 

(1 + (di (x + ai))) =

 

 

M =

 

 

 

 

 

 

 

 

 

 

=0 i=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

p−1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

(d1 (x + a1))l1 . . . (dk (x + ak))lk =

 

 

 

 

 

 

 

x=0

 

 

 

 

 

 

 

 

 

 

 

 

l1,...,lk {0,1}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= p +

 

p−1

 

(gl (x)),

l=(l ,...,l ); x=0

1

k

 

l=0

i = 1
(di ( + ai)) =

§ 6.1. Введение. Вероятностный алгоритм решения уравнений в конечных полях 165

где g (x) = (d1 (x + a1))l1 . . . (dk (x + ak))lk . Справедливо

неравенство

l

 

 

 

 

 

 

 

 

 

 

 

 

 

(см. [31, теорема 5.41])

 

 

 

 

 

 

 

 

 

 

p−1

(gl (x))

(deg gl (x) 1)

 

,

 

 

 

 

p

 

 

 

 

x=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

которое следует из оценок тригонометрических

сумм Вейля. Поэтому

 

 

 

 

 

 

k

kr (r − 1)p,

 

 

 

 

 

|M − p| r=2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p−1

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

так как если deg gl (x) = 1, то

(gl (x)) = 0. Поскольку

 

 

r

 

=0

(r − 1)! (k − r)!

r − 1

 

 

 

r! (k − r)!

 

(r

 

1) k

=

k! (r − 1)

<

k!

 

= k

k − 1

,

 

 

 

то |M − p| kp(2k−1 1).

Рассмотрим , удовлетворяющие условию леммы. Тогда

di ( + ai) = di p p

по определению di. Поэтому каждое уравнение y2i ≡ di ( + ai) (mod p) имеет два решения, и система при x = имеет 2k решений. Следовательно,

M = 2kN + N1,

где N1 — некоторые решения системы, возникающие при , не удовле-

творяющих условию леммы. Если =

 

 

,

 

= 1, . . . ,

 

, но

 

+ ai

=

 

 

 

 

 

 

 

 

 

d

(a + )

d

−ai

 

i

 

k

 

p

 

i

при некотором i, то

i

i

=

i

(i) = 1, и система при x =

 

p

p

неразрешима. Если же = −ai при некотором i, то при x = система имеет не более чем 2k решений. Поэтому N1 k · 2k. Следовательно,

|2k · N − p| |M − p| + |2kN − M| kp(2k−1 1) + k · 2k.

Отсюда следует утверждение леммы 6.3. Скажем еще несколько слов о других методах нахождения корней

многочленов над конечными полями. Эти методы описаны в [31, гл. 4, § 3]. Если конечное поле GF(q) велико, но его характеристика p мала,

 

 

 

j

 

 

то при q = p

m

следует вычислить многочлен S(x) =

m−1

pj

, и пытаться

 

x

 

 

 

 

=0