- •Криптологія
- •§ 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. Ідентифікація
§5. Система ЕльГамала
Ця ймовірнісна криптосистема була запропонована ЕльГамалом в [88].
Генерування ключів. Вибирають велике просте р, а також число g, 1 < g < р - 1, яке має в мультиплікативній групі великий порядок. В ідеальному випадку g є первісним коренем за модулем р. Числа р і g не є таємницею і перебувають в загальному користуванні. Кожен абонент вибирає собі випадкове число а у проміжку від 1 до р - 1, і обчислює h = ga mod p.
Відкритий ключ: р, g, h.
Таємний ключ: а.
Шифрування
відбувається блоками. Кожен блок М
вважаємо елементом із
.
Повідомлення
перетворюють у криптотекст
наступним чином.
Вибирають випадкове число r таке, що 1 ≤ r ≤ р - 1.
Обчислюють С = (с1, c2), де
cІ = gr mod р, с2 = Мhr mod p.
Дешифрування. Маючи таємний ключ а і криптотекст С = (с1,с2), обчислюють
Приклад 5.1. Як і в усіх поперередніх прикладах, ми жертвуємо реалізмом задля простоти обчислень. Нехай р = 23, g = 5, а = 6. Обчислюємо h = 56 mod 23 = 8. Відкритий і таємний ключі сформовано.
Припустимо, що шифрується числова інформація, і потрібно зашифрувати повідомлення М = 7. Нехай вибрано r = 10. Тоді c1 = 510 mod 23 = 9 і с2 = (7•810) mod 23 = 21. Отримуємо криптотекст С = (9, 21). Що стосується дешифрування, то легко перевірити, що справді D(9,21) = 21•(96)-1 mod 23 = 7.
Коректність. Перевірка рівності D(C) = М для криптотексту С, отриманого з повідомлення М за допомогою алгоритму шифрування з довільним r, проводиться безпосередньо і залишається читачеві в якості простої вправи. Ідея криптосистеми досить прозора: повідомлення М маскується, набираючи вигляду c2, а разом з тим посилається підказка с1, яка дозволяє відтворити М за с2.
Ефективність. Піднесення до степеня в виконується за допомогою бінарного методу (пункт III.2.2). Як вибрати велике просте р, описано в пункті IV.2.7. Однак наше завдання складніше — слід вибрати також число g. Найкраще було би мати в якості g первісний корінь за модулем р. На жаль, з пункту IV.6.2 нам відомо, що знаходження первісного кореня за заданим р не є легкою задачею. Тому слід ставити завдання генерування пари р, g, для вирішення якого є ефективні процедури (див. пункт IV.6.2, а також вправу VII.2.6).
Надійність. Сформулюємо задачу
Розкриття системи ЕльГамала
Задано: р,g, h, с1, с2, де 1 < g < р - 1,
h = gа mod р, c1 = gr mod р, с2 = Mhr mod p
для деяких а, r, .
Обчислити: М.
Черговою простою вправою для читача є встановлення того, що ця задача еквівалентна наступній.
Розкриття системи ЕльГамала - 2
Задано: р,g, х,у N, де 1 < g < р - 1, х = gа mod р,
у = gь mod р для деяких а і ь.
Обчислити: z = gaь mod p.
Для другої задачі очевидно, що вона зводиться до дискретного логарифмування за модулем р. Тому слід виключити ті випадки, у яких логарифмування можна провести ефективно. Зокрема, р слід вибирати так, щоб число р - 1 мало великий простий дільник, інакше суперник зможе скористатися алгоритмом Сільвера-Поліга-Гелмана (пункт IV.7.2). В [80] показано, що у випадку, коли ф(р - 1) має лише малі прості дільники, задача розкриття криптосистеми ЕльГамала еквівалентна дискретному логарифмуванню.
ВПРАВИ
5.1. а) Нехай р = 17, g = 3. Вибрати а і завершити формування ключів. Зашифрувати числове повідомлення 5, вибравши r на власний розсуд.
b) Нехай р = 17, g = З, а = 1. Розшифрувати криптотекст С = (5,15).
5.2. Нехай — довільне повідомлення, що шифрується в системі ЕльГамала. Припустимо, що g є первісним коренем за модулем р.
a) Чи с1 розподілене рівномірно на ?
b) Нехай s | (р - 1) і а = (р — l)/s. Скільки значень може набувати c2? (При малих s приклад поганого вибору а.)
c) Для яких фіксованих а компонента криптотексту с2 розподілена рівномірно на ? Скільки є таких а? (Приклад доброго вибору а.)
d) Чи c2 розподілене рівномірно на у припущенні, що таємний ключ а не фіксований, а є випадковим елементом множини ?
5.3. Нехай g є первісним коренем за модулем р.
a) Придумати процедуру, яка ламає систему ЕльГамала, а саме знаходить повідомлення за криптотекстом, у частковому випадку, коли r = (р - 1)/2.
b) Те ж у випадку, коли 3 | (р - 1) і r = (р — 1)/3 або r = 2(р — 1)/3.
c) Позначимо s = (p - 1)/НСД (r,р— 1). Придумати процедуру, яка ламає систему ЕльГамала за час, обмежений поліномом від довжини повідомлення і величин log p та s.
ЛЕКЦІЯ 18
Розділ VI.
Криптографічні інструменти
