Учбово-методичний посібник для виконання лабораторних робіт з дисципліни „Основи теорії криптографії і криптоаналізу”, страница 37

Поточне випадкове число Yi адітивного датчика виходить із суми чисел Yi-1 і Yi-2 обчисленням модуля від розподілу цієї суми на m:[5]

Yi = (Yi-1 + Yi-2) mod m.

Приклад процедури розрахунку ряда псевдовипадкових чисел:

procedure GetRandoms(a,b,m,x,Num:integer);

{Коментар: a,b,m – параметри генератору ПВЧ (множник, збідьшення, модуль відповідно), х – перше число гами.}

var i:integer;

begin

for i:=1 to Num do

begin

x:=(a*x+b) mod m;

Writeln(x);

end;

end;

Порядок виконання лабораторної роботи

Вивчити відомості про шифри гамування.

Створити лінійний конгруентний генератор псевдовипадкових послідовностей за формулою:
Yi = (a • Yi-1 + b) mod m, де
m – модуль;
a – множник;
b – збільшення;
а Y0 – вектор ініціалізації (вхідне значення).

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

Сгенерувати за допомогою генератору програмно і вручну гаму зі 100 елементів.

Скласти звіт, у який включити початкові дані, опис послідовності дій шифрування, кінцевий результат і відповіді на контрольні запитання.

Контрольні питання.

1. Що таке гамування? Що розуміють під гамою шифру?

2. Які операції можна застосовувати при накладенні гами? У чому полягає процес шифрування і дешифрування?

4. Які переваги і недоліки в методі гамування?

5. Які вимоги пред'являються до криптографічної стійкості генератора ПВП? Чому найбільш важлива довжина періоду гами?

6. Опишіть лінійний конгруентний спосіб генерації ПВП.

7. Опишіть адітивний і мультиплікативний генератори ПВП.

8. Опишіть алгоритми шифрування і дешифрування відкритого тексту методом гамування.


2.9Лабораторна робота №9. Системи з відкритим ключем. Криптосистема RSA.

Тема роботи: Системи з відкритим ключем. Криптосистема RSA.

Ціль роботи: Відпрацювати вміння використання криптосистеми RSA. На практиці зашифрувати текст за допомогою цього алгоритму шифрування.

Загальні відомості

Концепцію систем з відкритим ключем запропонували у 1976 році Діффі і Хеллман.[19] Криптосистеми з відкритим ключем засновуються на використанні особливих властивостей шифрування, що являє собою розрахунок оберненої величини від якоїсь функції, що не може бути реалізована числовими методами.

В сучасній криптографії стандартом де-факто на системи з відкритим ключем є система RSA, спроектована Рівестом, Шаміром та Адлеманом [2].

Теоретичні відомості

Розглянемо математичні результати, покладені в основу алгоритму RSA.

Теорема 1. (Мала теорема Ферма.)

Якщо р – просте число, то

xp-1 = 1 (mod p) (1)

для будь-якого х, простого відносно р, і

xp = х (mod p) (2)

для будь-якого х.[1]

Визначення. Функцією Эйлера j(n) називається число позитивних цілих, менших n і простих відносно n.

n

2

3

4

5

6

7

8

9

10

j(n)

1

2

2

3

2

6

4

6

4

Теорема 2. Якщо n=pq, (p і q – відмінні друг від друга прості числа), то

j(n)=(p-1)(q-1).

Теорема 3. Якщо n=pq, (p і q – відмінні друг від друга прості числа) і х – просте відносно р и q, то

xj(n) = 1 (mod n).

Наслідок . Якщо n=pq, (p і q – відмінні друг від друга прості числа) і є просте відносно j(n), то відображення

Ее,n: x®xe (mod n)

є взаємно однозначним на Zn.

Очевидний і той факт, що якщо е – просте відносно (n), то існує ціле d, таке, що

ed = 1 (mod j(n)) (3)

На цих математичних фактах і заснований популярний алгоритм RSA.[4]

Нехай n=pq, де p і q – різні прості числа. Якщо e і d задовольняють рівнянню (3), то відображення Ее,n і Еd,n є інверсіями на Zn. Як Ее,n, так і Еd,n легко розраховуються, коли відомі e, d, p, q. Якщо відомі e і n, але p і q невідомі, то Ее,n являє собою однобічну функцію; перебування Еd,n по заданому n рівнозначно розкладанню n. Якщо p і q – досить великі прості, то розкладання n практично не здійсненне. Це і закладено в основу системи шифрування RSA.

Користувач i вибирає пару різних простих pi і qi і розраховує пари цілих (ei, di), що є простими відносно j(ni), де ni=pi qi . Довідкова таблиця містить публічні ключі {(ei ,ni)}.[20]

Припустимо, що вихідний текст

x =(x0, x1, ..., xn-1), xÎZn , 0 £ i < n,

Zn-безліч цілих чисел

спочатку представлений по підставі ni :

N = c0+ci ni+....

Користувач i зашифровує текст, при передачі його користувачу j, застосовуючи до n відображення Edi,ni :

N ® Edi,ni n = n’.

Користувач j робить розшифрування n’, застосовуючи Eei,ni :

N’ ® Eei,ni n’= Eei,ni Edi,ni n = n .

Очевидно, для того щоб знайти інверсію Edi,ni стосовно Eei,ni, потрібно знання множників n=pi qi. Час виконання найкращих з відомих алгоритмів розкладання при n=10100 на сьогоднішній день виходить за межі сучасних технологічних можливостей [1].

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

Приклад 1Зашифруємо повідомлення “САВ”. Для простоти будемо використовувати маленькі числа (на практиці застосовуються набагато більші).

Виберемо p=3 і q=11.

Визначимо n=3*11=33.

Знайдемо (p-1)(q-1)=20. Отже, у якості d, взаємно простої з 20, приймемо наприклад, d=3.

Виберемо число е. Як таке число може бути узяте будь-яке число, для якого задовольняється співвідношення (е*3) (mod 20) = 1, наприклад 7.

Примітка: для простого знаходження числа е досить вирішити в цілих числах рівняння  , де а=1,2..n (перебираючи значення n до першого цілого е)

Представимо повідомлення як послідовність цілих чисел за допомогою відображення: А®1, У®2, З®3. Тоді повідомлення приймає вид (3,1,2). Зашифруємо повідомлення за допомогою ключа {7,33}.

C[1] = (37) (mod 33) = 2187 (mod 33) = 9,

C[2] = (17) (mod 33) = 1 (mod 33) = 1,

C[3] = (27) (mod 33) = 128 (mod 33) = 29.

Розшифруємо отримане зашифроване повідомлення C{9,1,29} на основі закритого ключа {3,33}:

M[1] = (93) (mod 33) = 729 (mod 33) = 3,

M[2] = (13) (mod 33) = 1 (mod 33) = 1,

M[3] = (293) (mod 33) = 24389 (mod 33) = 2.

Приклад 2

Шифруємо слово БІГ . Коефіцієнти p=3, q=7.