- •Методи криптоаналізу дискретних логарифмів в полі f(p) Навчальні питання
- •29.1 (7.2.1) Методи дискретного логарифмування в скінченному полі Галуа f(q)
- •29.2 (7.2.2) . Дискретне логарифмування методом ρ - Полларда
- •29.3 (7.2.3) Метод Поліга-Геллмана дискретного логарифмування
- •29.4 (7.2.4). Решето числового поля для дискретного логарифмування
- •29.5 (7.2.5) Порівняння складності дискретного логарифмування
- •29.6(7.2.6). Алгоритм факторизації цілих чисел
- •III Алгоритм пошуку періоду r Шора
- •V Висновок
- •Додаток а Стійкість асиметричних криптосистем, що базуються на криптоперетвореннях в простих полях. Приклади розв’язку задач та задачі для самостійного розв’язання
- •IV Моделювання алгоритму квантових обчислень Шора
- •(Оскільки ).
- •4. Задачі для самостійного розв’язання
29.3 (7.2.3) Метод Поліга-Геллмана дискретного логарифмування
Метод Поліга-Геллмана дискретного логарифмування базується на китайській теоремі про лишки [13, 422, 426]. Він може бути реалізований з експоненційною складністю у разі якщо відомо розклад числа Р-1.
Нехай знову необхідно розв’язати порівняння (дискретний логарифм) вигляду
. (9.45)
Розв’язання виконується в декілька етапів:
знаходиться канонічний розклад числа Р-1;
обчислюються лишки за модулями канонічного розкладу;
обчислюється значення Х згідно з китайською теоремою про лишки.
Перший
етап виконується достатньо просто,
оскільки на етапі побудови пари
розклад числа Р-1 є відомим. Інакше
довести, що а
– породжуючий (твірний) елемент, дуже
складно. Тому на першому етапі Р-1
подається у вигляді:
(9.46)
Далі
знайдемо лишки
від ділення Х на
,
у результаті для кожного
отримаємо:
, (9.47)
причому
.
Необхідно
знайти коефіцієнти
для всіх i.
Оскільки лишки подано за модулем
,
то
. (9.48)
Запишемо далі (9.45) у вигляді
.
(9.49)
та
піднесемо ліву і праву частини (9.49) до
степеня
.
У результаті отримаємо:
.
(9.50)
Обчислимо
значення
,
підставивши в нього (9.48), у результаті
маємо:
.
(9.51)
Якщо перемножити на вираз у дужках, отримаємо:
.
(9.52)
У
цьому можна переконатися, оскільки всі
члени, окрім
,
діляться на Р-1, тому
вони даватимуть лишок, який дорівнює
0. З урахуванням (9.52) вираз (9.50) має вигляд:
.
(9.52)
Тепер
піднесемо ліву та праву частини (9.49) до
степеня
,
у результаті отримаємо:
.
(9.53)
Підставивши у (9.53) вираз (9.48), отримаємо:
.
(9.54)
Оскільки на (Р-1) тепер не ділитимуться два члени
та
,
тому вони не дорівнюють нулю.
Аналогічно
можна перетворити (9.49) для всіх
і для усіх степенів. У результаті для
конкретного
модуля степеня отримаємо
порівнянь:
(9.55)
Використовуючи
(9.55), можна знайти всі лишки вигляду
(9.46), для цього достатньо знайти коефіцієнти
.
Їх ми знаходимо, використовуючи (9.55).
Спочатку, перебираючи значення
,
знаходимо
і так далі для всіх степенів, до
включно.
Таким чином, для фіксованого система (9.55) дозволяє визначити коефіцієнти і, як наслідок, лишок (9.47). Для знаходження другого лишку необхідно взяти наступне значення .
Таким чином, ми одержуємо лишки:
(9.56)
Використовуючи китайську теорему про лишки, отримаємо [422, 13]:
,
(9.57)
де
Зворотний
елемент
знаходимо із порівняння
.
Таким чином, (9.57) дає розв’язок дискретного логарифмічного порівняння вигляду (9.45) або (9.34).
Приклад 9.5 дискретного логарифмування в скінченному полі Галуа
Розв’язати
дискретне логарифмічне рівняння вигляду
Використовуючи
метод Поліга-Геллмана, що викладений
вище маємо.
Спочатку
розкладаємо число
Отже
Оскільки
максимальні значення степеня
лишку
і
,
то згідно з (9.46)
та
лишки
матимуть тільки два члени. Тому шукатимемо
та
лишки за модулями
та
відповідно:
Тепер
нам потрібно знайти
та
Для цього використаємо порівняння
(9.55), у результаті отримаємо:
або
.
Обчисливши ліву частину, маємо:
.
Далі,
враховуючи, що коефіцієнти
та
обчислюються за модулем 2, маємо, що
або
Підставивши ці значення, отримаємо, що
Для знаходження
використовуємо порівняння (9.55), у
результаті отримаємо:
.
Після обчислень маємо:
та
.
Отже,
Таким
чином,
Далі
за аналогією знайдемо
,
для цього знайдемо
та
.
Як і для
,
маємо:
або
Підставимо у перше порівняння послідовно
(оскільки
).
За
аналогією, як і для
та
,
маємо:
,
тому
Тепер, знаючи лишки та , можна знайти Х, використовуючи формулу (9.57):
Таким
чином,
.
