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

Pause

Дискре́тное логарифми́рование (англ. discrete logarithm, DLOG) — задача обращения функции в конечной мультипликативной группе : по заданным элементам и группы требуется найти целое число , для которого . Название происходит от аналогии с логарифмом: подобно тому как логарифм есть показатель степени, в которую нужно возвести основание , чтобы получить , дискретный логарифм — это показатель в уравнении ; слово «дискретное» указывает, что группа конечна, а показатель является целым числом и определён по модулю порядка элемента .

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

Дискретным логарифмом элемента по основанию в группе называется решение уравнения . В случае, когда  — мультипликативная группа обратимых элементов кольца вычетов по модулю , уравнение записывают в виде сравнения

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

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

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

где  — порядок элемента . Обычно выбирают наименьшее неотрицательное решение, . Поэтому алгоритм полного перебора находит решение не более чем за шагов; поскольку , это не более чем шагов.

Чаще всего рассматривается случай , когда группа циклическая и порождена элементом . Тогда уравнение разрешимо для любого , а . В частности, если и  — первообразный корень по модулю , то (в теории чисел — показатель, которому принадлежит по модулю ), и решение существует для любого , взаимно простого с [2].

Пример

Дано: мультипликативная группа , основание , элемент . Требуется найти: целое неотрицательное , удовлетворяющее сравнению

Решим задачу перебором. Выпишем последовательные степени числа 3 по модулю 17, умножая каждый раз предыдущий остаток на 3 (например, ).

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.

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

Алгоритмы решения

В произвольной конечной группе

Универсальные алгоритмы используют только групповую операцию и не зависят от способа представления элементов группы. К ним относятся алгоритм Шенкса ( операций и столько же памяти, где ), ρ-метод Полларда (эвристическая оценка операций при малом объёме памяти)[3] и алгоритм Полига — Хеллмана, сводящий задачу к подгруппам простого порядка[4]. Для группы простого порядка любому универсальному алгоритму для получения ответа с заметной вероятностью требуется групповых операций[5]. Поэтому сложность универсальных методов определяется наибольшим простым делителем порядка группы.

В конечных абелевых группах Бухман, Якобсон и Теске предложили варианты алгоритма Шенкса, сложность и объём памяти которых определяются фактическим порядком элемента или значением логарифма, а не заранее известной верхней оценкой порядка группы; алгоритмы реализованы, в частности, для групп классов мнимых квадратичных порядков[6].

Для конкретных групп существуют алгоритмы, использующие их строение; они рассмотрены ниже.

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

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

(2)

где  — простое, не делится на . Мультипликативная группа циклическая порядка . Если  — её образующий элемент, то есть первообразный корень по модулю , то сравнение (2) имеет решение при любом , не делящемся на . Число первообразных корней по модулю равно , где  — функция Эйлера[7].

Применительно к сравнению (2) алгоритм Шенкса выглядит так. Его сложность — групповых операций и битовых операций при памяти порядка .

Алгоритм
  1. Присвоить .
  2. Вычислить .
  3. Составить таблицу значений для и отсортировать её.
  4. Составить таблицу значений для и отсортировать её.
  5. Найти общие элементы в таблицах. Для них , откуда .
  6. Выдать .

Общий элемент существует, так как любое целое из отрезка представимо в виде , где , (поскольку ).

Для группы известны также алгоритмы, использующие арифметику кольца вычетов (метод исчисления индексов); их сложность субэкспоненциальна. Полиномиальных алгоритмов для классических компьютеров не найдено.

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

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

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

Для субэкспоненциальных алгоритмов дискретного логарифмирования в L-нотации вычислительная сложность оценивается как арифметических операций, где и  — некоторые константы. Чем меньше , тем медленнее растёт сложность с ростом (то есть тем лучше алгоритм); при равных сравнивают  — меньшему значению соответствует меньшая сложность.

  1. Алгоритм Адлемана появился в 1979 году[10]. Это был первый субэкспоненциальный алгоритм дискретного логарифмирования. На практике он всё же недостаточно эффективен. В этом алгоритме .
  2. Алгоритм COS был предложен в 1986 году математиками Копперсмитом (Don Coppersmith), Одлыжко (Andrew Odlyzko) и Шреппелем (Richard Schroeppel)[11]. В этом алгоритме константа , . В 1991 году с помощью этого метода было проведено логарифмирование по модулю . В 1997 году Вебер провёл дискретное логарифмирование по модулю с помощью некоторой версии данного алгоритма. Экспериментально показано, что при алгоритм COS лучше решета числового поля.

Решето числового поля было применено к дискретному логарифмированию позже, чем к факторизации целых чисел. Алгоритм, предложенный Д. Гордоном в 1993 году, имел эвристическую сложность [12], однако на практике оказался неэффективен. Последующие улучшения привели к современным вариантам решета числового поля. При они превосходят по скорости алгоритм Копперсмита — Одлыжко — Шреппеля; все современные рекорды дискретного логарифмирования по простому модулю получены именно этим методом. Наилучшими параметрами в оценке сложности являются , [13].

Для простых чисел специального вида — тех, которые можно представить в форме с небольшим , — существует специализированный алгоритм, сложность которого оценивается как с константой [14]. Хотя показатель здесь больше, чем у алгоритмов общего назначения, константа настолько близка к 1, что при достаточно больших такой алгоритм может оказаться быстрее.

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

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

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

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

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

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

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

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

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

Примечания

  1. ↑ Виноградов И. М. Основы теории чисел. — 11-е изд., стер.. — СПб.: Лань, 2006. — С. 90—91, 98—99. — ISBN 5-8114-0535-9.
  2. ↑ Виноградов И. М. Основы теории чисел. — 11-е изд., стер.. — СПб.: Лань, 2006. — С. 86—87, 90—91. — 176 с. — ISBN 5-8114-0535-9.
  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. ↑ S. Pohlig, M. Hellman. An improved algorithm for computing logarithms over GF(p) and its cryptographic significance (Corresp.) // IEEE Transactions on Information Theory. — 1978. — Январь (т. 24, вып. 1). — С. 106—110. — doi:10.1109/TIT.1978.1055817. Архивировано 9 октября 2026 года.
  5. ↑ Нечаев В. И. К вопросу о сложности детерминированного алгоритма для дискретного логарифма // Математические заметки. — 1994. — Т. 55, вып. 2. — С. 91—101.; Shoup V. Lower bounds for discrete logarithms and related problems (англ.) // Advances in Cryptology — EUROCRYPT ’97. Lecture Notes in Computer Science, vol. 1233. — 1997. — P. 256—266. — doi:10.1007/3-540-69053-0_18.
  6. ↑ Buchmann J., Jacobson M. J., Teske E. On some computational problems in finite abelian groups (англ.) // Mathematics of Computation. — 1997. — Vol. 66. — P. 1663—1687. — doi:10.1090/S0025-5718-97-00880-6.
  7. ↑ Виноградов И. М. Основы теории чисел. — 11-е изд., стер.. — СПб.: Лань, 2006. — С. 87, 94. — 176 с. — ISBN 5-8114-0535-9.
  8. ↑ S. Pohlig, M. Hellman. An improved algorithm for computing logarithms over GF(p) 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 года.
  9. ↑ 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.
  10. ↑ 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 года.
  11. ↑ Don Coppersmith, Andrew M. Odlzyko, Richard Schroeppel. Discrete logarithms inGF(p) (англ.) // Algorithmica. — 1986. — Ноябрь (vol. 1, iss. 1—4). — P. 1—15. — doi:10.1007/BF01840433. Архивировано 13 апреля 2018 года.
  12. ↑ 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.
  13. ↑ 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 года.
  14. ↑ Василенко О. Н. Теоретико-числовые алгоритмы в криптографии. — 2-е изд., доп.. — М.: МЦНМО, 2006. — 336 с. — ISBN 5-94057-103-4.
  15. ↑ 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.
  16. ↑ 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 года.
  17. ↑ Diffie, Hellman, 1976.
  18. ↑ Elgamal, 1984.
  19. ↑ Elgamal, 1985.
  20. ↑ James L. Massey, Jimmy K. Omura. Method and apparatus for maintaining the privacy of digital messages conveyed by public transmission (28 января 1986). Архивировано 20 октября 2016 года.
  21. ↑ Shor, 1994.
  22. ↑ 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.

Ссылки

Дополнительно по теме

Pause