
- •§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
- •Література
- •Предметний покажчик
12.2. Застосування важкооборотних функцій для побудови криптосистем імовірнісного шифрування
Нехай f – важкооборотна функція з секретом (наприклад, RSA). Припустимо, що існує алгоритм, який видає елемент х, рівномірно розподілений на D.
Розглянемо предикат В': Dn→{0, 1}n, В'(у) = В(f –1(у)), тобто якщо у = f(х), то В'(у) = В(х). Тоді, якщо f – важкооборотна функція з секретом, то В'(у) має такі властивості:
1) будь-який імовірнісний поліноміальний алгоритм на випадковому вході уDn видає правильне значення В'(у) з імовірністю, не кращою за ;
2) знання секрету дозволяє легко обчислити В'(у) для будь-якого уDn;
3)
існує
поліноміальний алгоритм, який, отримавши
на вхід деякий біт b
і слово 1п,
видає
елемент уDn,
рівномірно розподілений на множині
.
Властивість 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т*,
тобто такий елемент, що
,
але у
– квадратичний нелишок за модулем т:
Обчислимо елементи уі, , наступним чином:
- якщо ті = 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 – будь-який утворюючий елемент групи .
Елементи p, g є відкритими параметрами протоколу.
Встановлення спільного ключа
Абонент
А
обирає випадкове число
,
обчислює
і надсилає значення
абоненту В.
Абонент
В
обирає випадкове число
,
обчислює
і надсилає значення
абоненту А.
На цьому обмін повідомленнями закінчено. Абонент А обчислює спільний ключ за формулою
,
(12.1)
а абонент В, відповідно, за формулою
.
(12.2)
12.3.2. Асиметричні системи шифрування. На початку знайомства з асиметричними криптосистемами шифрування і цифрового підпису слід зазначити наступне. Всі параметри системи, а також відкритий та секретний ключі, формує сторона, що буде отримувати шифровані повідомлення або надсилати підписані повідомлення (сторона А), або центр сертифікації ключів, у такий спосіб, щоб виключити доступ сторонніх осіб до всіх проміжних обчислень та таємного ключа. Сторонам, що будуть надсилати шифровані повідомлення або перевіряти правильність цифрового підпису (надалі – В), відомий лише відкритий ключ (шифрування або підпису) сторони А.
Система шифрування RS (Райверст, Шамір, Аделман)
Стійкість даної системи базується на важкооборотності функції MULT, або на складності задачі факторизації.
Формування ключів
Абонент А випадковим чином обирає два різних простих числа p і q, та обчислює п = pq і (п). Далі обирає випадкове число е, менше за (п) та взаємно просте з (п), і обчислює d = е–1 mod (п).
Відкритий ключ: (е, п).
Таємний ключ: d.
Зауваження:
до чисел p
і q,
окрім довжини їх десяткового запису
(порядку 150-200 розрядів), існує ряд інших
вимог, як-то: це прості Блюма,
– прості, різниця між ними більша за
деяку граничну величину, тощо. Також
існують певні вимоги до чисел е
і d,
на яких ми зараз не будемо зупинятись
для спрощення викладення.
Шифрування
Вважаємо, що відкритий текст М відповідає деякому десятковому числу, меншому за п. В іншому випадку текст розбивається на блоки відповідної довжини. Шифрування повідомлення М відбувається за правилом
С = М е mod п. (12.3)
Розшифрування шифротексту С відбувається за правилом
М = С d mod п. (12.4)
Система шифрування Ель-Гамаля
Стійкість системи базується на складності задачі дискретного логарифмування.
Формування ключів
Абонент А випадковим чином обирає просте число p і обчислює g – деякий утворюючий елемент групи . Потім випадково вибирає деяке 1< а < p – 1 і обчислює h = gа mod p.
Відкритий ключ: (p, g, h).
Таємний ключ: а.
Шифрування
Вважаємо, що відкритий текст М відповідає деякому десятковому числу, меншому за p. В іншому випадку текст розбивається на блоки відповідної довжини. Для шифрування абонент В обирає випадкове число 1< r < p – 1, обчислює u = gr mod p та v = М h r mod p. Шифрованим текстом є пара
С = (u, v). (12.5)
Розшифрування шифротексту С відбувається за правилом
М = v u–а mod p. (12. 6)
12.3.3. Системи цифрового підпису. Призначення систем цифрового підпису полягає у підтвердженні авторства створеного текстового документу.
Система цифрового підпису RS
Формування ключів
Аналогічно до формування ключів у системі шифрування RS.
Відкритий ключ (ключ перевірки) цифрового підпису: (е, п).
Таємний ключ підпису: d.
Формування і перевірка підпису
Вважаємо, що відкритий текст М відповідає деякому десятковому числу, меншому за п. В іншому випадку до тексту застосовується деяке вкорочуючи відображення з відповідною областю значень, що має певні властивості і називається геш-функцією. Абонент А обчислює цифровий підпис відкритого тексту М за правилом
S = М d mod п (12.7)
і надсилає абоненту В пару (М, S).
Для перевірки цифрового підпису абонент В перевіряє виконання рівності
М = S е mod п. (12.8)
Якщо рівність виконується, підпис вважається справжнім, у противному випадку – підробним.
Система цифрового підпису Ель-Гамаля
Формування ключів
Аналогічно до формування ключів у системі шифрування Ель-Гамаля.
Відкритий ключ (ключ перевірки) цифрового підпису: (p, g, h).
Таємний ключ підпису: а.
Формування і перевірка підпису
Вважаємо,
що відкритий текст М
відповідає деякому десятковому числу,
меншому за p.
В іншому випадку до тексту застосовується
геш-функція. Для побудови цифрового
підпису абонент А обирає випадкове
число r
і обчислює наступні величини:
;
;
.
Цифровим підписом повідомлення М є пара
.
(12.9)
Абонент А надсилає абоненту В підписане повідомлення (М, S).
Для перевірки цифрового підпису абонент В перевіряє виконання рівності
.
(12.10)
Якщо рівність виконується, підпис вважається справжнім, у противному випадку – підробним.
Система цифрового підпису Шнорра
Формування ключів
Абонент
А випадковим чином обирає просте число
p,
таке, що p – 1
має великий простий дільник q.
Також обирає число h
1, таке, що
.
Потім вибирає випадкове число а < q – 1
і обчислює
v = h–а mod p.
Відкритий ключ (ключ перевірки) цифрового підпису: (p, g, h, v).
Таємний ключ підпису: а.
Формування і перевірка підпису
Для
формування підпису обов’язково
використовується деяке вкорочуюче
відображення (геш-функція) f
з областю значень від 1 до q – 1.
Для побудови цифрового підпису абонент
А обирає випадкове число r
і обчислює наступні величини:
;
;
.
Цифровим підписом повідомлення М є пара
. (12.11)
Абонент А надсилає абоненту В підписане повідомлення (М, S).
Для
перевірки цифрового підпису абонент В
обчислює величину
та перевіряє виконання рівності
.
(12.12)
Якщо рівність виконується, підпис вважається справжнім, у противному випадку – підробним.
Система цифрового підпису DSА
(Digital Signature Algorithm – використовувався у стандарті під назвою DSS, запропонованому NIST у 1991 році)
Формування ключів
Абонент
А випадковим чином обирає просте число
p,
таке, що p – 1
має великий простий дільник q.
Також обирає число
,
таке, що
в
.
Потім вибирає випадкове число а < q – 1
і обчислює b = hа mod p.
Відкритий ключ (ключ перевірки) цифрового підпису: (p, g, h, b).
Таємний ключ підпису: а.
Формування і перевірка підпису
Для
формування підпису в якості вкорочуючого
відображення f
використовується геш-функція SHA з областю
значень {0, 1}160.
Для побудови цифрового підпису абонент
А обирає випадкове число
і обчислює наступні величини:
;
;
.
(12.13)
Цифровим підписом повідомлення М є пара
. (12.14)
Абонент А надсилає абоненту В підписане повідомлення (М, S).
Для перевірки цифрового підпису абонент В обчислює величини
,
,
,
та перевіряє виконання рівності
.
(12.15)
Якщо рівність виконується, підпис вважається справжнім, у противному випадку – підробним.
12.3.4. Протокол доведення без розголошення. У ході протоколу доведення без розголошення Демонстратор (Д) має переконати Перевіряючого (П) у тому, що він знає деяку конфіденційну інформацію, але при цьому не надати Перевіряючому ніяких знань, що можуть бути застосовані ним для отримання цієї інформації. Протоколи повинні мати наступні властивості: повноти (чесний Демонстратор переконує Перевіряючого з імовірністю 1); обґрунтованості (для нечесного Демонстратора імовірність переконати Перевіряючого близька до 0) та відсутності розголошення.
Доведення квадратичності
Загальні
параметри:
число п = pq,
де p
і q
–
два
різних простих числа, та число
.
Мета: довести, що , та що Д знає таке y, y2 х mod n.
Доведення:
Д вибирає випадковий елемент
,
обчислює
і надсилає П значення и.
П
обирає і надсилає Д випадковий біт
.
Д
надсилає П число
Перевірка:
П перевіряє виконання рівності
.
Описана
процедура повторюється
разів, щоразу з незалежним вибором
випадкових величин. Якщо кожного разу
рівність виконувалась, П вважає доведення
переконливим.
Доведення неквадратичності
Загальні
параметри:
число п = pq,
де p
і q
–
два
різних простих числа, та число
.
Мета: довести, що .
Доведення:
П вибирає випадковий елемент
і випадковий біт
,
обчислює
і надсилає П значення
.
Д
визначає, чи є
квадратичним лишком і надсилає П
випадковий біт
.
Перевірка:
П перевіряє виконання рівності
.
Описана процедура повторюється разів, щоразу з незалежним вибором випадкових величин. Якщо кожного разу рівність виконувалась, П вважає доведення переконливим.
Доведення знання дискретного логарифму
Загальні параметри: просте число p, елемент g – деякий утворюючий елемент групи , h – деякий елемент групи .
Мета: довести, що Д знає таке а < p – 1, що h = gа mod p.
Доведення:
П вибирає випадковий елемент х < p – 1,
обчислює
і надсилає П значення
.
Д
обчислює
і надсилає П значення и.
Перевірка:
П перевіряє виконання рівності
.
Якщо рівність виконується, П вважає
доведення переконливим.