Это не официальный сайт wikipedia.org 01.01.2023

Дискретное логарифмирование — Википедия

Дискретное логарифмирование

(перенаправлено с «Индекс числа по модулю»)

Дискретное логарифмирование (DLOG) — задача обращения функции g x в некоторой конечной мультипликативной группе G .

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

Для заданных g и a решение x уравнения g x = a называется дискретным логарифмом элемента a по основанию g. В случае, когда G является мультипликативной группой кольца вычетов по модулю m, решение называют также индексом числа a по основанию g. Индекс числа a по основанию g гарантированно существует, если g является первообразным корнем по модулю m.

Постановка задачиПравить

Пусть в некоторой конечной мультипликативной абелевой группе G   задано уравнение

g x = a  . (1)

Решение задачи дискретного логарифмирования состоит в нахождении некоторого целого неотрицательного числа x  , удовлетворяющего уравнению (1). Если оно разрешимо, у него должно быть хотя бы одно натуральное решение, не превышающее порядок группы. Это сразу даёт грубую оценку сложности алгоритма поиска решений сверху — алгоритм полного перебора нашёл бы решение за число шагов не выше порядка данной группы.

Чаще всего рассматривается случай, когда G = g  , то есть группа является циклической, порождённой элементом g  . В этом случае уравнение всегда имеет решение. В случае же произвольной группы вопрос о разрешимости задачи дискретного логарифмирования, то есть вопрос о существовании решений уравнения (1), требует отдельного рассмотрения.

ПримерПравить

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

3 x 13 ( mod 17 ) .  

Будем решать задачу методом перебора. Выпишем таблицу всех степеней числа 3. Каждый раз мы вычисляем остаток от деления на 17 (например, 33≡27 — остаток от деления на 17 равен 10).

31 ≡ 3 32 ≡ 9 33 ≡ 10 34 ≡ 13 35 ≡ 5 36 ≡ 15 37 ≡ 11 38 ≡ 16
39 ≡ 14 310 ≡ 8 311 ≡ 7 312 ≡ 4 313 ≡ 12 314 ≡ 2 315 ≡ 6 316 ≡ 1

Теперь легко увидеть, что решением рассматриваемого сравнения является x=4, поскольку 34≡13.

На практике модуль обычно является достаточно большим числом, и метод перебора является слишком медленным, поэтому возникает потребность в более быстрых алгоритмах.

Алгоритмы решенияПравить

В произвольной мультипликативной группеПравить

Разрешимости и решению задачи дискретного логарифмирования в произвольной конечной абелевой группе посвящена статья J. Buchmann, M. J. Jacobson и E. Teske.[1] В алгоритме используется таблица, состоящая из O ( | g | )   пар элементов и выполняется O ( | g | )   умножений. Данный алгоритм медленный и не пригоден для практического использования. Для конкретных групп существуют свои, более эффективные, алгоритмы.

В кольце вычетов по простому модулюПравить

Рассмотрим сравнение

a x b ( mod p ) ,   (2)

где p   — простое, b   не делится на p   без остатка. Если a   является образующим элементом группы Z / p Z  , то уравнение (2) имеет решение при любых b  . Такие числа a   называются ещё первообразными корнями, и их количество равно ϕ ( p 1 )  , где ϕ   — функция Эйлера. Решение уравнения (2) можно находить по формуле:

x i = 1 p 2 ( 1 a i ) 1 b i ( mod p ) .  

Однако, сложность вычисления по этой формуле хуже, чем сложность перебора.

Следующий алгоритм имеет сложность O ( p log p )  .

Алгоритм
  1. Присвоить H := p + 1  
  2. Вычислить c = a H mod p  
  3. Составить таблицу значений c u mod p   для 1 u H   и отсортировать её.
  4. Составить таблицу значений b a v mod p   для 0 v H   и отсортировать её.
  5. Найти общие элементы в таблицах. Для них c u b a v ( mod p ) ,   откуда a H u v b ( mod p ) .  
  6. Выдать H u v  .

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

Алгоритмы с экспоненциальной сложностьюПравить

  1. Алгоритм Шенкса (алгоритм больших и малых шагов, baby-step giant-step)
  2. Алгоритм Полига-Хеллмана — работает, если известно разложение числа p 1 = i = 1 s q i α i   на простые множители. Сложность: O ( i = 1 s α i ( log p + q i ) )  . Если множители, на которые раскладывается p 1  , достаточно маленькие, то алгоритм очень эффективен[2].
  3. ρ-метод Полларда имеет эвристическую оценку сложности O ( p 1 2 )  [3].

Субэкспоненциальные алгоритмыПравить

В L-нотации вычислительная сложность данных алгоритмов оценивается как L p [ d , c ]   арифметических операций, где c   и 0 d < 1   — некоторые константы. Эффективность алгоритма во многом зависит от близости величин c   и d   к 1 и 0, соответственно.

  1. Алгоритм Адлемана появился в 1979 году[4]. Это был первый субэкспоненциалный алгоритм дискретного логарифмирования. На практике он всё же недостаточно эффективен. В этом алгоритме d = 1 2  .
  2. Алгоритм COS был предложен в 1986 году математиками Копперсмитом (Don Coppersmith), Одлыжко (Andrew Odlyzko) и Шреппелем (Richard Schroeppel)[5]. В этом алгоритме константа c = 1  , d = 1 2  . В 1991 году с помощью этого метода было проведено логарифмирование по модулю p 10 58  . В 1997 году Вебер провёл дискретное логарифмирование по модулю p 10 85   с помощью некоторой версии данного алгоритма. Экспериментально показано, что при p 10 90   алгоритм COS лучше решета числового поля.
  3. Дискретное логарифмирование при помощи решета числового поля было применено к дискретному логарифмированию позднее, чем к факторизации чисел. Первые идеи появились в 1990-х годах. Алгоритм, предложенный Д. Гордоном в 1993 году, имел эвристическую сложность L p [ 1 3 , 3 3 / 2 ]  [6], но оказался достаточно непрактичным. Позднее было предложено множество различных улучшений данного алгоритма. Было показано, что при p 10 100   решето числового поля быстрее, чем COS. Современные рекорды в дискретном логарифмировании получены именно с помощью этого метода.

Наилучшими параметрами в оценке сложности на данный момент является c = ( 92 + 26 13 ) 1 3 / 3 1,902  , d = 1 3  [7].

Для чисел специального вида результат можно улучшить. В некоторых случаях можно построить алгоритм, для которого константы будут c 1,004 75  , d = 2 5  . За счёт того, что константа c   достаточно близка к 1, подобные алгоритмы могут обогнать алгоритм с d = 1 3  .

В произвольном конечном полеПравить

Задача рассматривается в поле GF(q), где q = p n  , p   — простое.

  1. Алгоритм исчисления индексов (index-calculus) эффективен, если p   невелико. В этом случае он имеет эвристическую оценку сложности L p [ 1 2 , c ]  .
  2. Алгоритм Эль-Гамаля, появившийся в 1985 году, применим при n = 2   и имеет сложность L p [ 1 2 , c ]   арифметических операций.
  3. Алгоритм Копперсмита дискретного логарифмирования в конечном поле характеристики 2 стал первым субэкспоненциальным алгоритмом дискретного логарифмирования с константой d = 1 3   в оценке сложности L p [ d , c ]  . Данный алгоритм появился в 1984 году — до изобретения решета числового поля[8].

В группе точек на эллиптической кривойПравить

Рассматривается группа точек эллиптической кривой над конечным полем. В данной группе определена операция сложения двух точек. Тогда m P   — это P + + P m  . Решением задачи дискретного логарифмирования на эллиптической кривой является нахождение такого натурального числа m  , что m P = A   для заданных точек P   и A .  

До 1990 года не существовало алгоритмов дискретного логарифмирования, учитывающих особенностей строения группы точек эллиптической кривой. Впоследствии, Альфред Менезес, Тацуаки Окамото[en] и Скотт Ванстоун предложили алгоритм, использующий спаривание Вейля[9]. Для эллиптической кривой, определённой над полем G F ( q )  , данный алгоритм сводит задачу дискретного логарифмирования к аналогичной задаче в поле G F ( q k )  . Однако, данное сведение полезно, только если степень k   мала. Это условие выполняется, в основном, для суперсингулярных эллиптических кривых. В остальных случаях подобное сведение практически никогда не приводит к субэкспоненциальным алгоритмам.

Вычислительная сложность и приложения в криптографииПравить

Задача дискретного логарифмирования является одной из основных задач, на которых базируется криптография с открытым ключом. Классическими криптографическими схемами на её основе являются схема выработки общего ключа Диффи-Хеллмана[10], схема электронной подписи Эль-Гамаля[11][12], криптосистема Мэсси-Омуры[13] для передачи сообщений. Их криптостойкость основывается на предположительно высокой вычислительной сложности обращения показательной функции. Хотя сама показательная функция вычисляется достаточно эффективно, даже самые современные алгоритмы вычисления дискретного логарифма имеют очень высокую сложность, которая сравнима со сложностью наиболее быстрых алгоритмов разложения чисел на множители.

Другая возможность эффективного решения задачи вычисления дискретного логарифма связана с квантовыми вычислениями. Теоретически доказано, что с помощью алгоритма Шора дискретный логарифм можно вычислить за полиномиальное время[14][15][16]. В любом случае, если полиномиальный алгоритм вычисления дискретного логарифма будет реализован, это будет означать практическую непригодность криптосистем на его основе для долговременной защиты данных. Рассматривается ряд идей для создания новых алгоритмов с открытым ключом.

ПримечанияПравить

  1. Buchmann J., Jacobson M. J., Teske E. On some computational problems in finite abelian groups (англ.) // Mathematics of Computation  (англ.) (рус. : journal. — 1997. — Vol. 66. — P. 1663—1687. — doi:10.1090/S0025-5718-97-00880-6.
  2. S. Pohlig, M. Hellman. An improved algorithm for computing logarithms over and its cryptographic significance (Corresp.) // IEEE Transactions on Information Theory. — 1978. — Январь (т. 24, вып. 1). — С. 106—110. — ISSN 0018-9448. — doi:10.1109/TIT.1978.1055817. Архивировано 21 июня 2018 года.
  3. J. M. Pollard. Monte Carlo methods for index computation (mod p) // Mathematics of Computation. — 1978. — Январь (т. 32, вып. 143). — С. 918—924. — doi:10.1090/S0025-5718-1978-0491431-9.
  4. L. Adleman. A subexponential algorithm for the discrete logarithm problem with applications to cryptography // 20th Annual Symposium on Foundations of Computer Science. — 1979. — Октябрь. — С. 55—60. — doi:10.1109/SFCS.1979.2. Архивировано 10 мая 2017 года.
  5. Don Coppersmith, Andrew M. Odlzyko, Richard Schroeppel. Discrete logarithms inGF(p) (англ.) // Algorithmica. — 1986. — November (vol. 1, iss. 1—4). — P. 1—15. — doi:10.1007/BF01840433. Архивировано 13 апреля 2018 года.
  6. Daniel M. Gordon. Discrete Logarithms in GF(p) Using the Number Field Sieve // SIAM Journal on Discrete Mathematics. — 1993. — Т. 6, вып. 1. — С. 124—138. — doi:10.1137/0406010.
  7. Don Coppersmith. Modifications to the Number Field Sieve (англ.) // Journal of Cryptology. — 1993. — Vol. 6, iss. 3. — P. 169—180. — doi:10.1007/BF00198464. Архивировано 19 июня 2018 года.
  8. D. Coppersmith. Fast evaluation of logarithms in fields of characteristic two // IEEE Transactions on Information Theory. — 1984. — Июль (т. 30, вып. 4). — С. 587—594. — ISSN 0018-9448. — doi:10.1109/TIT.1984.1056941.
  9. A. J. Menezes, T. Okamoto, S. A. Vanstone. Reducing elliptic curve logarithms to logarithms in a finite field // IEEE Transactions on Information Theory. — 1993-09-01. — Т. 39, вып. 5. — С. 1639—1646. — ISSN 0018-9448. — doi:10.1109/18.259647. Архивировано 2 июля 2017 года.
  10. Diffie, Hellman, 1976.
  11. Elgamal, 1984.
  12. Elgamal, 1985.
  13. James L. Massey, Jimmy K. Omura. Method and apparatus for maintaining the privacy of digital messages conveyed by public transmission  (неопр.) (28 января 1986). Архивировано 20 октября 2016 года.
  14. Shor, 1994.
  15. Shor P. W. Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer // Foundations of Computer Science : Conference Publications. — 1997. — P. 1484–1509.
  16. CompuTerra Online #224 — Квантовые компьютеры и квантовые вычисления… Беседа с кандидатом физико-математических наук, специалистом по теории алгоритмов Михаилом Вялым (Вычислительный центр РАН)

СсылкиПравить