Перейти к содержанию

Алгоритм COS

Материал из Мегавики — свободной энциклопедии

Алгоритм COS (Копперсмит, Одлыжко, Шреппель) — субэкспоненциальный алгоритм дискретного логарифмирования в кольце вычетов по модулю простого числа. Был предложен в 1986 году.

Исходные данные[править]

Пусть задано сравнение

axb(modp), ((1))

Необходимо найти натуральное число x, удовлетворяющее сравнению (1).

Описание алгоритма[править]

1 этап. Пусть

H:=[p1/2]+1, J:=H2p>0, L=elogploglogp, 0<ϵ<1.

Сформируем множество

{qq<L1/2}{H+c|0<c<L1/2+ϵ},

где q — простые.


2 этап. С помощью некоторого просеивания ищем пары c1, c2 — такие, что 0<ci<L1/2+ϵ, и


(H+c1)(H+c2)qL1/2qαq(c1,c2)(modp)

(рассматривается абсолютно наименьший вычет). При этом так как J=O(p1/2), то


(H+c1)(H+c2)J+(c1+c2)H+c1c2(modp),

причём это абсолютно наименьший вычет в этом классе и он имеет величину O(p1/2+ϵ). Поэтому вероятность его гладкости выше, чем для произвольных чисел, меньших p-1.

Логарифмируя по основанию a, получим соотношение

loga(H+c1)+loga(H+c2)qL1/2αq(c1,c2)logaq(modp1)

Мы можем также считать, что a является гладким, то есть

aqL1/2qβq(modp),

откуда

1qL1/2βqlogaq(modp1)


3 этап. Набрав на 2-м этапе достаточно много уравнений, мы решим получившуюся систему линейных уравнений и найдём loga(H+c), logaq.

4 этап. Для нахождения x введём новую границу гладкости L2. Случайным перебором находим одно значение w, удовлетворяющее соотношению

awbqL1/2qγqL1/2u<L2uhu(modp).

u — простые числа «средней» величины.

5 этап. С помощью методов, аналогичных этапам 2 и 3, мы находим логарифмы простых чисел u, возникших на этапе 4.

6 этап. Находим ответ:

xlogabw+qL1/2γqlogaq+L1/2u<L2hulogau(modp1).

Оценка сложности[править]

Данный алгоритм имеет сложность O(exp((logploglogp)1/2)) арифметических операций. Предполагается, что для чисел p<1090 данный алгоритм более эффективен, чем решето числового поля.

Литература[править]