Файл: Теорія чисел в криптографії.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.06.2024

Просмотров: 42

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Підставимо значення t

 

у вираз для x :

 

= c + m(c c )(m)

+ m

 

t =

x = c + mdt = c + md

c2

c1

(m)

+ mt

 

m2

 

 

 

 

 

 

 

−1

 

 

 

−1

 

 

1

 

1

1

1

 

 

 

 

 

d

 

 

 

1

 

2 2

 

1 1 2 1 1

1

d

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= c + m(m)−1

(c

2

c ) +

m1m2

t

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

1

 

1

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Позначимо c + m(m)−1

(c

2

c ) = x ,

m1m2

= M .

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

1

 

 

 

 

 

 

 

1

1

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тоді розв’язок системи буде мати вигляд:

x x1 (mod M )

Висновки.

 

x c1

(mod m1 )

 

1.Система з двох рівнянь виду

x c2

(mod m2 ) в разі (m1 , m2 ) = d > 1

буде мати

розв’язок тільки за умови, що d | c2 c1 . В іншому разі система не сумісна. Якщо умова виконана і розв’язок є, він буде знайдений за модулем, який дорівнює НСК m1 та m2

2. Якщо система складається з k > 2 конгруенцій з модулями, що мають НСД>1, то перевірку необхідно проводити поступово. В разі, коли хоча б одна з отриманих конгруенцій в ході розв’язку немає розв’язку, то і вся система не сумісна. Якщо розв’язок є, то це буде конгруенція по НСК усіх модулів.

Питання 5 Конгруенції n-го степеня за простим модулем. Кількість коренів конгруенції n -го степеня за простим модулем

Розглянемо загальні теореми, які стосуються конгруенцій n-го степеня за простим модулем p . Припустимо, що задано конгруенцію

f (x) ≡ 0(mod p),

f (x) = a

xn + a xn−1

+ ... + a

n−1

x + a

n

,

(1)

 

 

 

0

1

 

 

 

 

 

 

 

де p - просте число і a0

не ділиться на p .

 

 

 

 

 

 

Теорема 1. Конгруенцію (1) завжди можна замінити на еквівалентну їй

 

f (x) ≡ 0(mod p), f (x) = xn + b xn−1 + ... + b

x + b

 

 

 

 

 

 

1

 

 

n−1

 

 

n

 

 

Справді,

через те що p

просте і a0

не ділиться на

p завжди існує єдине число,

обернене до a0 : a0 a0

−1 ≡ 1(mod p),

a0

−1 a0 p−2 (mod p) . Помноживши конгруенцію (1) на a0

−1 ,

отримаємо еквівалентну конгруенцію із старшим коефіцієнтом b0 ≡ 1(mod p)

Теорема 2. Якщо степінь конгруенції (1) не менший від модуля конгруенції, то вона еквівалентна деякій конгруенції степеня, не вище за p − 1 (за тим самим модулем). Тобто,

якщо у (1)

n ³ p , то

 

 

 

 

 

 

 

 

 

≡ 0(mod p)

a xn + a xn−1

+ ... + a

n−1

x + a

n

b x p−1

+ b x p− 2

+ ... + b

p− 2

x + b

p−1

0

1

 

 

0

1

 

 

 

Доведення.

 

 

 

 

 

 

 

 

 

 

Поділимо

f (x) на x p x . Частку від ділення позначимо черезQ(x) , залишок – через

R(x). Тоді на підставі алгоритму ділення з остачею дістанемо:

f (x) = (x p x)Q(x) + R(x)

 

 

 

де Q(x)

поліном, степеня n p ,

R(x) – поліном степеня,

не

більшого за p − 1 .

Коефіцієнти

Q(x) , R(x) – цілі числа.

За теоремою Ферма якщо

p

– просте число, то

x p x ≡ 0(mod p) для будь-якого цілого х. Отже, отримаємо еквівалентну конгруенцію:

f (x) R(x)(mod p)

Висновок: Конгруенції f (x) ≡ 0(mod p) та R(x) ≡ 0(mod p) мають однакові корені.

44


Частинні випадки:

1.

(x p x)| f (x) . Тоді R(x) ≡ 0(mod p) - тотожна, 0 ≡ 0(mod p), тобто вірна для будь

якого x .

R(x) bp−1 (mod p) - поліном нульового степеня. Якщо bp−1 не ділиться на p , то дана

2.

конгруенція не має розв’язків, бо вона зводиться до невірної конгруенції : bp−1 ≡ 0(mod p). Приклад. Знайти конгруенцію степені не вище 4, еквівалентну даній:

f (x) = x17 + 2x11 + 3x8 − 4x7 + 2x − 3 ≡ 0(mod 5)

Розв’язання: Поділимо f (x) на x5 x . Для полегшення ділення використаємо наслідок з малої теореми Ферма ( a p−1 ≡ 1(mod p), (a, p) = 1 ).

Наслідок з теореми Ферма:

Якщо (a, p) = 1, n m(mod p − 1) an am (mod p).

Дійсно, нехай n > m, n = m + q(p − 1), За теоремою Ферма a p−1 ≡ 1(mod p). Піднесемо цю конгруенцію до степені q : a( p−1)q ≡ 1(mod p). Помножимо отриману конгруенцію і конгруенцію am am (mod p), дістанемо:

a( p−1)q+m am (mod p) , або an am (mod p)

За допомогою цього слідства можна зменшити степені вихідного полінома, взявши замість даних степенів їх залишки за модулем 4:

17 ≡ 1(mod 4); 11 ≡ 3(mod 4); 8 ≡ 0(mod 4); 7 ≡ 3(mod 4)

Отримаємо:

R(x) = x1 + 2x3 + 3x0 − 4x3 + 2x − 3 ≡ 0(mod 5) , або − 2x3 + 3x ≡ 0 mod(5),

або, замінивши лишок -2 на лишок 3(mod5), отримаємо: 3x3 + 3x ≡ 0 mod(5), і остаточно:

x3 + x ≡ 0 mod(5)

Очевидні розв'язки останньої конгруенції x1 ≡ 2(mod 5), x2 ≡ 3(mod 5)

будуть також і

розв'язками вихідної конгруенції.

 

 

 

 

 

 

 

 

Теорема 3. Якщо α1

деякий розв'язок конгруенції n го степеня

f (x) ≡ 0(mod p),

то має місце тотожна конгруенція:

 

 

 

 

 

 

 

 

f (x) (x − α1 ) f1 (x)(mod p)

 

 

 

 

 

 

 

(2)

де f1 (x) — поліном

n − 1 -го

степеня. Старший коефіцієнт

полінома f1 (x) збігається з

старшим коефіцієнтом вихідного полінома

f (x) .

 

 

 

 

 

Доведення.

на x − α1

 

 

 

 

 

 

 

 

 

Поділимо f (x)

і частку позначимо через

f1 (x), остачу –

через R(x):

(x − α1 ) f1 (x) + R(x) ≡ 0(mod p).

 

 

 

 

 

 

 

 

За теоремою Безу R(x) = f (α1 ), але оскільки α1

розв'язок конгруенції, то

f (α1 ) ≡ 0(mod p) , отже справедливою буде конгруенція:

 

 

 

(x − α1 ) f1 (x) ≡ 0(mod p).

 

f (x) ділиться на

x − α1 за модулем

 

 

За таких умов кажуть,

що

p . Очевидно, що й

навпаки: якщо

f (x)

ділиться на

x − α1

з

нульовим

залишком за

модулем p (тобто

R(x) ≡ 0 mod(p) ),

то,

використовуючи

теорему

Безу,

можна

стверджувати, що

f (α1 ) = R(x) ≡ 0(mod p), звідки витікає, що α1

розв'язок конгруенції.

 

 

45


Висновок.

Конгруенція (1)

має за корінь x = a1

тоді і тільки тоді,

 

коли x - a1

ділить f (x) за модулем p .

 

 

 

 

 

 

 

Зауважимо, що теорема 3 і висновок з неї справедливі і для складеного модуля m .

Теорема 4.

Якщо

a1 , a2 ,..., ak ; (k £ n)

є різні корені конгруенції (1),

то її можна

подати у вигляді:

 

 

 

 

 

 

 

 

 

f (x) = (x - a1 )(x - a2 )...(x - ak ) fk (x) º 0 mod(p)

 

 

 

(3)

де

fk (x) - такий поліном степеня не вище n k ,

що немає коренів за модулем p ,

старші коефіцієнти у f (x) та fk (x) співпадають.

 

 

 

 

Доведення.

f1 (x) з (2). Нехай a2 - деякий його корінь. Тоді f1 (x) можна подати за

Розглянемо

формулою (2):

 

 

 

 

 

 

 

 

 

f1 (x) º (x - a2 ) f2 (x)(mod p),

 

 

 

 

 

 

 

де

f2 (x) - поліном степеня не вищого за n − 2 .

 

 

 

 

Підставимо

f1 (x) у (2). Отримаємо

 

 

 

 

 

 

f (x) = (x - a1 )(x - a2 ) f2 (x) º 0 mod(p).

 

 

 

 

 

 

Якщо a2 = a1 , то корінь a1 - кратний.

 

 

 

 

 

У інший бік:

таке число, що (α 2

− α1 ) f1 (α 2 ) ≡ 0(mod p ).

 

 

Розглянемо a2 ¹ a1

 

 

Добуток двох або декількох чисел ділиться на просте число

p тоді і тільки тоді, коли на p

ділиться принаймні один з множників добутку. За умовою a1 та a2 не співпадають

a1 ¹ a2 (mod p).

 

 

 

 

 

 

 

 

 

Отже, (a2 - a1 ) не ділиться на p , і значить на p ділиться

f1 (x):

 

 

f1 (a2 ) º 0(mod p),

 

 

 

 

f1 (x) º 0(mod p) і для нього вірне подання

останнє означає, що a2

корінь конгруенції

(x - a2 ) f2 (x) º 0(mod p) .

 

 

 

 

 

 

 

Підставимо останній вираз до (2) (x - a1 )(x - a2 ) f2 (x) º 0(mod p)

 

 

Так поступово можна прийти до поліному fk (x), k £ n , який не має коренів за даним

модулем.

Якщо

конгруенція (1)

має

n

коренів,

то

fk (x) = f0 (x) = a0

-

старшому

коефіцієнтові конгруенції (1).

 

 

 

 

 

 

 

Висновок.

Якщо конгруенція (1)

n -го степеня за простим модулем

p (можна

вважати n p ) має n різних розв'язків a1 , a2 ,..., an то поліном

f (x) можна розкласти на n

лінійних множників типу (x - ai ), i =

 

та множник a0 :

 

1, n

 

f (x) = a0 (x - a1 )(x - a2 )...(x - an ) º 0(mod p)

(4)

Приклад.

Розкласти конгруенцію за даним модулем: x4 + x3 - x2 + x - 2 º 0(mod 5)

Розвязання.

По-перше, можна понизити степінь конгруенції, бо відносно степені конгруенції за наслідком теореми Ферма можна записати: 4 º 0(mod(5 -1)). Отже отримаємо еквівалентну конгруенцію:

x3 - x2 + x -1 º 0(mod 5)

46


Знайдемо корені еквівалентної конгруенції з повної системи абсолютно найменших лишків (- 2,-1,0,1,2). Підстановкою з’ясовуємо, що коренями конгруенції будуть x ≡ −2,1,2 .

Очевидно, що ці корені є коренями й вихідної конгруенції.

Застосуємо для розкладання вихідного поліному за модулем 5 схему Горнера:

 

1

1

-1

1

-2

-2

1

-1

1

-1

0

1

1

0

1

0

 

2

1

2

0

 

 

З останнього рядка отримаємо конгруенцію першого степеня x + 2 º 0(mod 5). Розв’язок її - x º -2(mod 5) , співпадає з першим коренем. Отже, маємо для вихідного полінома однократні корені x1 º 1(mod 5), x2 º 1(mod 5) і корінь кратності 2 x3,4 º -2(mod 5).

Вихідна конгруенція розкладеться так:

(x + 2)2 (x -1)(x - 2) º 0(mod 5)

Теорема 5. Конгруенція n -го степеня за простим модулем не може мати більше ніж n різних розв'язків.

Доведення.

Нехай β – деякий розв'язок, відмінний від a1 , a2 ,..., an , тобто

b ¹ ai (mod p), i = 1, n ;

Підставимо в (4) β замість x :

a0 (b - a1 )(b - a2 )...(b - an ) º 0(mod p)

(4*)

Оскільки модуль простий, значить хоча б один з множників повинен ділитися на модуль p . Лінійні множники не діляться на модуль за допущенням доведення. Старший коефіцієнт конгруенції теж не ділиться на модуль, бо інакше степінь конгруенції був би нижчим. Отже приходимо до висновку, що конгруенція (4*) не можлива. Отже β не може бути коренем і не співпадати хоча б з одним значенням з набору a1 , a2 ,..., an .

Слід зауважити, що по-перше, ця теорема не підтверджує, взагалі, наявності

розв'язків конгруенції n -го степеня за простим модулем

p і, по-друге, для складених

модулів вона несправедлива, наприклад, у конгруенції першого степеня

16x º 32(mod 48) НСД (a, m) = (16,48) = 16,

16 | 32, . Отже,

конгруенція має шістнадцять

розв'язків.

 

 

 

 

 

Висновок.

 

 

 

 

 

Конгруенція f (x) º 0(mod p), f (x) = a

xn + a xn−1 + ... + a

n−1

x + a

n

0

 

1

 

має більше ніж n розв'язків тоді і тільки тоді, коли вона тотожна, тобто коли всі її коефіцієнти діляться на p .

Дійсно, якщо коефіцієнти даної конгруенції діляться на p , то конгруенція виконується за будь-якого значення x , тобто вона тотожна, число її розв'язків (що дорівнює p ) буде більше ніж n .

Питання 6 Конгруенції n-го степеня за складеним модулем.

Розглянемо конгруенцію

f (x) º 0(mod m),

f (x) = a

xn

+ a xn−1

+ ... + a

n−1

x + a

,

(1)

 

0

 

1

 

 

 

n

 

 

Якщо в конгруенції (1)

 

 

 

 

 

 

 

 

 

m = m1m2 ×... × mk ,

(mi , m j ) = 1

"i ¹ j i, j =

 

,

 

 

 

1, k

 

 

 

47


то конгруенція рівносильна системі:

f (x) º 0(mod m1 );

f (x) º 0(mod m2 );

 

L

 

f (x) º 0(mod m );

 

k

Якщо позначити через Ti кількість розв’язків i ї конгруенції системи, то загальна кількість розв’язків вихідної конгруенції дорівнює:

T = T1 ×T2 ×... ×Tk

Справедливість цієї теореми витікає з властивостей конгруенцій. Зокрема, якщо конгруенція виконується за модулем m , то вона виконується і за будь яким дільником m .

Схему розв’язання конгруенцій n -го степеня за модулем, чкий є добутком простих чисел, розглянемо на прикладі.

Приклад.

Розв’язати конгруенцію: x4 + 2x3 + 8x + 9 º 0(mod 35)

Розвязання.

35 = 5 × 7 , отже дана конгруенція відповідає системі:

 

4

+ 2x

3

+ 8x + 9

º 0(mod 5)

x

 

 

x4

+ 2x3 + 8x + 9 º 0(mod 7)

Після спрощення система буде мати вигляд:

 

0

+ 2x

3

+ 3x -1 º 0(mod 5)

 

x

 

 

 

x4 + 2x3 + x + 2 º 0(mod 7)

 

Перша конгруенція:

2x2 + 3 º 0(mod 5); 2x2 - 2 º 0(mod 5);

x2 º 1(mod 5);

Розв’язки: x1 º1(mod 5); x2 º 4(mod 5)

 

Друга

конгруенція:

x4 + 2x3 + x + 2 º 0(mod 7). Шукаємо

розв’язки серед повної

системи абсолютно найменших лишків (- 3,-2,-1,0,1,2,3): 0, 1 – не розв’язки, x1 º -1(mod 7) – розв’язок. Інші розв’язки шукаємо за схемою Горнера. Знайдемо ще два -

x2 º -2(mod 7), x3 º 3(mod 7).

Отже маємо 2 розв’ язки у першій конгруенції і 3 розв’язки у другій. Загалом система, а отже і вихідна конгруенція має T = 2 × 3 = 6 розв’язків. Для того, щоб їх знайти необхідно розглянути 6 систем виду:

x º b1 (mod 5)

b1 Î (1,4)

x º b

(mod 7)

b Î (- 2,-1,3),

 

2

 

2

Але ми можемо розв’ язати дану систему у загальному вигляді і маючи її загальний розв’язок, підставити потрібні значення b1 , b2 :

x º b1 (mod 5) x = b1 + 5t

 

 

(*)

Підставимо x у друге рівняння системи:

 

b + 5t º b (mod 7) 5t º b

- b (mod 7);

5−1 º 3(mod 7) t º 3(b

- b )(mod 7).

1

2

2

1

2

1

Отже t = 3(b2 - b1 ) + 7t1

 

 

 

Підставимо t

до (*): x = b1 + 5(3(b2 - b1 )+ 7t1 ) = b1 +15b2 -15b1 + 35t2 = -14b1 +15b2 + 35t1 ,

або

x º 21b1 +15b2 (mod 35) - загальна формула розв’язку.

Залишилось тільки по черзі підставити у неї значення b1 = (1,4), b2 = (- 2,-1,3)

48