08.04.09.Печать_edit
.pdf
|
|
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