Алгоритм COS
Алгоритм COS (Копперсмит, Одлыжко, Шреппель) — субэкспоненциальный алгоритм дискретного логарифмирования в кольце вычетов по модулю простого числа. Был предложен в 1986 году.
Исходные данные
Пусть задано сравнение
((1)) |
Необходимо найти натуральное число x, удовлетворяющее сравнению (1).
Описание алгоритма
1 этап. Пусть
Сформируем множество
где q — простые.
2 этап. С помощью некоторого просеивания ищем пары — такие, что , и
(рассматривается абсолютно наименьший вычет). При этом так как , то
причём это абсолютно наименьший вычет в этом классе и он имеет величину . Поэтому вероятность его гладкости выше, чем для произвольных чисел, меньших p-1.
Логарифмируя по основанию a, получим соотношение
Мы можем также считать, что a является гладким, то есть
откуда
3 этап. Набрав на 2-м этапе достаточно много уравнений, мы решим получившуюся систему линейных уравнений и найдём .
4 этап. Для нахождения x введём новую границу гладкости . Случайным перебором находим одно значение w, удовлетворяющее соотношению
u — простые числа «средней» величины.
5 этап. С помощью методов, аналогичных этапам 2 и 3, мы находим логарифмы простых чисел u, возникших на этапе 4.
6 этап. Находим ответ:
Оценка сложности
Данный алгоритм имеет сложность арифметических операций. Предполагается, что для чисел данный алгоритм более эффективен, чем решето числового поля.
Литература
- Василенко О.Н. Теоретико-числовые алгоритмы в криптографии. — М.: МЦНМО, 2003. — 328 с. — ISBN 5-94057-103-4.
- Joux A., Lercier R. Improvements to the general number field sieve for discrete logarithms in prime fields. A comparison with the gaussian integer method (англ.) // Math. Comp. : journal. — 2003. — Vol. 72. — P. 953—967. — doi:10.1090/S0025-5718-02-01482-5.