В математиці, особливо в абстрактній алгебрі і її застосуваннях, дискретний логарифм — теоретико-груповий аналог звичайного логарифма. Зокрема, звичайний логарифм loga(b) — це розв'язок рівняння ax = b у полі дійсних або комплексних чисел. Подібно, якщо g і h елементи зі скінченної циклічної групи G, тоді розв'язок x рівняння gx = h зветься дискретним логарифмом h за основою g в групі G.
Приклад
Мабуть найпростіше зрозуміти дискретні логарифми в групі (Zp)×. Це множина {1, …, p − 1} класів конгруентності щодо множення за модулем просте p.
Якщо ми хочемо знайти k-й степінь числа з цієї групи, ми можемо зробити це знайшовши його k-й степінь і вирахувавши остачу від ділення на p. Цей процес називається дискретним піднесенням до степеня. Наприклад, розглянемо (Z17)×. щоб обчислити 34 в цій групі, ми спершу обчислюємо 34 = 81, і тоді ділимо 81 на 17, отримуючи в залишку 13. Отже в групі (Z17)× 34 = 13 .
Дискретний логарифм — це просто обернена операція. Наприклад, візьмемо рівняння 3k ≡ 13 (mod 17) for k. Як показано вище k=4 є розв'язком. Через те що 316 ≡ 1 (mod 17), також випливає, що якщо n ціле, тоді 34+16 n ≡ 13 × 1n ≡ 13 (mod 17). Звідси, рівняння має нескінченно багато розв'язків у вигляді 4 + 16n. Більше того, тому що 16 є найменшим додатнім цілим m, що задовільняє 3m ≡ 1 (mod 17), тобто 16 — це показник 3 в (Z17)×, це єдині розв'язки. Тотожно, Розв'язок можна виразити як k ≡ 4 (mod 16).
Постановка задачі
Нехай в деякій скінченній мультиплікативній абелевій групі задане рівняння
(1)
Розв'язок задачі дискретного логарифмування полягає в віднайдені деякого цілого невід'ємного числа , яке задовольняє рівнянню (1). Якщо воно розв'язне, в нього повинно бути хоча б один натуральний розв'язок, що не перевищує порядок групи. Це одразу грубо оцінює складність алгоритму пошуку розв'язків з гори — алгоритм повного перебору, покрокового піднесення бази до наступного степеня (англ. trial multiplication), вимагає час виконання лінійний до розміру групи і отже, показниково залежить від кількості цифр в розмірі групи. Існує дієвий квантовий алгоритм.[1]
Найчастіше розглядається випадок, коли , тобто циклічна, породжена елементом . В такому разі рівняння завжди має розв'язок. У випадку довільної групи питання розв'язності задачі дискретного логарифмування вимагає окремого розгляду.
Приклад
Найпростіше розглянути задачу дискретного логарифмування в кільці класів рівності за модулем простого числа.
Нехай дано порівняння
|
|
Будемо розв'язувати задачу методом перебору. Випишемо таблицю всіх степенів числа 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.[2] В алгоритмі використовується таблиця, що складається з пар елементів і виконується множень. Цей алгоритм повільний і не придатний для практичного застосування. Для конкретних груп існують ефективніші алгоритми.
У кільці лишків за простим модулем
Розглянемо порівняння
|
(2)
|
де — просте, не ділиться на . Якщо це твірний елемент групи , то рівняння (2) має розв'язок за будь-яких . Такі числа ще відомі як первісні корені, і їх кількість дорівнює , де — функція Ейлера. Розв'язок рівняння (2) можна знайти по формулі:
|
|
Однак, складність обчислення за цією формулою гірше ніж складність перебирання.
Наступний алгоритм має складність .
- Алгоритм
- Присвоїти
- Обчислити
- Скласти таблицю значень для і відсортувати її.
- Скласти таблицю значень для і відсортувати її.
- Знайти спільні елементи в таблицях. Для них звідки
- Видати .
Існує також багато інших алгоритмів для розв'язання задачі дискретного логарифмування у полі лишків. Їх прийнято розділяти на експоненційні і субекспоненційні. Поліноміального алгоритму для розв'язання цієї задачі не існує.
Див. також
Примітки