You are on page 1of 4

Математичні основи криптології

Лекція 5
Здобування кваратних коренів за простим модулем

Розглянемо рівняння:

х 2 = а mod p, де p>2 – просте число. ( 5.1)

Розв’язати рівняння (5.1) відносно х і означає здобути √ а mod p.


Рівняння (5.1) не має розв’язків, якщо а – квадратичний нелишок за
mod p, має єдиний розв’язок, якщо а = 0 mod p, і 2 розв’язки, якщо а –
квадратичний лишок за mod p.
Спочатку треба перевірити, чи є а квадратичним лишком за mod p.
Для цього використовуємо символ Лежандра. Якщо це так, то знаходимо
два розв’язки (5.1) за описаним нижче алгоритмом, який зручно розділити на
3 випадки.

1. Модуль p має вид:


p = 4k + 3, (5.2)
тобто при діленні на 4 дає у лишку 3.
Так як а – квадратичний лишок за mod p, то за твердженням 4.1

а(р-1)/2= 1 mod p.
Внаслідок (5.2) (р-1)/2= 2 k +1, отже

а2k+1= 1 mod p. (5.3)

Помножимо ліву і праву частини (5.3) на а:

а2k+2 = а mod p або


(аk+1)2 = а mod p. (5.4)
Порівнюючи (5.1) та (5.4), знаходимо розв’язки:

х = ± аk+1 mod p.
2. Модуль p має вид:
p = 8m + 5. (5.5)

Аналогічно випадку 1 маємо:

а(р-1)/2 = а4m+2 = 1 mod p. (5.6)

Але на цьому аналогія закінчується. Помноживши ліву і праву частини


попередньої рівності на а, ми не отримаємо зліва квадрат. Такий прийом
спрацює, якщо зліва а буде в непарному степені, а справа буде 1. Здобудемо
квадратний корінь з лівої частини (5.6), тобто обчислимо а2m+1. Це може
дорівнювати як 1, так і -1 за модулем p, адже це два можливі корені з 1, що
стоїть у правій частині (5.6). Якщо

а2m +1 = 1 mod p,
то знову-таки помножимо ліву і праву частини на а і отримаємо
а2m +2 = а mod p, звідки (а m +1)2 = а mod p і
х = ± а m +1 mod p.
Якщо ж
а2m +1 = - 1 mod p, (5.7)
то треба шукати квадратичний нелишок за mod p, який позначимо b. Тоді

b(р-1)/2 = b4m+2 = - 1 mod p. (5.8)

Перемноживши почленно рівність (5.7) і праву рівність у (5.8), маємо:

а 2m +1 b4m+2=1 mod p. (5.9)

Тепер множимо ліву і праву частину (5.9) на а та отримуємо

а 2m +2 b4m+2= (а m +1 b2m+1)2= а mod p,


звідки
х = ± а m +1 b2m+1 mod p. (5.10)

Зауваження. Неважко показати, використовуючи властивість 6


символу Лежандра, що при p виду 8m + 5 двійка є квадратичним нелишком
(читачу пропонується довести це самостійно). Отже, в цьому випадку
ров’язок можна записати у виді:
х = ± а m +1 22m+1 mod p.

3. Модуль p має вид:


p = 8m + 1. (5.11)

Ідея така сама, як і у попередніх випадках. Перевіряємо, чи є а


квадратичним лишком за mod p. Якщо це так, то

а(р-1)/2 = а4m = 1 mod p. (5.12)

Позначимо (р-1)/2 = 4т = 2sd, де d – непарне. Будемо здобуавати


квадратні корені за mod p з а4m, доки не отримаємо а в непарному степені,
тобто аd. При цьому на кожному кроці можемо отримати

a 2 d =1modp або a 2 d = –1modp, 0≤k<s.


k k

У першому випадку продовжуємо здобувати корінь, у другому –


перемножаємо конгруенцію на b(р-1)/2= -1 mod p, де b – квадратичний
нелишок за mod p (його достатньо знайти один раз, якщо з’явиться така
необхідність). Після останнього кроку отримаємо:
a d=1mod p, якщо жодного разу не з’явилась -1, звідки
a d+1 =a mod p , і, таким чином,
х = ± a (d+1)/2 mod p,
або a d b2 d=1 mod p , якщо хоча б на одному кроці з’явилась -1, звідки a d+1 b2 d
r r

=a mod p (де r≥1 – деяке ціле) і, таким чином,

х = ± a (d+1)/2 b 2 dmod p.
r −1

Зауважимо, що у b завжди буде у парному степені.


Приклад.
Розв’яжемо конгруенцію:

х2 = 5mod 41. (5.13)

Перевіряємо, чи є 5 кв. лишком за модулем 41:

( 415 )= (-1) (5-1)/2∙(41-1)/2


( 415 )=( 15 )=1. Так як 5 - кв. лишок, то
5(41-1)/2= 520 = 1 mod 41.
Обчислюємо
510= - 1 mod 41. (5.14)
Шукаємо квадратичний лишок за модулем 41:

( 412 )=(−1) (41¿¿ 2−1)/ 8=1¿


, отже, 2- кв. лишок mod 41.

( 413 ) ( 41 ) ( 2 )
= (-1)(3-1)/2∙(41-1)/2 3 = 3 = -1, отже, 3 - кв. нелишок mod 41,
а це означає ,що
320 = -1 mod 41. (5.15)

Перемножаємо (5.14) та (5.15):

510320 = 1 mod 41.

Здобуваємо квадратний корінь:

55 310 = -1 mod 41.


Знову множимо на (5.15):

55 330 = 1 mod 41.


Множимо ліву і праву частини на 5:
56 330 = 5 mod 41.
Порівнюючи з (5.13), знаходимо два корені:

х=± 53315 = ± 13 mod 41.

You might also like