Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

08.04.09.Печать_edit

.pdf
Скачиваний:
26
Добавлен:
12.03.2016
Размер:
1.43 Mб
Скачать

 

 

s

 

k1

 

z1i log p1 mod p 1,

 

 

i 1

 

 

 

s

 

k2

 

z2i log p2 mod p 1,

 

 

i 1

 

 

. . . . . . . . . .

 

 

 

 

 

 

 

 

s

 

 

 

t i 1 ti t

Вэтой системе имеется s = t ε неизвестных: log p1, log p2, …, log ps, которые являются индексами простых чисел, входящих в базу разложения.z log p mod p 1.k

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

чения log p1, log p2, …, log ps.

Второй шаг является наиболее трудоемкой процедурой, поскольку в базах разложения, которые могут быть использованы, обычно присутствует большое число простых чисел, что задает большое число неизвестных в решаемой системе. После завершения второго шага сравнительно легко может быть вычислен индекс (дискретный логарифм) для произвольных значений y (при основании ; если последнее значение изменится, то потребуется повторить первый и второй шаги). Используется система, число сравнений в которой превышает число неизвестных, поскольку некоторые сравнения могут оказаться зависимыми (тогда при t = s число решений было бы равно или больше p – 1, т. е. было бы практически бесконечным для длин модуля, которые используются в системах ЭЦП).

3-й шаг соответствует процедурам непосредственного вычисления x log y (mod p) . Выбирается случайное значение r, и вычисляется число

Y y r mod p . Затем число Y разлагается на простые множители:

s ( y )

Y pizi . Если значение Y не разлагается по нашей базе разложения, то

i

выбирается другое случайное число r. Если в разложении Y присутствуют только простые множители, входящие в базу разложения, то мы имеем:

71

s

( y)

r log

s

 

p mod p 1.

y r mod p pzi

y z( y) log

 

i

 

i

 

i

i 1

 

 

i 1

 

 

В последнем сравнении неизвестной величиной является только log y , ко-

торая теперь легко вычисляется по формуле:

 

 

s

z( y) log

 

 

r

mod p 1

log

y

 

p

 

 

 

 

i

 

i

 

 

 

i 1

 

 

 

 

 

 

или

 

 

r

s

z( y) log

 

log

y

 

p mod p 1.

 

 

 

i 1

i

 

i

 

 

 

 

 

 

Заметим, что если основание логарифма не является первообразным корнем, то задача дискретного логарифмирования будет относиться к неко-

торой подгруппе Hβ, порядок которой равен показателю < p – 1, к которому относится основание логарифма по модулю p. Обычно в схемах ЭЦП с сокращенной длиной подписи используется простой показатель , длина которого в несколько раз (4–6 раз) меньше длины модуля числа p, поэтому приведенный выше метод вычисления индексов не может быть непосредственно

применен для определения неизвестной

величины x в уравнении

y = β x mod p, где y — элемент подгруппы Hβ

и β — число, относящееся по

модулю p к показателю . Это связано с тем, что числа, входящие в подгруппу Hβ, составляют очень малую долю из множества положительных целых чисел, не превышающих p – 1, и вероятность того, что простые числа некото-

рой выбираемой базы разложения будут входить в Hβ, является пренебрежимо малой. Дискретное логарифмирование методом вычисления индексов может быть выполнено следующим путем.

Используя указанный метод, находим значение индекса u числа β при основании , являющемся первообразным корнем, т. е. имеем β = u mod p. Теперь исходное уравнение преобразуется в сравнение вида:

y x ux x mod p.

С помощью метода вычисления индексов находим значение x ux mod p 1 (*), по которому можно легко вычислить x. Последнее можно сделать, вы-

72

числив значение u log (mod p) (с помощью метода вычисления ин-

дексов). Из (*) получаем формулу для вычисления значения x:

 

 

 

 

x

x

 

mod p 1.

log

 

 

 

 

 

Для значений длины модуля |p| ≥ 1024 и длины порядка подгруппы Hβ

| | ≤ 80 метод логарифмирования «шаг ребенка — шаг гиганта» является более эффективным.

При оптимизации выбора значения ε описанный в этом разделе метод имеет трудоемкость, которая оценивается величиной

 

c

 

 

log log log p

W O e

 

 

.

 

 

 

 

где c — небольшая положительная константа. Дальнейшее развитие этого подхода позволило разработать методы дискретного логарифмирования, трудоемкость которых оценивается формулой

 

c 3

 

 

 

log p(log log p)2

 

W O e

 

 

 

,

 

 

 

 

 

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

 

c 3

 

 

log n(log log n)2

W O e

 

 

.

 

 

 

 

2.6.3. Метод Полларда

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

73

греческую букву «ро»). Достоинством ро-метода Полларда является его универсальность, т. е. он применим к нахождению дискретных логарифмов в циклических группах произвольной природы и его трудоемкость определяется главным образом значением порядка группы.

В этом методе множество допустимых значений функции разбивается на три подмножества S1, S2 и S3 , причем подмножество S2 не содержит единицу, и используется следующая функция, задающая «случайное блуждание»:

 

 

xi ,

x S

 

def

 

i 1

 

xi2 ,

 

xi 1

f (xi )

xi S2 , 1 S2 ,

 

 

xi ,

xi S3

 

 

где x0 1, основание логарифма и x (значение x требуется найти). С этой функцией связаны следующие две последовательности: a0 , a1, a2, a3, ... и b0 , b1, b2 , b3, ... , которые вычисляются по следующим формулам

 

 

ai ,

 

 

2ai mod ,

ai 1

 

 

 

ai 1,

 

 

 

 

bi 1,

 

 

2bi mod ,

bi 1

 

 

 

bi ,

 

 

xi S1 xi S2 , xi S3

xi S1 xi S2 , xi S3

где a0 b0 0 и порядок группы. Легко заметить, что для всех i 1 имеет место соотношение

x ai bi .

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

Действительно, при i 0 это так. Пусть это соотношение выполняется

при некотором i , т. е. имеем xi ai bi

(1). Покажем, что тогда оно выпол-

 

xi 1 xi

 

ai

bi 1

 

ai 1 bi 1

. Если

няется и i i 1. Если xi S1 , то имеем

 

 

 

 

xi S2 , то имеем xi 1 xi2 2ai 2bi ai 1 bi 1 .

Если xi S3 ,

то

имеем

xi 1 xi ai 1 bi ai 1 bi 1 . Таким образом, для всех трех случаев из выполнимости (1) следует, что xi 1 ai 1 bi 1 , следовательно, согласно методу математической индукции (1) верно для всех значений i 0 .

74

Значение дискретного логарифма находится следующим образом. Используя метод Флойда (см. раздел 2.5.2), находим значение m, такое, что xm x2m . Выражая правую и левую часть последнего равенства с помощью соотношения, получаем

am bm a2m b2m bm b2m a2m am

bm b2m log a2m am x log a2m am mod . bm b2m

Наиболее трудоемким этапом рассмотренного метода является выполнение алгоритма Флойда, сложность которого пропорциональна . Таким образом, трудоемкость ро-метода Полларда имеет такой же порядок как метод больших и малых шагов, однако в отличие от последнего в первом используется память существенно меньшего объема (такие методы иногда называют не требующими памяти).

2.6.4.Случай составного порядка

Вразделах 2.6.1 и 2.6.3 были представлены общие методы вычисления дискретного логарифма в группе простого порядка, содержащие элементы произвольной природы. Сложность решения это задачи для группы произвольной природы не превышает числа операций возведения в степень, примерно равного квадратному корню из порядка группы. В общем случае, если основание алгоритма имеет порядок, равный составному числу, то сложность вычисления логарифма определяется значением наибольшего простого делителя порядка основания. Это связано с тем, что указанный общий случай сводится к вычислению дискретных логарифмов по основаниям, являющихся простыми числами. Рассмотрим метод такого сведения на примере мультипликативной группы вычетов по простому модулю p.

Пусть требуется вычислить

x log y (mod p) ,

где порядок ( ) основания является составным числом. Пусть, например, ( ) p 1. Представим значение порядка в виде канонического разложения

s

( ) riei ,

i 1

75

где r

 

простые числа. Возведем обе части сравнения y x mod p в сте-

i

 

 

 

 

 

 

 

 

 

 

 

 

пень

 

 

p 1

, где

j {1, 2, ..., s} некоторое зафиксированное значение. В

j

 

 

 

 

 

rje j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

результате этого получим:

 

 

 

 

 

 

 

 

 

 

 

 

y j j x xj mod p ,

 

 

где

j

 

число, относящееся по модулю p к показателю re j , т. е.

j

есть ге-

 

 

 

 

 

 

 

 

 

j

 

нератор

подгруппы

порядка re j

(т. е. (

j

) re j ). Рассмотрим

значение

 

 

 

 

 

 

 

j

 

j

 

 

x j log

 

y j (mod p) . Поскольку основание этого логарифма равно

j , то

 

 

 

 

j

 

 

 

 

 

 

вычисление x j даст значение, которое не превосходит величину ( j ) . Име-

ем

xj xj j mod p x x j mod ( j ) .

Вычислив значения дискретных логарифмов при основаниях j для всех j 1,2,...,s , получим следующую систему сравнений:

x x1 mod r1e1

 

 

 

 

mod re2

 

x x

 

,

 

2

2

 

 

 

x x

s

mod res

 

 

 

s

 

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

ние, не превосходящее произведения модулей,

которое равно

( ) p 1.

Это означает, что, вычислив логарифмы от

значений y j

mod p для

j 1,2,..., s при соответствующих основаниях, можно далее легко определить искомый дискретный логарифм x при основании .

Покажем теперь, что логарифмирование по модулю, равному степени простого числа, имеет тот же порядок сложности, что и дискретное логарифмирование по простому модулю. Пусть требуется вычислить логарифм

76

x log

e

y (mod p) , где ( re ) re . Возведем в степень r обе части следую-

 

r

 

 

 

 

 

 

 

 

 

 

щего сравнения y xe mod p , в результате чего получим

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

yr xre

re x mod p yr xe 1 mod p ,

 

 

 

 

r

 

r

 

 

 

r

 

 

где

e 1

re mod p (

e 1 ) re 1 . Допустим мы умеем вычислять ло-

r

 

 

r

r

 

 

 

 

 

 

 

гарифмы при основании, имеющем порядок re 1 и можем найти значение

 

 

 

 

x

log

 

yr

(mod p) .

 

 

 

 

 

 

 

e 1

 

e 1

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

Выше мы видим, что, следовательно,

имеем x x

mod re 1

, поэтому

 

 

 

 

 

 

 

 

 

e 1

 

 

искомое значение x можно представить в виде x Qre 1 xe 1 , где 0 Q r

(поскольку x re ). Таким образом, значение x можно найти методом полного перебора возможных значений Q. Это можно сделать методом больших и ма-

лых шагов, представляя Q в виде Q dj i ,

 

d

 

 

1

, 0 j d и

где

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 i d . Действительно:

 

 

 

 

 

 

 

 

 

 

 

 

 

yr xe 1

Qre 1 xe 1 mod p yr re 1d j re 1 i xe 1 mod p ,

r

re 1

 

 

 

 

 

 

re 1

 

 

 

 

 

 

r

 

re 1 i

 

re 1d j x

 

 

 

 

 

 

 

 

y

r

e 1

mod p

e 1

e 1 mod p .

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

Далее вычисляем d значений

yr ree 11 i

mod p и упорядочиваем их. Затем

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

для каждого значения

j 0,1,...,d

вычисляем

re 1d j x

mod p

и проверяем

 

e 1

e 1

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

есть ли такое значение в построенном ранее упорядоченном массиве (каждая проверка потребует выполнения log2 d операций сравнения). При некотором j0 найдется i0 , такое что текущее проверяемое значение будет присутствовать в массиве. По найденным значениям j0 и i0 вычисляем Q dj0 i0 , а по Q – искомое значение x. Трудоемкость этой процедуры пропорциональна d r операций возведения в степень по модулю p. Применяя этот способ понижения порядка основания при котором вычисляется логарифм e 1 раз, мы приходим к необходимости вычислить логарифм при основании, имеющем простой порядок r. Трудоемкость вычисления последнего при использовании метода больших и малых шагов (или ро-метода Полларда) пропорцио-

77

нальна r , т. е. имеет оценку O r . Получаем, что трудоемкость вычисле-

ния логарифма при основании, имеющем порядок re пропорциональна er ,

т. е. имеет оценку O r .

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

Глава 3. Задачник

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

3.1. Примеры решения задач

Задача 3.1.

Доказать, что для вычета a n-ой степени по модулю p, где n делит число

p 1

p 1, выполняется соотношение a n 1mod p .

Решение: Пусть a – вычет степени n по модулю p. Тогда существует x: x < p и xn a mod p . Возведем обе части последнего сравнения в степень

p 1. Получим

xn( p 1) a p 1 mod p x p 1 a

 

 

p 1

 

Ферма имеем x p 1 1mod p a

 

 

1mod p .

n

Задача 3.2.

p 1

n

mod p . По малой теореме

p 1

Пусть n | p 1 и выполняется соотношение a n a вычет n-ой степени по модулю p.

1mod p . Доказать, что

78

Решение: По простому модулю существуют первообразные корни. Пусть

 

 

 

 

 

 

 

p 1

g – один из первообразных корней. Имеем: a gind a mod p

 

 

 

и a n 1mod p

 

 

 

p 1

ind a 1 g0 mod p .

 

 

 

 

 

 

 

 

 

(условие),

т. е.

g n

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

p 1 ind a 0mod p 1 n | ind a . Значит, для некоторого целого Q имеем n

a gind a gQn mod p x : xn a mod p , т. е. na mod p gQ mod p .

Задача 3.3.

Доказать, что число вычетов степени n | p(p 1) по модулю p2 равно n.

Решение: Рассмотрим сравнение xn a mod p2 , где a – вычет n-й сте-

пени по mod ps и НОД(a, (p2)) = 1 (следовательно имеем также и

НОД(x, (p2)) = 1). Известно, что по модулю p2 имеются первообразные корни. Пусть g – некоторый первообразный корень. Тогда можем переписать

указанное сравнение

в

виде

gn ind x gind a mod p2 , откуда следует

n ind x ind a

mod ( p2 ) , где (p2) = p(p 1). Поскольку по условию мо-

дуль

делится

на

n,

то

из

последнего сравнения следует, что

n | ind a ind a nQ ,

где nQ p( p 1) Q

p( p 1)

, т. е. имеем количество

 

 

 

 

 

 

 

 

 

n

различных целых чисел Q, равное

p( p 1)

, и им соответствуют разные зна-

 

 

 

 

 

 

 

n

чения

gnQ mod p2 , причем все из последних являются вычетами степени n.

Действительно,

gnQ gQ n mod p2 .

Задача 3.4.

Доказать, что если a – вычет степени n | p(p 1), где p – нечетное про-

2

p( p 1)

 

 

2

n

стое число, по модулю p , то a

1mod p .

 

Решение: По условию задачи существует некоторое значение x, такое что выполняется сравнение xn a mod p2 , которое можно представить в виде gn ind x gind a mod p2 , g – некоторый первообразный корень, откуда следует

79

n ind x ind a mod ( p2 ) , где (p2) = p(p 1). Поскольку по условию модуль

делится на n, то из последнего сравнения следует, что

n | ind a . Поскольку

индекс

вычета

n

 

 

степени

делится

 

на

n,

то

ind a

 

 

 

 

 

 

 

ind a

p( p 1) gind a

 

p( p 1)

 

 

p( p 1)

 

 

 

 

x g n

mod p2

x p( p 1)

g

n

 

n a

 

n mod p2

 

Со-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p( p 1)

 

 

 

 

 

 

 

 

 

 

 

 

p( p 1)

1mod p

2

a

 

 

1mod p

2

 

 

гласно теореме Эйлера, имеем x

n

 

.

 

 

 

 

 

 

 

 

Задача 3.5.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p( p 1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1mod p

2

, где n | p(p 1). Доказать, что a – вычет степени

Пусть a

n

 

 

 

 

 

 

n по модулю p2.

Решение: Поскольку по модулю p2 имеются первообразные корни, то

 

 

 

 

 

 

 

 

p( p 1)

ind a

 

 

 

 

 

условию задачи представить в виде

g

n

g

p( p 1)

mod p

2

, где g – не-

 

 

 

 

 

который

 

первообразный

корень.

 

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

имеем

 

p( p 1)

 

ind a p( p 1)mod p( p 1)

n | ind a .

 

Тогда

 

имеем

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ind a n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a gind a g

n mod p2 ,

т. е.

 

существует

решение

 

сравнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xn a mod p2 .

Задача 3.6.

 

 

Доказать, что число вычетов степени n | ps 1(p 1),

где p

нечетное

простое число, по модулю ps равно n.

 

 

Решение: Рассмотрим сравнение xn a mod ps , где a – вычет n-й степе-

ни по mod ps и НОД(a, (ps)) = 1 (следовательно

имеем

также и

НОД(x, (ps)) = 1). Известно, что по модулю ps имеются первообразные корни. Пусть g – некоторый первообразный корень. Тогда можем переписать

указанное

сравнение

в

виде

gn ind x gind a mod ps , откуда следует

n ind x ind a mod ( ps ) ,

где (ps) = ps 1(p 1). Поскольку по условию мо-

дуль (ps)

делится

на

n, то

из последнего сравнения следует, что

80