5.1.Дискретное логарифмирование в конечных полях и кольцах

advertisement
Дискретное логарифмирование в конечных полях и кольцах.
1. Постановка задачи дискретного логарифмирования.
Пусть G – мультипликативная группа, а b и y – некоторые элементы группы
G, связанные равенством y  b n
при некотором целом n. Любое целое x,
удовлетворяющее уравнению
b x  y (1),
называется дискретным логарифмом элемента y по основанию b. Задача
дискретного логарифмирования в группе G состоит в отыскании по данным y
и b некоторого дискретного логарифма y по основанию b.
Задача определения дискретного логарифма элемента конечной группы
может быть легко решена, если порядок группы не слишком велик и для этой
группы
составлена
таблица
индексов.
При
отыскании
дискретного
логарифма положительного действительного числа, если нет таблицы
индексов, можно воспользоваться методом последовательного приближения.
Но в конечном поле нельзя построить метод вычисления дискретного
логарифма, подобный данному методу. Действительно, в конечном поле
нельзя определить антисимметричное, транзитивное, связное, бинарное
отношение, согласованное с какой-нибудь операцией.
Если b имеет бесконечный порядок, то дискретный логарифм любого
элемента по основанию b определен однозначно. В противном случае все
дискретные логарифмы y по основанию b можно получить из некоторого
такого дискретного логарифма x 0 по формуле x  x 0  km , где m- порядок
элемента b, а параметр k пробегает Z.
Для
криптографических
приложений
наиболее
важна
задача
дискретного логарифмирования в мультипликативных группах конечных
полей GF(q), и колец Z n . Эти группы обозначим через
140
GF (q) * и Z n* . Как
известно группа GF (q) * циклическая и имеет порядок q-1, поэтому если в
качестве b берется некоторый пораждающий этой группы, то дискретный
логарифм любого элемента GF (q) * по основанию b существует и определен
однозначно по модулю q-1. Отметим, что если мы умеем логарифмировать
по фиксированному основанию, которое является порождающим g группы
GF (q) * , то можно находить дискретные логарифмы по произвольному
основанию. В самом деле, чтобы найти дискретный логарифм x элемента y
по основанию b, достаточно вычислить дискретные логарифмы z и w
элементов b и y соответственно по основанию g и решить уравнение
xz  w(mod q  1) относительно x.
2. Логарифмирование в конечном поле (в GF (q) * ).
Здесь рассмотрим задачу дискретного логарифмирования в группе GF (q) * ,
где q  p n , p- простое число. Перечислим алгоритмы, которые применяют
при
вычислении
дискретных
логарифмов
в
GF (q) * :
а)
алгоритм
Копперсмита, б) алгоритм Хеллмана-Рейнери, в) индексный алгоритм, г)
алгоритм Гельфонда, д) алгоритм Сильвера-Поллига-Хеллмана.
На
последнем алгоритме остановимся долее подробно и рассмотрим пример.
Данный алгоритм хорошо работает, когда все простые делители числа
q-1 малы. Цель алгоритма – найти такой элемент x,
Предположим, что
0  x <q-1, что b x  y .
x  x 0  x1 p  ...  x 1 p  1 (mod p  ) c 0  x i <p.
Для того, чтобы найти x 0 ,мы вычислим y ( q 1) / p . Это корень p-й степени из
единицы,
т.к.
y q 1  1 .
Из
равенства
y ( q 1) / p  b x ( q 1) / p  b x0 ( q 1) / p  r p, x0 . Сравниваем
y  bx
y ( q 1) / p
cледует,
c
что
r p, j 0 j  p
( r p , j  b j ( q 1) / p при j=0,1,..,p-1). И полагаем x 0 равным тому значению j, при
котором y ( q 1) / p = r p , j .
141
Далее, чтобы найти x1 , мы заменяем y на y1  y / b x0 и т.д.
Чтобы продолжить процесс нахождения
x 0 , x1 ,..,
x 1 для каждого
i=1,2,..,   1 полагаем
i 1
y i  y / b x0  x1 p ... xi 1 p .
p
Дискретный логарифм этого выражения сравним по модулю
x i p i  ...  x 1 p  1 . Т.к. y i является p i -й степенью, то y i( q 1) / p
y i( q 1) / p
i 1
i 1
с
1 и
 b ( xi  xi 1 p ...)( q 1) / p  b xi ( q 1) / p  r p, xi . Поэтому полагаем x i равным
i 1
( q 1) / p
тому значению j, при котором y i
= rp, j .
Завершив этот процесс мы получим x(mod p  ) . Повторив такие
вычисления для каждого p|(q-1), воспользуемся китайской теоремой об
остатках и найдем x.
Пример. Найти дискретный логарифм 18 по основанию 2 в F19* ,
используя алгоритм Сильвера-Поллига-Хеллмана.
Решение:
y=18,
b=2,
218  1(mod 19);218 / 2  1(mod 19).
218  1(mod 19)
q=19.
Имеем
Получаем,
218 / 3  7(mod 19) ;
;
19-1= 2  3 2 .
Вычислим
r2, j  1;1.
2182 / 3  11(mod 19) .
Далее,
Получаем,
r3, j  1,7,11. Пусть теперь 18  2 x (mod 19) .
Сначала возьмем p=2 и найдем вычет x(mod2), который запишем
как
x0 .
Имеем,
1818 / 2  1(mod 19) .
Следовательно,
x 0 =-1,
т.е.
x  1(mod 2).
Теперь берем p=3 и находим вычет x(mod9), который запишем как
x 0  3x1 . Найдем
x 0 : вычислим 1818 / 3  1(mod 19) , т.е.
x 0  0 . Затем
вычисляем 1818 / 9  1(mod 19) и получаем x1  0 . Итак, x  0(mod 9) . Остается
142
найти
единственный
элемент
при
x(mod18),
x  0(mod 9) ,
котором
x  1(mod 2). Это x=9. Таким образом, 18  2 9 в F19* .
Теорема. Если t  r1  r2  ...  rk , где t=ord b – есть произведение
натуральных чисел, то решение уравнения (1) можно найти, выполнив не
k
k
i
i 1
i 2
j 1
более чем за 2 ri  6  log 2  r j  2 log 2 r1  1 операций.
3. Логарифмирование в Z n* .
Для вычисления дискретных логарифмов в некоторых случаях могут
быть полезны функции частные Ферма, которые в частности определяются
соотношением
а p 1  1
Ф1 (a) 
(mod p)
p
и обладают следующими свойствами :
Ф1 (ab )  Ф1 (а)  Ф1 (b) mod p и Ф1 (a  cp )  Ф1 (a)  c / a mod p .
4. Приложение вычисления дискретного логарифма в криптографии.
Дискретный логарифм составляет основу целого ряда алгоритмов
криптографии.
Дискретный
логарифм
широко
применяется
в
1)
криптосистеме с открытым ключом по Диффи-Хеллману; 2) DSA-алгоритме
цифровой подписи; 3) криптосистеме Эль Гамаля.
Криптосистему, предложенную Эль Гамалем, можно использовать как
для цифровых подписей, так и для шифрования. Криптостойкость
определяется
трудоемкостью
вычисления
дискретного
логарифма
в
конечном поле.
Опишем
параметры
криптосистемы
Эль
(шифрование/дешифрование).
Открытый ключ:
p – простое число (может быть общим для группы абонентов)
143
Гамаля
g  p (может быть общим для группы абонентов)
y  g x mod p
Секретный ключ: x  p
Шифрование: k выбирается случайным образом, взаимно простое с
p 1
1-я часть шифротекста: a  g k mod p
2-я часть шифротекста: b  y k M mod p
Дешифрование: M 
b
ax
mod p
 b

y k M g xk M

.



M
mod
p
x
xk
ax

a
g


144
Download