- •Криптологія
- •§ 1. Абетка
- •§ 2. Класичні методи: від античності до нового часу
- •§ 3. Дві пропозиції XX століття
- •§ 1. Формалізм
- •§2. Арифметика
- •§ 3. Афінні шифри
- •§ 2. Прямолінійні програми
- •§ 3. Рандомізація
- •§ 1. Арифметика II
- •§ 2. Тестування простоти
- •§ 3. Факторизація
- •Факторизація
- •§ 4. Розпізнавання квадратичності і добування квадратних коренів
- •§ 5. Обчислення функції Ойлера
- •§ 6. Первісні корені за простим модулем
- •8. Підсумок
- •§1. Концепція
- •§ 4. Ймовірнісне криптування
- •§5. Система ЕльГамала
- •§1. Важкооборотні функції
- •§ 2. Генератори псевдовипадкових бітів
- •§ 1. Обмін ключем
- •§ 2. Цифровий підпис
- •§ 3. Підкидання монети по телефону
- •4. Гра в карти заочно
- •§ 5. Розподіл таємниці
- •§ 6. Доведення без розголошення
- •§ 7. Ідентифікація
8. Підсумок
Підведемо риску під нашим дослідженням складності задач цілочисельної арифметики.
Є ефективні тести, за допомогою яких легко розпізнати, простим чи складеним е задане число. Як наслідок, для практичних потреб легко вибрати просте число заданого порядку.
Є ефективний алгоритм для добування квадратних коренів за простим модулем р. У випадках р = 4m + 3 і р = 8m+5 алгоритм працює детермінованим чином і є особливо простим.
Невідомо ефективних алгоритмів для факторизації і дискретного логарифмування - ці задачі на сьогодні є важкими.
Є ефективне зведення добування квадратних коренів за модулем п = pq до факторизації числа n = pq, i навпаки - факторизації до добування кореня.
Еквівалентними задачами є також обчислення функції Ойлера ф(п) від п = pq і факторизація числа n = pq. Більше того, щоб факторизувати n = pq, досить мати довільне кратне числа ф(п) = НСК(р-l,q-1).
Задача знаходження первісного кореня за простим модулем р зводиться до задачі розпізнавання, яка у свою чергу зводиться до факторизації числа р - 1.
ЛЕКЦІЯ 16
Розділ V
Криптосистеми з відкритим ключем
§1. Концепція
1976 рік відкрив сучасний етап у криптографії. Для новітньої криптографії характерною рисою є поява принципово нових криптографічних задач, а також принципово нових розв'язків задач класичних. Тому часто говорять про революцію у галузі криптографії. Поступ, що відбувся у 1976 році, пов'язаний з іменами американських математиків Вайтфілда Діффі та Мартіна Гелмана, а також Ральфа Меркле, які розвинули ідеологію відкритого ключа.
У криптосистемі з відкритим ключем процедура шифрування є загальнодоступною. Це однак не означає як у традиційних криптосистемах, що загальнодоступним є також дешифрування. Зупинимось докладніше на цій парадоксальній з першого погляду тезі.
Пригадаємо нашу базову криптографічну схему з пункту 1.1.1. Вона передбачає поняття ключа К, який використовується як при шифруванні, так і при дешифруванні. При розгляді у § II.3 афінних шифрів ми дещо модернізували нашу термінологію. Безпосередньо за допомогою ключа К здійснювалось лише шифрування, а для дешифрування використовувався дешифруючий ключ К'. Оскільки К1 = К'(К) легко отримувався з К, то такий поділ ключа був не принциповим відходом від початкової схеми, а лише справою домовленості та зручності. В такому контексті ключ К природно назвати шифруючим. Для повідомлення М і криптотексту С матимемо співвідношення С = Ек(М) і М = Dк'(М), де К і К' — шифруючий і дешифруючий ключі, а Е і D — алгоритми шифрування та дешифрування, відповідно.
У всіх криптосистемах, які ми розглядали досі, подібно до згаданого афінного шифру дешифруючий ключ знаходився за шифруючим ефективно. Раніше ми (як і все криптографічне співтовариство до 1976 року) й не замислювались, що такий стан речей можна змінити, і то з неабиякою користю. А якраз в допущенні того, що знаходження К' за К може бути важким, і полягає ідея, яка визначила подальший напрям розвитку криптографії.
П
оняття
криптосистеми
з відкритим ключем включає
такі об'єкти (див.
малюнок 1):
Малюнок 1. Нова криптографічна схема.
Алфавіт А, в якому записуються повідомлення (відкриті тексти), і алфавіт В, в якому записуються криптотексти.
Простір ключів К. (множина слів у деякому алфавіті).
Алгоритм генерування ключів. Це поліноміальний ймовірнісний алгоритм, який на вході k, де k N — записаний в унарній системі параметр надійності, видає випадкову пару К, К' К. К називається відкритим ключем і використовується для шифрування, а К' називається таємним ключем і використовується для дешифрування.
Поліноміальний детермінований алгоритм шифрування Е, який отримує на вхід повідомлення М і відкритий ключ К, а видає криптотекст С, що записуємо як С = Ек(М).
Поліноміальний детермінований алгоритм дешифрування D, який отримує на вхід криптотекст С і таємний ключ К', а видає відкритий текст С, що записуємо як М = Dк'(C).
Перелічені алгоритми мають задовольняти такі умови:
Якщо пара (К, К') породжена алгоритмом генерування ключів, то з С = Ек(М) випливає М = Dk’> (С) для будь-якого відкритого текту М.
Немає (чи, принаймні, невідомо) жодного ефективного алгоритму, який за відомими С = Ек(М) і К знаходив би М.
Остання умова забезпечує надійність криптосистеми навіть тоді, коли із відкритого ключа К не робиться таємниці. З цієї умови випливає зокрема, що немає ефективного алгоритму знаходження за К такого К', що пара (К, К') могла б бути породженою алгоритмом генерування ключів.
Зауважимо, що коли відкритий ключ є доступним для суперника, останній має достеменно ті ж можливості криптоаналізу, які для традиційних криптосистем називалися атакою з вибраним відкритим тектом. Як і раніше, сильнішим видом криптоаналізу залишається атака з вибраним криптотекстом.
Криптосистеми з відкритим ключем ще називають асиметричними. В цьому контексті класичні криптосистеми називають симетричними.
Тепер з'ясуємо переваги нової криптографічної схеми над старою. Уявімо комунікаційну мережу, якою користуються п абонентів — Аліса, Боб, Вітольд, Габріеля,... Припустимо, що кожна пара абонентів може мати свої маленькі таємниці і хоче мати можливість спілкуватися таємно від решти абонентів. Оскільки всіх пар є п(п — 1)/2, то саме таку кількість ключів ми потребуємо, коли послуговуємося старою симетричною схемою. Нова асиметрична схема дозволяє влаштувати довірливе спілкування в мережі оптимальнішим чином. Кожен абонент, власноручно або через менеджера мережі, генерує власну пару ключів (К, К'). Аліса стає власником пари ключів (КA, К'А), Боб — (КБ, К'Б) і т.д. Кожен абонент свій приватний ключ зберігає в таємниці, в той час як список всіх відкритих ключів (КА, kБ, kВ, KГ,...) е у загальному доступі. Коли Боб хоче послати Алісі повідомлення М, він посилає їй криптотекст С = ЕкА(М). Оскільки тільки Аліса знає таємний ключ К'А, лише вона здатна дешифрувати С. Таким чином, таємницю листування збережено з використанням лише п пар відкритого та таємного ключів, на противагу до необхідних раніше п(п — 1)/2 ключів.
Наступні параграфи присвячені конкретним втіленням описаної вище схеми, а також її модифікаціям.
ЛІТЕРАТУРА
Піонерські роботи Діффі і Гелмана, та Меркле опубліковані в [20] та [119]. Цікавим вступом до предмету може служити ретроспективний огляд [19] (див. також [21]). У подальшому викладі ми не торкаємось класу криптосистем з відкритим ключем, пов'язаних із задачею про рюкзак. Про ці криптосистеми та успіхи в і'х криптоаналізі йдеться в [10].
2. RSA
2.1. Опис системи. Запропонована 1977 року система RSA є чи не найпопулярнішою криптосистемою з відкритим ключем. Назва системи утворена з перших літер імен її винахідників — Рональда Райвеста, Аді Шаміра та Леопарда Адлемана.
Генерування
ключів. Вибирають
два досить великі прості числа р
і
q.
Для
їх добутку п
= pq
значення
функції Ойлера дорівнює
ф(п) = (р - 1)(q - 1) = п – р – q + 1.
Далі
випадковим чином вибирають елемент
е,
що
не
перевищує значення ф(п)
і
взаємно простий з ним. Іншими
словами, е
є
випадковим елементом із множини
.
Для
е за
алгоритмом Евкліда знаходить елемент
d,
обернений
до е
в
,
тобто
такий, що d < ф(п)
і
(1)
Як результат покладають:
Відкритий ключ: е, п.
Таємний ключ: d.
Шифрування відбувається блоками. Для цього повідомлення записують у цифровій формі і розбивають на блоки так, що кожен блок позначає число, яке не перевищує п. Скажімо, якщо блок записаний у вигляді двійкового слова довжини m, то повинна виконуватись нерівність 2m < n. Блок М розглядається як елемент кільця Zn і як такий, може підноситись до степеня за модулем п.
Алгоритм шифрування Е у системі RSA полягає у піднесенні М до степеня е. Записуємо це так:
Е(М) = Me mod п.
ніякого ефективного алгоритму. Однак не доведено, що такого алгоритму не існує. На жаль, така ситуація є типовою для всіх криптосистем з відкритим ключем, що мають практичний інтерес. Єдине, що ми можемо зробити, і що є нашим завданням у цьому пункті, це розглянути деякі специфічні методи криптоаналізу для RSA і оцінити їхню (без)перспективність.
Будь-яку асиметричну криптосистему можна зламати, вказавши ефективний спосіб визначення таємного ключа за відкритим. У нашому випадку це означає, що розкриття RSA зводиться до задачі
знаходження таємного ключа для RSA
Задано: е, п, де п = pq і НСД (е, ф(п)) = 1.
Знайти: d таке, що xed = х (mod п) для всіх х.
З алгоритму генерування ключів безпосередньо випливає, що остання задача зводиться до обчислення значення функції Ойлера ф(п). Як нам відомо з пункту IV.5.1, обчислення функції Ойлера від аргументів такого типу є задачею еквівалентною до знаходження співмножників р і q числа п. Отже, спроба факторизувати модуль п = pq є найочевиднішим шляхом до розкриття RSA. На щастя, як зазначалось в § IV.З, на сьогодні це є безнадійною справою для п порядку 10200. Тому при генеруванні ключа, р і q рекомендується вибирати із приблизно сотнею десяткових цифр кожне. Вибір таких чисел повинен бути справді випадковим, щоб уникнути можливої факторизації якимось із вузькоспеціальних методів (див. обговорення в пункті IV.2.7 і § IV.З разом із задачами). Звідси також високі вимоги до якості генератора псевдовипадкових бітів, що використовується алгоритмом породження простих чисел.
Природно виникає питання, чи не можна розв'язати задачу визначення таємного ключа, обходячись без факторизації. За твердженням 2.3, цю задачу можна переформулювати як задачу знаходження такого d, що ed - 1 ділиться на ф(п). Але для такого d число т = ed - 1 можна використати для розкладу п на множники за допомогою ймовірнісної процедури, описаної в пункті IV.5.2. Отже, визначення таємного ключа для RSA є таким же важким, як факторизація модуля п. Підсумовуючи наші аргументи, отримуємо
твердження 2.4. Знаходження таємного ключа для RSA е еквівалентним до факторизації чисел, що є добутком двох простих, відносно поліноміальної ймовірнісної звідності.
Зауважимо,
що для деяких повідомлень М
має
місце рівність Е(М) = М.
Числові
еквіваленти таких повідомлень є
розв'язками конгруенції
в
Zn,
кількість яких нескладно порахувати
(див. вправу 2.5).
Виявляється, що доля повідомлень, які подібно до наведеного прикладу можуть бути розкриті якимось простим специфічним способом, не може бути великою, хіба що всі повідомлення можуть бути дешифровані подібним чином.
Щоб формалізувати цей факт, введемо такі позначення. Припустимо, що для кожної пари е і п таких, що НСД(е,φ(п)) = 1, маємо деяку підмножину Уe,n кільця Zn. Через δn = mine||Уe,n||/п позначимо мінімальну по е щільність Уе,п в Zn. Звуженням задачі розкриття RSA на родину підмножин Уe,n назвемо таку задачу.
Задано: е, п, у, де п = pq, НСД (е, ф(п)) і у Уе,n Знайти: х таке, що хе y(mod n).
твердження
2.5.
Для
довільної родини підмножин
задача
розкриття
RSA
ймовірнісна
зводиться до свого звуження на Ye,n
за
час,
обмежений деяким поліномом від довжини
входу і величини 1/δп.
Таким чином, якщо не існує ймовірнісного поліноміального алгоритму для розкриття RSA, то нема й такого алгоритму, який би розкривав частку 1/logcп всіх можливих криптотекстів, де с — константа. Іншими словами, будь-який спосіб розкриття лише частки l/logc n всіх можливих криптотекстів можна використати для розкриття абсолютно всіх криптотекстів.
доведення.
Припустимо,
що в нас є оракул, який, отримавши запит
(
),
видає
деякий елемент
Zn
із властивістю
,
справедливою завжди, коли
Тоді
RSA
ламається таким ймовірнісним алгоритмом.
Вхід: е, п, у, де п = pq і НСД (е, ф(п)) = 1.
Обчислити НСД (y, п). Якщо 1 < НСД (у, п) < п, то знайдено нетривіальний дільник модуля п, і криптосистема ламається визначенням таємного ключа d. Якщо НСД (у, п) = п, то подати на вихід х = 0. Якщо НСД (у, п) = 1, то продовжувати.
Вибрати випадковий елемент
Zn.
Якщо
НСД
>
1, то теж
отримано
нетривіальний дільник модуля п.
Якщо
(1)
то продовжувати.
• Обчислити
(2)
.
Зробити оракулові запит
.Отримавши відповідь
,
перевірити
чи справді
(3)
.
Якщо ні, визнати невдачу; інакше продовжувати.
• Обчислити і подати на вихід
, (4)
де
— елемент, обернений до
в
.
Позначимо ймовірність невдачі описаного алгоритму через α і оцінимо її. У виродженому випадку, коли НСД (у, п) > 1, маємо α = 0. Проаналізуємо роботу алгоритму на входах, для яких НСД (у, п) = 1.
Алгоритм
зразу досягає успіху в тому щасливому
випадку, коли НСД
> 1.
Це трапляється з імовірністю 1 - ф(п)/п
= l/p+
1/q
-1/п,
тому
першою нашою оцінкою є
(5)
Розглянемо
випадок, коли має місце (1). Основою нашого
аналізу є спостереження,
що коли
попадає
в Уe,n,
то алгоритм справді видає відкритий
текст х,
що
відповідає криптотекстові у,
тобто
виконується умова
.
Справді, ця конгруенція випливає
безпосередньо із співвідношень (2), (3) і
(4).
Таким
чином, алгоритм зазнає невдачі лише у
випадку, коли
і
Ймовірність
першої з цих двох подій дорівнює ф(п}/п.
Оцінимо
ймовірність другої події, припустивши,
що перша має місце. Зробимо
також припущення, що
δп>1-ф(п)/п. (6)
Тоді
для кожного е.
щільність
множини
в
не
менша, ніж δп-(1-ф(n)/п).
Щонайменше
з такою ймовірністю
потрапляє в
Уе,n,
бо
за умови (1)
є
випадковим елементом множини
.
Підсумовуючи, отримуємо
оцінку
Використовуючи
нерівність
,
отримаємо звідси оцінку
. (7)
Нагадаємо, що ми довели (7) на основі припущення (6). Якщо ж (6) не виконується, тобто ф(п)/п ≤ 1 – δn, то за (5) маємо нерівність α ≤ 1 – δn, звідки випливає та ж оцінка (7).
Щоб зменшити ймовірність невдачі, описаний алгоритм слід виконати k разів, як описано у пункті III. 3.1. Для k = [t/δn] ймовірність невдачі буде меншою, ніж
ВПРАВИ
2.1. а) Сформувати відкритий і таємний ключі для системи RSA на основі р = 47, q = 71, е = 19.
b) Зашифрувати повідомлення КУПИ. При переході до цифрової форми замінювати кожну літеру її двоцифровим десятковим номером в алфавіті. Цифрове повідомлення розбивати на блоки по 4 цифри.
c) Дешифрувати криптотекст 3011 1211.
2.2. Підрахувати
кількість повідомлень
,
для яких НСД (М, п) > 1.
(Пересилання таких повідомлень слід
виключити, бо з їх перехопленням
суперник
отримує нетривіальний дільник модуля
п.)
2.3. Зламати RSA у випадку, коли
a) р і q — прості числа-близнята;
b) різниця q — р невелика.
2.4. Аліса, Боб і Бернар є абонентами комунікаційної мережі. Для захисту інформації в мережі використовується система RSA, причому ключі генеруються і розподіляються між абонентами менеджером мережі.
a) ([142]) Боб і Бернар користуються відкритими ключами (е1,п) та (е2,п), де е1 та e2 взаємно прості. Аліса послала кожному з них одне і те ж повідомлення М. Пояснити, як можна визначити М за криптотекстами С1 = Мe1 mod п та С2 = Мe2 mod n.
b) ([85]) Пояснити, як Боб може визначити Бернарів таємний ключ d2, a Бернар — Бобів ключ d1.
Обговорення подібної проблематики див. в [47].
2.5. а)
Для п
= рd,
добутку двох різних простих, порахувати
кількість
елементів
,
які задовольняють конгруенцію
.
b)
Знайти всі розв'язки конгруенції
в Z15.
2.6. Суперник
перехопив криптотекст
,
зашифрований з допомогою відкритого
ключа (е,п),
і один за другим обчислює члени
послідовності С2
mod п,
С3
mod п,....
Довести, що зробивши не більш як ψ(п)
кроків, суперник гарантовано отримає
відкритий текст. (Інша причина слідкувати,
щоб ψ(п)
було великим чи, еквівалентно, НСД (р
-
1, q
-
1)
малим, відображена у вправі IV.3.2.)
2.7. Довести, що ф(ψ(п)) - 1 ітерацій досить, щоб розкрити систему RSA методом ітерацій.
ЛІТЕРАТУРА
Оригінальною публікацією про систему RSA є [132]. Популярний виклад можна знайти в [16].
З метою пришвидшення процедури шифрування пропонувалось завжди використовувати експоненту е = 3 замість того, щоб щоразу вибирати її випадковим чином. Проте у [103] показано, що використання невеликого параметра е дає можливість супернику розкрити повідомлення у випадку, якщо воно розіслане кільком користувачам криптосистеми.
Твердження 2.5 наведене у [131] із посиланням на Яо. Воно показує, що система RSA однаково надійна (чи ненадійна) як для всіх повідомлень, так і для будь-якої малої їх частини. Таку однорідність теж можна вважати свідченням на користь надійності RSA. Інші властивості такого ж плану доведено в [101, 67, 73] (див. також вправу VI.1.4).
ЛЕКЦІЯ 17
Система Рабіна
Цю криптосистему запропоновано в [130].
Генерування ключів. Вибирають два великі прості числа р і q. Обчислюють їх добуток п = pq. Покладають
Відкритий ключ: п.
Таємний ключ: р, q.
Шифрування відбувається блоками подібно до системи RSA, згідно з формулою
Е(М) = М2 mod п.
Дешифрування. Якщо Е(М) = С,то М є квадратним коренем числа С за модулем п. За умови НСД (С, п) = 1, в Zn таких коренів є рівно чотири (пункт 3 твердження IV. 4.1). Результати пунктів IV. 4. 3 і IV. 4. 2 дають ефективний алгоритм добування всіх квадратних коренів за модулем п, який використовує співмножники р і q (тобто таємний ключ!). Саме цей алгоритм використовується в системі Рабіна при дешифруванні. Після знаходження всіх чотирьох коренів з них вибирається той, який є числовим еквівалентом осмисленого тексту.
Зауваження 3.1. В системі Рабіна шифруюче відображення не є ін'єктивним, але може бути зробленим таким шляхом простої модифікації. Однозначності можна досягти за рахунок передачі разом із криптотекстом деякої додаткової незашифрованої інформації (вправа 3.2). Це справді необхідно, коли шифрується не текстова, а суто числова інформація.
Зауваження 3.2. При описі алгоритму шифрування ми виходили з припущення, що НСД (С, п) = 1 (це еквівалентно з НСД (М, п) = 1). Посилання повідомлень С, для яких НСД (С, п) > 1, слід виключити, бо з їх перехопленням суперник отримує нетривіальний дільник НСД (С, п) числа п, тобто дізнається таємний ключ.
Приклад 3.3. Нехай таємний ключ вибрано так: р = 53 і q = 67. Тоді відкритим ключем буде п = 3551.
Розглянемо шифрування повідомлення ПРОДАЙ. Як це було зроблено у прикладі 2.1, спочатку повідомлення записується у цифровій формі і розбивається на блоки по чотири цифри: 1920 1805 0013. Перший блок 1920 перетворюється у 19202 mod 3551 = 0462. Подібно шифруються наступні два блоки, і в результаті виходить криптотекст 0462 1758 0169.
Припустимо
тепер, що ми отримали криптотекст 1497.
Для дешифрування слід з нього добути
квадратні корені за модулем 3551. З цією
метою добуваємо корені за простими
модулями 53 і 67 із лишків 1497 mod 53 = 13
і 1497 mod 67 = 23, відповідно.
Застосовуємо алгоритм із пункту IV.4.2.
Модуль 53 належить до випадку 2, а 67 до
випадку 1. Знаходимо
,
і
.
За допомогою алгоритму з Китайської
теореми про остачі визначаємо чотири
корені з 1497 за модулем 3551:(15,31) = 0969,
(15,36) = 1711, (38,31) = 1840, (38,36) = 2582.
Як зразу видно, лише другий корінь є
числовим еквівалентом тексту в українській
абетці, а саме повідомлення НІ.
Ефективність.
Процедура вибору великих простих р
і q
описана в пункті IV.2.7. Зауважимо, що при
алгоритм дешифрування буде особливо
простим (випадок 1 алгоритму з пункту
IV.4.2).
Надійність. Зрозуміло, що задача розкриття системи Рабіна, тобто знаходження за С такого М, що Е(М) = С, є нічим іншим, як задачею добування квадратного кореня за модулем п = pq. В пункті IV.4.3 показано, що остання є такою ж складною, як задача факторизації числа п = pq (яка, до речі, у нашому випадку є задачею знаходження таємного ключа за відкритим). Див. також вправу 3.4.
ВПРАВИ
3.1. Нехай р = 59 і q = 67. :
Зашифрувати повідомлення ДЕСЯТЬ.
Розшифрувати криптотекст 0753 2556.
3.2. Нехай
х
—
квадратичний лишок за модулем п
= pq,
де
п
є цілим Блюма, тобто ріq
— різні прості з властивістю
.
Довести,
що
кожен із чотирьох квадратних
коренів з х
в
Zn
однозначно
визначається парою бітів b1,
b2,
які для
рівні
Довести, що відображення Е(х) = х2 mod п, для п = pq — цілого Блюма, є бієкціею з Qn на Qn.
Показати, що система Рабіна нестійка до атаки з вибраним криптотектом.
