You are on page 1of 159

ВСТУП

Даний посібник охоплює розділи абстрактної алгебри і теорії чисел,


які необхідні при вивчення класичних асиметричних криптосистем. Крім
того, у ньому викладено елементи теорії кілець і полів, що робить
можливим подальше вивчення теорії скінченних полів та її застосувань у
сучасних симетричних та асиметричних криптосистемах. Наведено багато
прикладів класичних асиметричних систем різних типів.
Посібник містить велику кількість задач, які підібрані у певній
послідовності з метою кращого засвоєння матеріалу. Багато з них
запропоновані авторами.
Структура матеріалу у посібнику наступна. Параграфи 1 – 4 містять
елементи абстрактної алгебри, а саме означення основних алгебраїчних
систем та їх властивості. Додатковий матеріал за темами цих параграфів
можна знайти у [1 – 4].
Параграфи 5, 6 знайомлять читача з елементами теорії чисел,
приділяючи особливу увагу кільцям лишків та їх властивостям. Як
приклад застосування абстрактної теорії до практичних задач,
розглядається задача про розподіл таємниці. Більш детально ознайомитись
з даним матеріалом можна у книгах [3, 5]. У параграфах 7, 8 вводиться
поняття часової складності детермінованих та імовірнісних алгоритмів,
даються означення поліноміальних, експоненційних та субекспоненційних
алгоритмів, розглядаються приклади побудови оцінок часу роботи
алгоритмів та приклади поліноміальної звідності задач. Вважається, що
читач знайомий з поняттям алгоритму; в іншому випадку можна
звернутися до літератури [6, 7]. Параграфи 9, 10 присвячені означенню
квадратичності, алгоритмам тестування простоти, добування квадратного
кореня та знаходження генераторів мультиплікативної групи простого
поля.
У параграфі 11 вводиться поняття дискретного логарифму та
запропоновано один з методів його знаходження. Зацікавлений читач
може ознайомитись з багатьма іншими методами дискретного
логарифмування, а також з методами розв’язку задачі факторизації у [3].
Параграф 12 містить поняття односпрямованої функції та опис
багатьох асиметричних криптосистем, стійкість яких ґрунтується на
гіпотезі про існування односпрямованих функцій. Деякі інші
криптосистеми, а також основні атаки на них можна знайти в [3, 5, 8 – 10].
Посібник розрахований на студентів всіх спеціальностей, пов’язаних
із захистом інформації, а також на аспірантів за відповідними
спеціальностями.
§1. ОСНОВНІ ОЗНАЧЕННЯ ТА ВЛАСТИВОСТІ
АЛГЕБРАЇЧНИХ СИСТЕМ

1.1. Алгебраїчні системи з однією операцією.

На початку даного розділу ми введемо ряд означень, з якими будемо


працювати протягом даного курсу, а потім сформулюємо та доведемо їх
основні властивості.
Означення 1.1: нехай S – деяка множина. Бінарна операція,
визначена на множині S – це відображення ⊗: S×S→S, яке кожній парі
елементів (s1, s2)∈S×S ставить у відповідність єдиний елемент s = s1⊗s2∈S.
В такому випадку кажуть, що множина S замкнена відносно операції
"⊗". Також множину S називають носієм операції.

Означення 1.2: а лгебраїчна система (з однією операцією) – це


множина, на якій визначена операція. Аналогічно визначається
алгебраїчна система з довільною кількістю операцій.
Операція, визначена на множині S, називається:
- асоціативною, якщо ∀s1, s2, s3∈S: (s1⊗s2)⊗s3 = s1⊗(s2⊗s3);
- комутативною, якщо ∀s1, s2∈S: s1⊗s2 = s2⊗s1.

Означення 1.3: напівгрупою (S, ⊗) називається множина S із


асоціативною операцією ⊗. Якщо зрозуміло, про яку операцію йде мова,
то напівгрупу можна позначати просто S.

Означення 1.4: моноїдом (М, ⊗) називається множина М з операцією


⊗ такою, що
1) ⊗ – асоціативна операція,
2) ∃e∈М ∀m∈M: e⊗m = m⊗e = m.
Елемент е називають одиничним, або нейтральним елементом, або
просто одиницею.
Іншими словами, моноїд – це напівгрупа з одиницею.

Означення 1.5: групою (G, ⊗) називається множина G з означеною на


ній операцією ⊗ такою, що
1) ⊗ – асоціативна операція;
2) ∃e∈G ∀g∈G: e⊗g = g⊗e = g;

3) ∀g∈G ∃ g −1 ∈G: g −1 ⊗g = g⊗ g −1 = e.

Елемент g −1 називають елементом, оберненим до g. Таким чином,

групою є моноїд, в якому для кожного елемента існує обернений.


Операція ⊗ у групі називається груповою операцією.
Часто групову операцією називають множенням і замість а ⊗ b
використовують позначення а b , для спрощення позначень, якщо це не
викликає плутанини. Але при цьому слід розуміти, що елементи а , b , як і
добуток а b , не є, взагалі кажучи, числами, і добуток а b не є звичайним
числовим добутком.
Одиничний елемент групи часто позначають 1 або, якщо треба
підкреслити, що даний елемент належить саме групі G, то
використовують позначення 1G.
Група називається абелевою, якщо операція ⊗ комутативна.
У абелевій групі групову операцією часто називають додаванням і
замість а ⊗ b використовують позначення а + b , якщо це не викликає
плутанини. При цьому також слід пам’ятати, що вираз а + b не є, взагалі
кажучи, числом. Також у абелевій групі одиничний елемент часто
називають нульовим елементом, або нулем групи, і позначають 0; елемент,
обернений до елемента а , часто замість а - 1 (читається "а в мінус першому
степені") позначають – а (читається "мінус а") і називають протилежним
елементом до елемента а . Замість b + (– а) пишуть b – a.

Приклади 1.5.
1. Множина Sn підстановок довжини n утворює групу відносно
операції суперпозиції. Ця група має назву симетричної групи.
2. Множина дійсних чисел R утворює абелеву групу відносно операції
додавання +.
3. Множина R/{0} дійсних чисел без нуля утворює абелеву групу
відносно операції множення.
4. Множина N натуральних чисел утворює напівгрупу відносно
операції додавання +.
5. Множина N натуральних чисел утворює моноїд відносно операції
множення.
6. Множина цілих чисел Z утворює абелеву групу відносно операції
додавання.
7. Множина цілих чисел Z утворює моноїд відносно операції
множення.
8. Множина M n матриць розмірності n×n утворює абелеву групу

відносно операції додавання.


9. Множина M n матриць розмірності n×n утворює моноїд відносно

операції множення.
Твердження 1.6 (властивості елементів групи).
1. Одиничний елемент е у моноїді єдиний.
Доведення: нехай е' – також одиничний елемент. Тоді е = ее' = е'.
2. Нехай (G, ⋅) – група. Тоді ∀a, b∈G ∃!c∈G: a = b·с і ∃!d∈G: a = d·b.
Доведення: c = a·d–1; d = b–1·a.
3. Нехай (G, ⋅) – група. Тоді:
а) ∀a∈G ∃!а–1; б) ∀a∈G (а–1)–1 = а; в) ∀a, b∈G (а·b)–1 = b–1 ·a–1.
4. Нехай (S, ⊗) – група, G ⊂ S. Тоді (G, ⊗) – група тоді й тільки тоді,
якщо ∀a, b∈G: a·b–1∈G.
Пункти 3, 4 твердження 1.6 рекомендується довести самостійно.

Приклад 1.7: розглянемо важливий приклад групи – групу лишків за


модулем n.
Для будь-яких a∈Z, n∈N позначимо a mod n лишок від
(цілочисельного) ділення а на n: 0 ≤ a mod n ≤ n , a = kn + a mod n для
деякого k∈Z, де k називається часткою від ділення а на n. Також
позначимо Zn = {0, 1, ..., n – 1}. Множина Zn з операцією ⊕ (іноді просто
+), де a⊕b = (a + b) mod n, називається групою лишків за модулем n.
Доведемо, що множина Zn є групою відносно операції ⊕.
Очевидно, що множина Zn замкнена відносно заданої операції. Далі,
операція ⊕ – асоціативна, оскільки

(a ⊕ b) ⊕ c = (a + b + c) mod n = a ⊕ (b ⊕ c).

Нейтральним елементом відносно заданої операції буде елемент е = 0;


до кожного елемента а ∈ Zn існує протилежний елемент – а = n – a.
Доведення закінчено.
Розглянемо відображення Z → Zn, визначене наступним чином:

a∈Z → a mod n∈Zn. (1.1)

Таке відображення розбиває множину Z на класи, що не


перетинаються:

Z = [0] ∪ [1] ∪ [2] ∪ [3] ∪ … ∪ [n – 1], (1.2)

де клас [і] складається з усіх прообразів елемента і при вказаному


відображенні, тобто всіх таких цілих чисел, які дають залишок і при
діленні на n.

Означення 1.8: нехай a, b∈Z, n∈N. Будемо записувати a ≡ b mod n і


говорити, що "a конгруентно b за модулем n", якщо образи a, b при
відображенні (1.1) належать одному класу з розбиття (1.2).
Легко помітити, що наступні три твердження є еквівалентними:
1) a ≡ b mod n; 2) a – b = kn для деякого k∈Z; 3) a mod n = b mod n.
Вираз a ≡ b(mod n) називається конгруенцією, або порівнянням.

Означення 1.9: група G називається скінченною (нескінченною), якщо


вона складається із скінченної (нескінченної) кількості елементів.
Порядком скінченної групи G називається число елементів групи; порядок
групи позначається |G|. Порядок нескінченної групи вважається рівним
нескінченності.

Скінченні групи можна задавати у вигляді таблиці групової операції,


або таблиці Келі.

Приклад 1.10: таблиця Келі для Z5 = {0, 1, 2, 3, 4} відносно операції


додавання за модулем 5.

⊕ 0 1 2 3 4
0 0 1 2 3 4
1 1 2 3 4 0
2 2 3 4 0 1
3 3 4 0 1 2
4 4 0 1 2 3

Таблиця Келі для групи є симетричною відносно головної діагоналі


тоді і тільки тоді, коли група є абелевою.
Таблиця Келі для групи порядку п утворює так званий латинський
квадрат розмірності п×п, тобто таку квадратну таблицю, у якій кожен з п
елементів зустрічається рівно один раз у кожному стовпчику і у кожному
рядку.

1.2. Підгрупи, класи суміжності. Теорема Лагранжа.

Означення 1.11: підгрупою Н групи G називається така її підмножина


Н, що теж є групою відносно тієї ж самої групової операції, що визначена
у групі G.
Кожна група G має дві тривіальні підгрупи: {е} і G. Всі інші підгрупи
(якщо вони існують) називаються власними.

Приклади 1.12.
1. (Z, +) є підгрупою групи (R, +).
2. Нехай G – група, а∈G. Розглянемо множину <a> = {ak, k∈Z}, де
ak = a
⋅ a
⋅ ...
⋅ a , а–k =(a–1) k, a0 = e. Очевидно, що <a> – підгрупа групи G.
k разів

Таку підгрупу називають підгрупою, породженою елементом а.

Означення 1.14: нехай G – група, а∈G. Якщо існує таке n∈N, що


a = e, то число ord a = min{n∈N: an = e} називається порядком елемента а
n

(у групі G). У противному випадку (якщо не існує такого n∈N, що an = e)


кажуть, що а – елемент нескінченного порядку: ord a = ∞.
Зрозуміло, що при |G| < ∞ для будь-якого елементу a∈G виконується:
ord a < ∞ . Дійсно, за означенням операції, ∀ k ≥ 1: ak∈G, тому кількість
різних степенів елемента а скінченна. Відповідно, для деяких l, m∈N
(l > m): al = am, тобто al – m = e.
Також очевидно, що ord a ≤ |G|, і якщо ord a = n, то an – 1 = a–1.
В абелевій групі замість an пишуть na.
В нескінченній групі можуть існувати елементи скінченного порядку.
Наприклад, порядок нейтрального елемента будь-якої групи дорівнює 1.

Приклади 1.15.
1) Нехай G = Z5 (групова операція – додавання за модулем 5); a = 3.
Тоді ord a = 5. Дійсно, ord а ≠ 1, так як а ≠ 0; далі, a +a=1, a+ a+ a=4, a+ a+
a+ a=2, a+ a+ a+ a+ a=0, отже, ord a = 5.
2) У групі (Z, +) будь-який елемент а ≠ 0 є елементом нескінченного
порядку.

Означення 1.16: група G називається циклічною групою, якщо


∃g ∈ G ∀a ∈ G ∃k ∈ Z : a = g k .

Тоді елемент g називають твірним (породжуючим, утворюючим)


елементом групи G, або її генератором, а групу G – циклічною групою,
породженою елементом g.
Іншими словами, група G називається циклічною, якщо існує такий
елемент g∈G, що G = <g>.
Якщо g – твірний елемент групи G, то зрозуміло, що ord g=|G| (в тому
числі для нескінченної групи).

Зауваження 1.17: в наших позначеннях, a ≡ b mod n ⇔ a – b∈<n>, де


<n> – підгрупа групи (Z, +), породжена елементом n, тобто <n> = {kn,
k∈Z}.
Приклад 1.18. Група (Z, +) – нескінченна циклічна група, яка має два
твірні елементи: +1 та –1. Для будь-якого n∈Z підгрупа <n> групи Z
також є циклічною з твірними елементами n та –n.
Будь-яка нескінченна циклічна група з твірним елементом а взаємно-
однозначно відображається на (Z, +) відображенням ak → k, де a∈G, k∈Z.

Нехай далі Н – підгрупа групи G; g1, g2∈G.


Означення 1.19 (узагальнення порівняння): будемо говорити, що
g1 ≡ g2 mod H ("елемент g1 конгруентний елементу g2 за модулем підгрупи
H "), якщо g1–1·g2∈H.
Останній вираз рівносильний кожному з виразів g2–1·g1∈H та
∃h∈H:g2 = g1–1·h.
Вирази g2–1·g1 та g1–1·g2 називають лівими різницями елементів g1 та g2;
вирази g2·g1–1 та g1·g2–1, відповідно, правими різницями. Легко довести, що
g2–1·g1∈H тоді і тільки тоді, коли g1–1·g2∈H; аналогічне твердження
виконується і для правих різниць.

Теорема 1.20: відношення g1 ≡ g2 mod H є відношенням


еквівалентності.
Доведення:
1) рефлексивність: g1 = g1е, е∈H;
2) симетричність: g1 ≡ g2 mod H ⇒ g1 = g2h, h∈H ⇒ g2 = h–1g1,
h–1∈H ⇒ g2 ≡ g1 mod H;
3) транзитивність: g1 ≡ g2 mod H, g2 ≡ g3 mod H ⇒ g 1 = g 2h 1,
g2 = g3h2 ⇒ g1 = g3h2h1, h2h1∈H ⇒ g1 ≡ g3 mod H. Теорему доведено.

Означення 1.21: лівим класом суміжності (або суміжним класом),


що містить елемент a∈G групи G за підгрупою Н називається множина
aH = {ahi, hi∈H}. Елемент a∈G називається представником класу
суміжності aH.
Аналогічно визначається правий клас суміжності.
Клас суміжності за підгрупою Н, який містить елемент a ∈ G ,
позначають [a] . Зрозуміло, що один і той же клас суміжності за
підгрупою Н можна і отримати, і позначити різними способами.

Теорема 1.22 (властивості класів суміжності): нехай Н – підгрупа


групи G. Тоді справедливі наступні твердження.
1. Клас суміжності aH складається рівно з |H| елементів, тобто
кількість елементів кожного класу суміжності за групою Н однакова і
∀a ∈ G : |aH|= |H|. (Для нескінченого класу суміжності ми говоримо, що
множини H і aH рівнопотужні).

2. ∀a, b ∈ G : aH = bH ⇔ b −1a ∈ H , тобто два класи суміжності за


підгрупою співпадають тоді й тільки тоді, коли ліва різниця їх
представників належить цій підгрупі.
3. ∀a, b ∈ G : або aH = bH , або aH  bH = ∅ , тобто два класи

суміжності за підгрупою або співпадають, або не перетинаються.


Доведення. 1. Достатньо довести, що відображення H→ аH, задане за
правилом H∍h→ аh∈аH, є взаємно-однозначним. Воно є сюр’єктивним за
побудовою. Доведемо ін’єктивність (від супротивного). Нехай для деяких
елементів h1 ≠ h2 підгрупи Н виконується ah1 = ah2. Домножимо рівність
зліва на а–1 і отримаємо h1 = h2, що призводить до суперечності. Першу
властивість доведено.
2. Нехай aH = bH . Тоді ∀h1 ∈ H ∃h2 ∈ H : ah1 = bh2 , звідки

b−1a = h2h1−1 ∈ H .

Нехай тепер b −1a = hʹ′ ∈ H . Тоді a = bhʹ′ і ∀ah ∈ aH : ah = bhʹ′h ∈ bH ,


так як hʹ′h ∈ H , тобто aH ⊂ bH . Аналогічно доводиться, що bH ⊂ aH ,
звідки aH = bH . Другу властивість доведено.
3. Нехай aH  bH ≠ ∅ . Тоді ∃u ∈ aH  bH , тобто ∃h1, h2 ∈ H :

u = ah1 = bh2 . Але тоді b−1a = h1−1h2 ∈ H , за властивістю 2, aH = bH .


Третю властивість доведено.

Наслідок 1.23: або b–1a∈H; або aH  bH = ∅ .

Наведемо ще одну властивість класів суміжності.


Твердження 1.24: нехай Н – підгрупа групи G. Тоді для будь-яких
m1,m2∈G справедливо твердження: m1, m2∈aH для деякого a∈G (тобто
обидва елементи належать одному класу суміжності за підгрупою Н) тоді і
тільки тоді, к о л и m2–1m1∈H.
Доведення: нехай m1, m2∈aH для деякого a∈G. Це означає, що
m1 = ah1, m2 = ah2 для деяких h1, h2∈H. Тоді m2–1m1 = h2–1a–1ah1 = h2–1h1∈Н,
за теоремою 2 (властивістю 2).
Нехай m2–1m1∈H. Тоді m1 = m2h для деякого h∈H. Нехай m2∈аH, тобто
m2 = ah1 для деякого h1∈H. Тоді m1 = ah1h∈аH, оскільки h1h∈H, внаслідок
замкненості підгрупи Н відносно операції. Твердження доведено.

Означення 1.25: якщо Н – підгрупа групи G і кількість (різних) лівих


суміжних класів групи G за підгрупою H скінченна, то індексом підгрупи
H у групі G називається кількість різних суміжних класів групи G за
підгрупою H. Індекс підгрупи H у групі G позначається (G: H). Якщо
кількість (різних) лівих суміжних класів G по H нескінченна, то
(G: H) = ∞.
Якщо G – скінченна, то індекс групи G за будь-якою підгрупою теж
скінченний. В противному випадку індекс групи може бути і скінченною, і
нескінченною величиною. Наприклад: (Z: <n>) = n, оскільки різні суміжні
класи Z по <п> – це класи <n> + 0, <n> + 1, …, <n> + (n – 1); при цьому
|Z| = ∞ , |<n>| = ∞ .

Теорема 1.26 (теорема Лагранжа): нехай G – скінченна група. Тоді

|G| = (G: H)·|H|. (1.3)

Доведення: нехай (G: H) = k. З теореми 1.22 (властивість 3) випливає,


що групу G можна подати у вигляді об’єднання різних лівих класів
k
суміжності за підгрупою Н: G =  ai H для деяких ai ∈ G , i = 1, k ,
i =1

причому ai H  a j H = ∅. Кожен з класів суміжності (властивість 1)

містить |H| елементів. Отже, |G| = k·|H|, і теорему доведено.

Наслідок 1.27: порядок будь-якої підгрупи Н групи G ділить порядок


групи G.
Доведення випливає безпосередньо з формули (1.3).

Наслідок 1.28: порядок елемента скінченої групи ділить порядок


групи.
Доведення: нехай a ∈ G , orda = l . Розглянемо підгрупу H = a .

Легко довести, що H = orda , і за наслідком 1 G  H , отже, G l .


ЗАДАЧІ ДО §1.

1. Довести пункти 3, 4 твердження 1.6 §1.

2. Довести асоціативність множення в (Zn, ⊗), де під операцією ⊗


розуміється множення за модулем п. Чи буде дана алгебраїчна система
групою?
3. Нехай (Н, ⊗) – деякий моноїд. Елемент h∈Н будемо називати
оборотним, якщо ∃hʹ′ ∈ H : hhʹ′ = hʹ′h = e (тобто якщо у моноїді Н існує
елемент, обернений до h).
Довести, що множина всіх оборотних елементів моноїда Н утворює
групу відносно заданої на ньому операції.
Зокрема, множина оборотних елементів в моноїді (Zn, ⊗), де ⊗ є
операцією множення за модулем п, утворює групу відносно цієї операції.
Ця група позначається Zn*.
4. Які з наведених нижче алгебраїчних систем (Zn\{0}, ⊗) є групами
відносно операції a⊗b = ab mod п? Чи будуть вони всі моноїдами?
Z4, Z5, Z6, Z7, Z9, Z11.
5. Побудувати таблиці Келі для Z5*, Z9*, Z11* та визначити порядки
всіх елементів у цих групах.
6. У групах із завдання № 4 знайти порядки всіх елементів.
7. Знайти твірні елементи у групах (Z13, ⊕) та (Z13*, ⊗), з операціями
додавання та множення за модулем п, відповідно.
8. Нехай G – група, a∈G, ord a = k. Довести: am = e ⇔ k⎪m.
9. Нехай (Z,+) – множина цілих чисел з операцією додавання,
k , n ∈ Z , <k> та <n> – циклічні підгрупи групи Z, породжені елементами k
та n, відповідно. Довести: <k> підгрупа <n> ⇔ n⎪k.
10. Навести приклад групи, в якій є елементи будь-яких порядків
(скінчених і нескінчених).
11. Сформулювати та довести аналог теорем 1.22 та 1.26 для правих
класів суміжності.
12. Нехай Н – підгрупа групи G. Чи вірні наступні твердження:
1) кількість лівих класів суміжності групи G за підгрупою Н
дорівнює кількості правих класів суміжності групи G за цією підгрупою;
2) aH = bH ⇔ Ha = Hb ?
Довести або навести контрприклади.
13. Довести, що таблиця Келі для групової операції утворює
латинський квадрат.
§2. ВЛАСТИВОСТІ ЦИКЛІЧНИХ ГРУП.
ВІДОБРАЖЕННЯ ГРУП

2.1. Властивості циклічних груп.

Для подальшого викладення нам потрібно наступне означення.


Означення 2.1: функція ϕ: N → N, де ϕ(п) дорівнює кількості
натуральних чисел від 1 до п, взаємно-простих з п, називається функцією
Ойлера.
Теорема 2.2 ( про властивості циклічних груп): нехай G – циклічна
група, Н – її підгрупа, а – твірний елемент групи G. Тоді справедливі
наступні твердження.
1. Кожна підгрупа циклічної групи також є циклічною.
2. Нехай G скінчена, | G | = m. Тоді:
m
2.1. ord(a k ) = ;
(k , m)
2.2. для будь-якого натурального числа d, що є дільником числа т,
група G містить:
2.2.1. єдину підгрупу індексу d;
2.2.2. єдину підгрупу порядку d;
2.2.3. рівно φ(d) елементів порядку d (де φ(·) – функція Ойлера):
m
це елементи виду аkr, де k = та (r, d) = 1; зокрема, існує рівно φ(m)
d
твірних елементів: це елементи виду аr, де (r, m) =1.
Доведення. 1. Нехай Н – підгрупа циклічної групи G, Н ≠ {e}. Якщо
Н ⊃ аk, то Н ⊃ а-k; отже, Н містить хоча б один елемент аk, де k > 0.
Нехай l = min{k > 0: аk∈H}. Необхідно довести, що аl – генератор Н.
Це рівносильне наступному: якщо ап∈Н для деякого натурального п, то
існує таке натуральне s, що ап = (аl)s. Тобто ап∈Н тоді й тільки тоді, коли
l|n. Доведення проводитимемо від супротивного. Нехай n = sl + r, 0 < r < l.
Тоді аr = ап (а-l)s, де вираз у правій частині рівності належить Н, внаслідок
замкненості підгрупи Н відносно множення. Отже, аr∈ Н, що суперечить
вибору l та означенню r.
2.1. За означенням, ord(аk) = min{n: аkn = e} = min {n: m|kn}.
m k m m
Позначимо (m, k) = d. Тоді ord(аk) = min{n: | n } = min{n: | n} =
d d d d
⎛ m k ⎞
(оскільки ⎜ , ⎟ = 1 ).
⎝ d d ⎠
Доведемо твердження з пункту 2.2. За теоремою Лагранжа,
|G| = (G: H)·H. Нехай m = kd. Тоді елемент аd породжує підгрупу індексу d,
m m
її порядок дорівнює = k, і за теоремою Лагранжа (G: H) = = d. Така
d k
підгрупа єдина, оскільки дві підгрупи циклічної групи одного порядку
m m
співпадають. Дійсно, нехай |<аk>| = |<аl>| ⇒ = ⇒ (m, k) = (m,
(m, k ) (m, l )
l) = d, де d|m, d|l, d|k. Але (d, m) = d і d|k, отже, |<аk>| ⊂ |<аd>|, і їх порядок
співпадає: |<аk>| = |<аd>|, тому <аk> = <аd>. Аналогічно доводиться
<аl> = <аd>; таким чином, отримаємо <аk> = <аl>. Твердження 2.2.1.
доведено.
Твердження 2.2.2. доводиться аналогічно.
m
Доведемо 2.2.3. Нехай m = dk та ord(ап) = d. Тоді = d лише за
(n, m)
умови (n, m) = k. Знайдемо кількість таких n (0 < n ≤ m), що (n, m) = k. Це
будуть всі такі числа, що мають вигляд rk, де r ≤ d і r взаємно просте з d
(кількість таких r якраз і дорівнює φ(d)). Дійсно, за цієї умови
(rk, m) = (rk, dk)= k(r, d)= k. Теорему доведено.

2.2. Відображення груп. Нормальні підгрупи. Терема про


ізоморфізм груп.

При порівнянні структур двох груп важливу роль відіграють такі


відображення, що зберігають групові операції.
Нехай (Н, ·), (G, ×) – групи.
Означення 2.3: відображення f: H → G називається:
- гомоморфізмом, якщо для будь-яких h1,h2 ∈H: f(h1·h2) = f(h1)×f(h2);
- ендоморфізмом, якщо f – гомоморфізм і H = G;
- епіморфізмом, якщо f – гомоморфізм i сюр'єкція;
- ізоморфізмом, якщо f – гомоморфізм і бієкція;
- автоморфізмом, якщо f – ізоморфізм і H = G.
Будемо говорити, що група H ізоморфна групі G, і позначати H ≅ G ,
якщо існує відображення f:H → G, яке є ізоморфізмом. При цьому,
внаслідок бієктивності відображення f, існує обернене відображення f-1:
G → H; легко довести, що воно також є ізоморфізмом. Тому якщо H
ізоморфна групі G, то G ізоморфна групі H. В цьому випадку кажуть, що
групи G і H ізоморфні.
Поняття ізоморфізму та ізоморфних об’єктів є одним з центральних
понять у алгебрі. Групи, що є ізоморфними, мають однакові (з точністю до
позначень) таблиці Келі, і тому вважаються однаковими. Наприклад,
кажуть, що існує єдина (з точністю до ізоморфізму) група порядку 2; існує
єдина (з точністю до ізоморфізму) група порядку 3; існує єдина (з
точністю до ізоморфізму) нескінчена циклічна група – це група цілих
чисел з операцією додавання.
Приклад 2.4: розглянемо групи (Z, +), (Zп, ⊕) та відображення f:
Z→Zп; f (a) = a mod n. Тоді

f (a + b) = (a + b) mod n = (a mod n + b mod n) mod n = f (a) ⊕ f (b),

отже, задане відображення є гомоморфізмом. Воно також є епіморфізмом,


але не є ізоморфізмом.
Твердження 2.5: якщо f: H → G– гомоморфізм, то f (eH) = eG i
f (a ) = f (a)–1, де під eH та eG розуміємо одиничні елементи груп H і G,
–1

відповідно, під a–1 розуміємо елемент групи Н, обернений до елемента


a∈H, а під f (a)–1 розуміємо елемент групи G, обернений до елемента
f (a)∈G.
Твердження 2.6: автоморфізми групи G утворюють групу відносно
операції композиції.
Твердження 2.5, 2.6 рекомендується довести самостійно.

Означення 2.7: нехай f: G → H – гомоморфізм.


Ядром гомоморфізму f називається множина ker f = {g∈G: f(g) = eH}
(зрозуміло, що eG∈ker f).
Образом гомоморфізму f називається множина
Im f = {h∈H: ∃g∈G, f(g) = h}.
Приклад 2.8: розглянемо відображення f: Z → Zп, f(a) = a mod n. Тоді
ker f = {всі числа, кратні n} = <n>.

Означення 2.9: підгрупа H ⊂ G називається нормальною підгрупою


групи G (або нормальним дільником групи G; позначається H  G), якщо
∀h∈H ∀g∈G: ghg–1∈H (або, що рівносильно, g–1Hg ⊂ H).
Приклад 2.10: нормальною підгрупою є будь-яка підгрупа абелевої
групи; нормальною підгрупою є ядро гомоморфізму груп.
Теорема 2.11 (критерій нормальності): наступні умови рівносильні
1) H ⊂ G – нормальна підгрупа;
2) Н = g–1Hg, тобто Н інваріантна відносно всіх внутрішніх
автоморфізмів;
3) ∀a∈G: aH = Ha (лівий клас суміжності за підгрупою Н співпадає з
правим).
Доведення: доведемо, що з першого твердження випливає друге.
Якщо Н – нормальна підгрупа, то для будь-якого g ∈ G співвідношення

g–1Hg ⊂ Н справедливе за означенням. Покажемо, що Н ⊂ g–1Hg, тобто


∀h∈Н ∃g ∈ G ∃h1∈Н: h = g–1h1g. Оберемо довільні елементи h∈Н і g ∈ G

і покладемо h1 = ghg–1. Тоді h1∈H, за означенням нормальної підгрупи, і,


крім того, для нього виконується співвідношення h = g–1h1g. Тоді
h1 = ghg–1 і є шуканий елемент.
Доведемо, що з другого твердження випливає третє. Нехай H = g–1Hg.
Якщо всі елементи обох множин у лівій і правій частині рівності
домножити зліва на один і той же елемент g, то отримані множини також
будуть рівними, тобто отримаємо рівність gH = Hg.
Аналогічно доводиться, що з третього твердження випливає перше.
Теорему доведено.

Нехай і надалі Н підгрупа деякої групи G. На множині (лівих) класів


суміжності групи G за підгрупою Н задамо наступну операцію:
(аН)(bН) = (ab)H. (2.1)
Наступна терема є надзвичайно важливою при подальшому вивчені
алгебраїчних структур.
Теорема 2.12: якщо Н – нормальна підгрупа групи G, то множина
(лівих) класів суміжності утворює групу відносно операції (2.1).
Доведення: достатньо довести, що операція (2.1) задана коректно.
Виконання інших умов, таких як асоціативність заданої операції,
наявність одиничного елемента (eH – одиничний елемент) та оберненого
елемента відносно даної операції ((аН)–1=а–1Н)), а також замкненість
відносно неї множини класів суміжності перевіряється тривіально.
Під коректністю операції розуміється наступне. Оскільки один клас
суміжності можна отримати різними способами (за властивістю 2 класів
суміжності, теорема 1.22, a1Н = а2H ⇔ a2–1a1∈H), необхідно довести, що
операція (2.1) не залежить від того, як саме буде представлено клас
суміжності. Тобто нам необхідно довести наступне: якщо a1Н = а2H та
b1Н = b2H для деяких a1,а2,b1,b2 ∈G, то (a1Н)(b1Н)=(а2H)(b2H), тобто
a1b1Н=а2b2H.
Якщо виконують рівності a1Н = а2H та b1Н = b2H, тоді, за властивістю

2 класів суміжності (теорема 1.22), ∃h1, h2 ∈ H : a2−1a1 = h1, b2−1b1 = h2 . За

тією ж властивістю, для доведення рівності a1b1Н=а2b2H достатньо

довести, що (a2b2 )−1 (a1b1 )∈ H . Позначимо (a2b2 )−1 (a1b1 ) = h . Тоді

h = b2−1a2−1a1b1 = b2−1h1b1 = b2−1h1h2b2 , оскільки b1 = h2b2. Але h1h2 ∈ H


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

нормальності підгрупи Н, b2−1h1h2b2 ∈ H . Теорему доведено.

Зауважимо, що умова нормальності підгрупи Н є суттєвою при


доведенні даної теореми.

З теореми 2.12 випливає, що операцію над класами суміжності можна


виконувати наступним чином:
- вибрати представника ah1 класу аН;
- вибрати представника bh2 класу bН;
- визначити, в який клас суміжності потрапить елемент ah1bh2, і цей
клас суміжності назвати результатом операції (аН)(bН).
При цьому результат операції не залежатиме від вибору представників
класів суміжності, тобто незалежно від вибору h1 і h2 буде виконуватись
співвідношення ah1bh2∈abH. Дійсно, для доведення цього співвідношення
достатньо довести, що ∃h∈H: ah1bh2 = abh, тобто b–1h1bh2 = h. Але за
означенням нормальної підгрупи b–1h1b∈H, відповідно h=b–1h1bh2 ∈H.
Така інтерпретація операції над класами суміжності дає можливість
від операції над множинами (класами суміжності) перейти до операції над
їх елементами. З кожного класу суміжності групи G за підгрупою Н
обираємо по одному елементу; обрані елементи утворюють так звану
систему представників. Для будь-якого a ∈G представник класу

суміжності [a ] позначається a . Далі від операції над класами суміжності


ми переходимо до операції над їх представниками наступним чином: якщо

a ∈ [a ] та b ∈ [b] , то a b = c , де c – представник класу суміжності, що

містить елемент.
Означення 2.13: нехай Н – нормальна підгрупа G. Факторгрупою
групи G за підгрупою Н називається група, утворена (лівими) класами
суміжності, з операцією (2.1). Ця група позначається G/H.
Зауваження 2.14: порядок факторгрупи G/H дорівнює кількості
класів суміжності групи G за підгрупою Н (індексу (G: H) підгрупи H у
|G |
групі G). Якщо |G| < ∞ , то |G/H| = , за теоремою Лагранжа.
|H |
Покажемо, що з кожною нормальною підгрупою Н групи G
пов’язаний деякий гомоморфізм. Має місце наступна теорема.
Теорема 2.15 (про ізоморфізм груп).
1) Нехай ϕ: G → G1 – гомоморфізм груп. Тоді ker ϕ – нормальна
підгрупа в G і G / ker ϕ ≅ Im ϕ . ( Тобто факторгрупа за ядром

гомоморфізму ізоморфна образу цього гомоморфізму) .


2) Нехай Н нормальна підгрупа групи G. Тоді відображення
φ: G → G/H, де φ(g) = gH, є гомоморфізмом, і при цьому ker ϕ = H.
(Іншими словами, кожна нормальна підгрупа Н групи G задає деякий
гомоморфізм з групи G у її факторгрупу G/H).
Доведення. 1) Доведемо, що ker ϕ – нормальна підгрупа в G. Потрібно

довести, що для будь-яких g ∈ G, h ∈ ker ϕ : g −1hg ∈ ker ϕ , тобто

( )
ϕ g −1hg = eG1 . Дійсно, за означенням гомоморфізму та внаслідок того,

що ϕ (h) = eG , отримаємо:
1

( ) ( ) ( ) ( )
ϕ g −1hg = ϕ g −1 ϕ (h ) ϕ (g ) = ϕ g −1 eG1 ϕ (g )= ϕ g −1 eG1 ϕ (g ) =

= ϕ (g )−1 eG ϕ (g ) = ϕ (g )−1 ϕ (g ) = eG .
1 1

Доведемо ізоморфність G / ker f ≅ Im f . За означенням ізоморфних

груп, нам треба побудувати відображення φ : G / ker f → Im f , яке є

ізоморфізмом. Побудуємо це відображення наступним чином:


∀g ∈ G : φ(g ker ϕ) = ϕ( g ) ∈ Im ϕ .
Легко бачити, що дане відображення є гомоморфізмом. Також воно
буде сюр’єктивним, оскільки за означенням образу гомоморфізму
∀a ∈ Im ϕ ∃g ∈ G : ϕ(g ) = a , тоді φ(g ker ϕ) = a , тобто для будь-якого
a ∈ Im ϕ ∃g ∈ G : φ(g ker ϕ) = a .
Доведемо ін’єктивність даного відображення. Нехай для деяких
g1, g 2 ∈ G виконується рівність φ(g1 ker ϕ) = φ(g 2 ker ϕ). За означенням
відображення φ , це означає, що ϕ(g1 ) = ϕ(g 2 ). Але при цьому буде

( )
виконуватись ϕ g 2−1 g1 = eG1 , тобто g 2−1g ∈ ker ϕ , що означає рівність

прообразів g1 ker ϕ = g 2 ker ϕ , за властивістю 2 класів суміжності (теорема

1.22).
2) Нехай Н нормальна підгрупа групи G. Доведемо, що відображення
φ: G → G/H, де φ(g) = gH, є гомоморфізмом. Дійсно,
ϕ(g1g 2 ) = g1g 2 H = (g1H )(g 2 H ) = ϕ(g1 )ϕ(g 2 ), де перша рівність

виконується за означенням відображення ϕ, а друга за означенням


операції (2.1) на класах суміжності.
Доведемо, що ker ϕ = H. Нехай h ∈ H . Тоді φ(h) = hH=H=eH, де клас
суміжності eH і є нейтральним елементом групи G/H, що й означає h∈ ker
ϕ. І навпаки, якщо h∈ker ϕ, то ϕ(h) = hH = H = eH , і за властивістю 2

класів суміжності (теорема 1.22) e−1h = eh = h ∈ ker ϕ . Теорему доведено.

2.3. Внутрішні автоморфізми групи та спряжені елементи.

Означення 2.16: внутрішнім автоморфізмом групи G називається


відображення fа: G → G, побудоване за правилом: f(g) = aga–1, для деякого
a∈G. Автоморфізми групи, які не є внутрішніми, інколи називають
зовнішніми.
Кожен елемент групи a∈G задає деякий внутрішній автоморфізм цієї
групи, проте не обов’язково різні елементи задають різні автоморфізми.
Означення 2.17: нехай G – група, g∈G, S ⊂ G.
Елемент g називають спряженим з елементом h∈G, якщо існує такий

елемент a∈G, що h=aga–1. Очевидно, що при цьому g = a −1ha , тобто

елемент h також є спряженим з елементом g (тоді кажуть, що елементи h


та g спряжені).
Означення 2.18: клас спряжених з а елементів, або клас спряженості
групи G, який містить елемент а – це множина всіх елементів, спряжених
з a∈G.
Відношення спряженості у групі G є відношенням еквівалентності на
множині G (доведіть це самостійно), тому класи спряженості розбивають
G на множини, які або співпадають, або не перетинаються, як і класи
суміжності.

Множину P називають спряженою з множиною S, якщо існує такий


елемент a∈G, що P = aSa–1 (тобто P = {asa–1: s∈S}). У цьому випадку
множини S та Р називають спряженими.

2.4. Нормалізатор множини. Центр групи.

Нехай G – група, S ⊂ G.
Означення 2.19: нормалізатором множини S⊂G називається
множина

N(S) = {a∈G: aSa–1 = S}.

Приклад 2.20: нормалізатор нормальної підгрупи Н – це вся група G.


Теорема 2.21: 1) N(S) – підгрупа G;
2) ∀a ∈ G : aN(S) = bN(S) ⇔ aSa–1 = bSb–1, тобто два класи суміжності
за нормалізатором множини рівні тоді й лише тоді, коли рівні відповідні
спряжені множини, а різним класам суміжності за підгрупою N(S)
відповідають різні множини, спряжені з S (інакше кажучи, існує бієкція
між різними (лівими) суміжними класами аN(S) за підгрупою N(S) та
різними множинами aSa–1, спряженими з S).
Доведення: твердження 1) теореми доводиться безпосередньою
перевіркою. Доведемо твердження 2). Покажемо, що рівності
–1 –1
aN(S) = bN(S) та aSa = bSb рівносильні. Дійсно, домножаючи всі
елементи рівних множин (у другій рівності) на однаковий елемент, та
скориставшись властивістю 2 класів суміжності (т. 1.3), отримаємо
наступні рівносильні рівності:

aSa–1 = bSb–1 ⇔ S = a–1bSb–1a = (b–1a)–1S(b–1a) ⇔


⇔ b–1a∈N(S) ⇔ bN(S) = aN(S),

що й треба було довести.

Означення 2.22: центром групи G називається множина

C = {c∈G ∀a∈G: ca = ac }.

Інакше кажучи, центр групи – це множина всіх таких елементів даної


групи, які комутують з усіма її елементами.
Твердження 2.23: центр групи G є нормальною підгрупою.
Рекомендується довести дане твердження самостійно.
Теорема 2.24 (рівняння класів спряженості): нехай |G| < ∞ . Тоді
k
|G| = |C| + ∑ ni , (2.2)
i =1

де ni – потужності класів спряженості групи |G|, які містять не менше двох


елементів (ni ≥ 2), і ni є дільниками |G|.
Доведення: як було зазначено раніше, відношення спряженості є
відношенням еквівалентності, тому воно розбиває групу на класи
спряженості, що не перетинаються. Тому кількість елементів у групі
дорівнює сумі кількостей елементів у цих класах спряженості. Очевидно,
що клас спряженості деякого елемента а містить лише цей один елемент
тоді і тільки тоді, коли а∈С. , що доводить рівність (2.2) і той факт, що
ni ≥ 2. Покажемо, що ni є дільниками |G|. Нехай ni – кількість елементів,
спряжених з деяким елементом а∈ G; тоді, за теоремою 5, кількість
(різних) спряжених з а елементів дорівнює кількості (різних) лівих класів
суміжності за підгрупою N(а), тобто індексу підгрупи N(а) у групі G. За
теоремою Лагранжа (1.26), індекс підгрупи є дільником порядку групи G.
Теорему доведено.
ЗАДАЧІ ДО §2

1. Довести: якщо f: H→G – гомоморфізм груп, то f(eH) = eG, f(a–


1
) = f(a)–1.
2. Довести: якщо f: H→G – ізоморфізм груп, то обернене до f
відображення теж буде ізоморфізмом.
3. Довести: автоморфізми групи G утворюють групу відносно операції
композиції.
4. Довести: ядро гомоморфізму є нормальною підгрупою.
5. Довести: два елементи групи належать одному лівому класу
суміжності за підгрупою тоді і тільки тоді, коли їх ліва різниця (відносно
групової операції) належить даній підгрупі. Сформулювати та довести
аналогічне твердження для правих класів суміжності.
6. Довести: центр групи – нормальна підгрупа.
7. Нехай G – деяка група, a,b∈G. Довести: fa = fb ⇔ a–1b∈C, де С –
центр групи G, fa та fb – внутрішні автоморфізми.
8. Довести: число різних внутрішніх автоморфізмів скінченної групи

G
G дорівнює числу класів суміжності групи G за центром C, тобто .
C

9. Навести приклад автоморфізму групи, що не є внутрішнім.


10. Нехай p – просте число. Довести: ϕ (p) = p – 1; ϕ (ps) = ps(1 – p–1),
де ϕ – функція Ойлера.
11. Нехай m, n – різні прості. Довести:

ϕ (mn) = ϕ (m)ϕ (n) = (m – 1)(n – 1).


12. Знайти ϕ (1155).
13. Довести: якщо для деякої групи G виконується ⎪G⎪ = ps, де p –
просте число, то порядок центру групи G ділиться на p.
14. Довести малу теорему Ферма: для простого p виконано
p
a ≡ a (mod p).
15. Довести теорему Вільсона: для простого p виконано
(p – 1)! ≡ – 1 (mod p).
16. Довести: будь-яка циклічна група є абелевою.
17. Нехай G – скінчена група, Н – її підгрупа. Довести: кількість
елементів у кожному класі суміжності за підгрупою Н ділить порядок
групи G.
18. Нехай G – деяка група, a, b ∈ G. Довести: елементи a, b належать
одному класу спряженості тоді і тільки тоді, коли існує такий елемент
g∈G, що ga = bg.
19. Довести: відображення f: H→G є ізоморфізмом тоді і тільки тоді,
коли це відображення є епіморфізмом і його ядро складається з єдиного
елементу (цей елемент є одиничним елементом групи H). Чи може ядро
гомоморфізму бути порожньою множиною?
20. Довести: якщо відображення f: H→G є гомоморфізмом, то у
кожного елемента, що належить Im f, кількість прообразів однакова; вона
дорівнює кількості елементів ядра цього гомоморфізму.
21. Довести, що будь-яка нескінчена циклічна група ізоморфна групі
цілих чисел з операцією додавання.
22. Довести, що відношення спряженості елементів у групі є
відношенням еквівалентності.
23. Нехай f: H→G – гомоморфізм груп, a ∈ H , ord a = m . Довести:

ord f (a) ділить т. Зокрема, якщо f – ізоморфізм, то ord f (a) = ord a .


24. Нехай H – нормальна підгрупа групи G, a, b ∈ G, aH = bH .

Довести: для будь-якого c ∈ G виконується acH = bcH .


§3. АЛГЕБРАЇЧНІ СИСТЕМИ З ДВОМА ОПЕРАЦІЯМИ.
ІДЕАЛ КІЛЬЦЯ, ФАКТОРКІЛЬЦЕ ЗА ІДЕАЛОМ

3.1. Означення та основні властивості кілець.

Досить часто алгебраїчна система наділена одразу двома операціями,


які умовно називають "множенням" і "додаванням" та позначають
відповідним чином.
Приклади 3.1: (R, +, ·) – множина дійсних чисел з операціями
додавання і множення; (Z, +, ·) – множина цілих чисел з операціями
додавання і множення; (Мп, +, ·) – множина квадратних матриць з
операціями додавання і множення.
Нехай R – деяка множина.
Означення 3.2: Алгебраїчна система з двома операціями (R, +, ·), де
R ≥ 2 , називається кільцем, якщо виконуються наступні умови:
1) (R, +) – абелева група;
2) (R, ·) – напівгрупа;
3) виконуються закони дистрибутивності:

∀а, b, c ∈ R: a·(b + c) = a·b + a·c; (b + c)·a = b·c + c·a.

Операції + та · у кільці R називають операціями додавання та


множення, відповідно (хоча множина R , взагалі кажучи, не є числовою і
ці назви є досить умовними). Групу (R, +) називають адитивною групою
кільця. Нейтральний елемент у групі (R, +), називають нульовим
елементом або нулем. Якщо у кільці існує нейтральний елемент відносно
операції множення (тобто якщо (R, ·) є моноїдом), то такий елемент
називають одиничним елементом, або одиницею кільця.
Слід зазначити, що часто під кільцем розуміють алгебраїчну систему,
яка крім вимог у означенні 3.2 задовольняє ще одній вимозі, а саме
наявності нейтрального елементу відносно операції множення. Ми будемо
користуватись означенням 3.2 як більш загальним.

Твердження 3.3 (властивості елементів кільця): нехай (R, +) – кільце.


Тоді виконуються наступні рівності:
1) ∀а∈R: 0·а = а·0 = 0;
2) ∀а, b ∈R: (– а)·b = a·(–b) = – a·b.
Доведення. 1) За означенням нейтрального елемента, 0 + 0 = 0, тому
0·а = (0 + 0)·а = 0·а + 0·а; віднімемо 0·а від правої та лівої частин
рівності; отримаємо 0·а = 0. 2) Достатньо показати, що (–а)·b є оберненим
до a·b, тобто (–а)·b + а·b = 0. Дійсно, згідно закону дистрибутивності: (–
а)·b + а·b = ((–а) + а)·b = 0·b = 0.
Аналогічно доводиться (–b)·а + а·b = 0. Твердження доведено.

Приклади кілець 3.4: всі алгебраїчні структури, наведені у прикладі


3.1, є кільцями.

Означення 3.5: нехай R – деяке кільце. Елемент а ∈ R (а ≠ 0)


називається дільником нуля, якщо існує такий елемент b ∈ R (b ≠ 0), що
а·b = 0 (тоді а – лівий дільник нуля) або b·a = 0 (тоді а – правий дільник
нуля). Для комутативного кільця, очевидно, поняття лівого і правого
дільника нуля співпадають.

Означення 3.6 (типи кілець):


- кільце (R, +, ·) називається кільцем з одиницею, якщо (R, ·) –
моноїд;
- кільце (R, +, ·) називається комутативним, якщо операція
множення у цьому кільці є комутативною;
- кільце (R, +, ·) називається кільцем без дільників нуля, якщо
∀a, b ∈ R : ab = 0 ⇒ (a = 0 ∨ b = 0) ;
- кільце (R, +, ·) називається цілісним кільцем, якщо воно є
комутативним кільцем з одиницею та без дільників нуля;
- кільце (R, +, ·) називається полем, якщо (R/{0}, ·) є абелевою
групою.

Зауваження 3.7: нульовий та одиничний елементи кільця не є


рівними (див. твердження 3.3).

Приклади 3.8.
1. (R, +, ·) – множина дійсних чисел утворює поле відносно операцій
додавання та множення;
2. (Z, +, ·) – цілісне кільце;
3. (Zп, +, ·) – комутативне кільце з одиницею; воно містить дільники
нуля, якщо п – складене число;
4. множина парних чисел з операціями додавання та множення
утворює комутативне кільце без одиниці та без дільників нуля;
5. множина функцій R→R утворює комутативне кільце з одиницею, в
якому операції задані наступним чином:

(f + g)(x) = f(x) + g(х); (f ·g)(х) = f(x)·g(х);

6. (Мп, +, ·) – множина матриць розмірності п×п з операціями


додавання і множення матриць утворює некомутативне кільце з одиницею
та з дільниками нуля.

Наступні дві теореми демонструють зв’язок між поняттями поля і


цілісного кільця.
Теорема 3.9: нехай R – поле. Тоді R – цілісне кільце.
Доведення: достатньо довести, що в полі немає дільників нуля (тобто
таких елементів а, b∈R, a,b ≠ 0, що a·b = 0). Нехай а, b∈R, a,b ≠ 0 і при
цьому a·b = 0. Оскільки R – поле, то ∀а∈R (a ≠ 0) ∃a–1, тому, домноживши
обидві частини останньої рівності на a–1, отримаємо: a–1ab = еb = b = 0,
звідки b = 0, що призводить до суперечності. Теорему доведено.
Зауваження 3.10: обернене твердження в загальному випадку
невірне, але воно виконується у випадку скінченного кільця.
Теорема 3.11: нехай (R, +, ·) – скінченне цілісне кільце. Тоді (R, +, ·) –
поле.
Доведення: нехай R – цілісне скінченне кільце. Позначимо
Rʹ′ = R \ {0} = {a1, а2,…, aп} множину, що складається з n різних

(ненульових) елементів кільця R; зазначимо, що до цієї множини


належить, зокрема, нейтральний елемент е кільця R. Покажемо, що для
будь-якого елемента цієї множини існує обернений. Виберемо довільний
елемент aі ≠ 0 і покажемо, що ∃aі–1: aі–1 aі = е. Для цього розглянемо
множину aі Rʹ′ = {aіa1,…, aіап}. Оскільки дане кільце не містить дільників
нуля та замкнене відносно операції множення, то aі Rʹ′ ⊂ Rʹ′ . Покажемо, що
ai Rʹ′ = Rʹ′ . Для цього достатньо показати, що всі елементи множини ai Rʹ′
є різними. Дійсно, якщо для деяких k , l (1 ≤ k < l ≤ n) виконується
aіak = aіаl, то, внаслідок закону дистрибутивності, aі(ak – аl) = 0, отже ak –
аl = 0, внаслідок відсутності дільників нуля, тобто ak = аl, що призводить
до суперечності.
Оскільки R – скінченне, aі Rʹ′ ⊂ Rʹ′ та ai Rʹ′ = Rʹ′ , то aі Rʹ′ = Rʹ′ , а отже

∃aj∈R: aiaj = e . Внаслідок комутативності кільця, також виконується


ajai=е. Теорему доведено.

Означення 3.12: кількість елементів кільця називають порядком


кільця. В залежності від порядку, кільце називається скінченним або
нескінченним.
Зауваження 3.13: порядок скінченного кільця дорівнює порядку його
адитивної групи.
Означення 3.14: (S, +, ·) є підкільцем кільця (R, +, ·), якщо
виконуються наступні умови: S⊂R і (S, +, ·) – кільце, де операції
додавання і множення в S такі ж, як і в (R, +, ·).

3.2. Ідеал кільця. Факторкільце за ідеалом.

Означення 3.15: ідеалом (двостороннім ідеалом) кільця (R, +, ·)


називається множина I⊂R, така, що виконуються наступні умови:
1) (I, +, ·) – підкільце кільця R;
2) ∀a∈I, ∀r∈R: ar∈I, ra∈I.

Означення 3.16: найменшим ( мінімальним ) ідеалом кільця R, що


містить елемент а∈R, називається такий ідеал I кільця R, для якого
виконуються наступні умови:
1) а∈ I; 2) якщо L – також ідеал кільця R, який містить елемент а, то
I⊂L.
Приклади 3.17:
1) кільце цілих чисел Z є підкільцем поля раціональних чисел Q, але
не є його ідеалом;
2) нехай R – комутативне кільце, а∈R. Тоді найменший ідеал цього
кільця, який містить а, позначається (а) і визначається наступним чином:
(а) = {ra + ka: r∈R, k∈Z}, (3.1)
де вираз ka для додатного k означає k-кратне додавання елемента a, а для
від’ємного k означає, відповідно, додавання елемента (–a) (–k) разів.
Доведемо, що вираз (3.1) дійсно визначає найменший ідеал, що
містить елемент а∈R.
Доведення. Очевидно, що а∈(а) та що множина (3.1) є підкільцем
кільця R. Покажемо, що (а) – ідеал. Нехай b∈R, t∈(a). Покажемо, що
bt∈(a). Оскільки t = sa + пa, п∈Z то bt = bsa + bпa = (bs + bп)a ⇒ bt∈(a)
(при r = bs + bп і k = 0). Далі доведемо, що (а) – найменший ідеал, який
містить а. Тобто, якщо інший ідеал I містить а, то I⊃(a). Нехай I∍а.
Оскільки I – ідеал, то I∍ra, r∈R, I є також підкільцем, тому I∍na, n∈ Z і
I∍(ra + na) ⇒ I⊃(a).
Зауваження 3.18: якщо R – кільце з одиницею, то (а) = {ra, r∈R}.
Якщо R – кільце без одиниці, то множина {ra, r∈R} теж буде утворювати
ідеал, але, взагалі кажучи, він не буде містити елемент а.
Означення 3.19: ідеалом, породженим елементом а∈R, називається
мінімальний ідеал (а), який містить а.
Означення 3.20: нехай R – комутативне кільце. Ідеал I називається
головним ідеалом кільця R, якщо ∃a∈R: I = (a).
Означення 3.21: кільцем головних ідеалів називається цілісне кільце
R, в якому всі ідеали є головними, тобто для ∀I ⊂ R (де І – ідеал)
∃ a∈R: I = (a).
Нехай I – ідеал кільця R. За означенням, (R, +) – абелева група, тому
(I, +) є нормальною підгрупою (R, +). Отже, можна визначити операцію на
множині класів суміжності за нормально підгрупою (I, +) групи (R, +) та

побудувати факторгрупу R . Далі буде показано, що у даній факторгрупі


I

можна ввести також операцію множення, внаслідок чого R стане


I
факторкільцем.

Означення 3.22: класами лишків кільця R за ідеалом I є означені вище


класи суміжності (відносно додавання) за ідеалом I як за нормальною
підгрупою.
Клас лишків, що містить елемент а∈R і складається з елементів а + с,
с∈I, будемо позначати [a] = a + I. Як було доведено раніше, елементи
кільця а, b належать до одного класу лишків тоді і тільки тоді,
коли (a – b)∈I.
Означення 3.23: елементи кільця a, b∈R називаються конгруентними
за модулем ідеалу I, якщо (a – b)∈I. Конгруентність елементів
позначається a ≡ b (mod I).

Твердження 3.24: якщо a ≡ b mod I, r ≡ s mod I, то:


1) (a + r) ≡ (b + s) mod I;
2) ∀u∈R: au ≡ bu mod I. (au – bu = (a – b)u∈I);
3) ra ≡ sb mod I , (ar – sb = ar – br + br – bs = (a – b)r + b(r – s) ≡
≡ 0 mod I ;
4) na ≡ nb mod I.

На множині класів лишків кільця R за ідеалом I визначимо наступні


операції:
(a + I) + (b + I) = (a + b) + I; (3.2)
(a + I)(b + I) = ab + I. (3.3)

Теорема 3.25: множина класів лишків кільця R за ідеалом I з


операціями (3.2) та (3.3) утворює кільце.
Доведення є аналогічним до доведення теореми 2.11. Відмінність
полягає лише у тому, що у даному випадку додатково необхідно показати,
що операція множення на класах лишків визначена коректно. Для цього
необхідно довести наступне: якщо (a1 + I) = (b1 + I) та (a2 + I) = (b2 + I), то
(a1 + I) (a2 + I) = (b1 + I) (b2 + I), тобто
a1 a2 + I = b1 b2 + I.
За властивістю 2 класів суміжності, маємо: b1 − a1 = r1 ∈ I та

b2 − a2 = r2 ∈ I . Тоді b1b2 − a1a2 = b1(b2 − a2 ) + a2 (b1 − a1) ∈ I за

означенням ідеалу, отже, a1 a2 + I = b1 b2 + I. Теорема доведена.


Означення 3.26: факторкільцем кільця R за ідеалом I (позначається
R/I ) називається множина класів лишків кільця R за модулем ідеалу I з
операціями (3.2), (3.3).
Приклад 3.27: побудуємо факторкільце Z/(n). Нехай (n) – найменший
ідеал кільця цілих чисел, що містить елемент n: (n) = {0, ± n, ± 2n, …}; в
цьому випадку [a]: = a + (n). Тоді Z/(n) = {[0], [1], …, [n – 1]}, де [і] = і +
(п).
Теорема 3.28: факторкільце Z/(p) кільця Z по головному ідеалу,
породженому простим р, є полем.
Доведення: оскільки Z/(p) є скінченним кільцем, то за теоремою 3.1,
достатньо показати, що воно цілісне. Комутативність кільця очевидна.
Одиничним елементом кільця є [1]. Покажемо відсутність дільників нуля:
[a]·[b] = 0 ⇔ [ab] = 0 ⇔ ab ≡ 0 mod p ⇔ ab = kp для деякого k∈Z, тобто
p ділить ab. Але p – просте, отже, p|a або p|b, тобто [a] = [0] або [b] = [0].
Наслідок 3.29: (Zп, +, ·) – поле ⇔ п – просте число.
Приклад 3.30: Z/(3) = {[0], [1], [2]} з операціями додавання та
множення за модулем 3 є полем.
Зауваження 3.31: властивості вихідного кільця можуть не
переноситися на факторкільце. Наприклад, Z є цілісне кільце, кільце Z/(n),
де п не є простим, не є цілісним, а от Z/(p) є не тільки цілісним кільцем,
але й полем. Тобто факторизація кільця по ідеалу може як покращувати,
так і погіршувати властивості кільця.

3.3. Відображення кілець.

Означення 3.32: гомоморфізм ϕ кільця (R, +, ·) у кільце (S, +, ·) – це


відображення ϕ: R→S, при якому для операцій додавання і множення у
кільцях R та S виконуються наступні умови:

∀a, b∈R: ϕ(a+b) = ϕ(a)+ϕ(b); ϕ(ab) = ϕ(a)ϕ(b),

де у лівих частинах рівностей розуміються операції у кільці R, а у правих


– операції у кільці S.

Зокрема, таке відображення є гомоморфізмом абелевих груп кілець;


при цьому

ker ϕ = {a∈R: ϕ(a) = 0S}; Im ϕ = {g∈S | ∃a∈R: g = ϕ(a)}.


Аналогічно до відображень груп, визначаються епіморфізм,
ендоморфізм, ізоморфізм та автоморфізм кілець, а також поняття
ізморфних кілець.

Теорема 3.33 (про ізоморфізм кілець).


1. Якщо ϕ: R→S – гомоморфізм кілець, то ker ϕ – ідеал кільця R, і
R ker φ ≅ Im φ (факторкільце за ядром гомоморфізму ізоморфно образу
цього гомоморфізму). При цьому ізоморфізм ψ: R ker φ → Im φ

визначається наступним чином: ψ(r + ker ϕ) = ϕ(r).


2. Якщо I – ідеал кільця R, то відображення ϕ: R→R/I, побудоване за
правилом ϕ(a) = a + I, де a∈R – гомоморфізм, і при цьому ker ϕ = I,
Im ϕ = R/I.
Доведення тереми є аналогічним до доведення теореми 2.14.

Зауваження 3.34: бієктивні відображення можна використовувати


для введення алгебраїчної структури на деякій множині. Нехай,
наприклад, існує бієктивне відображення ϕ між кільцем S і деякою
множиною R: ϕ: S→R. Тоді на множині R ми можемо вести структуру
кільця наступним чином: для будь-яких r1 , r2 ∈ R , де ϕ(s1) = r1; ϕ(s2) = r2,

визначимо їх суму й добуток за правилом: r1 + r2 = ϕ(s1 + s2); r1r2 = ϕ(s1s2),


а також покладемо 0R = ϕ(0S), –r1 = –ϕ(s1). Тоді множина R з введеними на
ній операціями буде кільцем, причому це кільце буде ізоморфне кільцю S.
Приклад 3.5: нехай р – просте число. Згадаємо позначення
Zp = {0, 1, …, p – 1} та визначимо відображення ϕ: Z/(p) → Zp, де
ϕ(a + (p)) = a, а∈ {0, 1, …, p – 1}.
Оскільки Z/(p) – поле, то і Zp GF(p) буде мати структуру поля,
індуковану відображенням ϕ.
Поле Zp є частковим випадком так званого поля Галуа. Замість
позначення Zp також часто використовують позначення GF(p) та F p .
ЗАДАЧІ ДО §3

1. Нехай (R, +, *) – кільце, 0 та 1 – його нульовий та одиничний


елементи. Довести:
а) 0≠1; б) ∀ a∈ R: 0*a = a*0 = 0; в) ∀ a, b∈ R: (–a)*b = a*(–b) = –a*b,
(–a)*(–b) = a*b.
2. Довести: (R, +, *) – поле ⇒ (R, +, *) – цілісне кільце.
3. Навести приклади кілець з дільниками нуля та кілець без дільників
нуля.
4. Нехай (R, +, *) – кільце з одиницею е, І – його ідеал, е∈І. Довести,
що І = R.
5. Довести, що будь-яка циклічна група порядку п ізоморфна групі
лишків Z n з операцією додавання за модулем п.

6. Довести: якщо індекс деякої підгрупи дорівнює 2, то ця підгрупа є


нормальною.
⎛ 1 0 ⎞ ⎛1 0 ⎞
7. Нехай група G складається з матриць: e = ⎜⎜ ⎟⎟ , a1 = ⎜⎜ ⎟⎟ ,
⎝ 0 1 ⎠ ⎝1 1 ⎠
⎛ 0 1 ⎞ ⎛ 0 1⎞ ⎛1 1 ⎞ ⎛ 1 1⎞
a2 = ⎜⎜ ⎟⎟ , a3 = ⎜⎜ ⎟⎟ , a4 = ⎜⎜ ⎟⎟ , a5 = ⎜⎜ ⎟⎟ , а груповою операцією
⎝ 1 0 ⎠ ⎝ 1 1⎠ ⎝1 0 ⎠ ⎝ 0 1⎠
є множення матриць, причому всі дії з матричними елементами
виконуються за модулем 2. Виконайте наступні завдання.
7.1. Побудувати таблицю Келі для групи G.
7.2. Знайти порядки всіх її елементів, перевірити виконання
наслідку 2 з теореми Лагранжа.
7.3. Знайти центр групи.
7.4. Розбити групу на класи спряженості та визначити їх
потужності (тобто кількості елементів у кожному класі). Перевірити
виконання рівняння класів спряженості (з § 2).
7.5. Для всіх елементів групи знайти N(aі).
7.6. Чи буде група G циклічною? Знайти всі її циклічні підгрупи.
7.7. Знайти всі підгрупи даної групи. Для кожної підгрупи знайти
її класи суміжності, обчислити індекс підгрупи та перевірити виконання
теореми Лагранжа.
7.8. На прикладі однієї з підгруп перевірити виконання
властивостей класів суміжності.
7.9. Знайти всі нормальні підгрупи даної групи.
§4. ХАРАКТЕРИСТИКА КІЛЬЦЯ,
ХАРАКТЕРИСТИКА СКІНЧЕННОГО ПОЛЯ.
ФАКТОРКІЛЬЦЯ ЗА РІЗНИМИ ІДЕАЛАМИ,
ЇХ ВЛАСТИВОСТІ

4.1. Характеристика кільця, її властивості.

Нехай R – довільне кільце.


Означення 4.1: нехай ∃n∈N ∀r∈ R: nr = 0. Характеристикою кільця
R називається таке n0∈N, що n0 = min{n∈N: nr = 0, ∀r∈R}, а саме R
називається кільцем характеристики n0. Характеристика кільця R
позначається char R; наприклад, в цьому означенні char R = n0.
Якщо ∀n∈N ∃r∈ R: nr ≠ 0 (тобто умова у означенні 1 не виконується),
то вважається, що характеристика кільця дорівнює нулю, а кільце R
називається кільцем характеристики 0 (char R = 0).
Зауваження 4.2: тут і далі під позначенням nr, де п – натуральне
число, а r – елемент кільця, ми розуміємо елемент кільця, отриманий в
результаті п-кратного додавання елементу r кільця: nr = r+
r + ...
 +r.
n разів

Наведемо кілька простих, але корисних властивостей характеристики


кільця.
Теорема 4.3: нехай R – кільце з одиницею е, без дільників нуля і його
характеристика не дорівнює нулю. Тоді його характеристика – просте
число.
Доведення: за означенням кільця, R ≠ {0}, тому char R = n ≥ 2.
Доведення проводитимемо від супротивного. Нехай char R = n, де
n = km, k, m∈Z, 1 < k, m < n. Тоді 0 = ne = (km)e = (ke)(me); оскільки
дільники нуля в кільці R відсутні за умовою, то ke = 0 або me = 0.
Припустимо, що ke = 0. Але тоді ∀r∈R: kr = (ke)r = 0, звідки випливає, що
char R ≤ k < п, що суперечить припущенню char R = n.
Теорема 4.4: нехай R – скінчене кільце з одиницею. Тоді char R ≠ 0.
Доведення: розглянемо елементи e, 2e, 3e, …, me, …, ke, …. Усі вони
належать кільцю R. Якби вони всі були різні, то кільце було б
нескінченним, отже, ∃k, m∈N (k > m): ke = те. Тоді (ke – те) = (k – т) е = 0,
причому (k – т) > 0, і, аналогічно до доведення теореми 1,
∀a ∈ R : (k − m) a = 0 , отже, 0< char R ≤ (k – т).
Наслідок 4.5: характеристика цілісного кільця або дорівнює нулю,
або є простим числом. Характеристикою скінченного цілісного кільця є
просте число.
Наслідок 4.6: характеристика поля або дорівнює нулю, або є простим
числом. Характеристикою скінченного поля є просте число.

Приклади 4.7:
1) char Fp = (char Z/(p)) = p; 2) char Z = 0; 3) char Q = 0.
Зауваження 4.8: якщо кільце скінченне, то його характеристика не
дорівнює нулю. Але обернене твердження не вірне: існують нескінченні
кільця, що мають скінченну характеристику: наприклад, кільця поліномів
над полями Галуа.
Теорема 4.9: нехай R – комутативне кільце; char R = p – просте число.
n n n
Тоді ∀a, b ∈ R: (a ± b) p = a p ± b p , ∀n∈N.

Для доведення теореми сформулюємо лему.


Лема 4.10: ∀k∈N, k від 1 до p – 1:
p( p − 1)...( p − k + 1)
C kp = ≡ 0(mod p) і C 0p = C pp = 1.
1 ⋅ 2 ⋅ ... ⋅ k
Доведення: скористаємось наступним фактом, який ми доведемо
трохи пізніше при вивченні теорії чисел: якщо для деяких цілих чисел
a, b, c виконано: c | ab та (c, a) = 1 , то c | b .
Помітимо, що
p( p − 1)...( p − k + 1) ( p − 1)...( p − k + 1)
C kp = = p⋅ , де знаменник другого
1 ⋅ 2 ⋅ ... ⋅ k 1 ⋅ 2 ⋅ ... ⋅ k

множника є взаємно-простим з першим множником. Але оскільки C kp є

цілим числом, (тобто k!| p( p − 1)...( p − k + 1) ) , то, враховуючи (k!, p ) = 1,

отримаємо k!| ( p − 1)...( p − k + 1) , звідки й випливає твердження леми.

Доведення теореми 4.9: Покажемо, що (a + b) p = a p + b p ; далі

доведення виконується індукцією за n (повторним піднесенням до степеня


р).
За відомою формулою піднесення суми до степеню та
використовуючи допоміжну лему і означення характеристики кільця,
отримаємо:

(a + b)p = ap + C1p ap-1b +…+ C pp −1 abp–1 + bp = ap + bp.

Далі, оскільки ap = ((a – b) + b)p = (a – b)p + bp, то (a – b)p = ap – bp.


Теорему доведено.
Цю терему можна також сформулювати наступним чином: у
комутативному кільці простої характеристики піднесення до степеню, що
дорівнює характеристиці, є лінійною операцією.

4.2. Залежність властивостей факторкільця від ідеалу.

Як було помічено раніше, при побудові факторкільця за ідеалом


властивості вихідного кільця можуть як "покращитись", так і
"погіршитись". Наприклад, кільце цілих чисел є цілісним кільцем (і не є
полем), а його факторкільце за ідеалом в деяких випадках є полем, а в
інших – кільцем з дільниками нуля (наведіть приклади самостійно). Далі
ми розглянемо різні типи ідеалів та визначимо, як певні властивості ідеалу
кільця впливають на властивості відповідного факторкільця. Спочатку
введемо ряд означень.

Нехай надалі R – комутативне кільце з одиницею.


Означення 4.11: елемент a∈R називається дільником елемента b∈R,
якщо ∃с∈ R: ас = b.
Зокрема, дільники одиниці називаються оборотними елементами.
Інакше кажучи, елемент а кільця R називається оборотним, якщо існує
такий елемент а-1∈ R, що а а-1 = а-1 а=е.
Зауваження 4.12: надалі при розв’язуванні задач ми будемо
користуватись поняттям подільності і у некомутативному кільці. У цьому
випадку розрізняють ліві та праві дільники елемента кільця. Зокрема,
елемент є дільником нуля, якщо він є або лівим, або правим дільником
нуля. У нескінчених некомутативних кільцях (наприклад, у кільці
матриць) існують елементи, що є лише лівими або лише правими
дільниками одиниці.

Нехай R – комутативне кільце з одиницею.


Означення4.13: множина оборотних елементів кільця R з операцією
множення називається мультиплікативною групою кільця R і позначається
R*.
Зауваження 4.14: дане означення можна вважати коректним лише
якщо ми доведемо, що множина оборотних елементів кільця дійсно
утворює групу відносно операції множення.
Доведення полягає у перевірці наступних простих тверджень:
1) одиничний елемент е завжди є оборотним, отже, е∈ R*;
2) добуток двох оборотних елементів є оборотним елементом;
3) обернений до оборотного елемента також є оборотним.

Означення 4.15: елементи a, b∈R називаються асоційованими, якщо


існує ε∈R* такий, що a = bε.
Означення 4.16: елемент c∈R називається простим, якщо одночасно
виконуються наступні умови:
1) c не є оборотним;
2) всі дільники с є або оборотними, або асоційованими з ним.
Приклад4.17: прості елементи у кільці Z – це прості числа. Оскільки
у цьому кільці лише два оборотних елементи (1 та -1), то кожен елемент
а∈Z має рівно два асоційованих з ним елементи: а та -а.

Означення 4.18: ідеал P кільця R (такий, що P ≠ R) називається


простим, якщо виконується умова: ∀a, b∈R: ab∈P ⇔ (a∈P) ∨ (b∈P).
Означення 4.19: ідеал M кільця R (такий, що M ≠ R) називається
максимальним, якщо для будь-якого ідеалу I кільця R виконується умова:
якщо M ⊆ I , то або M = I, або R = I (тобто в R немає ідеалу, більшого за M,
крім самого R).
Використовуючи введені означення, сформулюємо та доведемо
теорему про властивості факторкільця у залежності від властивостей
ідеалу.
Теорема 4.20: нехай R – комутативне кільце з одиницею. Тоді:
1) ідеал М ⊂ R – максимальний ⇔ R/М – поле;
2) ідеал Р ⊂ R – простий ⇔ R/Р – цілісне кільце;
3) ідеал Р ⊂ R – максимальний ⇒ ідеал Р ⊂ R – простий;
4) якщо R – кільце головних ідеалів, с∈R, то R/(с) – поле ⇔ с –
простий елемент кільця R.
Доведення. 1) Нехай М – максимальний ідеал. Розглянемо множину
I = {ar + m|r∈R, m∈M}, для фіксованого a∉М, a∈R. Легко перевірити, що
така множина є ідеалом, отже, якщо М⊂I, то I = R. Звідси випливає, що
I ∍е, отже ∃(r∈R, m∈M): ar + m = е, де е – одиничний елемент. Тоді
(a + М)(r + М) = ar + М = е + М, тобто клас лишків a + М має обернений
відносно множення у факторкільці. Отже, R/М – поле.
І навпаки, нехай R/М – поле, а ідеал І такий, що I⊇М, І ≠ М.
Покажемо, що І = R. Оскільки R/М – поле, то для a∈І/М ∃r∈R:
(a + М)(r + М) = е + М, звідси ar + т = 1 для деякого m∈M. Але тоді 1∈І,
отже, І = R і М – максимальний ідеал.
2) Нехай Р – простий ідеал R, тоді R/Р – комутативне кільце з
одиницею: 1 + Р ≠ 0 + Р (раніше було доведено, що нейтральний елемент
за операцією "+" в кільці не співпадає з нейтральним елементом за
операцією "·")
Нехай (а + Р)(b + P) = 0 + P = аb + P, а це рівносильне тому, що ab∈P.
Отже, a∈P або b∈P. Тобто а + Р = 0 або b + P = 0, і дільники нуля в R/Р
відсутні.
У зворотний бік твердження доводиться аналогічно.
3) Дане твердження є наслідком 1) і 2), оскільки кожне поле є
цілісним кільцем.
4) Нехай R/(с) – поле, тоді елемент с не може бути оборотним,
оскільки для оборотного елементу R/(с) = {0}.
Нехай с не є оборотним і не є простим елементом, тоді існує таке a∈R,
що а – дільник с, а не асоційований з с і не є оборотним (а також а ≠ 0,
оскільки тоді було б с = 0 і елемент а був би асоційованим з с). Нехай
с = аb, b∈R; покажемо, що а∉(с). Дійсно, якщо а∈(с), то а = cd = abd, d∈R,
звідки отримаємо а(1 – bd) = 0, а ≠ 0. Отже, bd = 1, b – оборотний і с
асоційований з а, що призводить до суперечності. Але с = аb ⇒
⇒ (с)⊂(а)⊂R, де всі включення власні (так як (с)⊄(а), (а) ≠ R). Звідси (с) –
не максимальний ідеал, а отже R/(с) – не поле.
Нехай с – простий. Тоді (с) ≠ R, оскільки с – не оборотний. Якщо
І – ідеал, І⊃(с), то І = (а) і а – дільник с (оскільки R – кільце головних
ідеалів). Таким чином, або а – оборотний, або асоційований з с, тоді або
І = R, або І = (с), і (с) – максимальний ідеал; отже, за (1) R/(с) – поле.
Теорему доведено.

Приклад 4.21: кільце Z цілих чисел з операціями додавання та


множення є кільцем головних ідеалів. Дійсно, оскільки ідеал – підгрупа
циклічної групи (Z, +), то за теоремою 2.2 будь-який ідеал в Z є також
циклічною групою відносно операції додавання, тому він буде
породжуватись відповідним утворюючим елементом.
Нехай р∈Z – простий елемент в Z, тоді за теоремою 4.20 Z/(р) – поле,
отже, простий ідеал (р) є максимальним ідеалом.
Якщо п = аb∈Z, то (п) не є простим ідеалом, отже, Z/(п) – не поле.
ЗАДАЧІ ДО §4

1. Нехай G – група, С – її центр. Довести: ∀S ⊂ G , C ⊂ N (S ) .

2. Нехай I – ідеал кільця R. Довести:


∀a, b ∈ R : (a1 ∈ a + I , b1 ∈ b + I ) ⇒ a1b1 ∈ ab + I .
3. Нехай G – група. Довести, що ∀a ∈ G : a ⊂ N (a) .

4. Нехай G – група, a, b ∈ G . Довести: b ∈ N (a) ⇔ ab = ba .

5. Нехай G – група, a, b, c ∈ G . Чи вірно, що якщо c ∈ N (S ) , де

S = {a, b}, то с комутує з а та b? (Довести або навести контрприклад.)


6. Нехай ϕ : R → S – епіморфізм груп. Довести:

а) ∀s ∈ S кількість його прообразів дорівнює ker ϕ ;

ψ
б) R / ker ϕ ⎯⎯→ S – ізоморфізм, де ψ(r ⋅ ker ϕ) = ϕ(r ) .

7. Довести: якщо характеристика кільця не дорівнює нулю, то вона


ділить його порядок.
8. Довести: якщо характеристика кільця з одиницею не дорівнює
нулю, то вона дорівнює адитивному порядку одиниці (тобто порядку
одиничного елемента як елемента адитивної групи кільця).
9. Довести: характеристика кільця з одиницею дорівнює нулю тоді й
тільки тоді, коли адитивний порядок одиниці дорівнює нескінченості.
10. Довести, що характеристика скінченого кільця з одиницею не
дорівнює нулю. Чи вірно дане твердження для скінченого кільця без
одиниці? Як буде в цьому випадку виражатись характеристика кільця
через адитивні порядки його елементів?
11. Довести, що в скінченному некомутативному кільці будь-які (і
ліві, і праві) дільники оборотного елемента є оборотними елементами.
12. Нехай R – комутативне кільце, a, b, c ∈ R .Довести: якщо а –
дільник b, b – дільник с, то а – дільник с. Чи є вірним твердження: якщо а
– дільник b, то b – дільник а?
13. Довести, що оборотні елементи кільця з одиницею є дільниками
будь-яких елементів цього кільця.
14. Довести, що відношення асоційованості елементів комутативного
кільця є відношенням еквівалентності.
15. Довести, що в комутативному кільці добуток дільників одиниці є
дільником одиниці.
16. Чи вірно, що два асоційованих елемента комутативного кільця
одночасно або оборотні, або необоротні?
17*. Довести, що в скінченному (у тому числі і у некомутативному)
кільці з одиницею виконано: а не є дільником нуля (ні лівим, ні правим)
⇔ а є оборотним елементом (тобто існує такий елемент а-1, що

aa −1 = a −1a = e ). Чи вірно це для нескінченного кільця з одиницею?


18. Чи вірно, що два оборотних елемента комутативного кільця
асоційовані?
19. Нехай (R,+ ) – група дійних чисел з операцією додавання, (Z,+ ) –

її підгрупа. З яких елементів буде складатись факторгрупа R ?


Z
20. Довести: одиничний елемент кільця належить деякому ідеалу
цього кільця тоді і тільки тоді, коли цей ідеал співпадає з усім кільцем.
21*. При яких значеннях п всі необоротні елементи кільця Zп
утворюють ідеал?
22. Нехай R – комутативне кільце з одиницею. Довести:

(c ∈ R, ∃c )⇒ (R /(c) = 0).
−1
23. Нехай R – комутативне кільце з одиницею, a, c ∈ R . Довести: а –
дільник с ⇒ (с)⊂(а).
24. Довести, що кільце цілих чисел – кільце головних ідеалів.
25. Довести, що в кільці головних ідеалів ідеал є простим тоді й тільки
тоді, коли він породжений простим елементом.
26. Довести, що ідеал кільця Z цілих чисел, породжений елементами 2
та 3 (тобто найменший ідеал, що містить ці числа), співпадає з Z.
27. Які ідеали в кільці цілих чисел є простими? максимальними?
28. Довести, що множина всіх оборотних елементів кільця з одиницею
(в тому числі некомутативного) утворює групу відносно операції
множення.
§5. АЛГОРИТМ ЕВКЛІДА. ОСНОВНА ТЕОРЕМА
АРИФМЕТИКИ.
КОНГРУЕНЦІЇ ТА ЇХ ВЛАСТИВОСТІ.
КИТАЙСЬКА ТЕОРЕМА ПРО ЛИШКИ

5.1. Прості числа, НСД, НСК. Розширений алгоритм Евкліда, його


наслідки.

Протягом даного параграфу та деяких наступних будемо працювати з


цілими та натуральними числами.
Означення 5.1: число р∈Z, р ≠ 1, називається простим, якщо воно не
має натуральних дільників, відмінних від 1 і р.
В протилежному випадку число називається складеним.
Число 1 не відноситься ні до простих, ні до складених чисел (у нього є
лише один натуральний дільник).
Як було зауважено раніше, прості числа – це прості елементи кільця
цілих чисел.

З курсу шкільної алгебри відоме наступне твердження.


Твердження 5.2: ∀ ∀a∈Z, ∀b∈N ∃!(q, r), 0 ≤ r < b, q, r∈Z:
a = bq + r, (5.1)
де q – частка від ділення a на b, r – залишок від ділення a на b.
Зауваження 5.3: обмеження b∈N замість b∈Z вводиться лише для
того, щоб залишок r був визначений однозначно.
В §1 для позначення залишку від ділення a на b було введено
позначення: r = a mod b. Якщо r = 0, то будемо говорити, що "a ділиться
на b; b ділить a; b дільник a; a кратне b" і позначати a b або b a .

Означення 5.4: найбільшим спільним дільником (НСД) чисел a і b


називається таке число d∈Z, що має наступні властивості:
1) d|a, d|b;
2) ∀c ≠ d: (c|a, c|b) ⇒ c < d.
Найбільший спільний дільник чисел і a і b позначається НСД(a, b) або
(a, b).

Означення 5.5: найменшим спільним кратним (НСК) чисел a і b


називається таке k∈Z, що:
1) a|k, b|k
2) ∀l ≠ k : (a|l, b|l) ⇒ l > k.
Найменше спільне кратне чисел і a і b позначається НСК(a, b).
Зауваження 5.6: пункти 2) у означеннях 1 і 2 можна замінити,
відповідно, наступними:
2*) ∀c ≠ d: (c|a, c|b) ⇒ c|d;
2**) ∀l ≠ k : (a|l, b|l) ⇒ k|l.
У даному випадку при заміні обидва означення не зміняться, але, як
ми побачимо далі, пункти 2*) і 2**) є більш універсальним і можуть бути
застосовані до довільного кільця, а не тільки до кільця цілих чисел.
Для знаходження НСД(a, b) використовується алгоритм Евкліда. Він
базується на двох очевидних співвідношеннях:

(a, b) = (a, b mod a) (при a ≤ b), (5.2)


(a, 0) = a, (5.3)

які є наслідками того факту, що b = ak + bmod a.


Приклад 5.7: знаходження НСД(17, 12) та НСД(8,12) за алгоритмом
Евкліда.
(12, 17) = (12, 5) = (5, 2) = (2, 1) = (1, 0) = 1;
(81, 12) = (12, 9) = (9,3) = (3,0) = 3.

Далі ми розглянемо так званий розширений алгоритм Евкліда, який не


тільки знаходить НОД двох чисел a, b∈Z, але й його представлення у
вигляді їх цілочисельної лінійної комбінації, а також дозволяє доводити
багато корисних властивостей кільця цілих чисел.
Покажемо, як працює розширений алгоритм Евкліда для знаходження
(a, b) та його подання у вигляді лінійної комбінації чисел a, b∈Z, a > b,
b ≠ 0. В загальному випадку він складається з наступних кроків.

Розширений алгоритм Евкліда.


Позначимо r0 =a, r1 = b.
На кожному кроці будемо знаходити лишок від ділення та подавати
ділене у вигляді (5.1):
1 крок: r2 = r0 mod r1, (r0 = q1r1 + r2),
2 крок: r3 = r1 mod r2, (r1 = q2r2 + r3),
3 крок: r4 = r2 mod r3, (r2 = q3r3 + r4),
…………………………………..
і-ий крок: ri = ri–2 mod ri–1, (rі–2 = qі–1rі–1 + rі)
…………………………………..
m-ий крок: rm+1 = rm–1 mod rm = 0.
Якщо rm+1 = 0, то (a, b) = rm.
Покажемо коректність роботи алгоритму (алгоритм закінчить
роботу та видасть вірний результат). Оскільки ri < ri–1, то алгоритм
закінчить роботу не більше, ніж за b кроків (випливає з (5.3)). З (5.2)
випливає, що алгоритм видасть вірний результат (доводиться методом
математичної індукції за i).
Ефективність роботи алгоритму. Зрозуміло, що кількість кроків
m ≤ b (оскільки 0 ≤ ri < ri–1). Але ця оцінка є грубою, її можна суттєво
покращити. Для цього доведемо, що ri+1 < 1/2·ri–1.
Дійсно, можливі два випадки: ri < 1/2·ri–1, тоді ri+1 < ri < 1/2·ri–1, та
ri > 1/2·ri–1, тоді ri+1 = ri–1 mod ri = ri–1 – ri < 1/2·ri–1.
Таким чином, за кожні два кроки алгоритму величина ri зменшується
не менш, ніж в 2 рази. Отже, потрібно не більше за 2log2(b + 1) кроків для
завершення роботи алгоритму.

Розглянемо основні наслідки з розширеного алгоритму Евкліда.


Наслідок 5.8: якщо d = (a, b), то ∃u, v∈Z: d = au + bv.
Доведення: нехай d = (a, b). Якщо алгоритм закінчив роботу на кроці
m, то rm+1 = 0, rm = d. Проте rm = rm–2 mod rm–1, звідки rm–2 = qm–1rm–1 + rm
і d = rm–2 – qm–1rm–1, тобто d = α(rm–1, rm–2), де α(х, у) – деяка лінійна функція
від х, у з цілими коефіцієнтами. Але rm–1, rm–2 також є лінійними
функціями з цілими коефіцієнтами від попередніх rі, і < m – 2. Зазначимо,
що суперпозиція таких лінійних функцій теж є лінійною з цілими
коефіцієнтами. Таким чином, рухаючись "знизу вгору" за кроками
алгоритму, виразимо d лінійно через a та b.
Наслідок 5.9: якщо (a, b) =1, то ∃u, v∈Z: au + bv = 1.
Даний наслідок є частковим випадком попереднього, але він дуже
часто застосовується при доведенні різних тверджень та розв’язуванні
задач у теорії чисел, тому ми виділяємо його окремо.
Приклад 5.10:
Нехай a = 17, b = 12. Тоді (12, 17) = (12, 5) = (5, 2) = (2, 1) = (1, 0) = 1.
За розширеним алгоритмом Евкліда:
17 = 12 + 5 ⇒ 5 = 17 – 12,
12 = 2·5 + 2 ⇒ 2 = 12 – 5·2,
5 = 2·2 + 1 ⇒ 1 = 5 – 2·2,
2 = 2·1.
Підставляючи у передостанню рівність замість числа 2 його вираз з
другої рівності, зводячи "подібні" доданки та потім підставляючи замість
числа 5 його вираз з першої рівності, отримаємо:
1 = 5 – 2·2 = 5 – 2(12 – 5·2) = 5·5 – 2·12 = 5(17 – 12) – 2·12 = 5·17 –
7·12.
Отже, у даному випадку ми знайшли цілі коефіцієнти u = –7 та v = 5.

Твердження 5.11 (узагальнення наслідку з алгоритму Евкліда): нехай


r
d = (m1, …, mr), m1, …, mr∈Z. Тоді ∃u1, …, ur∈Z: d = ∑ ui mi .
i =1

Доведення. Доведемо твердження для r = 3 (для r > 3 доведення


проводиться аналогічно).
Нехай (m1, m2) = d12, тоді d = (m1, m2, m3) = (d12, m3), отже, d = vd12 +
+ um3 = v(u11m1 + u12m2) + um3 ⇒ d = u1m1 + u2m2 + u3m3. Доведення
закінчено.

Наслідок 5.12: нехай а, b, c∈Z, c|ab та (с, a) = 1. Тоді c|b.


Доведення: за наслідком 5.9, ∃u, v∈Z: au + сv = 1. Домножимо обидві
частини рівності на b: aub + сvb = b. За умовою, перший доданок у лівій
частині рівності ділиться на с, другий – також, тому ліва частина рівності
ділиться на с, отже b також ділиться на с.

Наслідок 5.13: нехай р – просте число. Тоді: р|ab ⇒ p|a або p|b.
Доведення: нехай р|ab і p не ділить a, тоді (p, a) = 1, і за наслідком 3
p|b.
Наслідок 5.13 можна узагальнити: якщо добуток довільної кількості
цілих чисел ділиться на просте число, то один з множників ділиться на це
число.

Наслідок 5.14: нехай a|c, b|c i (a, b) = 1. Тоді ab|c.


Доведення: за наслідком 5.9, ∃u, v∈Z: au + bv = 1. Домножимо обидві
частини рівності на с: auс + bvс = с. Оскільки b|c, то ab ділить перший
доданок у лівій частині рівності; аналогічно, ab ділить другий доданок у
лівій частині рівності. Отже, ab ділить ліву частину рівності, тому ab|c.

5.2. Розклад на прості множники. Фундаментальна теорема


арифметики.

Яскравим прикладом застосування наслідків з алгоритму Евкліда є


наступна теорема.
Теорема 5.15 (фундаментальна теорема арифметики): будь-яке
натуральне число, більше за 1, однозначно (з точністю до порядку
співмножників) розкладається на прості натуральні множники.
Доведення: по-перше, необхідно показати, що такий скінченний
розклад на прості множники існує. Доведення виконується методом
математичної індукції. Нехай розклад на прості множники існує для всіх
чисел, не більших за п (п – будь-яке фіксоване натуральне число, не
менше за 2). Покажемо, що розклад існує і для числа п + 1. Можливими є
два випадки:
- n + 1 – просте число; тоді для нього твердження теореми
виконується;
- n + 1 – складене; тоді ∃а∈N: 1 < а < п, а|(п + 1) і, відповідно,
п + 1 = ab, 1 < b < п; за припущенням індукції, кожне з чисел a та b або
просте, або розкладається на прості множники; отже, число n + 1 також
розкладається на прості множники.
По-друге, необхідно показати, що розклад на прості множники є
однозначним. Нехай існує два різних розклади числа a. Допускаючи
використання показника степеню, рівного нулю, можемо вважати, що
обидва розклади складаються з однакових множників.
k k
Нехай a = ∏ pini = ∏ pimi , причому pi ≠ p j при i ≠ j . Будемо
i =1 i =1

доводити від супротивного: нехай ∃i: ni ≠ mi. Для визначеності вважаємо,

що ni > mi; розділимо ліву і праву частини на pimi . Тоді ліва частина

ділиться на pi (навіть на pini −mi ), отже, права частина теж ділиться на pi.

Тоді за узагальненням наслідку 5.13 алгоритму Евкліда один з множників


у правій частині ділиться на pi, що призводить до суперечності з тим, що

pi ≠ p j при i ≠ j . Теорему доведено.

Зауваження 5.16: теорема залишається справедливою і для цілих


чисел, але в цьому випадку під однозначністю розкладу слід розуміти
однозначність з точністю до порядку і асоційованості.
Означення 5.17: канонічним розкладом цілого числа п називається
представлення п у вигляді

n = εp1α1 p2α 2 ... psα s ,

де ε = ±1 , p1α1 < p2α 2 < ... < psα s і α1, α2, …αs∈N.
5.3. Конгруенції (порівняння) та їх властивості.

Означення 5.18: будемо говорити, що число x∈Z конгруентне числу


y∈Z за модулем n∈N, і записувати x ≡ y (mod n), якщо x mod n = y mod n
(тобто х та у при діленні на п мають однакові залишки).
Зауваження 5.19: вираз "x mod n = y mod n" рівносильний виразу
"x – y  n" та висловлюванню "елементи x та y кільця Z конгруентні за
модулем ідеалу, породженого елементом n" (доведіть самостійно). Тому
означення 5.15 може бути сформульовано принаймні трьома способами.
Твердження 5.20 (властивості конгруенцій).
1. Відношення конгруентності є відношенням еквівалентності.
2. Нехай x1 ≡ y1 (mod n), x2 ≡ y2 (mod n). Тоді x1 + x2 ≡ y1 + y2 (mod n), x1 -
x2 ≡ y1 - y2 (mod n) і x1·x2 ≡ y1·y2 (mod n).
x y
3. Нехай x ≡ y (mod n), d|x, d|y, (d, n) = 1. Тоді ≡ (mod n ).
d d
x y ⎛ n ⎞
4. Нехай x ≡ y (mod n), d|x, d|y, d|n. Тоді ≡ ⎜ mod ⎟ .
d d ⎝ d ⎠
5. Нехай x ≡ y (mod n), m|n. Тоді x ≡ y (mod m).
6. Нехай (m, n) = 1. Тоді
x ≡ y (mod m n) ⇔ (x ≡ y (mod m))∧(x ≡ y (mod n)).
Доведення: пункти 1 та 2 доводяться безпосередньою перевіркою.
x y
Для доведення пункту 3 необхідно показати, що n| − .
d d
x y
Оскільки n|(x – y) = ( − )d , (d, n) = 1, то за наслідком 5.12
d d
x y
алгоритму Евкліда n| − .
d d
x y kn n
За умовою пункту 4, − = = k ( ) , отже п. 4 виконується.
d d d d
Доведення пункту 5 є тривіальним.
З лівої частини рівносильності в пункті 6 випливає права за пунктом
5. Доведемо зворотне твердження. За умовою, т|(x – y), п|(x – y), та
(т,п)=1. Тоді за наслідком 5.14 алгоритму Евкліда тп|(x – y), тобто
x ≡ y (mod m n). Твердження доведено.

Приклад 5.21: використовуючи конгруенцію, покажемо, що 11 ділить


73524.
Оскільки 10 ≡ –1 (mod 11), то за властивостями конгруенцій:
100 ≡ 102 (mod 11) ≡ (–1)2 (mod 11) ≡ 1 (mod 11);
1000 ≡ –1 (mod 11);
10000 ≡ 1 (mod 11).
Тому 73524 mod 11 = (7·10000 + 3·1000 + 5·100 + 2·10 + 4) mod 11=
=(7 – 3 + 5 – 2 + 4) mod 11 = 11 mod 11= 0 mod 11.

5.4. Кільця лишків Zn, їх властивості.

Як було показано у §3, множина Zn = {0, 1, …, n – 1} з операціями "+"


та "·" за mod n є комутативним кільцем з одиницею. Позначимо через Zn*
множину елементів цього кільця, для яких існують обернені елементи
(тобто множину оборотних елементів).
Означення 5.22: множина Zn* називається мультиплікативною
групою кільця лишків Zn. Якщо m∈Zn*, то обернений до нього (відносно
множення за модулем п) елемент позначають m–1 mod n.
Теорема 5.23 (про структуру мультиплікативної групи кільця Zn.):

Zn* = {m∈Z: 0 < m < n; (m, n) = 1}.

Доведення: доведемо включення Zn* ⊃ {m∈Z: 0 < m < n; (m, n) = 1}.


Нехай (m, n) = 1 ⇒ ∃u, v: um + vn = 1 ⇒ um – 1 = –vn ⇒ um ≡ 1 mod n.
Отже, u mod n є оберненим елементом до m∈Z.
Доведемо оборнене включення. Нехай m∈Zn*, тобто
–1 * –1 –1
∃m ∈Zn : m m ≡ 1 mod n ⇔ m m = kn + 1. Якщо (m, n) = d > 1, то
–1
d|(m m – kn) і d|1 – суперечність з d > 1. Теорему доведено.
Наведемо наслідки з даної теореми.
Наслідок 5.24: як видно з доведення теореми 5.24, за допомогою
алгоритму Евкліда можна знаходити обернений елемент m–1 для m∈Zn*;
для цього треба представити 1 у вигляді лінійної комбінації чисел m та
п: 1 = um + vn, тоді m–1 mod n = u mod n.
Наслідок 5.25: Zp – поле тоді і тільки тоді, коли p – просте число.
Приклад 5.26: знайдемо елемент, обернений до 12 в Z17, тобто
–1
12 mod 17. Для цього скористуємося результатом прикладу 5.10.
5·17 – 7·12 = 1;
–7·12 ≡ 1 mod 17;
–7 = 12–1 mod 17;
(–7) mod 17 = 10.
Дійсно, 12·10 = 120 = 17·7 + 1, отже, 12·10 mod 17 = 1.

Нагадаємо, що функцією Ойлера називається відображення ϕ: N→N,


яке кожному числу т∈N ставить у відповідність число ϕ(т), що дорівнює
кількості натуральних чисел а ≤ т, які є взаємно простими з т. За
домовленістю вважається, що ϕ(1) = 1.

Наслідок 5.27: порядок групи Zn* дорівнює ϕ(n).

Теорема 5.28 (теорема Ойлера): якщо (x, n) = 1, x∈Z, n∈N, то


x (n) ≡ 1 (mod n).
ϕ

Доведення: нехай x∈Zn, (x, n) = 1, тоді x∈Zn*, |Zn*| = ϕ(n). Таким


чином x (n) mod n = 1 і x (n) = kn + 1. Отже, x (n) ≡ 1 (mod n).
ϕ ϕ ϕ

Якщо x∉Zn*, то позначимо хʹ′=xmod n∈Zn*; тоді x ≡ xʹ′(mod n). За


доведеним раніше, (xʹ′) (n) ≡ 1 (mod n), тому, за властивістю 2 конгруенцій,
ϕ

x (n) ≡ 1 (mod n). Теорему доведено.


ϕ

Наслідок 5.29 (мала теорема Ферма): якщо р – просте число і x∈Z, то


xp ≡ x (mod p); зокрема, при (а, р) = 1 виконано: xp–1 ≡ 1 (mod p).

Наступна теорема, яка дає можливість розв’язувати системи


порівнянь, теж деякою мірою є наслідком з алгоритму Евкліда.
Теорема 5.30 (Китайська теорема про лишки): нехай n1, n2∈N;
(n1, n2) = 1; x1, x2∈Z. Тоді ∃x∈Z:

⎧ x ≡ x1 (mod n1 );
⎨ (5.4)
⎩ x ≡ x2 (mod n2 ).

Якщо x – деякий розв’язок системи порівнянь (5.4), то всі інші


розв’язки (3) мають вигляд
x+kn1n2, k∈Z. (5.5)

Зокрема, ∃! x∈Zn1 n2, що є розв’язком системи порівнянь (5.4).


×

Доведення: оскільки (n1, n2) = 1, то за наслідком 5.9,


∃u, v: un1 + vn2 = 1; отже, un1 ≡ 1 (mod n2); аналогічно, vn2 ≡ 1 (mod n1). Тоді
x = un1x2 + vn2x1 – деякий розв’язок (5.4), оскільки
(un1x2 + vn2x1) mod n1 = vn2x1 mod n1 = x1 mod n1, і, аналогічно,
(un1x2 + vn2x1) ≡ x2 (mod n2). Очевидно, що x + kn1n2 також буде розв’язком
(5.4) для будь-якого k∈Z.
Покажемо, що інших розв’язків не існує. Дійсно, якщо x* – ще один

⎧⎪ x − x∗ ≡ x1 (mod n1 );
розв’язок, то, за властивостями конгруенцій, ⎨ і,
⎪⎩ x − x∗ ≡ x2 (mod n2 ),

оскільки (n1, n2) = 1, x ≡ x* mod n1n2, тобто x* = x + kn1n2 , для деякого k∈Z.

Якщо існують два розв’язки, що належать Zn1 n2, то, внаслідок (5.5),
×

вони конгруентні за модулем n1n2 і при цьому вони обидва менші за n1n2,
отже, є рівними. Теорему доведено.

Означення 5.31: розв’язок x0 системи порівнянь (5.4), що належить


Zn1 n2, будемо називати частковим канонічним розв’язком системи
×

порівнянь (5.4); розв’язок вигляду x0 + kn1n2, k∈Z – загальним канонічним


розв’язком, а розв’язок вигляду x + kn1n2, k∈Z, де x – довільний розв’язок,
загальним розв’язком (5.4).
Приклад 5.32: знайти загальний канонічний розв’язок системи
порівнянь
⎧ x ≡ 9(mod12);
⎨
⎩ x ≡ 4(mod17).
(12, 17) = 1;
1 = 12·10 – 17·7;
x = 12·10·4 – 17·7·9 = – 591;
x0 = x mod (12·17) = – 591 mod 204= 612 – 591 = 21;
x0 = 21 – частковий канонічний розв’язок;
x = 21 + 204k, k∈Z – загальний канонічний розв’язок.
Важливим наслідком Китайської теореми про лишки є наступна
теорема.
Теорема 5.33: (про ізоморфізм кілець лишків): нехай n = n1n2, (n1, n2)
= 1. Тоді відображення ψ: Zn→Zn1×Zn2, де ψ(a) = (a mod n1, a mod n2) –
ізоморфізм; отже, Zn ≅ Zn1×Zn2.
Доведення: відображення є бієкцією внаслідок теореми 4, а саме,
внаслідок єдності розв’язку у кільці Zn1 n2. ×

Залишилось довести, що це відображення – гомоморфізм. Доведемо


це для першої компоненти вектора (для другої доведення аналогічне).
Потрібно довести ψ1(a) = a mod n1 – гомоморфізм Zn→Zn1. Дійсно,
ψ1(a⊗пb) = ψ1(ab mod n) = ((ab) mod n) mod n1. Оскільки n1|n, то ψ1(a⊗пb) =
= ab mod n1 = ((a mod n1)(b mod n1)) mod n1 = ψ1(a)⊗n1ψ1(b), де через ⊗п та
⊗n1 позначається множення за модулем n та n1, відповідно. Аналогічне
доведення є справедливим і для операції додавання за модулем, а також і
для другої компоненти вектора ψ(a). Теорему доведено.
Наслідок 5.34: в умовах теореми 5.33 виконується: Zn* ≅ Zn1*×Zn2*.
Наслідок 5.35: (мультиплікативність функції Ойлера):

ϕ(n1…nk) = ϕ(n1)×…×ϕ(nk), якщо (ni, nj) = 1, 1 ≤ i, j ≤ k, i ≠ j.

Наслідок 5.36 (формула для обчислення функції Ойлера): нехай


α
n = p1α1 ... pl l , де pі – прості числа, i = 1, l . Тоді
⎛ 1 ⎞ ⎛ 1 ⎞
ϕ(n) = n⎜⎜1 − ⎟⎟ ⎜⎜1 − ⎟⎟ .
⎝ p1 ⎠ ⎝ pl ⎠

Доведення: за означенням, для простого р ϕ(p) = p – 1. Обчислимо

ϕ( p α1 ).

Чисел, що не є взаємно простими з p α1 , буде p α1 −1 (це числа

вигляду p, 2p,…,( p α1 −1 – 1)p). Отже, ϕ( p α1 ) = p α1 – p α1 −1 . Таким чином,

використовуючи наслідок 5.35, ϕ(n) = ( p1α1 – p1α1 −1 )…( pl α1 – pl α1 −1 ) =

= p α1 … pl α l (1 – 1/p1)… (1 – 1/pl) = n(1 – 1/p1)… (1 – 1/pl).


ЗАДАЧІ ДО §5

1. Довести: НСД(а, b)·НСК(а, b) = а·b.


2. Використовуючи властивості конгруенцій, знайти 1212121 mod 9 та
–1212121 mod 9.
3. Знайти НСД(959, 791), використовуючи алгоритм Евкліда. Подати
НСД(959, 791) у вигляді лінійної комбінації чисел 959 та 791.
4. Довести: НСД – асоціативна бінарна операція.
5. Знайти такі u, v∈Z, що 137u + 113v = 1. Знайти 113–1 mod 137.
6. Довести: НСД(а, b) дорівнює найменшому натуральному числу, яке
можна подати у вигляді u а + v b, u, v∈Z.
7. Використовуючи властивості конгруенцій, довести ознаку
подільності на 9: число ділиться на 9 тоді й тільки тоді, коли сума його
цифр ділиться на 9.
8. Розкласти число 1934064 на прості множники та обчислити
значення функції Ойлера від цього числа.
9. Знайти таке число х, що х ≡ 40 mod 137 та х ≡ 50 mod 113.
10. Для яких п значення ϕ(п) будуть непарними числами?
11. Довести, що для ∀у∈Zп ∗
відображення f : Zn → Zn
fy(x) = (yx) mod n є перестановкою множини Zп.
12. Довести, що означення НСД та НСК не зміняться, якщо умову 2)
означень 5.1 та 5.2 замінити на умови 2*) та 2**), відповідно.
13. Скласти алгоритм для розв’язку в цілих числах рівняння
ax + by = d , де a, b, d ∈ Z – деякі параметри.
§6. ПОДІЛЬНІСТЬ, ФАКТОРИЗАЦІЯ.
ЗАСТОСУВАННЯ ФАКТОРИЗАЦІЇ

6.1. Узагальнення Китайської теореми про лишки.

Теорема 6.1 (узагальнення Китайської теореми про лишки): нехай

{m1, m2, …, mr}⊂Z; (mi, mj) = 1, i ≠ j; {xi }1r ⊂ Z.

Тоді існує розв'язок x∈Z системи порівнянь

⎧ x ≡ x1 (mod m1 ),
⎪ x ≡ x (mod m ),
⎪ 2 2
⎨ (6.1)
⎪ ...
⎪⎩ x ≡ xr (mod mr ),

при чому, якщо x, y – два розв'язки, то x ≡ y (mod M), де M = m1·…·mr


(отже, розв'язок єдиний в ZM).
Доведення: позначимо Мі = M/mі. Тоді (Mi, mi) = 1, отже, ∃Ni:
MiNi ≡ 1 mod mi.
r
Нехай x= ∑ xi M N .
i i Тоді x mod mi = xiMiNi mod mi = xi mod mi,
i =1

і = 1, …, r.
Покажемо, що будь-які два розв’язки системи (6.1) конгруентні за
модулем M. Нехай x, y – розв'язки (6.1), тоді (x – y) mod mі = 0, і = 1, …, r, і,
оскільки (mi, mj) = 1, i ≠ j; за властивістю конгруенцій (x – y) mod M = 0;
тобто x ≡ y(mod M). Теорему доведено.

Розглянемо цікавий приклад застосування узагальненої Китайської


теореми для розв’язку задачі про розподіл таємниці.
Приклад 6.2 (задача про розподіл таємниці): нехай одній людині
відоме число N – велике натуральне число. Це число і є таємницею, яку
власник повинен розділити між n = 2k + 1 іншими людьми (тобто роздати
їм деяку, взагалі кажучи, різну, інформацію) так, щоб були виконані
наступні умови:
1) будь-яка група з (k + 1) або більше людей, відкривши свою
інформацію, разом зможуть обчислити число N,
2) ніяка група з t < k + 1 людей, обмінявшись відомою їм інформацією,
не зможуть обчислити число N.
Розв'язок: виберемо n = 2k + 1 взаємно простих чисел m1, m2, …, mn
так, щоб

k +1 N < m , m , …, m < k N.
1 2 n

Кожна людина отримує свою частину інформації у вигляді


Ni = N mod mi, i = 1, …, n.
Тоді, якщо зберуться не менше за k + 1 володарів інформації, для
відновлення числа N їм потрібно розв’язати систему порівнянь:

⎧ N1 = N (mod m1 );
⎪
⎨ (6.2)
⎪ N
⎩ k +1 = N (mod mk +1 ).
та обрати у якості числа N найменший додатній розв’язок.
~
Оскільки, за теоремою 6.1, ∃! N ∈[0, m1·…·mk+1], що є розв'язком
k +1
системи порівнянь, і оскільки ∏ mi > N, внаслідок вибору mi > k +1 N ,
i =1

то N – частковий канонічний розв’язок (6.2). Якщо ж кількість рівнянь у


k +1
системі менша за k + 1, то ∏ mi < N (так як m < k N ), і можна лише
i
i =1

зазначити, що N буде одним з безлічі розв’язків системи.

Як було показано у попередньому параграфі, якщо відомий розклад


натурального числа n на прості множники, можна легко обчислити
функцію Ойлера за формулою з §5 (внаслідок мультиплікативності
функції). Якщо n = pq, де p, q – прості числа, то справедливим є і обернене
твердження.
Твердження 6.3: нехай відомо деяке натуральне число n, яке є
добутком двох (невідомих) простих чисел (позначимо їх p і q). Нехай
також відомо ϕ(n). Тоді можна знайти числа p, q.
Доведення: якщо n – парне, тоді p = 2, q = n/2.
Нехай n – непарне, тоді ϕ(n) = (p – 1)(q – 1) = pq – p – q + 1 =
= n – (p + q) + 1, звідки p = – q + n – ϕ(n) + 1.
З урахуванням n = pq отримаємо квадратне рівняння

x 2 − (n − ϕ(n) + 1) x + n = 0 , розв’язками якого є числа p, q = b ± b 2 − n ,


де 2b = −(n − ϕ(n) + 1) . Твердження доведено.

6.2. Наслідки теореми Ойлера.

Доведемо кілька корисних наслідків з теореми Ойлера.


Твердження 6.4: нехай (a, m) = 1; n1 ≡ n2 (mod ϕ(m)). Тоді

a n1 ≡ a n2 (mod m).
Доведення: нехай n1 > n2, тоді за умовою n1 = n2 + kϕ(m)) для деякого

цілого k. За теоремою Ойлера, a n1 − n2 ≡ 1(mod m) , оскільки (a, m) = 1. Тоді

a n1 = a n1 − n2 a n2 ≡ a n2 (mod ϕ(m)) . Твердження доведено.


Інакше кажучи, якщо (a, m) = 1, то an mod m = an mod ϕ
(m)
mod m.
Твердження 6.5 (узагальнена теорема Ойлера): нехай m = m1·…·mr,
(mi, mj) = 1, i ≠ j; (a, m) = 1. Тоді an ≡ 1 (mod m), де n = НСК(ϕ(m1), …,
ϕ(mr)).

Доведення: (a, m) = 1 ⇒ (a, mi) = 1 ⇒ a ϕ( mi ) ≡ 1 (mod mi)


(∀i = 1,…, r). Тоді an ≡ 1 (mod mi) (∀i = 1, …, r), оскільки ϕ(mi)|n (∀i = 1,
…, r).
За умовою, (mi, mj) = 1, отже, за властивістю 5 конгруенцій
(твердження 5.20): an ≡ 1 (mod m). Твердження доведено.
Означення 6.6: функцію ψ(m)=НСК(ϕ(m1), …, ϕ(mr)), де
m = m1·…·mr, (mi, mj) = 1, i ≠ j, інколи називають узагальненою функцією
Ойлера.

Твердження 6.7: якщо a n1 ≡ 1 (mod m) і a n2 ≡ 1 (mod m), то

a ( n1 , n2 ) ≡ 1 mod m.
Доведення: нехай d = (n1, n2) = un1 + vn2, тоді

a d = (a n1 )u (a n2 )v ≡ 1(mod m). Твердження доведено.

Покажемо, як можна застосовувати наведені твердження для


розв’язку різних чисельних задач.
Приклад 6.8: обчислити 21000000 mod 77.
Перший спосіб. 77=7×11; ϕ(7) = 6 ⇒ 26 ≡ 1 mod 7 ⇒ 230 ≡ 1 mod 7,
ϕ(11) = 10 ⇒ ⇒ 210 ≡ 1 mod 11 ⇒ 230 ≡ 1 mod 11. Отже, оскільки (7, 11) = 1,
то ψ(77)=30 і, за твердженням 3, 230 ≡ 1 mod 77. Тоді
21000000 mod 77 = 21000000 mod 30 mod 77 = 210 mod 77 = 210 mod77 =
= 1024 mod 77 = 23.
Другий спосіб. 21000000 mod 7 = 21000000 mod 6 mod 7 = 24 mod 7 = 2,
21000000 mod 11 = 21000000 mod 10 mod 11 = 20 mod 11 = 1.
Позначимо х = 21000000, тоді х ≡ 2 mod 7 і x ≡ 1 mod 11. За Китайською
теоремою про лишки (теорема 5.30), таке х існує і єдине при умові
0 ≤ x ≤ 76 – це частковий канонічний розв’язок системи порівнянь: х = 23.

Твердження 6.9: ∀b∈Z, n∈N: (b – 1)|(bn – 1), причому

bn – 1 = (b – 1)××(bn – 1 + bn – 2 + … + b2 + b + 1).

Доведення: запишемо число bn – 1 в b-ічній системі числення:

bn – 1 = ((b – 1)(b – 1)…(b – 1))b – усього п розрядів,

розділимо це число на b – 1 і отримаємо (11…111)b – п-розрядне число,


яке у десятковій системі числення відповідно дорівнює
n–1 n–2 2
b +b + … + b + b + 1.
Наслідок 6.10: в умовах твердження 6.9, bmn – 1 = (bm – 1)(bm(n –

1)
+…+ bm + 1).
Твердження 6.11: нехай p – просте число, p|(bn – 1). Тоді виконується
одна з двох наступних умов:
1) p|(bd – 1) для деякого d|n,
2) p ≡ 1 mod n.
Якщо ж p > 2 і n – непарне, умову 2 можна замінити підсиленою
умовою:
2*) p ≡ 1 mod 2n.
Доведення: р|(bn – 1) ⇒ (bn – 1) ≡ kp ⇒ bn ≡ 1 mod p. Крім того, за
малою теоремою Ферма, bp – 1 ≡ 1 mod p, отже, за твердженням 6.7,
bd ≡ 1 mod p, де d = (n, p – 1).
Якщо d < n, то отримаємо умову 1.
Якщо d = n, то p – 1 = тn і p ≡ 1 mod n, тобто виконується умова 2.
Якщо ж при цьому n – непарне, то 2|(p – 1) і n|(p – 1). Тоді 2n|(p – 1), звідси
(2, n) = 1 і p ≡ 1 mod (2n), виконується умова 2*. Твердження доведено.

6.3. Структура мультиплікативної групи скінченого поля.

Наступна теорема описує структуру мультиплікативної групи


скінченного поля. Для її доведення нам потрібні дві наступні леми.
Лема 6.12: для будь-якого натурального числа n виконується рівність:

n= ∑ ϕ(d ) .
d :d |n

Доведення: позначимо f(n) = ∑ ϕ(d ) . Потрібно показати, що f(n) = n.


d :d | n

По-перше, доведемо мультиплікативність функції f(n), тобто наступне


твердження: (n1, n2) = 1 ⇒ f(n1n2) = f(n1)f(n2).

За означенням, f(n1n2) = ∑ ϕ(d ) = ∑ ∑ ϕ(d1)ϕ(d 2 ) =


d :d | n1 ⋅ n2 d1 |n1 d 2 | n2

= ∑ ϕ(d1 ) ∑ ϕ(d 2 ) = f(n1)f(n2) (оскільки будь-який дільник d числа n1n2


d1 | n d 2 |n
можна записати у вигляді добутку d1d2, де d1|n1, d2|n2, (d1, d2) = 1).

Нехай n = p1α1 … prα r , тоді f( p1α1 ) = ϕ(1) + ϕ( p10 ) + ϕ( p1α1 ) +…+

+ ϕ( p1α1 ) = 1 + (p1 – 1) + ( p12 – p1) +…+ ( p1α1 – p1α1 −1 ) = p α1 . Лему

доведено.
Лема 6.13: в будь-якому полі рівняння xn = 1 не може мати більше,
ніж n коренів.
Доведення леми 6.13 використовує апарат теорії скінченних полів і до
нашого курсу не входить.

Нехай Fq – скінченне поле з q елементів. Позначимо


Fq *= Fq \{0} – мультиплікативна група поля Fq.
Теорема 6.14: (про структуру мультиплікативної групи скінченного
поля).
1. Fq* – циклічна.
2. Якщо g – утворюючий елемент Fq*, то елемент gj, де (j, q – 1) = 1,
також утворюючий, і кількість утворюючих елементів дорівнює ϕ(q – 1).
Доведення: для доведення першого пункту виберемо будь-який
a∈Fq*, d = ord a. Тоді d|(q – 1), оскільки |Fq*| = q – 1, за теоремою
Лагранжа.
Оскільки рівність (aj)d = 1 виконується для будь-якого натурального j,

то елементи a, a 2 ,..., a d з циклічної групи <a> є коренями рівняння xd = 1.

Кількість таких елементів дорівнює d. Тому, за лемою 6.13, в Fq* немає


інших коренів рівняння xd = 1, крім елементів групи <a>. За теоремою про
циклічну групу (теорема 2.2), в групі <a> міститься рівно ϕ(d) елементів
порядку d (це елементи aj, (j, d) = 1, j < d). Отже, якщо в полі існує елемент
порядку d, де d|(q – 1), то таких елементів в ньому існує рівно ϕ(d).
Покажемо, що ∀l|(q – 1) ∃b∈Fq*: ord b = l. Припустимо, що це не так.

Але, за лемою 6.12, q – 1 = ∑ ϕ(l ) . Якщо ж для деякого l|(q – 1) немає


l :l |( q −1)

елементу порядку l, тоді кількість елементів поля менша за q – 1, що


суперечить умові. Перший пункт доведено.
Доведення другого пункту випливає безпосередньо з п. 2.2.3 теореми
2.2 про властивості циклічної групи. Теорему доведено.

Наведемо твердження, яке дозволяє побудувати алгоритм

знаходження всіх утворюючих елементів мультиплікативної групи Z∗p

простого скінченого поля Z p .

Твердження 6.15: нехай р – просте число, p − 1 = q1α1 ⋅ q2α 2 ⋅ ... ⋅ qsα s –

розклад числа р-1 на прості множники. Тоді:


1) елемент g∈Zp* є утворюючим елементом тоді і тільки тоді, коли
p −1
∀і ≤ s: g qi ≠ 1 mod p ; (6.3)

2) якщо g∈Zp* – утворюючий елемент групи Zp*, то всі інші

утворюючі елементи цієї групи мають вигляд g l , де 1 < l < p − 1 і

(l, p − 1) = 1;
3) в групі Zp* рівно ϕ(р – 1) утворюючих елементів.
Перше з даних тверджень пропонується довести самостійно; друге і
третє є безпосередніми наслідками теореми 2.2 про властивості циклічної
групи.
Алгоритм знаходження всіх утворюючих елементів в Z p*
наступний.
1. Обрати довільний g∈Zp* та перевірити виконання умови (6.3). Якщо
умова (6.3) не виконується, обрати інший елемент і т.д.; якщо виконується
– перейти до наступного пункту.
2. Знайти всі такі 1 ≤ l ≤ p − 1 , що (l , p − 1) = 1 .

3. Для всіх значень 1 ≤ l ≤ p − 1 з пункту 2 алгоритму обчислити

g l mod p ; знайдені елементи і будуть утворюючими Zp*.


ЗАДАЧІ ДО §6

1. Використовуючи подання у b-їчній системі числення, довести, що


для непарного п виконано bп + 1 = (b + 1)(bп – 1 – bп – 2 + … + b2 – b + 1).
2. Довести, що якщо р – просте і р/bп + 1, то або р/bd + 1 для деякого d
– дільника п, такого, що п/d – непарне, або р ≡ 1 (mod 2n).
3. Довести: якщо d = (m, n), а > 1 – ціле число, то (ат – 1, ап - 1) = аd – 1.
4. Знайти загальні канонічні розв’язки порівнянь:
a) 9х ≡ 12 (mod 21);
b) 27х ≡ 25 (mod 256);
с) 103х ≡ 613 (mod 676).
5. Знайти загальні канонічні розв’язки систем порівнянь:
а) х ≡ 1 (mod 11); х ≡ 2 (mod 12); х ≡ 3 (mod 13).
b) 19х ≡ 103 (mod 900); 10х ≡ 511 (mod 841).
с) х ≡ 12 (mod 31); х ≡ 87 (mod 127); х ≡ 91 (mod 255).
6. Розкласти на множники: а) 2 – 1 = 2047; b) 312 – 1 = 531440.
11

7. Знайти всі розв’язки порівнянь:


а) 3х ≡ 4 (mod 7);
b) 3х ≡ 4 (mod 12);
с) 27х ≡ 72 (mod 900).
8. Довести, що для будь-якого натурального п число п(п2 – 1)(п2 + 1)
завжди ділиться на 30.
9. Довести, що при т = рk та т = 2рk, де р – просте число, з порівняння
х2 ≡ 1 mod т випливає порівняння х ≡ ±1 (mod т).
10. Нехай т = р1…рk – розклад на прості множники непарного числа
т. Довести, що порівняння х2 ≡ 1 (mod т) має 2k коренів у проміжку від 0
до т.
11. Знайти трицифрове число х, що є розв’язком системи порівнянь:
х ≡ 4 (mod 7); х ≡ 4 (mod 9); х ≡ 4 (mod 11).
12. Знайти мінімальний додатний розв’язок системи порівнянь:
х ≡ 2 (mod 3); х ≡ 3 (mod 5); х ≡ 4 (mod 11); х ≡ 5 (mod 16).
13. Розкласти на множники:
а) 235 – 1 = 34359738367; b) 224 + 1 = 16777217.
14. Знайти частку від ділення у на х, якщо відомо, що х – трицифрове,
у – шестицифрове, і числа х та у є розв’язками систем порівнянь:
х ≡ 7 (mod 9); у ≡ 8 (mod 9);
х ≡ 7 (mod 10); у ≡ 7 (mod 10);
х ≡ 3 (mod 11); у ≡ 1 (mod 11).
15. Довести: 2п – 1 – просте ⇒ п – просте.
16. Довести: 2п + 1 – просте ⇒ п = 2k.
Прості числа виду 2п – 1 називають простими Мерсена:
п
(3, 7, 31, 127, …), а прості числа виду 2 + 1 називають простими Ферма:
(3, 5, 17, 257, …).
17. Нехай т – просте, більше за 2; а, с – натуральні, bа ≡ –1 mod т,
bс ≡ ±1 mod т, d = (а, с). Довести: bd ≡ –1 mod т, і а/d – непарне.
18. Подати (325, 127) у вигляді лінійної комбінації цих чисел.
19. Знайти 123–1 mod 256.
20. Довести твердження 6.15. Як воно може бути узагальнено для
довільної циклічної групи?
21. Довести узагальнення наслідку з розширеного алгоритму Евкліда:
r
якщо d = (m1,..., mr ), де m1,..., mr ∈ Z , то ∃ u1,..., ur ∈ Z : d = ∑ ui mi .
i =1

22. Нехай (n1, n2 ) = 1, d1 та d 2 – дільники n1 та n1 , відповідно.

Довести: (d1, d 2 ) = 1 .
§7. АЛГОРИТМИ ТА ЇХ СКЛАДНІСТЬ.
ПОЛІНОМІАЛЬНІ ТА ЕКСПОНЕНЦІЙНІ
АЛГОРИТМИ. ЧАС РОБОТИ ОСНОВНИХ
АЛГОРИТМІВ

7.1. Означення часу роботи алгоритму. Типи алгоритмів.

З метою компактності викладення матеріалу та з огляду на те, що


даний навчальний посібник не є посібником з курсу інформатики, ми не
будемо наводити формальне означення алгоритму. Для розуміння даного
матеріалу цілком достатнім є інтуїтивне уявлення про роботу
обчислювальної машини згідно з програмою, написаною з використанням
будь-якої мови. За більш детальною інформацією зацікавлений читач
може звернутися до [6, 7].
Нехай А, В – фіксовані алфавіти; А – вхідний, В – вихідний; елементи
алфавітів ми будемо називати символами або літерами. Позначимо А*, В*
– множини слів у алфавітах А, В відповідно. Зауважимо, під словами ми
будемо розуміти будь-які послідовності символів відповідного алфавіту
довільної (але скінченої!) довжини. Робота алгоритму полягає в тому, що
він отримує на вхід слово w ∈ A* (так званий "вхід алгоритму"), і, в
результаті виконання послідовності елементарних операцій, передає на
вихід слово v ∈ В* ("вихід алгоритму"). Під кроком алгоритму ми, в
залежності від контексту, будемо розуміти або елементарну операцію
(наприклад, бітове додавання або множення), або більш "глобальну"
операцію, таку як додавання або множення десяткових чисел, ділення з
остачею, тощо.
Означення 7.1: довжина входу w ∈ А* – це кількість символів
(алфавіту А) в слові w; довжина входу w позначається |w|.
Оскільки, як правило, обчислювальна машина працює з числами, що
записані в двійковій системі числення, будемо вважати, що А*, В* –
двійкові послідовності; іноді – нескінченні, іноді – скінченні. В багатьох
випадках будемо вважати, що В = В* = {0, 1}. Тоді w = [log2 w] + 1, і для

w
великих w можна вважати, що значення w є близьким до 2 .
Означення 7.2: нехай t : N → N – деяка функція. Будемо говорити,
що час роботи алгоритму Λ обмежено деякою функцією t(х), якщо на
кожному вході w він робить не більше, ніж t(|w|) бітових операцій.

У подальшому викладенні для визначення часу роботи алгоритму ми


будемо використовувати оцінки вигляду О(f).
Нехай функції f(n), g(n) приймають невід'ємні значення для ∀n ∈ N .
Будемо використовувати позначення f(n) = O(g(n)), якщо існують такі
константи C1, C2 > 0 , що С1 g(n) ≤ f(n) ≤ C2 g(n).

Наприклад, 2n2 + 3n – 3 = O(n2), оскільки n2 ≤ 2n2 + 3n – 3 ≤ 3n2 для


натуральних n.
Надалі нас цікавитиме виконання співвідношення f(n) = O(g(n)) для
великих n або при n → +∞ .
Зауваження 7.3: поліном f(n) степеню k завжди має оцінку

f(n) = O(nk); для ∀ε > 0 (як завгодно малого): log n = O(n ε ) .

Якщо f(n) = k – кількість біт в записі числа n, то k = f(n) = O(log n).

Позначимо n = n(w)=|w| (тобто n = [log2 w] + 1).

За своєю швидкодією алгоритми поділяються на класи; основними з


них (зокрема, з точки зору криптології) є поліноміальні, субекспоненційні
та експоненційні.
Означення 7.4: будемо говорити, що алгоритм розв’язує задачу за
поліноміальний (від довжини входу) час, якщо існують такі k, с∈R, що
t(n) ≤ knc для деяких констант k, с (це те ж саме, що t(n) обмежено зверху
деяким поліномом від n). Такий алгоритм називають поліноміальним, а
задачу, яку він розв’язує – поліноміально розв’язуваною (кажуть, що
задача розв’язується за час, не більший за О(nc) для деякого с).
Поліноміальні алгоритми вважаються швидкими та ефективними.
Означення 7.5: будемо говорити, що алгоритм розв’язує задачу за
експоненційний (від довжини входу) час, якщо існують такі константи,0 <

с < d, що t (n) ≤ (2n ) d , але при цьому на нескінченній множині входів він

робить більше, ніж (2n)с кроків, де n – довжина входу. Такий алгоритм


називають експоненційним (у вузькому сенсі).
Експоненційні алгоритми є повільними, а задачі, що розв’язуються
експоненційним алгоритмами, вважаються важко розв'язуваними (задача
розв’язується за час, не менший за О(2n с) для деякого додатного с).
Зауваження 7.6.
1. З означення 7.5 випливає, що існують алгоритми, які є
повільнішими за експоненційні. Наприклад, це алгоритми, для яких
2
t (n) ≥ 2n на нескінченній множині входів.
2. Якщо замість n = [log2 w] + 1 використовувати n = [loga w] + 1, для

деякого додатного а ≠ 1, то означення 7.4 і 7.5 за суттю не зміняться


(порядок величини, що характеризує час роботи, не зміниться, а лише
функція, що описує час роботи, помножиться на деяку константу, залежну
від а).
Ще один важливий клас алгоритмів містить алгоритми, які за
складністю обчислень є проміжними між експоненційними та
поліноміальними – це субекспоненційні алгоритми. У багатьох випадках
вони можуть успішно застосовуватись на практиці (наприклад, методи
числового решета для знаходження дискретного логарифму або для
факторизації числа), якщо довжина входу не досить велика.
Введемо функцію

f ν, λ (n ) = exp{λnν (ln n)1−ν } . (7.1)

Означення 7.7: якщо існують такі константи 0 < ν < 1 , λ > 0 , що час
( )
роботи алгоритму t (n) = O f ν, λ (n ) , то такий алгоритм називається

субекспоненційним.

Зауваження 7.8: якщо в (1) покласти ν = 0 , то функція f ν, λ (n) = nλ

описує час роботи поліноміального алгоритму; якщо покласти ν = 1 , то

функція f ν, λ (n) = (e n )λ опису час роботи експоненційного алгоритму.

Тому при 0 < ν <1 час роботи алгоритму буде проміжним між
поліноміальним та експоненційним. Чим ближче параметр ν до нуля, тим
ближче алгоритм до поліноміального; чим ближче параметр ν до
одиниці, тим ближче алгоритм до експоненційного.
Крім вказаних класів алгоритмів, існують алгоритми, які за часом
роботи є проміжними. Наприклад, алгоритм, час роботи якого
визначається функцією f λ (n) = exp{ λ (ln n)2}, для досить великих

значень п є повільнішим за будь-який поліноміальний алгоритм, але


швидшим за будь-який субекспоненційний. Але протягом даного курсу
будуть розглядатись лише алгоритми трьох зазначених типів, оскільки
саме вони відіграють найважливішу роль у криптології.
7.2. Час роботи основних алгоритмів.

Нагадаємо, що десяткове число а, де 2 k −1 ≤ a < 2 k , займає k біт в


двійковому записі, тобто k = [log2 a] + 1 – кількість біт в двійковому записі

а. Таке число а будемо називати k-розрядним.

1. Додавання двійкових чисел.


Нехай а – k-розрядне число, b – l-розрядне. Тоді довжина входу
дорівнює k + l біт. При додаванні у стовпчик операція додавання a + b
потребує не більше за max(k, l) бітових операцій. Оскільки max(k, l)≤ k + l ,
то операція додавання виконується за поліноміальний час (час роботи
алгоритму обмежений поліномом першого степеню).
Зазначимо, що результат додавання, число a + b, має не більше за
max(k, l) + 1 двійкових розрядів.
Аналогічно оцінюється час, необхідний для виконання операції
віднімання; його оцінка буде такою ж самою.

2. Множення двійкових чисел


Нехай а·b, |a| = k, |b| = l. Довжина входу також становить k + l біт.
При множенні у стовпчик отримаємо не більше, ніж l рядків, по k біт
кожний. На кожному з l кроків виконуємо додавання у стовпчик, додаючи
до результату наступний рядок; при цьому виконується не більше за k
додавань кожного разу. Отже, усього виконується не більше за kl
побітових операцій, тобто час роботи алгоритму множення можна оцінити
як O(k l) (або O(log а log b)). Варто зауважити, що зсув та перезапис як
окремі операції не враховуються, вони виконуються досить швидко.
(k + l ) 2
Цей алгоритм також є поліноміальним, оскільки kl≤ , тобто час
2

n2
роботи алгоритму обмежений функцією t (n) = , що є поліномом
2
другого степеню.
В термінах |a|, |b|:
k = [log2a] + 1, l = [log2b] + 1,
kl = [log2a][log2b] + [log2a] + [log2b] + 1 ≤ (max{[log2a], [log2b]} + 1)2 =
= ([log2{max(a, b)} + 1])2.
Отримане в результаті число а·b має не більше за k + l розрядів.
Час виконання операції ділення з остачею оцінюється аналогічно; для
нього справедлива та ж сама оцінка.

Приклад 7.9: знайдемо верхню границю кількості бітових операцій


при обчисленні n! методом послідовного множення.
При найпростішому алгоритмі послідовного множення необхідно
виконати (n – 2) операції множення: (…(((2·3)· 4)· 5)·…·n).
Найбільша кількість біт в числі (n – 1)!, яке в останній дії множення
множимо на n. Обчислимо кількість біт у цьому числі. При множенні двох
чисел кількість біт в добутку не перевищує суму біт в їх записах. Нехай n
є k-розрядним числом; тоді розрядність всіх чисел, менших за n, не більша
за k. Отже, розрядність числа (n – 1)! не більша за (n – 2)k біт.
Всього буде виконано не більше за (n – 2) операції множення; в
кожній операції перемножуються два числа: довжина одного не більша за
k біт, а другого – не більша за (n – 2)k біт; отже, всього при обчисленні n!
виконується не більше за

(n – 2)k·(n – 2)k ≈ (n – 2)2([log2n] + 1)2≈ n2[log2n]2


операцій, або приблизно n2(log2n)2, тобто верхньою оцінкою часу роботи
такого алгоритму є O(n log n)2.
Дана оцінка є оцінкою зверху, тому, виходячи з неї, ми не можемо
стверджувати, що алгоритм є експоненційним. Але ми можемо довести
його експоненційність виходячи з того, що він виконує n – 1 операцію
множення, отже, не менше за С⋅2k-1 бітових операцій (де С – деяка додатна
константа, k = [log2n] + 1 – довжина входу п), що є експоненційним
виразом від довжини входу.

Приклад 7.10: нехай f, g – поліноми; deg f ≤ n1, deg g ≤ n2, n2 ≤ n1, де


n1 n2
i
deg f і deg g , відповідно, степені поліномів f, g; f = ∑a x , g = ∑b x
i =0
i
j =0
j
j ,

0 ≤ ai, bj ≤ m – цілі числа.


Знайдемо кількість бітових операцій для знаходження коефіцієнтів
поліному h(х)=f(х)·g(х).

Коефіцієнт при x ν , 0 ≤ ν ≤ (n1 + n2 ) , у поліномі h(х) дорівнює

∑ aib j . В цій сумі не більше, ніж (n2 + 1) додатків, тобто при її


i + j =ν

обчисленні виконується не більше за n2 + 1 множень. Оскільки ai, bi ≤ m,


то для виконання кожної операції множення необхідно не більше за
(log2m + 1)2(n2 + 1) операцій. Кожен з доданків не більший за m2, отже, їх
сума не більша (n2 + 1)m2. Таким чином, додаємо n2 рази числа, сума яких
не більша за (n2 + 1)m2; для цього необхідно не більше за
2
n2(log2 ((n2 + 1)m ) + 1) операцій. Отже, всього необхідно не більше за
(n2 + 1)(log2m + 1)2 + n2(log2 ((n2 + 1)m2) + 1) операцій.
Приклад 7.11 (час роботи алгоритму Евкліда): доведемо, що для двох
чисел a, b (a > b) час обчислення (a, b) має оцінку t(a) = O((log3 a)).
Як було доведено у §4, кількість кроків (кожний крок є діленням з
остачею) дорівнює 2log2 a + 1 = O(log2 a). На кожному кроці відбувається
ділення двох чисел, в бітовому записі яких не більше за log2 a + 1 знаків.
Таким чином, кожна операція ділення потребує не більше за О(log2 a)
операцій і, отже, t(a) = O(log3 a).

Приклад 7.12 (час роботи алгоритму піднесення до степеню): входом


алгоритму є число п, на виході отримуємо Nn, де N – деяке фіксоване
число.
Найпростіша процедура обчислення Nn має вигляд

N0 = N;
N 1 = N 0N = N 2;

N n – 1 = N п – 2N = N n.

На кожному кроці перемножуємо два числа: одне довжиною O(log N)


біт; друге – не більше, ніж в n раз довше, тобто його довжина становить
О(nlog N) біт; всього виконується O(n) кроків. Отже, необхідно не більше
за O(n2 log2 N) операцій.
Обчисливши нижню оцінку часу роботи такого алгоритму, можна
показати, що він є експоненційним принаймні внаслідок того, що кількість
операцій множення дорівнює O(n). Але навіть якщо ми побудуємо інший
алгоритм, в якому кількість операцій множення становитиме O(log n), він
все одно не буде поліноміальним внаслідок зростання чисел, що
перемножуються: бітова довжина принаймні одного з них буде рости
пропорційно n, отже, так само буде зростати кількість бітових операцій.

Приклад 7.13: час роботи алгоритму піднесення до степеню за


модулем: N n mod m, 1 < N < m.
Входом алгоритму є числа n, т, N.
Внаслідок теореми Ойлера, будемо вважати, що n < ϕ(m) < m , тоді

необхідно зробити не більше, ніж m множень. При множенні двох чисел,


не більших за m, потрібно не більше за O(log2 m) бітових операцій. Отже, в
ході алгоритму виконується не більше за O(m log2 m) бітових операцій.
Внаслідок того, що всі проміжні результати множень менші за m, даний
алгоритм є швидшим за попередній, але теж не буде поліноміальним.

Існує більш швидкий алгоритм обчислення Nn та Nn mod m – алгоритм


послідовного піднесення до квадрату, або схема Горнера.
Приклад 7.14: час роботи схеми Горнера обчислення Nn.
Вхід алгоритму: n.
Запишемо число n в двійковому вигляді: n = (nl…n1n0)2; тобто
l
n= ∑ ni 2i , де i = 0, 1,…, l; n ∈ {0, 1} і n = 1.
i l
i =0
l i
∑ ni 2
Тоді Nn = N i =0 = (...((( N nl ) 2 N nl −1 ) 2 N nl −2 ) 2 ... ⋅ N n1 ) 2 N n0 ,
l −1
кількість множень в такій схемі не більша за l + ∑ ni ≤ 2l = O(log n) .
i =0

Кожне множення виконується за час порядку O(n log N).


Отже, всього виконується порядку O(nlog n log N) бітових операцій;
це суттєво менше, ніж у прикладах 7.12 та 7.13.
Приклад 7.15: час роботи схеми Горнера обчислення N n mod m.
При обчисленні N n mod m кількість бітових операцій буде меншою,
ніж у попередньому прикладі. Оскільки в цьому випадку перемножуються
числа, не більші за m, виконується порядку O(log m)2 бітових операцій при
одному множенні. Таким чином, загальна кількість бітових операцій не
більша за O(log n(log2 m)2) = O(log m)3, тому алгоритм обчислення
N n mod m за схемою Горнера є поліноміальним.
ЗАДАЧІ ДО §7

1. Нехай задано деякий поліном з дійсними коефіцієнтами:

f ( x, a0 , a1,..., an ) = an x n + ... + a1x + a0 , x 2 ≤ m , ai 2 ≤ m , і = 0, …, п.

Оцінити кількість операцій додавання і множення при обчисленні


значення поліному у точці х:
a) при послідовному виконанні всіх операцій;
b) за схемою Горнера, подаючи поліном у вигляді
f ( x, a0 , a1,..., an ) = (...(((an x + an −1) x + an− 2 ) x + an−3 ) x + ... + a1) x + a0 .
2. За схемою Горнера обчислити 311 mod 5; 217 mod 7.
3. Використовуючи псевдокод, записати алгоритм, що реалізує схему
Горнера для піднесення до степеню за модулем.
§8. ІМОВІРНІСНІ АЛГОРИТМИ. АЛГОРИТМИ З
ОРАКУЛАМИ. ПОРІВНЯННЯ СКЛАДНОСТІ ЗАДАЧ

8.1. Означення імовірнісного алгоритму. Типи імовірнісних


алгоритмів.

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


та імовірнісного розподілу на скінченній множині подій. Нехай
Ω = {w1, w2, …, wп} – скінченна множина, елементи якої будемо називати
елементарними подіями. Кожній елементарній події wi ставиться у

відповідність деяке число Р( wi ) від 0 до 1, яке називається імовірністю

елементарної події wi , так, що при цьому виконується рівність:


n
∑ P(wi ) = 1. Множину Ω будемо називати простором подій, а будь-яку її
i =1

підмножину – подією. Для будь-якої підмножини А⊂Ω; імовірністю події

А будемо називати величину ∑ P(w ) і будемо говорити, що на множині


w∈A

Ω задано імовірнісний розподіл. Порожня множина також є підмножиною


Ω; відповідна подія називається неможливою, а її імовірність вважається
рівною 0. Зокрема, якщо всі елементарні події рівноімовірні (тобто

Р( wi ) = 1 ), то імовірність події А дорівнює відношенню потужності


n

множини А до потужності множини Ω: P(A) = | A | = k , якщо


|Ω| n
A = { wi , …, wi }.
1 k
Алгоритми, що вивчались у минулому параграфі, мають назву
детермінованих. Такі алгоритми кожному входу ставлять у відповідність
однозначно визначений вихід. Крім них, існують також імовірнісні
алгоритми, які мають більше можливостей у порівнянні з
детермінованими.
Означення 8.1: алгоритм Λ називається імовірнісним, якщо крім
основного входу, на який подаються вхідні дані для подальшої обробки,
алгоритм має додатковий вхід, на який він отримує деяку випадкову
послідовність r∈{0, 1}l, довжина l якої залежить від довжини вхідних
даних. Після цього він працює як детермінований алгоритм.
Припускається, що розподіл на множині випадкових послідовностей
однакової довжини є рівноімовірним. Це означає, що кожну з 2l можливих
послідовностей довжини l алгоритм може отримати з однією і тією ж
імовірністю 2–l. На відміну від детермінованого алгоритму, вихід
імовірнісного алгоритму залежить не тільки від вхідних даних, а й від
випадкової послідовності, яку він отримав на додатковий вхід.
Означення 8.2: будемо говорити, що імовірнісний алгоритм розв’язує
задачу з імовірністю помилки ε, 0 < ε < 1, якщо, отримавши на вхід деяку
величину w, він видає правильну відповідь з імовірністю, не меншою
за 1 – ε.
Інакше кажучи, для кожного входу w кількість "поганих"
l
послідовностей r∈{0, 1} , тобто таких, для яких алгоритм не видає
правильну відповідь, не більша за k, де k < 2l·ε, або, іншими словами, доля
k
таких "поганих" послідовностей не більша за ε. Для різних w "погані"
2l
послідовності, взагалі кажучи, можуть бути різними; але для кожного
k
значення w їх кількість k така, що ( )
< ε . Нагадаємо, що тут l = l w .
2l
Існує два типи імовірнісних алгоритмів.
1 тип. Для кожного входу алгоритм з імовірністю, більшою за 1 – ε,
видає правильну відповідь, і з імовірністю, меншою за ε – помилкову. Такі
алгоритми називаються Монте-Карло алгоритмами з імовірністю
помилки ε.
2 тип. Для кожного входу алгоритм з імовірністю, більшою за 1 – ε,
видає правильну відповідь, і з імовірністю, меншою за ε, повідомляє про
те, що він не може розв’язати дану задачу. Такі алгоритми називаються
Лас-Вегас алгоритмами з імовірністю невдачі ε. Можна вважати, що Лас-
Вегас алгоритм ніколи не помиляється, лише іноді утримується від
відповіді.
Час роботи імовірнісного алгоритму з входом w оцінюється як
max t ( w , r ) , тому, аналогічно до детермінованих алгоритмів, можна
r∈{0,1}l

дати означення поліноміальних, експоненційних та субекспоненційних


імовірнісних алгоритмів.

Задача розпізнавання мови.


Розглянемо окремо важливий клас алгоритмів, що розв’язують задачу
розпізнавання мови. Нехай А – алфавіт, А* – множина слів алфавіту А,
L⊂А* – мова в алфавіті А*, w∈А*. Задача розпізнавання мови L полягає у
наступному. На вхід алгоритму подається слово w∈A*. Алгоритм повинен
визначити, чи виконана умова: w∈L. Тобто алгоритм Λ повинен
працювати наступним чином:
⎧0, якщо w ∉ L;
Λ(w) = ⎨
⎩1, якщо w ∈ L.
Приклади 8.3: наступні задачі можна вважати задачами
розпізнавання деякої мови: визначити, чи є дане число простим;
визначити, чи є вказаний елемент циклічної групи її утворюючим
елементом; визначити, чи є дана група циклічною.

Означення 8.4: будемо говорити, що алгоритм Λ розв’язує задачу


розпізнавання мови (або розпізнає мову) L⊂ А*, якщо на кожному вході
w∈A* результат його роботи є наступним:
якщо w∈L, то Λ(w) = 1;
якщо w∉L, то Λ(w) = 0.

Означення 8.5: будемо говорити, що імовірнісний ("Монте-Карло")


алгоритм Λ розпізнає мову L з односторонньою помилкою ε, 0 < ε < 1,
якщо на кожному вході w∈A* результат його роботи є наступним:
якщо w∈L, то Λ(w) = 1 з імовірністю 1;
якщо w∉L, то Λ(w) = 0 з імовірністю, більшою за 1 – ε, та Λ(w) = 1 з
імовірністю, меншою за ε.
Аналогічно визначаються й імовірнісні Лас-Вегас алгоритми
розпізнавання мови.

Імовірність помилки алгоритмів розпізнавання мови з


односторонньою помилкою можна зменшувати, повторюючи його (з
різними, незалежно обраними, випадковими послідовностями) певну
кількість разів. Отже, зменшення імовірності помилки досягається за
рахунок збільшення довжини випадкової послідовності.
Нехай алгоритм Λ з односторонньою помилкою ε при деякому
основному вході w потребує на додатковому вході послідовність r
довжини l = l(w). Тоді візьмемо випадкову послідовність довжини tl,
розіб’ємо її на t частин: r1, r2, …, rt, де кожна частина має довжину l, та
виконаємо алгоритм Λ з одним і тим же входом w t раз, кожного разу з
новою послідовністю. Алгоритм, утворений t-кратним застосуванням
алгоритму Λ, позначимо Λt. При цьому, якщо кожного разу значення,
отримане на виході алгоритму Λ, рівне одиниці, то покладемо Λt(w) = 1; в
іншому випадку, тобто якщо хоча б один раз значення на виході
алгоритму Λ рівне нулю, покладемо Λt(w) = 0.
Визначимо імовірність помилки такого алгоритму:
якщо алгоритм Λ видає "0" хоча б один раз, то він не помиляється,
оскільки помилка є односторонньою і при w∉L алгоритм завжди видає
правильну відповідь, тобто 1;
якщо ж алгоритм Λ кожного разу видає "1", і при цьому помиляється,
це означає, що він помилився t разів, кожного разу з імовірністю, не
більшою за ε. Оскільки випадкові послідовності, які подаються на
додатковий вхід алгоритму, є незалежними, то й події, що полягають у
помилці алгоритму на кожній з послідовностей, також є незалежними.
Отже, імовірність t разів отримати на виході значення "1" буде
дорівнювати добутку ймовірностей помилок, і її значення буде не
більшим за εt << ε, для достатньо великих t.
Важливим є той факт, що якщо Λ – поліноміальний алгоритм, то Λt
також є поліноміальним, оскільки час його роботи збільшився в t разів.
При цьому t не обов’язково повинне бути константою, а навіть може бути
поліномом від довжини входу. Таким чином, якщо існує поліноміальний
алгоритм розпізнавання мови з імовірністю односторонньої помилки,
меншою за ε, то існує і поліноміальний алгоритм розпізнавання цієї ж

мови з імовірністю односторонньої помилки, меншою за ε t . Імовірність


такого порядку називають експоненційно низькою. Вона досягається
всього лише збільшенням часу роботи алгоритму в t разів.

8.2. Алгоритми з оракулами.

Означення 8.6: оракулом називатимемо функцію О: А*→В*, де А, В –


деякі скінченні алфавіти.
Алгоритмом з оракулом ΛО називатимемо алгоритм в звичайному
розумінні, але наділений додатковою операцією – зверненням до оракула.
Операція звернення до оракула полягає в тому, що алгоритм Λ
передає оракулу О деяке слово Z∈А* (запит до оракула), і отримує деяке
слово О(Z) – відповідь оракула. Відповідь може істотно залежати від того,
до якого саме оракула звертається алгоритм.
Час роботи алгоритму з оракулом оцінюється в припущенні, що
звернення до оракула займає один крок. Але при цьому необхідно окремо
враховувати час передачі запиту та час зчитування відповіді. Наприклад,
найпростіше звернення: алгоритм Λ отримує w∈ {0, 1}*; звертається до
оракула О із запитом w і отримує відповідь О(w).
Означення 8.7: алгоритм з оракулом називають поліноміальним, якщо
максимальний час роботи алгоритму (по всім можливим оракулам)
обмежений деяким поліномом від довжини входу.
Означення 8.8: будемо говорити, що алгоритм з оракулом ΛО
зводить задачу ∏1 до задачі ∏2, якщо для будь-якого оракула О, який на
кожному вході w видає розв'язок задачі ∏2(w), алгоритм ΛО видає
розв'язок задачі ∏1.
Якщо існує такий поліноміальний алгоритм Λ, що задачу ∏1 зводить
до задачі ∏2, то кажуть, що задача ∏1 поліноміально зводиться до задачі
∏2, а сам алгоритм називають поліноміальним зведенням ∏1 до ∏2.
Приклад 8.9: нехай алгоритм Λ1 розв’язує задачу ∏1(w) – для
заданого w знаходить його функцію Ойлера, а алгоритм Λ2 розв’язує
задачу ∏2(w) – для заданого w видає його розклад на прості множники
(канонічний розклад). Тоді задача ∏1 поліноміально зводиться до ∏2
наступним алгоритмом.
Вхід: w;
запит до оракула: w;
відповідь оракула: (p1, α1), (p2, α2), ..., (pr, αr);
r
ϕ= ∏ ( piαi − piαi −1) ;
i =1

вихід ϕ.
Зауваження 8.10: слід зазначити, що якщо w = pq, де p, q – невідомі
прості числа, то справедливе і зворотне твердження: задача ∏2
поліноміально зводиться до ∏1.

Означення 8.11: якщо ∏1 поліноміально зводиться до ∏2, то


говоримо, що задача ∏1 не складніша за задачу ∏2, а задача ∏2 не легша за
задачу ∏1.

Означення 8.12: якщо ∏1 поліноміально зводиться до ∏2, а ∏2


поліноміально зводиться до ∏1, то такі задачі називаються поліноміально
еквівалентними.
Аналогічно визначається імовірнісна поліноміальна звідність між
задачами. Наступна теорема формулює деякі властивості поліноміальної
звідності між задачами.
Теорема 8.13: нехай ∏1, ∏2, ∏3 – деякі задачі.
Якщо ∏1 поліноміально зводиться до ∏2, а ∏2 поліноміально
зводиться до ∏3, то ∏1 поліноміально зводиться до ∏3.
Якщо ∏2 розв'язується за поліноміальний час і ∏1 поліноміально
зводиться до ∏2, то ∏1 також розв’язується за поліноміальний час.
Якщо ∏1 імовірнісно поліноміально зводиться до ∏2 з імовірністю
помилки ε, і ∏2 розв'язується за поліноміальний час, то ∏1 розв'язується
імовірнісним поліноміальним алгоритмом з імовірністю помилки ε.
ЗАДАЧІ ДО §8

k
1. Нехай р – просте число, p − 1 = ∏ (qi )αi – його розклад на прості
i =1

множники, αi ∈ N, i = 1, k . Довести: елемент g ∈ Z*p є утворюючим

елементом Z*p тоді й тільки тоді, коли виконується умова:

p −1
qi
g ≠ 1(mod p) ∀i = 1, k .
Як узагальнити дане твердження для довільної циклічної групи?

2. Нехай g – утворюючий елемент Z*p . При яких значеннях р елемент

(– g) також буде утворюючим елементом Z*p ?

3. Для заданого натурального k побудувати такий відрізок цілих чисел


[z, z + k], що не містить жодного простого числа.
4. До кожного з прикладів задач розпізнавання мови, наведених у
лекції, вказати алфавіт та мову в цьому алфавіті, яку необхідно розпізнати.
Навести можливі алгоритми для розв’язку даних задач. Чи будуть вони
поліноміальними? Наведіть інші приклади задач розпізнавання мови та
вкажіть для них алфавіт і мову.
5. Навести алгоритм поліноміальної звідності, про який йдеться у
зауваженні до означення 7.
6. Нехай Λ – алгоритм розпізнавання деякої мови з односторонньою
помилкою ε. В якому з двох випадків ми можемо стверджувати, що
алгоритм точно видав правильну відповідь: коли Λ(w) = 1 чи коли
Λ(w) = 0? Відповідь пояснити.
7. Дати означення імовірнісного Лас-Вегас алгоритму розпізнавання
мови.

8. Довести: мова L ⊆ A* розпізнається поліноміальним Лас-Вегас

алгоритмом з імовірністю невдачі ε тоді і тільки тоді, коли мови L , A* \ L


розпізнаються алгоритмами Монте-Карло з односторонньою помилкою ε.
9. Довести теорему 8.13.

10. Довести: якщо мова L ⊆ A* розпізнається деяким поліноміальним

Лас-Вегас алгоритмом з імовірністю невдачі ε, то мова A* \ L також


розпізнається деяким поліноміальним Лас-Вегас алгоритмом з імовірністю
невдачі ε. Використовуючи алгоритм Λ розпізнавання мови L, побудувати

алгоритм розпізнавання мови A* \ L .


§9. КВАДРАТИЧНІ ЛИШКИ ТА НЕЛИШКИ.
ДОБУВАННЯ КВАДРАТНОГО КОРЕНЯ
У КІЛЬЦІ ЛИШКІВ

9.1. Означення та властивості квадратичних лишків.

Нехай п∈Ν.
Означення 9.1: число х∈Z називають квадратичним лишком за
модулем п, якщо виконані наступні вимоги:
(х, п) = 1;
х ≡ у2 mod n для деякого у∈Zп*.
В цьому випадку число у називають квадратним коренем із х за
модулем п.
Числа, взаємно-прості з п, що не є квадратичними лишками за
модулем п, називають квадратичними нелишками за модулем п.
Квадратичні лишки (нелишки), що належать Zп*, називаються
зведеними квадратичними лишками (нелишками). Множину зведених
квадратичних лишків за модулем п позначатимемо Qn. Зрозуміло, що х –
квадратичний лишок (нелишок) за модулем п тоді й тільки тоді, коли
х mod n – зведений квадратичний лишок (нелишок) за модулем п. Тому
далі ми здебільшого будемо вивчати зведені квадратичні лишки
(нелишки).
Твердження 9.2: (критерій квадратичності) нехай р > 2 – просте
число. Тоді наступні умови еквівалентні:
1) х – квадратичний лишок за модулем р;
p −1
2) x 2 ≡ 1 mod p ;
3) якщо g∈Zp* – утворюючий елемент, то існує таке парне число

p −1
k = 0, , що x ≡ g2k mod р.
2
Доведення: з першого пункту випливає другий, а з третього –
перший, безпосередньо за означенням квадратичного лишку та з
використанням малої теореми Ферма. Отже, залишається довести, що з
другого пункту випливає третій.
Доведемо це від супротивного. Нехай виконується умова другого

p −1
пункту, але при цьому x ≡ g2k+1 mod р для деякого k = 0, . Тоді, за
2
p −1 p −1
малою теоремою Ферма, x 2 mod p = g 2 mod p , де вираз у правій
частині не дорівнює одиниці, за означенням утворюючого елемента.
Доведення закінчено.
Наслідок 9.3: утворюючий елемент циклічної групи Zp* не може бути
квадратичним лишком.
Наслідок 9.4: у групі Zp* рівно ( p − 1) 2 квадратичних лишків і

стільки ж квадратичних нелишків, тобто |Qn|= ( p − 1) 2 .

9.2. Символ Лежандра та символ Якобі. Їх властивості та


обчислення.

⎛ x ⎞
Означення 9.5: символом Лежандра ⎜⎜ ⎟⎟ для простого числа р > 2 і
⎝ p ⎠
елемента х∈Z називається величина, що приймає наступні значення:
⎧ 1, якщо х − квадратичний лишок за модулем р;
⎛ x ⎞ ⎪
⎜⎜ ⎟⎟ = ⎨− 1, якщо х − квадратичний нелишок за модулем р;
⎝ p ⎠ ⎪ 0, якщо р | x.
⎩

Теорема 9.6 (критерій Ойлера): нехай х∈Z, р > 2 – просте число. Тоді
p −1
⎛ x ⎞
⎜⎜ ⎟⎟ ≡ x 2 mod p .
⎝ p ⎠
Доведення: якщо р|х, доведення тривіальне.
Якщо р не ділить х і х – квадратичний лишок за модулем р, то, за п. 2
p −1
⎛ x ⎞
твердження 9.2, то ⎜⎜ ⎟⎟ ≡ x 2 mod p .
⎝ p ⎠
Залишилось показати, що якщо х – квадратичний нелишок за модулем
⎛ x ⎞
р, то ⎜⎜ ⎟⎟ ≡ −1 mod p .
⎝ p ⎠
p −1
p −1
Оскільки x ≡ 1 mod p , то x 2 ≡ ±1 mod p , оскільки за лемою 6.13

рівняння y 2 ≡ 1 mod p в полі Zp має лише два розв'язки. Отже, якщо х –

⎛ x ⎞
квадратичний нелишок за модулем р, то ⎜⎜ ⎟⎟ ≡ −1 mod p . Доведення
⎝ p ⎠
закінчено.
Теорема 9.7 (властивості символу Лежандра): нехай х1, х2∈Z, р > 2 –
просте число. Тоді:
⎛ x ⎞ ⎛ x ⎞
1) якщо х1 ≡ х2(mod р), то ⎜⎜ 1 ⎟⎟ = ⎜⎜ 2 ⎟⎟ ;
⎝ p ⎠ ⎝ p ⎠
⎛ x ⎞⎛ x ⎞ ⎛ x x ⎞
2) ⎜⎜ 1 ⎟⎟⎜⎜ 2 ⎟⎟ = ⎜⎜ 1 2 ⎟⎟ – мультиплікативність символу Лежандра;
⎝ p ⎠⎝ p ⎠ ⎝ p ⎠
⎛ x x 2 ⎞ ⎛ x ⎞
3) якщо р не ділить х2, то ⎜ 1 2 ⎟ = ⎜⎜ 1 ⎟⎟ ;
⎜ p ⎟ ⎝ p ⎠
⎝ ⎠
4) х – квадратичний лишок за модулем р тоді й тільки тоді, коли
⎛ x ⎞
⎜⎜ ⎟⎟ = 1.
⎝ p ⎠
Доведення: доведення першого та четвертого пунктів випливає
безпосередньо з означення символу Лежандра. Доведення другого пункту
випливає з критерію Ойлера. Доведення третього пункту випливає з
⎛ x 2 ⎞
другого, з урахуванням того, що якщо р не ділить х2, то ⎜ 2 ⎟ = 1. Теорему
⎜ p ⎟
⎝ ⎠
доведено.

Означення 9.8: нехай п ≥ 3 – непарне число, п = p1α1 ⋅ p2α 2 ⋅ ... ⋅ psα s –

розклад числа п на прості множники; х∈Z.


Символом Якобі (узагальненим символом Лежандра) називається
α 1 α2 αs
⎛ x ⎞ ⎛ x ⎞ ⎛ x ⎞ ⎛ x ⎞ ⎛ x ⎞
величина ⎜ ⎟ , що дорівнює ⎜ ⎟ = ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ ...⎜⎜ ⎟⎟ , де
⎝ n ⎠ ⎝ n ⎠ ⎝ p1 ⎠ ⎝ p2 ⎠ ⎝ ps ⎠

⎛ x ⎞
⎜⎜ ⎟⎟, i = 1, s – символи Лежандра.
⎝ pi ⎠
Теорема 9.9 (властивості символу Якобі): нехай х1, х2, х3∈Z,
п1, п2, п3 ≥ 3 – непарні. Тоді:
⎛ x ⎞ ⎛ x ⎞
1) якщо х1 ≡ х2 mod п, то ⎜ 1 ⎟ = ⎜ 2 ⎟ ;
⎝ n ⎠ ⎝ n ⎠
⎛ x ⎞⎛ x ⎞ ⎛ x x ⎞
2) ⎜ 1 ⎟⎜ 2 ⎟ = ⎜ 1 2 ⎟ – мультиплікативність символу Якобі;
⎝ n ⎠⎝ n ⎠ ⎝ n ⎠
⎛ x x 2 ⎞ ⎛ x ⎞
3) якщо (х2, п) = 1, то ⎜ 1 2 ⎟ = ⎜ 1 ⎟ ;
⎜ n ⎟ ⎝ n ⎠
⎝ ⎠
⎛ x ⎞ ⎛ x ⎞⎛ x ⎞
4) ⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟⎜⎜ ⎟⎟ ;
⎝ n1n2 ⎠ ⎝ n1 ⎠⎝ n2 ⎠
⎛ x ⎞
5) якщо х – квадратичний лишок за модулем п, то ⎜ ⎟ = 1 .
⎝ n ⎠
Доведення: твердження пунктів 1) та 2) випливають безпосередньо з
означення символу Якобі та теореми 9.7.
Твердження пункту 3) отримуємо пунктів з 2) та 5).
Твердження пункту 4) випливає з означення символу Якобі.
Доведемо пункт 5). Нехай х – квадратичний лишок за модулем п;
отже, х ≡ у2 mod n для деякого у∈Zп*, тобто п ділить (х – у2). Але тоді для
будь-якого простого рі з розкладу числа п виконується: рі|(х – у2). Отже,
∀рі: х ≡ у2 mod рі, що рівносильно х ≡ (у mod рі)2 mod рі, тобто х –

⎛ x ⎞
квадратичний лишок за модулем рі для будь-якого рі|n і тому ⎜⎜ ⎟⎟ = 1.
⎝ pi ⎠
⎛ x ⎞
Тоді ⎜ ⎟ = 1 , за означенням символу Якобі. Теорему доведено.
⎝ n ⎠
Зауваження 9.10.
1. На відміну від символу Лежандра, твердження, обернене до 5) у
теоремі 9.9, для символу Якобі не виконується.
⎛ x ⎞
2. Якщо ⎜ ⎟ = −1, то х – точно є квадратичним нелишком, але якщо
⎝ n ⎠
⎛ x ⎞
⎜ ⎟ = 1 , то х може бути як квадратичним лишком, так і нелишком.
⎝ n ⎠
3. Легко бачити, що, за властивістю 1 символу Якобі,
⎛ n ⎞ ⎛ n mod m ⎞
⎜ ⎟ = ⎜ ⎟ .
⎝ m ⎠ ⎝ m ⎠
⎛ 2 ⎞ ⎛ 2 ⎞⎛ 2 ⎞
Приклад 9.11 (до п. 2 зауваження): ⎜ ⎟ = ⎜ ⎟⎜ ⎟ = (−1)(−1) = 1,
⎝ 15 ⎠ ⎝ 3 ⎠⎝ 5 ⎠
тобто 2 є квадратичним нелишком за модулями 3 та 5, отже, і
квадратичним нелишком за модулем 15; але при цьому для відповідного
⎛ 2 ⎞
символу Якобі виконується рівність ⎜ ⎟ = 1 .
⎝ 15 ⎠
Для обчислення символу Якобі за поліноміальний час
використовується наступний результат, що є одним з центральних
результатів в теорії чисел.
Теорема 9.12 (квадратичний закон взаємності Гауса (1796)): нехай
т, п > 2 – непарні, (т, п) = 1. Тоді:
( m −1)(n −1)
⎛ m ⎞⎛ n ⎞ 4
1) ⎜ ⎟⎜ ⎟ = (−1) ;
⎝ n ⎠⎝ m ⎠
n 2 −1
⎛ 2 ⎞ 8 .
2) ⎜ ⎟ = (−1)
⎝ n ⎠
Доведення закону Гауса потребує певних знань з теорії скінченних
полів і виходить за рамки даного курсу.
Використовуючи теореми 9.9 та 9.12, можна побудувати
поліноміальний алгоритм обчислення символу Якобі.

Алгоритм обчислення символу Якобі


⎛ x ⎞ ⎛ x mod n ⎞
Вважаємо, що 0 ≤ х< п, оскільки ⎜ ⎟ = ⎜ ⎟ .
⎝ n ⎠ ⎝ n ⎠
Вхід алгоритму: х, п ∈N, де n – непарне.
⎛ x ⎞ ⎛ y ⎞
1. Відокремимо парні степені двійки: х = 22jy; тоді І = ⎜ ⎟ = ⎜ ⎟ .
⎝ n ⎠ ⎝ n ⎠

n 2 −1
⎛ y ⎞ ⎛ 2 ⎞⎛ y' ⎞ 8 ⎛⎜ y ' ⎞
2. Якщо y = 2y', то I = ⎜ ⎟ = ⎜ ⎟⎜ ⎟ = (−1) ⎟ ; інакше y' = y.
⎝ n ⎠ ⎝ n ⎠⎝ n ⎠ ⎝ n ⎠
3. Оскільки y' – непарне, тому можливо скористатися теоремою 9.12:
( y '−1)(n −1) ( y '−1)(n −1)
⎛ y ' ⎞ ⎛ n ⎞ 4
⎛ n mod y ' ⎞ 4
⎜ ⎟ = ⎜⎜ ⎟⎟(−1) = ⎜⎜ ⎟(−1) .
⎝ n ⎠ ⎝ y ' ⎠ ⎝ y ' ⎟⎠

Наведені вище пункти 1)-3) становлять 1 крок алгоритму. Після


виконання одного кроку знову переходимо до пункту 1 і повторюємо
⎛ 2 ⎞ ⎛ 1 ⎞
алгоритм, доки не отримаємо ⎜ ⎟ або ⎜ ⎟ , що обчислюється
⎝ a ⎠ ⎝ a ⎠
безпосередньо.

⎛ x ⎞
Твердження 9.13: алгоритм обчислення символу Якобі ⎜ ⎟ робить
⎝ n ⎠
не більше за 2 log2 n + 1 описаних вище кроків, що складаються з п.п. 1)-

3).
Довести дане твердження рекомендується самостійно.

Зауваження 9.14: всі операції, що виконуються у п.п. 1)-3),


потребують поліноміального часу виконання. Найбільш громіздкою з них
є операція ділення з остачею (п. 3)), яка виконується за поліноміальний

час (не більше за (log2 n )2 бітових операцій на кожному кроці). Тому, з

урахуванням твердження 9.13, алгоритм виконує порядку Ο (log 2 n )3 ( )


бітових операцій.
Приклад 9.15:

2 (3−1)(17−1) 32 −1
⎛ 12 ⎞ ⎛⎜ 2 ⋅ 3 ⎞⎟ ⎛ 3 ⎞ ⎛ 17 mod 3 ⎞ ⎛ 2 ⎞
⎜ ⎟ = ⎜ = ⎜ ⎟ = (−1) 4 ⎜ ⎟ = ⎜ ⎟ = (−1) 8 = −1 ,
⎝ 17 ⎠ ⎝ 17 ⎟⎠ ⎝ 17 ⎠ ⎝ 3 ⎠ ⎝ 3 ⎠
отже 12 – квадратичний нелишок за модулем 17.

Розпізнавання квадратичних лишків за простим модулем п є легкою


задачею, для її розв’язку можна використовувати як критерій Ойлера, так і
алгоритм обчислення символу Якобі. Для складеного п квадратичність
лишку не завжди визначається за символом Якобі. Наприклад, нехай
⎛ x ⎞
п = р1р2, (х, п) = 1. Тоді при ⎜ ⎟ = −1 х точно є квадратичним нелишком,
⎝ n ⎠
⎛ x ⎞
але при ⎜ ⎟ = 1 х з імовірністю 1/2 є квадратичним лишком, і з такою ж
⎝ n ⎠
імовірністю є квадратичним нелишком.
⎛ x ⎞
Означення 9.16: елемент 0 ≤ х < п, такий, що ⎜ ⎟ = 1 , але при цьому
⎝ n ⎠
х∉Qn, називається псевдоквадратом за модулем п. Множина
~
псевдоквадратів за модулем п позначається Qn .

9.3. Добування квадратного кореня.

9.3.1. Добування квадратного кореня за простим


м о д у л е м . Нехай x, p ∈ N , де р – просте число, x ∈ Q p . Задача добування

квадратного кореня за модулем р з числа x ∈ Q p полягає у знаходженні


таких y ∈ Z p , що x ≡ y 2 (mod p) (якщо x ∉ Q p , то зрозуміло, що така

задача не має розв’язку).


В залежності від виду числа р, є три методи розв’язку даної задачі.
Якщо р ≡ 3 (mod 4) або р ≡ 5 (mod 8), задача розв’язується досить
простими детермінованими алгоритмами. У випадку, коли р ≡ 1 (mod 8),
алгоритм знаходження квадратного кореня є імовірнісним.
Випадок 1. р ≡ 3 (mod 4) (такі числа називаються числами Блюма).
Нехай p = 4m + 3 . Оскільки x ∈ Q p , то за критерієм Ойлера маємо:

x 2m +1 ≡ 1 mod p , звідки x 2(m +1) ≡ x mod p . Таким чином,

y1,2 = ± x m +1 mod p (це обидва корені з х в Z*p ).

Випадок 2. р ≡ 5 (mod 8).


Нехай p = 8m + 5 . В цьому випадку р ≡ 5 (mod 16) або р ≡ 13 (mod 16).

Тому р2 ≡ 9 (mod 16), отже, р2 – 1 ≡ 8 (mod 16). Оскільки р2 – 1 не ділиться

p 2 −1
2
на 16, то (р – 1)/8 – непарне число, отже, (−1) 8 = −1 і, за теоремою
9.12, число 2 є квадратичним нелишком за модулем р. Тобто
p−1
2 2 = 24m+ 2 ≡ −1(mod p ) .

За критерієм Ойлера маємо: x 4m + 2 ≡ 1(mod p ), звідки

x 2m +1 ≡ ±1(mod p ).

Якщо x 2m + 2 ≡ 1(mod p ), то x 2(m +1) ≡ x(mod p ) і y = ± x m +1(mod p ).

⎛ 2 ⎞
Якщо x 2m + 2 ≡ −1(mod p ), то скористаємось тим, що ⎜⎜ ⎟⎟ = −1 , звідки
⎝ p ⎠

24m + 2 ≡ −1(mod p ). Отже, 24m + 2 x 2m +1 ≡ 1(mod p ) і


22(2m +1) x 2(m +1) ≡ x(mod p ). Тоді y ≡ ±22m +1 x m +1(mod p ) .
Випадок 3. р ≡ 1 (mod 8).
В даному випадку необхідно спочатку знайти будь-який квадратичний
нелишок а за модулем р. Для цього використовується імовірнісний

алгоритм випадкової генерації елемента а з Z∗p з наступною перевіркою,

чи є а квадратичним нелишком. Після знаходження нелишка алгоритм


працює як детермінований.
Нехай р = 2lh + 1, l ≥ 3 – за умовою, h – непарне.
l −1 l −2
Тоді x 2 h ≡ 1(mod p ) , звідки x 2 h ≡ ±1(mod p ) ; за умовою,
l −1
a 2 h ≡ −1(mod p ) .
l −2 l −1
Інакше кажучи, ∃s1 ∈ {0, h}: x 2 h a 2 s1 ≡ 1(mod p ): якщо
l −2 l −2
x 2 h ≡ 1(mod p ), то s1 = 0; інакше x 2 h ≡ −1(mod p ) , тоді s1 = h.
l −2
h 2l −1 s1 l −3 l −2
З x2 a ≡ 1(mod p ) випливає, що x 2 h a 2 s1 ≡ ±1(mod p ). З
останнього порівняння аналогічним чином для деякого невід'ємного
l −3 l −2
цілого s2 отримаємо: x 2 h a 2 s2 ≡ 1(mod p ), де s 2 = s 1, якщо
l −3 l −2 l −3 l −2
x 2 h a 2 s1 ≡ 1(mod p ) , і s2 = s1 + 2h, якщо. x 2 h a 2 s1 ≡ −1(mod p ).

Звідси x 2
l −4
h 2l −3 s2
a ≡ ±1(mod p ).
Повторивши процедуру l–3 рази, приходимо до порівняння

x h a 2sl −1 ≡ 1(mod p ) для деякого невід'ємного цілого sl–1, звідки остаточно


h+1
отримаємо y = ± x 2 a sl −1 (mod p ) .
Зауваження 9.17: для знаходження квадратичного нелишка за
модулем р використовується наступний імовірнісний алгоритм:
1) обрати випадкове a ∈ Z*p ;

⎛ a ⎞
2) обчислити ⎜⎜ ⎟⎟ ;
⎝ p ⎠
3) якщо результат дорівнює 1, – переходимо до пункту 1), інакше
алгоритм видає значення а і закінчує роботу.
Оскільки кількість квадратичних лишків за простим модулем
дорівнює кількості квадратичних лишків, то необхідно в середньому дві

генерації випадкового елемента a ∈ Z*p до успішного завершення роботи

алгоритму.

9.3.2. Розпізнавання квадратичності та добування


к в а д р а т н о г о к о р е н я з а м о д у л е м п = pq.
Теорема 9.18: нехай п = pq, p, q – прості числа. Припустимо, що

x, y ∈ Z*p і позначимо х1 = х mod p, х2 = х mod q; у1 = у mod p, у2 = у mod q.

Тоді справедливі наступні твердження:


⎧⎪ y 2 ≡ x (mod p )
1) y 2 ≡ x(mod n ) ⇔ ⎨ 1 1 ;
⎪⎩ y2 2 ≡ x2 (mod q )

2) (х – квадратичний лишок за модулем п) ⇔ (х – квадратичний лишок


за кожним із модулів p і q);
3) (х – квадратичний лишок за модулем п) ⇒ (конгруенція

y 2 ≡ x(mod n ) в Z*n має рівно 4 різних розв'язки, які у векторному вигляді

(як елементи Z*p × Z*q ) можна подати так:

у = (у1, у2), –у = (р – у1, q – у2), у' = (у1, q – у2), –у' = (р – у1, у2)).
Доведення. 1. Внаслідок ізоморфізму мультиплікативних груп кілець
лишків Z*n ≅ Z*p × Z*q . Тому

⎧⎪ y 2 ≡ x mod p; ⎧⎪( y mod p ) 2 ≡ ( x mod p ) mod p;


y 2 ≡ x mod n ⇔ ⎨ 2 ⇔ ⎨ ⇔
⎪⎩ y ≡ x mod q. ⎪⎩ ( y mod q ) 2 ≡ ( x mod q ) mod q.

⎧⎪ y 2 ≡ x mod p;
⇔ ⎨ 12 1
⎪⎩ y2 ≡ x2 mod q.
Пункт 2 є наслідком пункту 1.
Пункт 3 доводиться безпосередньою перевіркою з використанням
п.п. 1 та 2. Теорему доведено.

Приклад 9.19: знайти 58 mod 77 .

⎧ x mod 7 = 2 = x1 ⎪⎧ y 2 ≡ 2(mod 7 )


p = 7, q = 11. ⎨ ⇒ ⎨ 12 ⇒
⎩ x mod11 = 3 = x2 ⎪⎩ y2 ≡ 3(mod11)
7−1
3 24 ≡ 2(mod 7) 2 ≡ 4(mod 7) ⎧ y1 = ±4(mod 7)
⇒ 2 = 2 ≡ 1(mod 7) ⇒ 6
2
⇒ ⇒ ⎨
35 ≡ 1(mod11) 3 ≡ 3(mod11) 3 ≡ 5(mod11) ⎩ y2 = ±5(mod11)

Знаходимо розв’язки чотирьох систем конгруенцій:


(7, 11) = 1 ⇒ ∃u, v: 7u + 11v = 1 ⇒ 2·11 – 3·7 = 1 ⇒ 4·2·11 – 3·7·5 = 60
⇒ y = 60. Аналогічно, розв’язками інших систем будуть y = 17, 39, 38.

Таким чином, якщо відомий розклад числа п = pq на прості множники,


алгоритми розпізнавання квадратичності і добування квадратних коренів є
поліноміальними. Тобто задача розпізнавання квадратичності та
добування квадратних коренів поліноміально зводиться до задачі
факторизації. Це імовірнісне зведення, оскільки алгоритми добування
квадратного кореня в деяких випадках є імовірнісними.
Справедливим є і зворотне твердження: задача факторизації числа
п = pq зводиться до задачі знаходження хоча б одного кореня за модулем
п = pq імовірнісним поліноміальним алгоритмом. Це твердження є
наслідком наведеної нижче теореми 2.
Таким чином, задачі факторизації, знаходження одного квадратного
кореня і знаходження всіх квадратних коренів є поліноміально
еквівалентними (відносно імовірнісного алгоритму) для числа п, що є
добутком двох простих чисел.
Теорема 9.20: нехай п = pq, p, q – прості числа, (х, п) = 1, у, y' –
квадратні корені з х, причому y ± y ' не ділиться на п. Тоді (у + y', п)

дорівнює або p, або q.

⎧⎪ y 2 ≡ x(mod n )
Доведення: якщо ⎨ , то у2 – (y')2 ≡ 0 (mod n) і,
⎪⎩( y' ) 2 ≡ x(mod n )

відповідно, п ділить у2 – (y')2 = (у – y')(у + y').


Проте кожен з множників (у – y') та (у + y') за умовою не ділиться на
п, з чого випливає, що (у + y', п) ≠ п і (у + y', п) ≠ 1 (за наслідком з
алгоритму Евкліда). Таким чином, (у + y', п) дорівнює або p, або q.
Теорему доведено.
Приклад 9.21: нехай п = 21, p = 3, q = 7. Оскільки два корені

1 mod 21 , які задовольняють умови теореми 2, дорівнюють 1 та 8, то:


(8 – 1)(8 + 1) ≡ 0 mod 21, (8 + 1, 21) = 3 = p.

Опишемо алгоритм з оракулом, який зводить задачу факторизації до


задачі знаходження квадратного кореня.
Нехай оракул О, отримавши квадратичний лишок х за mod pq, видає
деякий квадратний корінь з х.
Вхід алгоритму: п = pq.

1) вибрати випадкове у∈ Z*n ;

2) якщо (у, п) ≠ 1, то видати p або q і завершити алгоритм;


3) обчислити х =у2 mod n;
4) запит до оракула: х;
5) відповідь оракула: y' = О(х);
6) якщо y ≡ ± y' (mod n) – нам не повезло і ми за цим алгоритмом не

знайдемо розкладу числа п; в противному випадку обчислюємо (у + y', п).


Даний алгоритм є Лас-Вегас алгоритмом. Імовірність того, що
алгоритм не закінчить роботу успішно, дорівнює 1/2. Повторивши
процедури алгоритму k разів, можна збільшити імовірність успішного
завершення роботи алгоритму до (1 – (1/2)k).
При невідомій факторизації числа п = pq, на сьогоднішній день не
існує поліноміальних алгоритмів розпізнавання та добування квадратних
коренів. Але існують досить ефективні субекспоненційні імовірнісні
алгоритми.
ЗАДАЧІ ДО §9

1. Довести, що в Zp* рівно ( p − 1) 2 квадратичних лишків і стільки ж

квадратичних нелишків (тобто |Qn|= ( p − 1) 2 ), і що утворюючий елемент

групи Zp* не може бути квадратичним лишком за модулем р.


2. Довести, що описаний у даному параграфі алгоритм обчислення
⎛ x ⎞
символу Якобі ⎜ ⎟ робить не більше за 2 log2 n + 1 кроків, кожен з яких
⎝ n ⎠
складається з п.п. 1)-3).

3*. Довести, що група Z∗ n не є циклічною при п > 2.


2

4*. Довести, що група Z∗ n є циклічною для простого р ≠ 2.


p

5. Не користуючись 6.13, довести: якщо р – просте число, то рівняння

y 2 ≡ 1 mod p в полі Z р має рівно 2 розв’язки. Які це розв’язки?

6. Задано відображення f : Z*n → Qn , f ( y ) = y 2 mod n . Довести, що f

– гомоморфізм груп.
7. Використовуючи здачу 1, довести, що всі елементи Qn мають

однакову кількість коренів в Z*n , а саме Z*n Qn .

8. Нехай п – непарне.
⎛ x ⎞
8.1. Довести, що відображення f ( x) = ⎜ ⎟ – гомоморфізм
⎝ n ⎠

Z*n → Z* = {±1}.
8.2. Показати, що якщо п – просте, то ker f = Qn .
8.3. Довести, що в Z*n (n = pq) міститься однакова кількість

елементів з символами Якобі 1 та –1.


⎧ ⎛ x ⎞ ⎫
8.4. Довести, що I n = ⎨ x ∈ Z*n ⎜ ⎟ = 1⎬ – підгрупа в Z*n .
⎩ ⎝ n ⎠ ⎭

⎧ ⎛ x ⎞ ⎫
9. Нехай Qn ' = ⎨ x ∈ Z*n ⎜ ⎟ = 1, x ∉ Qn ⎬ – множина псевдоквадратів за
⎩ ⎝ n ⎠ ⎭
модулем п, n = pq. Довести:
а) Qn ' = Qn ;

б) для будь-якого псевдоквадрату z ∈ Z*n відображення

f z ( x) = zx mod n – бієкція Qn → Qn ' .


10. Довести, що для простого р:
p −1
⎛ − 1 ⎞
а) ⎜⎜ ⎟⎟ = (−1) 2 ;
⎝ p ⎠

б) існує розв’язок x 2 ≡ −1 mod p ⇔ p = 4k + 1;

11*. Довести п. а) задачі 10 для будь-якого непарного п.


12. Знайти всі квадратичні лишки і нелишки за модулями 3, 5, 7, 9, 11,
13, 15, 17.
13. Нехай х1, х2 квадратичні лишки за модулем п, у1 – квадратичний
нелишок. Довести: х1х2, (х1)–1 – квадратичні лишки, х1 у1, (у1)–1 –
квадратичні нелишки.
14. Довести: ∀z ∉ Qp відображення f z ( x) = zx mod p – бієкція

Q p → Z*p \ Q p .

15. Чи будуть 15, 30 квадратичними лишками за модулем 37?


16. Знайти всі квадратичні лишки за модулем 83.
17. Знайти: а) 5 mod 29 ; б) 5 mod 41; в) 2 mod 41

(використовуючи те, що 6 – квадратичний нелишок); г) 60 mod 77 .


18. Нехай n = pq. (Тоді кожен квадратичний лишок має рівно 4
корені.) Довести, що задача знаходження квадратного кореня з деякого
квадратичного лишка еквівалентна задачі факторизацїї відносно
імовірнісної звідності.

19. Довести, що множина квадратичних лишків у Z *n утворює групу

для будь-якого п.
20. Довести, що множина квадратичних лишків за простим модулем р
утворює циклічну групу відносно операції множення за модулем р. Що
буде утворюючим елементом цієї групи?
21. Довести, що при п = р1р2, де р1р2 – різні прості, множина
ϕ(n)
псевдоквадратів за модулем п містить елементи.
2
Як можна узагальнити дане твердження для п = р1 ,…, рl, де р1 ,…, рl –
різні прості?
§10. ПСЕВДОПРОСТІ ЧИСЛА.
ТЕСТУВАННЯ ПРОСТОТИ

10.1. Найпростіші алгоритми тестування простоти.

Сучасну криптологію неможливо уявити без широкого використання


простих чисел, що мають певні властивості. Вони використовуються як у
класичних, так і у більш сучасних алгоритмах шифрування, цифрового
підпису та обміну ключами; для побудови генераторів псевдовипадкових
послідовностей; для обчислення параметрів статистичних тестів, тощо.
Тому однією з важливих задач теорії чисел на даний момент є побудова
алгоритмів генерації простих чисел. Такі алгоритми включають у себе
перевірку простоти числа, які звуться алгоритмами тестування
простоти.
Алгоритми тестування простоти числа можуть бути, зокрема,
імовірнісними алгоритмами розпізнавання мови з односторонньою
помилкою. Задача розпізнавання формулюється наступним чином. Нехай
дано п∈Ν. Потрібно визначити, чи є п простим числом.
Варто зауважити, що розв’язок даної задачі не вимагає розкладання
числа п∈Ν на прості множники; потрібно лише визначити, чи є дане
число простим.
Перший алгоритм, який має відношення до тестування простоти, було
винайдено понад дві тисячі років тому, він носить назву "решето
Ератосфена". Більш точно, решето Ератосфена – це процедура, яка
дозволяє знайти список всіх простих чисел в межах від 1 до деякого
заданого п. Коли початковий відрізок простих чисел вже знайдено, то
наступне просте число визначається за критерієм: п – просте тоді і тільки
тоді, коли воно не ділиться на жодне з передуючих йому простих чисел.
Процедура просіювання через решето Ератосфена зводиться до
наступної:
викреслюємо всі парні, починаючи з 4;
викреслюємо 32 і всі числа, кратні до 3;
викреслюємо 52 і всі числа, кратні до 5;
………………..
викреслюємо s2 і всі числа, кратні до s, де s – перше з не викреслених
чисел, що залишилися;
і т.д. до числа п.
Всі числа, які залишаються не викресленими – це прості числа, не
більші за п.

Наступний алгоритм тестування простоти базується на тому факті, що

всі дільники числа п не більші за n .


2
Алгоритм тестування простоти.
Вхід алгоритму: п > 1.
Присвоїмо змінній l значення 2;

1) якщо l > n [ 2 ], то роботу алгоритму закінчено і видається

відповідь, що п – просте число;

2) якщо l ≤ n[ 2 ] і l|п, то роботу алгоритму закінчено і п – складене


число;

3) якщо l ≤ n [ 2 ] і l не ділить п, то збільшуємо l на одиницю і


повертаємося до перевірки умови 1).

Зрозуміло, що даний алгоритм є експоненційним ( ≈ n кроків).


2
Проте, якщо п – складене число, то алгоритм може спрацювати достатньо
швидко.

Зауваження 10.1: умову l > n [ 2 ] в алгоритмі можна замінити на


умову l > n . Дійсно, якщо п – складене число, то один з його простих

дільників обов’язково буде меншим за l > n . При цьому кількість кроків


алгоритму суттєво зменшиться, проте він все одно залишиться
експоненційним.

Найкращий з сучасних детермінованих алгоритмів тестування


простоти, так званий метод числового решета, має оцінку часу роботи
О((log n)c log log log n
), де п – складене число, для деякої константи с.
Алгоритм є ефективним на практиці і дозволяє розпізнати простоту чисел,
що мають близько 100 цифр у десятковому записі.
На сьогоднішній день найшвидшими та найпростішими, а тому і
найпопулярнішими алгоритмами тестування простоти є імовірнісні
поліноміальні алгоритми розпізнавання мови з односторонньою
помилкою. Для побудови та обґрунтування таких алгоритмів нам треба
ознайомитись з поняттям псевдопростого числа та з властивостями
псевдопростих чисел.

10.2. Псевдопрості числа: означення та властивості.

Імовірнісні алгоритми тестування простоти базуються на певних


властивостях, що завжди притаманні простим числам, а складеним – лише
з деякою (невеликою) імовірністю. Використовуються такі властивості
простих чисел, як мала теорема Ферма, критерій Ойлера, лема 6.13.
Імовірнісні тести полягають в тому, що виконується перевірка: чи володіє
дане число певною властивістю, чи ні. Якщо число просте, то алгоритм не
помиляється, якщо ні – помиляється з деякою імовірністю. Зрозуміло, що
найкращими є алгоритми, в яких імовірність помилки якомога менша.

Нагадаємо, що, за малою теоремою Ферма, якщо р – просте число, то

x p −1 ≡ 1 mod p . Якщо для перевірки числа п на простоту використовувати


малу теорему Ферма, то виникає питання про те, яка імовірність помилки
такого алгоритму.
Означення 10.2: непарне натуральне складене число п називається

псевдопростим числом Ферма за основою х, якщо x n −1 ≡ 1 mod n .


Кожне складене число п є псевдопростим Ферма принаймні за двома
основами – 1 і п – 1. Крім того, існують складені числа, які є
псевдопростими Ферма за всіма основами, взаємно-простими з ними. Це
так звані числа Кармайкла. Найменшим з них є 561 = 3·11·17. Отже,
використання малої теореми Ферма для побудови імовірнісного тесту
простоти неможливе, оскільки імовірність помилки такого тесту (для
досить великих чисел) близька до одиниці.
Розглянемо деякі властивості чисел Кармайкла.
Твердження 10.3 (властивості чисел Кармайкла):
1) число Кармайкла є вільним від квадратів;
2) число Кармайкла є добутком не менш ніж трьох простих чисел;
3) нехай п = р1 … рl, де рі – прості числа. Тоді п – число Кармайкла
тоді і тільки тоді, коли рі – 1 ділить п – 1 для всіх і від 1 до l.

Розглянемо наступну властивість простих чисел: за критерієм Ойлера,

якщо п – непарне просте число, то для всіх x ∈ Z n* виконується

конгруенція:
n −1
⎛ x ⎞ 2
⎜ ⎟ ≡ x mod n . (10.1)
⎝ n ⎠

Означення 10.4: непарне натуральне складене число п називається


псевдопростим числом Ойлера за основою х, якщо виконується
конгруенція (10.1).
Зауваження 10.5: якщо число п – псевдопросте Ойлера за основою х,
то воно є також псевдопростим Ферма за основою х, але не навпаки.
Зокрема, числа Кармайкла не є псевдопростими числами Ойлера за всіма
основами.

З леми 6.13 випливає, що в полі Z p , де р – просте, рівняння х2 = 1 має

рівно два розв'язки: 1 і р – 1, останній з них часто для зручності записують

як -1 ( де -1 розуміється як елемент Z p* , протилежний відносно операції

додавання до елементу 1). З наведеного твердження випливає наступна


властивість простих чисел. Нехай п – непарне просте, п – 1 = 2st, t –

непарне. Для x ∈ Z n* розглянемо наступну послідовність

s
xt mod n, x 2t mod n, x 4t mod n, ...x 2 t mod n . (10.2)

За малою теоремою Ферма, останній член цієї послідовності дорівнює


1. Тоді, за лемою 6.13, виконується одна з наступних умов:

або x t ≡ ±1 mod n ,
(10.3)
j
або ∃j (1 ≤ j < s) : ( xt ) 2 ≡ −1 mod n .
Означення 10.6: непарне натуральне складене число п називається
сильно псевдопростим числом за основою х, якщо в наших позначеннях
виконується одна з умов у (10.3).
Властивість (10.3) також використовується для побудови
імовірнісного алгоритму тестування простоти.
Для того, щоб безпосередньо перейти до побудови тестів простоти,
нам необхідно дві наступні теореми.
Теорема 10.7: для непарного числа п≥3 позначимо
n −1
x ⎞
mod n} . Якщо п – складене, то S n ≤ ϕ(n) 2 .
⎛
Sn = {x ∈ Z n*:⎜ ⎟ ≡ x 2
⎝ n ⎠
Доведення: з властивостей символу Якобі випливає, що S n –

підгрупа в Z n* . Покажемо, що вона не співпадає з Z n* , тобто

∃y ∈ Z n*\S n .
Випадок 1. Нехай n = p1·…·pk – розклад числа п на різні прості

множники (тобто п вільне від квадратів). Виберемо в Z p * квадратичний


1

нелишок s. Тоді, за Китайською теоремою про лишки,

⎧ y ≡ s mod p1
Z n* ≅ Z*p1 × Z*p2 ...p k та ∃! y ∈ Z*n: ⎨ .
⎩ y ≡ 1mod p2...pk
Для такого у виконується:

⎛ y ⎞ ⎛ y ⎞⎛⎜ y ⎞ ⎛ s ⎞⎛ 1
⎟⎟ = ⎜⎜ ⎟⎟⎜⎜
⎞
⎟⎟ = (−1) ⋅ 1 = −1.
⎜ ⎟ = ⎜⎜ ⎟⎟⎜
⎝ n ⎠ ⎝ p1 ⎠⎝ p2 ... pk ⎠ ⎝ p1 ⎠⎝ p2 ... pk ⎠

n−1
Проте умова y 2 ≡ (−1)(mod n) не може виконуватись, оскільки тоді б
n−1
мало місце співвідношення y 2 ≡ (−1) mod( p2 ... pk ) , що призводить до
суперечності з вибором у. Отже, у – шукане.
Випадок 2. Нехай існує таке просте число р, що р2⎪п. Тоді покладемо

y = 1+ n . Тоді якщо q⎪п і q – просте число, то


p

⎛ y ⎞ ⎛ y mod q ⎞ ⎛ 1 ⎞
⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟ = 1, оскільки q⎪( n ).
⎝ q ⎠ ⎝ q ⎠ ⎝ q ⎠ p

⎛ y ⎞
Таким чином, ⎜ ⎟ = 1 , за означенням символу Якобі.
⎝ n ⎠
Проте

( n−1)
n−1 n−1 2(( n −1) 2 )! ⎛ n ⎞ n −1
y 2 mod n = (1 + n ) 2 mod n = ∑ ⎜ p ⎟! mod n = 1 + ×
p ( n −1) 2
i = 0 i!( 2 − i )!
⎝ ⎠

n
× mod n ≠ 1 mod n .
p

Отже, у – шукане.

Таким чином, ми показали, що S n – власна підгрупа в Z n* , і,

оскільки її порядок ділить ϕ(п), то для деякого натурального k

S n = ϕ(n) ≤ ϕ(n) . Теорему доведено.


k 2
Наслідок 10.8: непарне натуральне складене число п є псевдопростим

Ойлера не більше, ніж за половиною основ з Z n* .

Теорема 10.10: непарне натуральне складене число п є сильно

псевдопростим не більше, ніж за четвертою частиною основ з Z n* .


Доведення даної теореми є досить складним і громіздким і тут не
наводиться.

10.3. Імовірнісні алгоритми тестування простоти.

На теоремах 10.7, 10.10 базується коректність наступних двох


імовірнісних тестів простоти.

Тест Соловея –Штрассена.


Вхід: n – непарне число.
1. Вибрати випадкове x∈[1, n – 1].
2. Якщо (x, n) ≠ 1, то припинити роботу тесту з висновком "п –
складене", інакше продовжити роботу.
n −1
⎛ x ⎞
3. Якщо ⎜ ⎟ ≠ x 2 mod n , то припинити роботу тесту з висновком "п
⎝ n ⎠
– складене", інакше зупинитись з резолюцією "n – просте".

Аналіз роботи тесту.


1. Коректність. Тест стверджує, що вхід n є простим числом для
n −1
⎛ x ⎞ 2
таких і лише таких х, що (x, n) = 1 і ⎜ ⎟ = x mod n .
⎝ n ⎠
Якщо п – просте, то для всіх x∈[1, n – 1] справедливі обидві рівності
(перша – за означенням простого числа, друга – за критерієм Ойлера).
Отже, просте п витримує тест з імовірністю 1.
Якщо п – складене число, то вказані дві умови справедливі для всіх
х∈Sn, і лише для них. Отже, складене п не витримує тест з імовірністю
Sn ϕ(n) 1
≤ < .
n − 1 2(n − 1) 2
Таким чином, тест Соловея-Штрассена є тестом розпізнавання
простих чисел з односторонньою помилкою, не більшою за 1/2.
2. Ефективність. Перевірка всіх умов тесту може бути здійснена

⎛ x ⎞
ефективно: (x,n) обчислюється за допомогою алгоритму Евкліда, ⎜ ⎟ – за
⎝ n ⎠
n −1
алгоритмом з § 9, а x 2 mod n обчислюється за допомогою схеми
Горнера. Всі вказані алгоритми виконують О(log n) операцій ділення з

остачею чи множення в Z n* . Оскільки ці операції виконуються за час

О(log2 n), час роботи тесту є О(log3 n), тобто тест є поліноміальним.

Зауваження 10.11: імовірність помилки тесту можна знизити до 2–k,


повторюючи його k разів. Проте це призведе до збільшення в k разів його
часу роботи. Але при цьому тест залишається поліноміальним з тим же
часом роботи О(log3 n).

Тест Міллера-Рабіна.

Вхід: n – непарне число, n − 1 = 2 s t , t – непарне.


1. Вибрати випадкове x∈[1, n – 1].
2. Якщо (x, n) ≠ 1, то припинити роботу тесту з висновком "п –
складене", інакше продовжити роботу.

3. Обчислити y0 = xt mod n .

4. Якщо y0 ≡ ±1(mod n) , то припинити роботу з висновком "п –

просте", інакше продовжити роботу.


5. Обчислювати y j = y 2j −1 mod n , доки не виявиться, що j = s – 1 або

y j ≡ ±1(mod n) для деякого j < s – 1.

6. Якщо y j ≡ −1(mod n) , то припинити роботу з висновком "п –

просте", інакше (при y j ≡ 1(mod n) або при j = s – 1) припинити роботу з

висновком "п – складене".

Аналіз даного тесту проводиться аналогічно до аналізу тесту


Соловея-Штрассена. Час роботи даного тесту оцінюється О(log3 n).
Помилка тесту однобічна і, внаслідок теореми 6 § 9, не більша за 1/4.
Повторенням тесту k разів помилка зменшується до (1/4)k, при цьому
порядок часу роботи не змінюється.
ЗАДАЧІ ДО §10

1*. Довести властивості чисел Кармайкла (твердження 10.3).


2*. Нехай n = pq , де p, q – різні прості. Довести:

x n −1 ≡ 1 mod n ⇔ x d ≡ 1 mod n , де d = ( p − 1, q − 1) . Виразити через d


кількість основ, за якими п є псевдопростим Ферма.
(Вказівка: спочатку показати, що n − 1 ≡ p − 1mod(q − 1) ,
n − 1 ≡ q − 1mod( p − 1) ).
3. Довести: п – псевдопросте Ойлера за основою х ⇒ п –
псевдопросте Ферма за основою х.
4*. Нехай n ≡ 3 mod 4 . Довести: п – сильно псевдопросте за основою х
⇔ п – псевдопросте Ойлера за основою х.
5. Перевірити, чи є 91 псевдопростим Ферма та Ойлера за основою 3.
6. Знайти всі х, за якими є псевдопростими Ферма число 11 та число
15. За якими із знайдених основ вони також є псевдопростими Ойлера?
Сильно псевдопростими?
7. Написати програму для знаходження найменшого псевдопростого
Ферма за основами 5 і 2.
8. Довести: основи, за якими п є псевдопростим (Ферма, Ойлера),

утворюють підгрупу в Z n* .

9. Перевірити, що число 65 є сильно псевдопростим за основами 8 та


18, але не є сильно псевдопростим за основою 14 = 8×18 mod 65. (Звідси,
зокрема, випливає, що сильно псевдопрості числа не утворюють групу
відносно операції множення за відповідним модулем.)
10. Довести, що якщо п не є числом Кармайкла, то воно псевдопросте
не більш, ніж для половини основ з Z n* .

11. Довести, що будь-яке складене непарне число завжди буде


псевдопростим Ферма, Ойлера та сильно псевдопростим за основами 1 та
-1.
§11. ОЗНАЧЕННЯ ДИСКРЕТНОГО ЛОГАРИФМУ
АЛГОРИТМ ЗНАХОДЖЕННЯ ДИСКРЕТНОГО
ЛОГАРИФМУ У МУЛЬТИПЛІКАТИВНІЙ ГРУПІ
СКІНЧЕНОГО ПОЛЯ ZP

Нехай р – просте число, g – утворюючий елемент Zp*.


Для будь-якого 1 <у < p – 1 ми можемо легко обчислити х = gу mod р,
за допомогою поліноміального алгоритму (методом бінарного піднесення
до степеня).
Проте набагато складніше розв’язати обернену задачу: якщо відомі g,
х, р, знайти таке у, що gу ≡ х (mod р). Така задача називається задачею
дискретного логарифмування.
Означення 11.1: в наших позначеннях, число у називається
дискретним логарифмом числа х за основою g (і модулем р), якщо
gу ≡ х (mod р). Для дискретного логарифму використовується позначення
у = ind(x, g, p), або у = ind(x, g) = indg(x), якщо зрозуміло, про який модуль
іде мова.
За наслідком 6.4 з теореми Ойлера, якщо gу ≡ х (mod р) і для деякого

у1 виконується у ≡ у1 (mod (р – 1)), то g y1 ≡ х (mod р). Тому заради


однозначності вважатимемо, що 0 ≤ ind(x, g) < p – 1.
На сьогоднішній день задача дискретного логарифмування
вважається, в загальному випадку, складною. Алгоритми дискретного
логарифмування є субекспоненційними, час їх роботи приблизно такий, як
і в алгоритмів, що розв’язують задачі факторизації.
Означення дискретного логарифму можна ввести в будь-якій
циклічній групі, проте ми будемо вивчати знаходження дискретного
логарифму в лише в групі Z*p . В цьому випадку при деяких додаткових

обмеженнях на модуль р задача дискретного логарифмування все ж таки


може бути розв’язна за поліноміальний час. Алгоритми, що розв’язують
задачу дискретного логарифмування, використовуючи додаткову
інформацію про структуру циклічної групи або про вид числа р,
називаються спеціальними. Алгоритми, що можуть бути застосовані для
розв’язування задачі дискретного логарифмування у будь-якій циклічній
групі, називаються загальними. На сьогоднішній день відомі лише
експоненційні загальні алгоритми розв’язку цієї задачі.
Означення 11.2: натуральне число а назвемо s-гладким, якщо всі його
прості дільники не перевищують s.
Твердження 11.3: нехай число р – 1 є s-гладким, s – його найбільший
простий дільник. Тоді існує алгоритм розв’язку задачі дискретного

логарифмування у групі Z*p , час роботи якого обмежено поліномом від

max{s, log p}.

Алгоритм Сільвера – Поліга – Хеллмана.

Вхід: x, g, p∈N, р – просте число, (х, р) = 1, g – генератор Z*p .

Вихід: у = ind(x, g, p).


Алгоритм працює наступним чином.
Розкладаємо р – 1 на прості множники. Оскільки за умовою дільники
р – 1 не перевищують s, то це займе не більше s·log p операцій ділення.

Нехай p − 1 = ∏ q α , де q – прості дільники числа р – 1.


q |( p −1)

Показник степеню у будемо знаходити наступним чином. Для


кожного простого числа q, яке ділить р – 1, знайдемо лишок у·mod qα.
Після цього у легко відновлюється за Китайською теоремою про лишки.
Отже, для деякого q з розкладу р – 1, розглянемо
α −1
y mod q α = y0 + y1q + y2 q 2 + ... = ∑ yi qi mod qα , де у правій частині
i =0
α
записано розклад у·mod q у q-ічній системі числення.

Нам необхідно визначити послідовність {yi }iα=−01 , утворену

коефіцієнтами розкладу. Запишемо y = y mod q α + z ⋅ q α ; тоді

p −1
( y − y mod q i ) ≡
qi +1
α −1 p −1
≡ ( ∑ yl q l + zq α ) i +1
(mod( p − 1)) ≡ yi ⋅ p − 1 (mod( p − 1),) i = 0, α − 1 .
l =i q q

Звідси, з використанням малої теореми Ферма для модуля р і


p −1
( y − ( y mod q i )) yi
p −1
qi +1
утворюючого елемента g: g ≡g q
(mod p ).
Перепишемо цей вираз у більш зручному вигляді:

p −1
−1 ⎤ qi +1 yi
⎡ ⎛ y mod q i ⎞ ⎛ p−1 ⎞
⎢ x⎜ g ⎟ ⎥ ≡ ⎜⎜ g q ⎟⎟ (mod p ). (11.1).
⎢⎣ ⎝ ⎠ ⎥⎦ ⎝ ⎠

Знайдемо з останнього виразу у 0, поклавши і = 0:

p −1 y0
⎛ p −1 ⎞
x q
≡ ⎜⎜ g q ⎟⎟ (mod p ).
⎝ ⎠
p −1 p −1
Обчислюємо x q , q і починаємо шукати у0 з останньої рівності
g
методом перебору. Нам відомо, що 0 ≤ у0 ≤ q – 1, отже кількість кроків
перебору не перевищує q – 1 (що, в свою чергу, не перевищує s).
p −1 p −1
Піднесемо g q до степеня j: q .
j = 0, q − 1, і порівняємо з x Для

відповідного j: у0 = j.
Після цього можна аналогічним перебором з (11.1) знайти у1,
поклавши і = 1:

p −1 yi
y mod q −1 ⎤ q 2 ⎛ p −1 ⎞
⎡
(
⎢⎣ x g ) ⎥⎦ ≡ ⎜⎜ g q ⎟⎟ (mod p );
⎝ ⎠
p −1 p −1 y
⎛ p −1 ⎞ 1
q 2 ⎛ y0 −1 ⎞ q 2
y mod q = y0 ⇒ x ⎜
⎝
( )
g ⎟
⎠
⎜ q ⎟
≡ ⎜ g
⎜
⎟ (mod p ).
⎟
⎝ ⎠

Поетапно обчислюємо всі елементи послідовності {yi }iα=−01 та

знаходимо у·mod qα.


Аналогічно проводимо описану процедуру для всіх простих чисел q,
які є дільниками р – 1.
Після того, як знайдено у mod qα для всіх простих дільників числа
р – 1, у відновлюється з системи порівнянь за Китайською теоремою про
лишки.
Метод Сільвера-Поліга Хеллмана є поліноміальним детермінованим
спеціальним алгоритмом, тобто пристосованим до групи зі спеціальною
структурою. Субекспоненційні алгоритми, що відомі на сьогоднішній
день, також є спеціальними – наприклад, найшвидший з алгоритмів, так
званий "метод квадратичного решета". Також існує багато
експоненційних, імовірнісних та детермінованих, загальних методів
дискретного логарифмування (тобто придатних для роботи у довільній
циклічній групі). Найпоширенішими з них є метод Шенкса
(детермінований, експоненційний), який ще називають "Giant Step – Baby
Step", та методи Полларда (імовірнісні, експоненційні).
ЗАДАЧІ ДО §11

1. Обчислити ind(11, 2, 13); ind(25, 2, 37); ind(6, 5, 97).

2. Нехай g 1, g2 – утворюючі елементи Z*p . Довести:

log g1 x = log g1 g2 ⋅ log g 2 x . Використовуючи дану рівність, показати, що

задача дискретного логарифмування за всіма основами зводиться до задачі


логарифмування за будь-якою однією основою.

3. Нехай gp, gq – утворюючі елементи Z*p та Z*q , відповідно. Чи вірно,

що (gp, gq) – утворюючий елемент Z*p × Z*q ? (Зокрема, звідси б випливало,

що група Z*pq – циклічна.)

4. Нехай G1, G2 – циклічні групи, ⎢G1⎢ = d1, ⎢G2⎢ = d2, (d1, d2) = 1.
Довести, що група G1×G2 – циклічна. Чи вірно зворотне твердження, тобто
що якщо G1×G2 – циклічна, то (d1, d2) = 1?
§12. ВАЖКООБОРОТНІ ФУНКЦІЇ, ЯДРО, ПРЕДИКАТ.
ЗАСТОСУВАННЯ ВАЖКООБОРОТНИХ ФУНКЦІЙ
У КРИПТОГРАФІЇ.
КЛАСИЧНІ АСИМЕТРИЧНІ КРИПТОСИСТЕМИ

12.1. Важкооборотні функції. Предикат, ядро важкооборотної


функції.

Нехай А – алфавіт, А* – множина слів даного алфавіту А, D ⊂ А*,


f: D → D.
Без обмеження загальності надалі будемо вважати, що D = {0, 1}n для
деякого п або є підмножиною {0, 1}n.
Означення 12.1: функція f називається односторонньою або
важкооборотною, якщо:
- ∀x ∈ D значення f(х) може бути ефективно обчислено;
- для більшості аргументів х∈D не існує ефективного
(поліноміального) алгоритму для обчислення за образом у = f(х) значення
х′ такого, що f(х′) = у.
Зауваження 12.2: слова "для більшості" означають, що можна обрати
декілька значень х та запам’ятати відповідність між образами та
прообразами: f(х1) = у1, f(х2) = у2,..., f(хr) = yr. Зрозуміло, що в такому
випадку для у1,..., yr прообрази легко обчислити.
Прикладом односторонньої функції може бути телефонна книга
знайти номер телефону за прізвищем легко, а знайти прізвище власника
телефону, знаючи його номер, досить важко.
Більш формально означення 12.1 можна переформулювати наступним
чином.
Означення 12.3: функція f(х) називається важкооборотною, якщо:
1) ∀x ∈ D( f ) f(х) обчислюється за поліноміальний час;

2) будь-який поліноміальний імовірнісний алгоритм з входом у = f(х)


для випадково вибраного х∈{0, 1}n знаходить якийсь з прообразів у з
імовірністю, що для досить великих п не перевищує 1 n . (імовірність тут

поширюється на випадковий вибір слова х∈{0, 1}n та на випадкову


послідовність імовірнісного алгоритму).
Варто зауважити, що існують різні варіанти означення
важкооборотної функції.
На сьогоднішній день ні для якої конкретної функції не доведено, що
вона є важкооборотною. Але існують функції, які гіпотетично вважаються
такими та успішно застосовуються на практиці. Тому інколи замість
терміну "важкооборотна функція" вживають термін "претендент у
важкооборотні функції".

Приклади 12.4 (важкообортні функції).


(1) Функція множення: MULT(x, y) = xy.
MULT: {0, 1}n×{0, 1}n→{0, 1}2n (не існує поліноміального алгоритму
розкладання на множники).
(2) RSA-функція: RSA(x, e, m) = <xe mod m, e, m>.
Функція визначена для параметрів m = pq, де p ≠ q – прості числа і
(е, φ(т)) = 1, х∈Zm.
При фіксованих e, m це бієкція Zm→Zm, або перестановка множини
Z m.
(3) Функція Рабіна (квадратична функція):
SQUARE(x, m) = <x2 mod m, m>.
Визначена для m = pq, де p ≠ q – прості Блюма, і х∈Zm. Для
фіксованого т це є бієкція на Qm.
(4) Експоненційна функція: EXP(x, g, p) = <gx mod p, g, p>.
Визначена для довільного простого р і утворюючого елемента g за

модулем p, х∈ Z*p . Для фіксованих g, p це бієкція на Z*p .

Функції RSA та Рабіна є претендентами у важкооборотні функції з


секретом: знання p і q дає можливість ефективно знаходити прообрази
функцій.
Окрім криптографічних застосувань, важкооборотні функції можуть
використовуватись при зберіганні образу паролю користувача в
комп’ютері.

Нехай f: D→D – бієкція (наприклад, RSA, SQUARE, EXP) і може бути


ефективно обчислена. Позначимо В: D→{0, 1} – "предикат", тобто
ефективно обчислювана функція, значенням якої є деякий біт В(х).
Якщо у = f(х), тоді у однозначно визначає В(х), оскільки f – бієкція.
Проте це не означає, що при відомому у можна легко обчислити В(х).
Означення 12.5: якщо не існує ефективного алгоритму, який для
майже всіх х∈D за заданим f(х) видає В(х), то предикат В називається
ядром функції f.
Інакше кажучи, якщо предикат В є ядром функції f, то при відомому х
легко обчислюються значення f(х) та В(х), проте, знаючи лише f(х), важко
обчислити В(х).
Звернемо увагу на той факт, що з того, що f – важкооборотна, ще не
випливає, що будь-який предикат є ядром (наприклад, предикат В(х) ≡ 1
не є ядром ні для якої функції; далі будуть розглянуті більш складні
приклади).
Зауваження 12.6: якщо функція f має ядро, то вона важкооборотна.
Дещо формалізуємо введене поняття ядра.
Нехай Dn – послідовність множин, для якої n = ⎡log || Dn ||⎤.

Означення 12.7: поліноміально обчислюваний (за п) предикат


В: Dn→{0, 1} називається ядром функції f: Dn→Dn, якщо для довільної
додатної константи с існує таке (достатньо велике) натуральне число N,
що для всіх п ≥ N будь-який поліноміальний імовірнісний алгоритм на
вході f(х), де х – випадковий елемент з Dn, видає значення В(х) з
1 1
імовірністю, меншою за + .
2 nc
Тут імовірність береться як за випадковим вибором х, так і за
випадковою послідовністю імовірнісного алгоритму.
Еквівалентним є наступне формулювання:

1 1
∀c > 0 ∃N ∀n > N : P{A( f ( x)) = B( x)} − ≤ .
2 nc

Зауваження 12.8: з означення 12.7 випливає, що не існує кращого


способу отримати В(х) за f(х), ніж просто обирати це значення випадково
навмання.
Для наведених у прикладах важкооборотних функцій в якості ядра
вибрано такі предикати:
RSA: Zm→Zm, при фіксованих е, т: В(х) = х mod 2 – предикат парності.
SQUARE: Qm→Qm, при фіксованому т, В(х) = х mod 2 – предикат
парності.

EXP: Z*p → Z*p , де g, p – фіксовані,

⎧⎪0, якщо x ≤ p −1 ,
B( x) = ⎨ 2
⎪⎩1, в протилежному випадку.
12.2. Застосування важкооборотних функцій для побудови
криптосистем імовірнісного шифрування.

Нехай f – важкооборотна функція з секретом (наприклад, RSA).


Припустимо, що існує алгоритм, який видає елемент х, рівномірно
розподілений на D.
Розглянемо предикат В': Dn→{0, 1}n, В'(у) = В(f –1
(у)), тобто якщо
у = f(х), то В'(у) = В(х). Тоді, якщо f – важкооборотна функція з секретом,
то В'(у) має такі властивості:
1) будь-який імовірнісний поліноміальний алгоритм на випадковому
вході у∈Dn видає правильне значення В'(у) з імовірністю, не кращою за
1 1
+ ;
2 nc
2) знання секрету дозволяє легко обчислити В'(у) для будь-якого
у∈Dn;
3) існує поліноміальний алгоритм, який, отримавши на вхід деякий біт
b і слово 1п, видає елемент у∈Dn, рівномірно розподілений на множині
{y ∈ Dn : B' ( y) = b}.
Властивість 3) виконується завдяки тому, що f – бієкція. Алгоритм
вибирає випадковий елемент х∈Dn і якщо В(х) = b, то подає на вихід
у = f(х), а інакше пробує інший випадковий х.
Означення 12.9: предикатом із секретом називається предикат В' із
властивостями 1) – 3).
Якщо функція має предикат із секретом, можна побудувати наступні
алгоритми "імовірнісного шифрування".
Загальний вид алгоритму імовірнісного шифрування. Нехай f –
важкооборотна функція з секретом, М = т1т2…тk – двійкове
повідомлення (відкритий текст). Для отримання шифротексту для кожного
і ≤ k вибираємо уі∈Dn таке, що В'(уі) = В(f –1(уі)) = ті. Шифротекстом буде
послідовність у1у2…уk.
Надійність такої системи забезпечується завдяки умові 1), причому п
виступає параметром надійності (тобто складність розшифрування
збільшується із зростанням п). Відкритим ключем такої криптосистеми є
дані, потрібні для специфікації алгоритму з пункту 3). Таємний ключ
складається із параметрів для обчислення предикату В' (фактично, це і є
"секрет"), яке здійснюється при розшифруванні. Існування цих параметрів
забезпечується умовою 2).

Криптосистема Блюма. Ще одним прикладом системи імовірнісного


шифрування є так звана криптосистема Блюма.
Нехай М = т1т2…тk – двійкове повідомлення.
Виберемо деякі прості числа p і q, що є числами Блюма, та обчислимо
т = pq. Знайдемо будь-який псевдоквадрат у∈Zт*, тобто такий елемент,

⎛ y ⎞
що ⎜ ⎟ = 1 , але у – квадратичний нелишок за модулем т:
⎝ m ⎠
⎛ y ⎞ ⎛ y ⎞
⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟ = −1.
⎝ p ⎠ ⎝ q ⎠
Обчислимо елементи уі, i = 1, k , наступним чином:

- якщо ті = 1, обираємо довільне х∈Zт* і замість ті записуємо


уі = ух2modm – це "псевдоквадрат";
- якщо ті = 0, записуємо уі = х2 modm– це квадратичний лишок.
Шифротекстом буде послідовність у1у2…уk.
Якщо відомі p і q, то легко перевірити, чи є певне число уі
квадратичним лишком. Якщо p і q невідомі, визначити квадратичність уі
неможливо, оскільки для всіх уі символи Якобі будуть рівні одиниці.

12.3. Застосування односторонніх функцій для побудови


класичних асиметричних криптосистем.

Як і для алгоритму імовірнісного шифрування, побудова класичних


асиметричних систем базується на існуванні важкооборотних функцій, а
саме функцій (1)-(4) з прикладу 12.4.
Класичні асиметричні алгоритми за призначенням можна поділити на
наступні основні типи:
алгоритми обміну ключами;
алгоритми шифрування;
алгоритми цифрового підпису;
алгоритми доведення без розголошення.
Далі ми розглянемо приклади алгоритмів кожного типу.

12.3.1. Протокол відкритого обміну ключами Діффі-


Х е л л м а н а . Застосовується для формування, шляхом обміну відкритими
повідомленнями, спільного секретного ключа абонентів А і В,
призначеного для використання в деякому симетричному алгоритмі
шифрування. Його стійкість базується на припущенні про
важкообортність функції EXP, або, іншими словами, на складності задачі
дискретного логарифмування.

Формування параметрів протоколу


Один з абонентів (за домовленістю) вибирає випадкове просте число p
і обчислює g – будь-який утворюючий елемент групи Z∗p .

Елементи p, g є відкритими параметрами протоколу.


Встановлення спільного ключа
Абонент А обирає випадкове число x ∈ Z p −1, обчислює

K1 = g x mod p і надсилає значення K1 абоненту В.


Абонент В обирає випадкове число y ∈ Z p −1, обчислює

K 2 = g y mod p і надсилає значення K 2 абоненту А.


На цьому обмін повідомленнями закінчено. Абонент А обчислює
спільний ключ за формулою

K = ( K 2 ) x mod p , (12.1)

а абонент В, відповідно, за формулою

K = ( K1 ) y mod p . (12.2)

12.3.2. Асиметричні системи шифрування. На початку


знайомства з асиметричними криптосистемами шифрування і цифрового
підпису слід зазначити наступне. Всі параметри системи, а також
відкритий та секретний ключі, формує сторона, що буде отримувати
шифровані повідомлення або надсилати підписані повідомлення (сторона
А), або центр сертифікації ключів, у такий спосіб, щоб виключити доступ
сторонніх осіб до всіх проміжних обчислень та таємного ключа.
Сторонам, що будуть надсилати шифровані повідомлення або перевіряти
правильність цифрового підпису (надалі – В), відомий лише відкритий
ключ (шифрування або підпису) сторони А.

Система шифрування RSΑ (Райверст, Шамір, Аделман)


Стійкість даної системи базується на важкооборотності функції
MULT, або на складності задачі факторизації.

Формування ключів
Абонент А випадковим чином обирає два різних простих числа p і q,
та обчислює п = pq і ϕ(п). Далі обирає випадкове число е, менше за ϕ(п) та
взаємно просте з ϕ(п), і обчислює d = е–1 mod ϕ(п).
Відкритий ключ: (е, п).
Таємний ключ: d.
Зауваження: до чисел p і q, окрім довжини їх десяткового запису
(порядку 150-200 розрядів), існує ряд інших вимог, як-то: це числа Блюма,
p −1 q −1
, – прості, різниця між ними більша за деяку граничну
2 2
величину, тощо. Також існують певні вимоги до чисел е і d, на яких ми
зараз не будемо зупинятись для спрощення викладення.
Шифрування
Вважаємо, що відкритий текст М відповідає деякому десятковому
числу, меншому за п. В іншому випадку текст розбивається на блоки
відповідної довжини. Шифрування повідомлення М відбувається за
правилом
С = Ме mod п. (12.3)

Розшифрування шифротексту С відбувається за правилом


М = Сd mod п. (12.4)

Система шифрування Ель-Гамаля

Стійкість системи базується на складності задачі дискретного


логарифмування.

Формування ключів
Абонент А випадковим чином обирає просте число p і обчислює g –

деякий утворюючий елемент групи Z∗p . Потім випадково вибирає деяке

а < p – 1 і обчислює h = gа mod p.


Відкритий ключ: (p, g, h).
Таємний ключ: а.
Шифрування
Вважаємо, що відкритий текст М відповідає деякому десятковому
числу, меншому за p. В іншому випадку текст розбивається на блоки
відповідної довжини. Для шифрування абонент В обирає випадкове число
r < p – 1, обчислює u = gr mod p та v = Мhr mod p. Шифрованим текстом є
пара

С = (u, v). (12.5)

Розшифрування шифротексту С відбувається за правилом

М = v u–а mod p. (12. 6)


1 2 . 3 . 3 . С и с т е м и ц и ф р о в о г о п і д п и с у . Призначення систем
цифрового підпису полягає у підтвердженні авторства створеного
текстового документу.

Система цифрового підпису RSΑ

Формування ключів
Аналогічно до формування ключів у системі шифрування RSΑ.
Відкритий ключ (ключ перевірки) цифрового підпису: (е, п).
Таємний ключ підпису: d.
Формування і перевірка підпису
Вважаємо, що відкритий текст М відповідає деякому десятковому
числу, меншому за п. В іншому випадку до тексту застосовується деяке
вкорочуючи відображення з відповідною областю значень, що має певні
властивості і називається геш-функцією. Абонент А обчислює цифровий
підпис відкритого тексту М за правилом

S = Мd mod п (12.7)

і надсилає абоненту В пару (М, S).


Для перевірки цифрового підпису абонент В перевіряє виконання
рівності

М = Sе mod п. (12.8)

Якщо рівність виконується, підпис вважається справжнім, у


противному випадку – підробним.
Система цифрового підпису Ель-Гамаля

Формування ключів
Аналогічно до формування ключів у системі шифрування Ель-Гамаля.
Відкритий ключ (ключ перевірки) цифрового підпису: (p, g, h).
Таємний ключ підпису: а.
Формування і перевірка підпису
Вважаємо, що відкритий текст М відповідає деякому десятковому
числу, меншому за p. В іншому випадку до тексту застосовується геш-
функція. Для побудови цифрового підпису абонент А обирає випадкове

число r∈ Z∗p-1 і обчислює наступні величини:

s1 = g r mod p ; r ʹ′ = r −1 mod( p − 1) ; s2 = (M − as1 )rʹ′ mod( p − 1) .

Цифровим підписом повідомлення М є пара

S = (s1, s2 ) . (12.9)

Абонент А надсилає абоненту В підписане повідомлення (М, S).


Для перевірки цифрового підпису абонент В перевіряє виконання
рівності

g M = h s1 s1s2 (mod p) . (12.10)

Якщо рівність виконується, підпис вважається справжнім, у


противному випадку – підробним.
Система цифрового підпису Шнорра

Формування ключів
Абонент А випадковим чином обирає просте число p, таке, що p – 1
має великий простий дільник q. Також обирає число h ≠ 1, таке, що

h q ≡ 1 mod p . Потім вибирає випадкове число а < q – 1 і обчислює


v = h–а mod p.
Відкритий ключ (ключ перевірки) цифрового підпису: (p, g, h, v).
Таємний ключ підпису: а.
Формування і перевірка підпису
Для формування підпису обов’язково використовується деяке
вкорочуюче відображення (геш-функція) f з областю значень від 1 до q –
1. Для побудови цифрового підпису абонент А обирає випадкове число
r∈ Z q −1 і обчислює наступні величини:

X = h r mod p ; s1 = f (M || X ) ; s2 = (r + as1 )mod q .

Цифровим підписом повідомлення М є пара

S = (s1,s2 ). (12.11)

Абонент А надсилає абоненту В підписане повідомлення (М, S).


Для перевірки цифрового підпису абонент В обчислює величину

X ʹ′ = h s2 v s1 mod p та перевіряє виконання рівності


s1 = f (M || X ʹ′) . (12.12)

Якщо рівність виконується, підпис вважається справжнім, у


противному випадку – підробним.

Система цифрового підпису DSА


(Digital Signature Algorithm – використовувався у стандарті під назвою
DSS, запропонованому NIST у 1991 році)

Формування ключів
Абонент А випадковим чином обирає просте число p, таке, що p – 1

має великий простий дільник q. Також обирає число h ∈ Z∗p , таке, що

ord h ≡ q в Z∗p . Потім вибирає випадкове число а < q – 1 і обчислює


b = hа mod p.
Відкритий ключ (ключ перевірки) цифрового підпису: (p, g, h, b).
Таємний ключ підпису: а.
Формування і перевірка підпису
Для формування підпису в якості вкорочуючого відображення f
використовується геш-функція SHA з областю значень {0, 1}160. Для
побудови цифрового підпису абонент А обирає випадкове число r ∈ Zq −1

і обчислює наступні величини

r ʹ′ = r −1 mod q ; s1 = (h r mod p) mod q ; s2 = (r ʹ′( f (M ) + as1 )mod q . (12.13)

Цифровим підписом повідомлення М є пара


S = (s1, s2 ) . (12.14)

Абонент А надсилає абоненту В підписане повідомлення (М, S).


Для перевірки цифрового підпису абонент В обчислює величини

sʹ′ = s −1 mod q , u1 = ( f (M )sʹ′)mod q , u2 = (s1sʹ′)mod q ,

t = (hu1 bu2 mod p) mod q та перевіряє виконання рівності

t = s1 . (12.15)

Якщо рівність виконується, підпис вважається справжнім, у


противному випадку – підробним.

1 2 . 3 . 3 . П р о т о к о л д о в е д е н н я б е з р о з г о л о ш е н н я . У ході
протоколу доведення без розголошення Демонстратор (Д) має переконати
Перевіряючого (П) у тому, що він знає деяку конфіденційну інформацію,
але при цьому не надати Перевіряючому ніяких знань, що можуть бути
застосовані ним для отримання цієї інформації. Протоколи повинні мати
наступні властивості: повноти (чесний Демонстратор переконує
Перевіряючого з імовірністю 1); обґрунтованості (для нечесного
Демонстратора імовірність переконати Перевіряючого близька до 0) та
відсутності розголошення.

Доведення квадратичності

Загальні параметри: число п = pq, де p і q – два різних простих


числа, та число x ∈ Qn .
Мета: довести, що x ∈ Qn , та що Д знає таке y, y2 ≡ х mod n.

Доведення: Д вибирає випадковий елемент v ∈ Z∗n , обчислює

u = v 2 mod n і надсилає П значення и.


П обирає і надсилає Д випадковий біт b ∈ {0,1}.

⎧v, якщо b = 0,
Д надсилає П число w = ⎨
⎩vy, в іншому випадку.

Перевірка: П перевіряє виконання рівності ux b ≡ w2 mod n .


Описана процедура повторюється m = ⎡log n⎤ разів, щоразу з
незалежним вибором випадкових величин. Якщо кожного разу рівність
виконувалась, П вважає доведення переконливим.

Доведення неквадратичності

Загальні параметри: число п = pq, де p і q – два різних простих


~
числа, та число x ∈ Qn .
~
Мета: довести, що x ∈ Qn .

Доведення: П вибирає випадковий елемент v ∈ Z∗n , і випадковий біт

b ∈ {0, 1}, обчислює w = v 2 x b mod n і надсилає П значення w .


Д визначає, чи є w квадратичним лишком і надсилає П випадковий
біт bʹ′ = I {w ∈ Qn }.

Перевірка: П перевіряє виконання рівності b = bʹ′ .


Описана процедура повторюється m = ⎡log n⎤ разів, щоразу з
незалежним вибором випадкових величин. Якщо кожного разу рівність
виконувалась, П вважає доведення переконливим.
Доведення знання дискретного логарифму

Загальні параметри: просте число p, елемент g – деякий

утворюючий елемент групи Z∗p , h – деякий елемент групи Z∗p .

Мета: довести, що Д знає таке а < p – 1, що h = gа mod p.


Доведення: П вибирає випадковий елемент х < p – 1, обчислює

w = g x mod p і надсилає П значення w .

Д обчислює u = wa mod p і надсилає П значення и.

Перевірка: П перевіряє виконання рівності u = h x mod p . Якщо

рівність виконується, П вважає доведення переконливим.


ЗАДАЧІ ДО §12

1. Довести, що функція Рабіна є бієкцією на Qm , а функція RSA –

бієкцією на Z m .

2. Довести, що при p ≡ 1(mod 4) кількість парних квадратичних


лишків у Z p дорівнює кількості непарних.

3. Виходячи з припущення, що не існує поліноміального алгоритму


розпізнавання квадратичних лишків в Z m , довести, що предикат парності

є ядром для функції Рабіна.


4. Чи є предикат парності ядром функції дискретного піднесення до
степеня? Чому?
5. Нехай f e, m : Zm → Zm RSA-функція. Позначимо P( x) = x mod 2 ,

⎧ m
⎪0, 0 ≤ x < 2 ;
Q( x) = ⎨ Довести, що задачі обчислення предикатів
m
⎪1, < x ≤ m − 1.
⎩ 2

B1(e, m, y) = P( f e−, 1m ( y)) , B2 (e, m, y) = Q( f e−, 1m ( y)) поліноміально

еквівалентні.
7. Для кожного асиметричного алгоритму, наведеного у параграфі,
визначити, якими алгоритмами та за який час виконуються окремі кроки.
Чи будуть алгоритми поліноміальними?
8. Переконатись, що при коректному виконанні протоколу Діффі-
Хеллмана абоненти в результаті виконання перетворень (12.1) і (12.2)
дійсно встановлять спільний ключ.
9. Переконатись, що в результаті перетворень (12.3) та (12.4) дійсно
отримаємо відкритий текст М.
10. Переконатись, що алгоритми перевірки цифрового підпису є
коректними.
11. Переконатись, що протоколи доведення без розголошення мають
властивість повноти.
ЛІТЕРАТУРА

1. Кострикин А. И. Введение в алгебру. Основы алгебры. – М.: Наука,


1994. – 307 с.
2. Лидл Р., Нидеррайтер Г. Конечные поля: В 2-х т. / Пер. с англ. – М.:
Мир, 1988. – 822 с.
3. Коблиц Н. Курс теории чисел и криптографии. / Пер. с англ. – М.:
Научное изд-во ТВП, 2001. – 254 с.
4. Ван дер Варден Б. Л. Алгебра. / Пер. с англ. – М.: Наука, 1979. –
649 с.
5. Вербицький О. В. Вступ до криптології. – Львів: Видавництво
науково-технічної літератури, 1998. – 247 с.
6. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ
вычислительных алгоритмов. / Пер. с англ. – М.: Мир. 1979. – 534 с.
7. Гэри М, Джонсон Д. Вычислительные машины и труднорешаемые
задачи. / Пер. с англ. – М.: Мир, 1982. – 416 с.
8. Ван Тилборг Х.К.А. Основы криптологии. / Пер. с англ. – М.: Мир,
2006. – 471 с.
9. Математические компьютерные основы криптологии: Учеб.
пособие / Ю.С. Харин, В.И. Берник, Г.В. Матвеев, С.В. Агиевич – Мн.:
Новое знание, 2003. – 382 с.
10. Шнайер Б. Прикладная криптография. / Пер. с англ. – М.: Триумф,
2003. – 815 с.
ЗМІСТ
Вступ 3

§1 Основні означення та властивості алгебраїчних систем 5

Задачі до § 1 12

§2 Властивості циклічних груп 13

Задачі до § 2 19

§3 Кільця, поля, ідеали. Факторкільце по ідеалу 21

Задачі до § 3 27

§4 Характеристика кільця. Характеристика скінченного поля. 28


Факторкільця по різним ідеалам, їх властивості

Задачі до § 4 32

§5 Прості числа, НСД, НСК, Алгоритм Евкліда. Розклад на 34


прості множники. Основна теорема арифметики. Конгруенції
та їх властивості. Китайська теорема про лишки.

Задачі до § 5 44

§6 Подільність, факторизація. Застосування факторизації 45

Задачі до § 6 51

§7 Алгоритми та їх складність. Поліноміальні та експоненційні 53


алгоритми. Час роботи основних алгоритмів

Задачі до § 7 60

§8 Імовірнісні алгоритми. Алгоритми з оракулами. Порівняння 61


складності задач

Задачі до § 8 67

§9 Генератори та квадратичні лишки 69


Задачі до § 9 80

§ 10 Тестування простоти 82

Задачі до § 10 89

§ 11 Означення дискретного логарифму. Алгоритми знаходження 92


дискретного логарифму

Задачі до § 11 95

§ 12 Важкооборотні функції, ядро, предикат. Застосування 96


важкооборотних функцій. Класичні асиметричні
криптосистеми

Задачі до § 12 109

Література 111
Для нотаток

You might also like