
- •§1. Основні означення та властивості алгебраїчних систем
- •1.1. Алгебраїчні системи з однією операцією
- •1.2. Підгрупи, класи суміжності. Теорема Лагранжа
- •Питання для самоконтролю
- •Задачі до §1
- •§2. Властивості циклічних груп. Відображення груп
- •2.1. Властивості циклічних груп
- •2.2. Відображення груп. Нормальні підгрупи. Терема про ізоморфізм груп
- •2.3. Внутрішні автоморфізми групи та спряжені елементи
- •2.4. Нормалізатор множини. Центр групи
- •Питання для самоконтролю
- •Задачі до §2
- •§3. Алгебраїчні системи з двома операціями. Ідеал кільця, Факторкільце за ідеалОм
- •3.1. Означення та основні властивості кілець
- •3.2. Ідеал кільця. Факторкільце за ідеалом
- •3.3. Відображення кілець
- •Питання для самоконтролю
- •Задачі до §3
- •§4. Характеристика кільця, Характеристика скінченного поля. Факторкільця за різними ідеалами, їх властивості
- •4.1. Характеристика кільця, її властивості
- •4.2. Залежність властивостей факторкільця від ідеалу
- •Питання для самоконтролю
- •Задачі до §4
- •§5. Алгоритм Евкліда. Основна теорема арифметики. Конгруенції та їх властивості. Китайська теорема про лишки
- •5.1. Прості числа, нсд, нск. Розширений алгоритм Евкліда, його наслідки
- •5.2. Розклад на прості множники. Фундаментальна теорема арифметики
- •5.3. Конгруенції (порівняння) та їх властивості
- •5.4. Кільця лишків Zn, їх властивості
- •Питання для самоконтролю
- •Задачі до §5
- •§6. Подільність, факторизація. Застосування факторизації
- •6.1. Узагальнення Китайської теореми про лишки
- •6.2. Наслідки теореми Ойлера
- •6.3. Структура мультиплікативної групи скінченого поля
- •Питання для самоконтролю
- •Задачі до §6
- •§7. Алгоритми та їх складність. Поліноміальні та експоненційні алгоритми. Час роботи основних алгоритмів
- •7.1. Означення часу роботи алгоритму. Типи алгоритмів
- •7.2. Час роботи основних алгоритмів
- •1. Додавання двійкових чисел
- •2. Множення двійкових чисел
- •Питання для самоконтролю
- •Задачі до §7
- •§8. Імовірнісні алгоритми. Алгоритми з оракулами. Порівняння складності задач
- •8.1. Означення імовірнісного алгоритму. Типи імовірнісних алгоритмів
- •8.2. Алгоритми з оракулами
- •Питання для самоконтролю
- •Задачі до §8
- •§9. Квадратичні лишки та нелишки. Добування квадратного кореня у кільці лишків
- •9.1. Означення та властивості квадратичних лишків
- •9.2. Символ Лежандра та символ Якобі. Їх властивості та обчислення
- •3. Оскільки y' – непарне, то : .
- •9.3. Добування квадратного кореня
- •Питання для самоконтролю
- •Задачі до §9
- •§10. Псевдопрості числа. Тестування простоти
- •10.1. Найпростіші алгоритми тестування простоти
- •10.2. Псевдопрості числа: означення та властивості
- •10.3. Імовірнісні алгоритми тестування простоти
- •Питання для самоконтролю
- •Задачі до §10
- •§11. Означення дискретного лОгАриФму. Алгоритм знаходження дискретного логарифму у мультиплікативній групі скінченНого поля Zp
- •Питання для самоконтролю
- •Задачі до §11
- •§12. Важкооборотні функції, Ядро, Предикат. Застосування важкооборотних функцій у криптографії. Класичні асиметричні криптосистеми
- •12.1. Важкооборотні функції. Предикат, ядро важкооборотної функції
- •12.2. Застосування важкооборотних функцій для побудови криптосистем імовірнісного шифрування
- •12.3. Застосування односторонніх функцій для побудови класичних асиметричних криптосистем
- •Питання для самоконтролю
- •Задачі до §12
- •Література
- •Предметний покажчик
Питання для самоконтролю
1. Дати означення квадратичного лишка та нелишка за модулем.
2. Дати означення символу Лежандра. Чим він відрізняється від символу Якобі?
3. Наведіть алгоритм обчислення символу Якобі.
4. Які числа називають простими Блюма?
Задачі до §9
1. Довести, що в Zp* рівно квадратичних лишків і стільки ж квадратичних нелишків (тобто |Qn|= ), і що утворюючий елемент групи Zp* не може бути квадратичним лишком за модулем р.
2. Довести, що описаний у даному параграфі алгоритм обчислення символу Якобі робить не більше за кроків, кожен з яких складається з п.п. 1)-3).
3*.
Довести, що група
не є циклічною при п
2.
4*.
Довести, що група
є циклічною для простого р
2.
5.
Не користуючись лемою 6.11, довести: якщо
р
– просте число, то рівняння
в полі
р
має рівно 2 розв’язки. Які це розв’язки?
6.
Задано відображення
,
.
Довести, що f
– гомоморфізм груп.
7.
Використовуючи задачу 1, довести, що всі
елементи множини
мають однакову кількість коренів в
,
а саме
.
8. Нехай п – непарне.
8.1.
Довести, що відображення
– гомоморфізм
.
8.2.
Показати, що якщо п
– просте, то
.
8.3. Довести, що в (n = pq) міститься однакова кількість елементів з символами Якобі 1 та –1.
8.4.
Довести, що
– підгрупа в
.
9.
Нехай
– множина псевдоквадратів за модулем
п,
n = pq.
Довести:
а)
;
б)
для будь-якого псевдоквадрату
відображення
– бієкція
.
10. Довести, що для простого р:
а)
;
б)
існує розв’язок
;
11*. Довести п. а) задачі 10 для будь-якого непарного п.
12. Знайти всі квадратичні лишки і нелишки за модулями 3, 5, 7, 9, 11, 13, 15, 17.
13. Нехай х1, х2 – квадратичні лишки за модулем п, у1 – квадратичний нелишок. Довести: х1х2, (х1)–1 – квадратичні лишки, х1у1, (у1)–1 – квадратичні нелишки.
14.
Довести:
відображення
– бієкція
.
15. Чи будуть 15, 30 квадратичними лишками за модулем 37?
16. Знайти всі квадратичні лишки за модулем 83.
17.
Знайти: а)
;
б)
;
в)
(використовуючи те, що 6 – квадратичний
нелишок); г)
.
18. Нехай n = pq. (Тоді кожен квадратичний лишок має рівно 4 корені.) Довести, що задача знаходження квадратного кореня з деякого квадратичного лишка еквівалентна задачі факторизацїї відносно імовірнісної звідності.
19. Довести, що множина квадратичних лишків у утворює групу для будь-якого п.
20. Довести, що множина квадратичних лишків за простим модулем р утворює циклічну групу відносно операції множення за модулем р. Що буде утворюючим елементом цієї групи?
21.
Довести, що при п = р1р2,
де р1р2
– різні прості, множина псевдоквадратів
за модулем п
містить
елементи.
Як можна узагальнити дане твердження для п = р1 ,…, рl, де р1 ,…, рl – різні прості?
§10. Псевдопрості числа. Тестування простоти
10.1. Найпростіші алгоритми тестування простоти
Сучасну криптологію неможливо уявити без широкого використання простих чисел, що мають певні властивості. Вони використовуються як у класичних, так і у більш сучасних алгоритмах шифрування, цифрового підпису та обміну ключами; для побудови генераторів псевдовипадкових послідовностей; для обчислення параметрів статистичних тестів, тощо. Тому однією з важливих задач теорії чисел на даний момент є побудова алгоритмів генерації простих чисел. Такі алгоритми включають у себе алгоритми перевірки простоти числа, що звуться алгоритмами тестування простоти.
Алгоритми тестування простоти числа можуть бути, зокрема, імовірнісними алгоритмами розпізнавання мови з односторонньою помилкою. Задача розпізнавання формулюється наступним чином. Нехай дано п. Потрібно визначити, чи є п простим числом.
Варто зауважити, що розв’язок даної задачі не вимагає розкладання числа п на прості множники; потрібно лише визначити, чи є дане число простим.
Перший алгоритм, який має відношення до тестування простоти, було винайдено понад дві тисячі років тому, він носить назву "решето Ератосфена". Більш точно, решето Ератосфена – це процедура, яка дозволяє знайти список всіх простих чисел в межах від 1 до деякого заданого п. Коли початковий відрізок простих чисел вже знайдено, то наступне просте число визначається за критерієм: п – просте тоді і тільки тоді, коли воно не ділиться на жодне з передуючих йому простих чисел.
Процедура просіювання через решето Ератосфена зводиться до наступної:
викреслюємо всі парні, починаючи з 4;
викреслюємо 32 і всі числа, кратні до 3;
викреслюємо 52 і всі числа, кратні до 5;
………………..
викреслюємо s2 і всі числа, кратні до s, де s – перше з не викреслених чисел, що залишилися;
і т.д. до числа п.
Всі числа, які залишаються не викресленими – це прості числа, не більші за п.
Наступний
алгоритм тестування простоти базується
на тому факті, що всі дільники числа п
не більші за
.
Алгоритм тестування простоти
Вхід алгоритму: п > 1.
Присвоїмо змінній l значення 2;
1)
якщо
,
то роботу алгоритму закінчено і видається
відповідь, що п
– просте число;
2)
якщо
і l|п,
то роботу алгоритму закінчено і п
– складене число;
3) якщо і l не ділить п, то збільшуємо l на одиницю і повертаємося до перевірки умови 1).
Зрозуміло,
що даний алгоритм є експоненційним (
кроків). Проте, якщо п
– складене число, то алгоритм може
спрацювати достатньо швидко.
Зауваження
10.1:
умову
в алгоритмі можна замінити на умову
.
Дійсно, якщо п
– складене число, то принаймні один з
його простих дільників обов’язково
буде меншим за
.
При цьому кількість кроків алгоритму
суттєво зменшиться, проте він все одно
залишиться експоненційним.
Один з найкращих сучасних детермінованих алгоритмів тестування простоти, так званий метод числового решета, має оцінку часу роботи О((log n)c log log log n), де п – складене число, для деякої константи с. Алгоритм є ефективним на практиці і дозволяє розпізнати простоту чисел, що мають близько 100 цифр у десятковому записі. Існують також поліноміальні алгоритми тестування простоти, але час їх роботи оцінюється поліномом занадто високого степеню, що робить їх мало придатними для практичних застосувань.
На сьогоднішній день найшвидшими та найпростішими, а тому і найпопулярнішими алгоритмами тестування простоти є імовірнісні поліноміальні алгоритми розпізнавання мови з односторонньою помилкою. Для побудови та обґрунтування таких алгоритмів нам треба ознайомитись з поняттям псевдопростого числа та з властивостями псевдопростих чисел.