ЗІКС_lab.doc

80
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Запорізький національний технічний університет Методичні вказівки до лабораторних робіт з дисципліни Захист інформації у комп’ютерних системах ” для студентів спеціальностей 8.05010201 «Комп’ютерні системи та мережі» та 8.05010203 «Спеціалізовані комп'ютерні системи»

Upload: ian-jones

Post on 24-Dec-2015

4 views

Category:

Documents


3 download

TRANSCRIPT

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

Запорізький національний технічний університет

Методичні вказівки до лабораторних робіт з дисципліни “ Захист

інформації у комп’ютерних системах ”для студентів спеціальностей 8.05010201

«Комп’ютерні системи та мережі» та 8.05010203 «Спеціалізовані комп'ютерні системи»

2014

2

ЛАБОРАТОРНА РОБОТА № 1

ПРОСТІ ШИФРИ

Мета роботи: Ознайомитися з прикладами простих шифрів.

Використовуване програмне забезпечення: програми «Шифр_Полібія» та «Частотний криптоаналіз».

1.1 Завдания на лабораторну роботу

1. Запустити програму «Шифр_Полібія» (див. Додаток А).2. Обрати мову, задати ключ, сформувати квадрат Полібія.3. Виконати шифрування та розшифрування повідомлення.4. Запустити програму «Частотний криптоаналіз».5. Завантажити один з зашифрованих текстових файлів.6. Скориставшись методом частотного криптоаналіза розкрити

зашифрований текст. Виписати отриману таблицю замін. 7. Порівняти частоти замінених літер з еталоном.

1.2 Зміст звіту

1. Титульний лист, тема і мета роботи.2. Повідомлення у відкритому та зашифрованому за квадратом

Полібія вигляді.3. Таблиця замін з частотами зустрічання літер. Уривок розкритого

тексту.4. Висновки по роботі.

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

1. Що є ключем в шифрі Полібія? Які вимоги висуваються до ключа?2. За яким принципом формується квадрат Полібія?3. Які ще відомі варіанти шифра Полібія?4. Що таке таблиця замін? Які до неї вимоги?5. Які різновиди шифру простої заміни існують?6. Що таке частотний криптоаналіз?7. Чи є шифр Полібія різновидом шифру простої заміни?

3

ЛАБОРАТОРНА РОБОТА № 2

ЛІНІЙНІ РЕКУРЕНТНІ ПОСЛІДОВНОСТІ

Мета роботи: Ознайомитися з генеруванням псевдовипадкових послідовностей, що задаються лінійними рекурентними співвідношеннями.

Використовуване програмне забезпечення: пакети математичних обчислень MathCad і Maple.

2.1 Завдания на лабораторну роботу

1. Визначити глибину лінійної рекурентної послідовності (див. Додаток Б). Сформувати характеристичний многочлен лінійної рекурентної послідовності , знайти його порядок і перевірити його на незвідність. Обчислити період лінійної рекурентної послідовності при довільних початкових значеннях , . З’ясувати, чи зміниться і як саме період лінійної рекурентної послідовності при інших початкових значеннях , .

Послідовність взяти із таблиці 2.1 згідно з номером варіанта N.

2. Визначити рекурентне співвідношення, що задає лінійну рекурентну послідовність глибини , ділянкою якої є

.

Параметри взяти із таблиці 2.2 згідно з номером варіанта N.

2.2 Зміст звіту

1. Титульний лист, тема і мета роботи.2. Результати обчислень.3. Висновки по роботі.

Таблиця 2.1 – Варіанти для завдання 1

4

N1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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

1. Як задається бітова лінійна рекурентна послідовність (ЛРП)?2. Для чого використовуються ЛРП в криптографії?3. Що таке глибина ЛРП?4. Що таке характеристичний багаточлен ЛРП?5. Який багаточлен називається незвідним?6. Як перевірити багаточлен на незвідність?7. Що таке період ЛРП?8. Від чого залежить період ЛРП?9. Як визначити рекурентне співвідношення, що задає ЛРП, знаючи

ділянку послідовності?10.Що таке регістри зсуву?

Таблиця 2.2 – Варіанти для завдання 2

5

N1 1 1 1 1 1 12 1 1 0 0 1 13 1 1 1 0 0 14 1 0 1 0 1 05 0 1 1 0 0 16 1 0 0 1 0 17 0 0 1 1 0 08 1 1 1 0 1 09 1 0 0 1 1 010 1 0 1 1 1 011 0 0 1 1 1 012 0 1 1 1 0 013 0 1 0 1 0 114 0 0 1 0 1 115 1 0 0 1 1 1

6

ЛАБОРАТОРНА РОБОТА № 3

СТАНДАРТ БЛОЧНОГО ШИФРУВАННЯ ДСТУ ГОСТ 28147:2009

Мета роботи: Ознайомитись з методом шифрування й дешифрування даних з використанням алгоритму шифрування ДСТУ ГОСТ 28147:2009.

Використовуване програмне забезпечення: демонстраційна програма «ГОСТ».

3.1 Завдания на лабораторну роботу

1. Запустіть програму «ГОСТ» (див. Додаток В).2. Створіть 24-х розрядний графічний файл, для наочності

рекомендується створити файл з однотонним фоном й крупним написом, наприклад:

3. Виконайте операцію шифрування в режимах простої заміни, гамування та гамування зі зворотнім зв’язком. (див. Додаток Г). Порівняйте зашифровані файли між собою та з оригіналом. Результати порівняння занесіть в таблицю 3.1 в графи 1-2.

4. Відкрийте зашифровані зображення в графічному редакторі та внесіть в них декілька змін. Виконайте розшифрування і порівняйте отримані файли з оригіналом. Результати порівняння занесіть в таблицю 3.1 в графу 3.

5. Поясніть характер впливу змін у зашифрованих файлах на результат розшифрування.

7

6. Сформуйте текстовий файл. Рекомендується вибрати рядок тексту без спецсимволів довжиною 8-10 блоків (64-80 символів). Перший і другий блоки тексту зробіть однаковими.

7. Виконайте операцію шифрування в режимах простої заміни, гамування та гамування зі зворотнім зв’язком. Порівняйте зашифровані файли між собою та з оригіналом. Результати порівняння занесіть в таблицю 3.1 в графу 4.

8. Замініть один символ в 5-му блоці зашифрованих файлів і виконайте розшифрування. Порівняйте отримані тексти з оригіналом. Результати порівняння занесіть в таблицю 3.1 в графи 5-6.

9. Поясніть характер впливу змін у зашифрованих файлах на результат розшифрування.

10.Сформуйте для текстового файлу імітоприкладку. Замініть декілька символів у файлі з імітоприкладкою і виконайте її перевірку. Результати занесіть в таблицю 3.1 в графи 7-8.

3.2 Зміст звіту

5. Титульний лист, тема і мета роботи.6. Зашифровані та розшифровані файли.7. Порівняльна таблиця.8. Висновки.

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

11.Що таке блочний шифр?12.Які основні характеристики має шифр ДСТУ ГОСТ 28147:2009?13.Опишіть режими ГОСТ?14.Чому режим простої заміни не рекомендується використовувати

для шифрування?15.Чим відрізняються режими гамування і гамування зі зворотнім

зв’язком?16.Як впливають помилки в зашифрованих текстах на результат

розшифрування в різних режимах алгоритму ГОСТ?17.Як формується імітоприкладка?18.Для чого призначений режим імітоприкладки?19.Що таке сітка Фейстеля?

8

Таблиця 3.1 – Аналіз шифру ДСТУ ГОСТ 28147:2009

№ Критерій порівняння

Режим

Проста заміна

ГамуванняГамування

зі зворотнім зв’язком

Графічний файл

1.Чи є схожість з оригіналом?

2.Чи є схожість з іншими режимами?

3.Як зміни вплинули на результат розшифрування?

Текстовий файл4. Чи є однакові блоки?

5.Скільки символів змінилося?

6. Які блоки змінились?Імітоприкладка

7.Чи можна з’ясувати, що текст було змінено?

8.Чи можна з’ясувати, які саме зміни відбулись?

9

ЛАБОРАТОРНА РОБОТА № 4

АСИМЕТРИЧНИЙ АЛГОРИТМ ШИФРУВАННЯ RSA

Мета роботи: ознайомитися з асиметричним алгоритмом шифрування RSA.

Використовуване програмне забезпечення: пакет математичних обчислень Maple.

4.1 Завдания на лабораторну роботу

1. Оберіть із таблиці Д.1 (див. Додаток Д) прості числа і , . Обчисліть модуль і функцію Ейлера . За

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

2. Оберіть повідомлення , . Здійсніть зашифру-вання

повідомлення за допомогою відкритого ключа .3. Розшифруйте обчислену криптограму за допомогою

секретного ключа .

4.2 Зміст звіту

1. Титульний лист, тема і мета роботи.2. Короткий опис алгоритму. 3. Вибрані значення параметрів. 4. Проведені обчислення. 5. Сформовані відкритий і секретний ключі. 6. Результати зашифрування і розшифрування.7. Висновки по роботі.

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

1. Опишіть процедуру генерації ключів в RSA.2. Опишіть процедури зашифрування та розшифрування в RSA.3. Побудуйте схему криптосистеми з відкритим ключем.4. Від чого залежить криптостійкість алгоритму RSA?

10

ЛАБОРАТОРНА РОБОТА № 5

“СХЕМА ДІФФІ-ХЕЛЛМАНА”

Мета: ознайомитись зі схемою Діффі-Хеллмана отримання спільного секретного ключа.

Програмне забезпечення

Для виконання лабораторної роботи використовується пакет математичних обчислень MathCad.

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

Для заданих параметрів N = 29 та g = 10 створити спільний секретний ключ.

1. Оберіть випадкове число kA, 1 < kA < N .2. Обчисліть значення yA за формулою:

yA = g kA mod N .

3. Оберіть випадкове число kB, 1 < kB < N .4. Обчисліть значення yB за формулою:

yB = g kB mod N .

5. “Обміняйтеся” значеннями yA та yB .6. Обчисліть значення yBA за формулою:

yBA = yB kA mod N .

11

7. Обчисліть значення yAB за формулою:

yAB = yA kB mod N .

8. Переконайтесь, що значення yAB та yBA співпадають.9. Переведіть значення yAB в двійковий 6 – розрядний вигляд та

сформуйте спільний секретний ключ.

Звіт

Титульний лист, тема й мета роботи. Обрані значення параметрів. Проведені розрахунки. Сформований секретний ключ.

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

1. Опишіть схему Діффі-Хеллмана створення спільного секретного ключа.

2. На чому базується криптографічна стійкість схеми Діффі-Хеллмана?

3. Як впливає величина простого числа N на криптостійкість?

12

ЛАБОРАТОРНА РОБОТА № 6

ФУНКЦІЇ ХЕШУВАННЯ

Мета роботи: ознайомитися з властивостями різних хеш-функцій.

Використовуване програмне забезпечення: комп’ютерна програми Hash.exe.

6.1 Завдання на лабораторну роботу

За допомогою програми Hash.exe виконайте наступні дії:1) введіть довільний текст у поле для вводу тексту, виконайте хешування різними функціями хешування, зверніть увагу на їхню вихідну довжину, запишіть до звіту отримані хеш-коди;2) замініть у тексті будь-який символ і знов виконайте завдання перше, проаналізуйте, як змінилися отримані хеш-коди в порівнянні з попередніми, проаналізуйте, наскільки чутлива хеш-функція.

6.2 Зміст звіту

1. Титульний лист, тема і мета роботи.2. Проведені обчислення.3. Висновки по роботі.

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

1. Дайте визначення хеш-функції.2. Яким властивостями повинна володіти хеш-функція?3. Наведіть приклади відомих хеш-функцій.

13

ЛАБОРАТОРНА РОБОТА № 7

СХЕМА ЦИФРОВОГО ПІДПИСУ НА БАЗІ RSA

Мета роботи: ознайомитися з найпростішою функцією хешування та схемою RSA електронного цифрового підпису.

Використовуване програмне забезпечення: пакет математичних обчислень MathCad.

7.1 Завдания на лабораторну роботу

1. Створити хеш-образ повідомлення «ВИДАТИ _ СТО _ ГРН _ ГЛБУХ _ [ПРІЗВИЩЕ]», використовуючи формулу:

, ,

та кодову таблицю:

А 1 00001 З 9 01001 О 17 10001 Ц 25 11001Б 2 00010 И/

Й10 01010 П 18 10010 Ч 26 11010

В 3 00011 І 11 01011 Р 19 10011 Ш 27 11011Г/Ґ

4 00100 Ї 12 01100 С 20 10100 Щ 28 11100

Д 5 00101 К 13 01101 Т 21 10101 Ю 29 11101Е 6 00110 Л 14 01110 У 22 10110 Я 30 11110Є 7 00111 М 15 01111 Ф 23 10111 Ь 31 11111Ж 8 01000 Н 16 10000 Х 24 11000 _ 32 00000

Хеш-образ повідомлення подати в двійковому вигляді.

2. Користуючись закритим ключем за модулем n = 33 схеми RSA, поставте цифровий підпис під повідомленням:

“ВИДАТИ _ СТО _ ГРН _ ГЛБУХ _ [ПРІЗВИЩЕ]”,

14

взявши хеш-образ із завдання №1; цифровий підпис під повідомленням подати в двійковому вигляді.

3. Для отриманої в двійковому вигляді послідовності

00101 01110 00100 01110 00011 01110 10000 00000

01101 00001 00000 01100 01001 01011 01011 01001

01110 01101 00000 00100 10000 01101 00000 00101

01001 10000 00110 01010 10010 01110 10000 11001

а) визначте повідомлення й цифровий підпис (останні 5 біт);б) запишіть в десятковому вигляді повідомлення й цифровий підпис;в) за допомогою відкритого ключа та модуля витягніть

хеш-образ повідомлення;г) сформуйте хеш-образ отриманого повідомлення;д) перевірте справжність поставленого підпису, порівнявши

результати попередніх двох пунктів;е) прочитайте повідомлення.

7.2 Зміст звіту

1. Титульний лист, тема і мета роботи.2. Обчислення хеш-образу повідомлення, двійковий вигляд хеш-

образу повідомлення.3. Відкритий та закритий ключі за модулем схеми RSA.4. Цифровий підпис під повідомленням в десятковому і двійковому

вигляді.5. Результати перевірки цифрового підпису.6. Текст повідомлення.7. Висновки по роботі.

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

1. Класична схема формування цифрового підпису.2. Схема цифрового підпису RSA.3. Від чого захищає цифровий підпис?

15

4. Яким чином цифровий підпис захищає документ, що передається, від підробки?

16

ЛАБОРАТОРНА РОБОТА № 7 Математичний пакет Maple.

Мета роботи: ознайомитися з пакетом математичних обчислень Maple.

Використовуване програмне забезпечення: пакет математичних обчислень Maple.

2.1 Теоретичні відомостіРобота c Help

Для того щоб одержати інформацію про використання деякої функції, необхідно набрати ім'я функції в командному рядку Maple і натиснути <Ctrl+F1>.

Для отримання довідки по підрозділу необхідно вибрати пункти меню

Help=> Introduction

і вибрати розділ, мандруючи по деревоподібній структурі меню.

Рисунок 2.1 – Основне вікно довідки в Maple

17

Елементи синтаксису мови:

%

– системна змінна, що зберігає результат попередньої операції;

:

– фіксатор виразу, що запобігає виводу результатів обчислення поточного виразу на екран;

;

– фіксатор виразу, що дозволяе відображення результатів обчислення поточного виразу на екран;

#

– покажчик програмного коментарю;

"

– обмежувач рядка (наприклад, 'string');

:=

– оператор присвоювання (наприклад, х:=5);

: ;

– порожній оператор;

::

– покажчик типу змінної (наприклад, n::integer або z::complex);

\

– знак оберненого ділення, що приймає значення в залежності від контексту (див. довідку по цьому знаку backslash).

Масиви, вектори і матриці

Одним із типів даних є списки (lists). Вони створюються за допомогою квадратних скобок, наприклад: [1,2,3,4] - список із чотирьох цілих чисел; [1. ,2.34,5] - список із двох дійсних і одного цілого числа; [а,b,'Привіт'] - список із двох символів (змінних) і строкової

константи; [sin(x), 2*cos(x), a^2–b] — список із трьох математичних

виразів. Вектори і матриці є окремим типом даних. Для створення

векторів (одномірних масивів) і матриць (двумірних масивів) служить функція array. Звичайно вона використовується в таких формах: аrrау[а..b,s1] — повертає вектор з індексами від а до b і

18

значеннями в одномірному списку s1;  аrrау[а..b,c..d,s2] — повертає матрицю з номерами рядків від а

до b, номерами стовпчиків від c до d і значеннями в двумірному списку s2.

Елементами векторів і масивів можуть бути константа, змінні, вирази, списки й інші об'єкти. Ці елементи є індексованими змінними, і їх положення вказується індексами.

Деякі функції MapleФункція сonvert - перетворення уявлення числа.

За допомогою функції convert Maple може перетворювати числа в уявлення з різноманітною основою (від 2 до 36, у тому числі бінарною і шістнадцятирічною) , наприклад:

> convert(7,binary);111

> convert(20,hex);14

> convert(101, decimal, binary);

5

При символьних обчисленнях Maple реалізує точну арифметику. Це значить, що результат може бути отриманий із будь-яким числом цифр. Проте треба пам'ятати, що ідеально точні чисельні обчислення виконуються тільки у випадку цілочисельних операцій.

Оператор mod - обчислення в кільці цілих чисел за модулем m.

e mod m modp(e, m)

Параметри: e – алгебраїчний вираз m – невід’ємне число, модуль перетворень

Оператор mod обчислює вираз e над кільцем цілих чисел за модулем m.

19

Оператор mod можуть використовувати наступні функції для поліноміальної і матричної арифметики над скінченними кільцями і полями

Content, Det, DistDeg, Divide, Eval, Expand, Factor, Factors, Frobenius, Gausselim, Gaussjord, Gcd, Gcdex, Hermite, Interp, Inverse, Issimilar, Lcm, Normal, Nullspace, Power, Powmod, Prem, Primfield, Primitive, Primpart, Quo, Randpoly, Randprime, Rem, Resultant, Roots, Smith, Sprem, Sqrfree, taylor.

Приклади:> 17 mod 5;

2> x^3+10*x+1 mod 5;

x3 1> 1/3 mod 7;

5> 5*3 mod 7;

1> modp(55,7);

6> modp(x^12+x+19,3);

x12 x 1> g := Gcd(a,b) mod 11;

:= g x 5> Divide(a,g,'q') mod 11;

true

Функція sqrt - обчислення квадратного кореня.

sqrt(x)

Параметри: x - алгебраїчний виразПриклади:> sqrt(1000);

10 10

20

> sqrt(1000.0);31.62277660

> sqrt(x);x

> sqrt(-9*x^2*y);

3 x2 yФункція Divide - перевірка подільності многочленів

Divide(a, b, 'q')

Параметри: a, b - поліном; q - (необов'язковий параметр) ім'я змінноїФункція Divide перевіряє, чи ділиться a на b без залишку. В

змінну q поміщається результат ділення у випадку успіху.Приклади:> Divide(x^3+x^2+2*x+3, x+2, 'q') mod 5;

true

> q; x2 4 x 4

Функція Rem - виділення залишку від ділення многочленів.Функція Quo - виділення неповної частки від ділення

многочленів. Rem(a,b,x) Rem(a,b,x,'q') Quo(a,b,x) Quo(a,b,x,'r')

Параметри: x - ім'я змінної в многочленах a, b - многочлени від змінної x q, r - імена змінних

Два поліноми a і b (степінь a > степеня b) пов'язані таким співвідношенням.

a = b*q + r.

21

Тут r - залишок, а q - неповна частка від ділення a на b.Якщо використовувати дані функції разом з оператором mod p,

ділення буде виконуватися над кільцем цілих чисел за модулем p.

Приклади:> a := x^4+5*x^3+6:> b := x^2+2*x+7:> r := Rem(a,b,x,'q') mod 13;

:= r 5 x 6> q;

x2 3 x> s := Quo(a,b,x,'p') mod 13;

:= s x2 3 x> p;

5 x 6> t:=Expand((x^2+2*x+7)*(x^2+3*x)+(5*x+6)) mod

13; := t x4 5 x3 6

Процедура msolve – розв’язання рівнянь у Zm.

msolve(eqns,vars,m) msolve(eqns,m)

Параметри: eqns – одне або система рівнянь; vars - (необов'язковий параметр) одне або набір імен; m - ціле число, модуль перетворень.

Процедура msolve розв’язує рівняння в eqns у цілих числах за mod m. Повертається NULL якщо не існує розв’язків у цілих числах за mod m.

Приклади:> msolve({3*x-4*y=1,7*x+y=2},19);

{ },y 11 x 15

> msolve(x^2=3,5); # Немає рішень

22

Функція Expand - розкриває скобки і подає добуток у вигляді суми.

Expand(a)Параметри:а - будь-який алгебраїчний вираз.

Приклади:> Expand( (x+2)^2*(x-2) ) mod 3;

x3 2 x2 2 x 1

Функція Powmod - зведення многочлена в степінь за модулем іншого многочлена.

Powmod(a, n, b, x)Powmod(a, n, b)

Параметри: a - многочлен від x n - ціле число b - многочлен від x x - ім'я змінної Функція Powmod обчисляє a^n mod b, де a і b - многочлени від

x, n-ціле (показник степені, можливо від’ємне).Приклади:

> Powmod(x,16,x^4+x+1,x) mod 2;x

> Powmod(x,-5,x^4+x+1,x) mod 2;x2 x 1

Програмування в Maple

Умовні вирази if.

23

Для підготування програм, що розгалужуються, у Maple-мову програмування включений оператор if, що дозволяє створювати таку конструкцію:

if <Умова порівняння> then <Елементи>  |elif < Умова порівняння> then <Елементи>| |e1se <Елементи>|   fi:

У вертикальних рисках | | зазначені необов'язкові елементи даної конструкції.

> a := 7; b := 3; := a 7 := b 3

> if (a > b) then a else b end if;7

Цикли for і while.

Найчастіше необхідно циклічне повторення виконання виразу задане число раз або доти, поки виконується визначена умова. Maple має узагальнену конструкцію циклу, що задається в такий спосіб:

| for <name>| |from <exprl>| |to <expr2>| |by <expr3>| | while <expr4>| do <statement sequence> od;

Тут name - ім'я керуючої змінної циклу, exprl, ехрr2 і ехрr3 - вирази, що задають початкове значення, кінцеве значення і крок змінної name, ехрr4 - вираз, що задає умову, доки цикл (набір об'єктів між словами do і od) буде виконуватися.

У ході виконання циклу керуюча змінна змінюється від значення exprl до значення ехрr2 із кроком, заданим ехрr3. Якщо блок by <ехрr3> відсутній, то керуюча змінна буде змінюватися з кроком +1. Наприклад:

> for i from 1 to 3 do print(i): od;

24

123

Прості процедури.

Процедурою називають модуль програми, що має самостійне значення і виконує одну або декілька операцій, звичайно достатньо складних і відмінних від операцій, виконуваних вбудованими операторами і функціями.

Процедури визиваються так само, як вбудовані функції, - по імені зі списком фактичних параметрів. При цьому процедури звичайно не повертають ніяких значень після свого виконання, хоча можуть привласнювати значення вхідним змінним.

Найпростіша форма завдання процедури така:

name :=рrос(Параметры) Тіло процедури end;

При виклику процедури вираженням виду:

name(Фактичні_параметри)

фактичні параметри підставляються на місце формальних. Невідповідність фактичних параметрів типу заданих змінних веде до повідомлення про помилку і до відмови від виконання процедури.

Приклад процедури:> Fun :=proc(x,y)

x*y; end: > Fun(5,9);

45

Процедури-функції у відповідь на виклик до них повертають деяке значення. Вони як би є новими функціями, що задаються користувачем. Процедуру-функцію можна задати за допомогою функціонального оператора ”->”.

Наприклад:> g := (x,y) -> x*y;

:= g ( ),x y x y

25

> g(1,2);2

2.2 Завдання на лабораторну роботу

N=Варіант = <Порядковий номер за списком> mod 6.1. Представити в двійковій та шістнадцятирічній

системі числення число <N*1 000 000>.2. Для i, що змінюється від 1 до 10, вивести на екран

<((N+1)^i) за модулем (20+N-i)>.3. Розв’язати порівняння a*x+b*y=0 mod p, де a=< N*2 >; b=<N*3>; p=< N+5> 4. Для заданих многочленів A і B перевірити, чи

ділиться A на B за модулем p. Знайти частку і залишок від ділення многочленів A і B за модулем p двома засобами: вручну і за допомогою пакета Maple.

1) A= x^10+x^4+x^3+1B= x^7+x+1p=2.

2) A= 2*x^15+x^7+1*x^3B= x^5+2*x+1p=3.

3) A= 3*x^17+2*x^8+x^3+1B= 3*x^6+2*x+1p=5.

4) A= 4*x^11+x^4+3*x^2+1B= x^3+x+1p=7.

5) A= 5*x^16+x^5+4*x^3+1B= x^4+3*x+1 p=11.

6) A= 6*x^12+x^11+5*x^10B= 5*x^4+3*x+1p=13.

5. Обчислити добуток двох многочленів із пункту 4, використовуючи процедуру-функцію.

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

26

1. Назвіть параметри функції mod.2. Як перевірити подільність многочленів?3. Як задати список?4. Як задати двумірний масив?5. Назвіть параметри функцій Rem і Quo.6. У чому відмінність між процедурою і функцією?7. Які операції дозволяє виконувати функція GF?.

27

Додаток АПрості шифри

Історія криптографії налічує не одне тисячоліття. Згадки про примітивні шифри зустрічаються ще до нашої ери. У криптографії давніх часів використовувалися два види шифрів: заміна й перестановка Клас шифрів, які зводяться до замін або перестановок літер відкритого тексту прийнято називати простими.

Шифр Цезаря

Історичним прикладом шифру заміни є шифр Цезаря (I в. до н.е.), описаний істориком Древнього Рима Светонієм. Гай Юлій Цезар використав у своїй переписці шифр власного винаходу. Історик Светоній не приводить фактів дешифрування переписки Цезаря. Сам Цезар все життя використав той самий ключ. Цим шифром він користувався, зокрема, для обміну посланнями із Цицероном.

Ключем у шифрі Цезаря є число 3. Кожна буква у вихідному тексті зміщується по алфавіту на 3 позиції.

Використовуємо латинський алфавіт, що містить 26 літер і пробіл, який стоїть після букви Z:

ABCD EFGH IJKL MNOP QRST UVWX YZ SpaceВихідний текст:

«STATUS BELLI» – СТАН ВІЙНИЗашифрований текст

«VWDWXV C EHOOL»

Шифр перестановки

Задається перестановка з n елементів.Текст, що підлягає зашифруванню, розбивається на блоки

довжини n. У кожному блоці символи переставляються відповідно до заданої перестановки.

Розглянемо приклад шифрування для перестановки

1 2 3 4 53 2 5 1 4

28

Вихідний текст:«СВЯЩЕ ННАЯР ИМСКА ЯИМПЕ РИЯЬЭ»

Зашифрований текст«ЩВСЕЯЯННРАКМИАСПИЯЕМЬИРЭЯ»

Зашифрований текст виписується без пропусків.

Шифр «Сцитала»

Одним з перших фізичних приладів, що реалізують шифр перестановки, є так званий жезл Сцитала. Він був винайдений в «варварській» Спарті в часи Лікурга (V в. до н.е.). Шифр Сцитала застосовувався в часи війни Спарти проти Афін. Рим швидко скористався цим шифром. Для зашифрування тексту використовувався циліндр заздалегідь обумовленого діаметра. На циліндр намотувався тонкий ремінь із пергаменту, і текст виписувався по порядку по утворюючому циліндру (уздовж його осі). Потім ремінь змотувався й відправлявся одержувачеві повідомлення. Одержувач намотував його на циліндр того ж діаметра й читав текст по осі циліндра. Ключем шифру є діаметр циліндра і його довжина, які по суті породжують дворядковий запис, аналогічний підстановці.

Винахід дешифрувального пристрою приписується великому Аристотелю. Він запропонував використати конусоподібний «спис», на який намотується ремінь: цей ремінь пересувався по осі до того положення, поки не з'являвся осмислений текст.

Квадрат Полібія1

Один з найдавніших простих шифрів приписують грецькому громадському діячеві та науковцю Полібію. В літературі описано декілька варіантів його шифру «Квадрат Полібія».

За Мельниковим [7], шифрування відбувається наступним чином: обирається слово-ключ, кількість літер в якому залежить від мови; ключ записується в першому рядку квадрата, в подальших рядках виписуються літери алфавіта, відсутні в ключі; кожна літера повідомлення замінюється на ту, що стоїть в квадраті на рядок нижче (при розшифруванні – на рядок вище).

1 Полібій - грецький державний діяч, полководець, історик, жив в III в. до н.е.

29

На рисунку А.1 показано скріншот з програми «Шифр_Полібія» з квадратом, сформованим за допомогою ключа «весна».

Рисунок А.1 – Квадрат Полібія

Шифр простої заміни

До простих шифрів, зокрема, належать шифри простої заміни – сукупність шифрів, які зводяться до побудови таблиці замін символів алфавіту і підстановки літер повідомлення за таблицею.

30

Якщо символи одного алфавіту замінюються на символи того ж самого алфавіту, шифр називається моноалфавітним, якщо іншого (наприклад, літери на числа чи позначки) – поліалфавітним. Якщо заміні підлягає не одна літера, а буквосполучення, шифр може бути біграмним (2 літери), триграмним (3 літери) тощо.

Частотний криптоаналіз

Процеси шифрування і розшифрування в шифрі простої заміни неможливі без таблиці замін. Однак, при необхідності дізнатися вміст зашифрованого повідомлення без знання таблиці замін можна вдатися до методу частотного криптоаналізу.

Частотний криптоаналіз полягає в порівнянні статистичних характеристик зашифрованого тексту з еталонною статистикою текстів відповідною мовою.

Для кожного символу зашифрованого повідомлення підраховується частота його зустрічання в повідомленні.

Рисунок А.2 – Частотний криптоаналіз

31

В еталоні для відповідної мови розшукується символ із найближчою частотою зустрічань і приймається за потенційну заміну для обраного символу. Таким чином, будується можлива таблиця замін і застосовується до зашифрованого повідомлення. Підбір потенційних замін повторюється до повного розкриття повідомлення.

На рисунку В.2 наведено скріншот з програми «Частотний криптоаналіз» з порівняльною таблицею частот зустрічання символів в зашифрованому повідомленні та еталоні. Програма дозволяє по черзі проводити заміни літер зі схожими частотами. Для проведення заміни необхідно в лівій частині таблиці обрати літеру, яку треба замінити, а в правій – літеру, на яку замінювати. За проведеними замінами в середній частині вікна буде сформована таблиця замін.

Шифр Гронсфельда2

Ключем є деяке десяткове число. Цифри цього числа циклічно записуються під символами відкритого тексту. При шифруванні кожна буква відкритого тексту зсувається за алфавітом на число позицій, зазначених під нею.

2 Граф Гронсфельд був начальником першого дешифрувального відділення у Німеччині. У 1734г. він модернізував ідеї Альберті і Вижинера – творців шифрів багатоалфавитної заміни. Альберті, Леон Баттіста (Alberti, Leon Battista) (1404-1472), італійський філолог, математик, криптограф, архітектор. Блез де Віженер – придворний короля Франції Генріха III, французький посол в Римі. У запропонованому ним в 1585 році шифрі використовується секретне слово або фраза. Ця система періодичної лозунгової заміни стала першим великим відкриттям в криптографії з часів Юлія Цезаря. «Квадратний шифр» Віженера протягом 350 років вважався однією з найбільш надійних систем. Головною перевагою методу Віженера була його простота.

1 2 3 4 5 6 7 8 9 10 11 12 13A B C D E F G H I J K L M

14 15 16 17 18 19 20 21 22 23 24 25 26N O P Q R S T U V W X Y Z

32

Біграмні шифри

У біграмних шифрахи повідомлення розбивається на біграми – блоки по дві букви

Біграмні шифри були запропоновані Іоганном Трісемусом (Німеччина). У 1508 році він опублікував першу друковану роботу з криптології «Поліграфія». Шифр Playfair, заснований на біграмному шифрі, використовувався Великобританією в Першу світову війну.

Для зашифрування застосовується квадрат Полібія, заповнений літерами алфавіту випадковим чином або з використанням ключового слова. За певним правилом біграма відкритого тексту замінюється на біграму: кожна буква біграми поміщається в квадрат Полібія.

Рисунок А.3 – Квадрат Полібія

Якщо обидві літери опинилися в одному рядку, наприклад, rb, то при шифруванні беруться букви, що стоять праворуч від них: rb → ad.

Якщо обидві літери опинилися в одному стовпці , наприклад, bx, то при шифруванні беруться букви, що стоять під ними: bx → lp.

Якщо букви біграми лежать в різних рядках і стовпцях, наприклад, rt, то при шифруванні беруться букви з «кутів прямокутника»: rt → do.

Вихідний текст gr ea tb ri ta in is th el ar geЗашифрований текст

og if sd ac qd ek pq yd pn ba nc

Вихідний текст G E R M A N YКлюч 1 3 5 7 9 1 3Зашифрований текст H H W T J O B

c i p h er a b d fg k l m no q s t uv w x y z

33

У другу світову війну застосовувався біграмний шифр Double Playfair, що використовує подвійний квадрат Полібія. Цей шифр був запропонований англійцем Чарльзом Уїнстоном в 1854г.

Для зашифрування біграми використовуються два квадрата. Перша буква біграми поміщається в перший квадрат, друга – у другій.

Рисунок А.4 – Подвійний квадрат Полібія

Якщо букви біграми утворюють прямокутник, то беруться букви з «кутів прямокутника».

Якщо обидві літери лежать в одному рядку, то беруться букви з того ж рядка, що стоять на тих же місцях в протилежних таблицях.

Вихідний текст tw ok ey wo rd sa re ch os enЗашифрований текст my ko bz wi ec pb er bg mr uu

Шифр Вернама3

3 Гілберт Вернам (Gilbert S. Vernam, 1890-1960) – американський інженер. Закінчив Массачусетський коледж (де був президентом Асоціації бездротового зв'язку) і в 1914 році вступив на роботу в AT & T у відділ телеграфного зв’язку. Незабаром його запрошують в спеціальну секцію, зайняту питаннями секретності телеграфного зв’язку.

У 1917 році Вернам винаходить перший автоматичне шифрувальний - дешифровальний пристрій, а наступного року, після консультацій з колегами з галузі і військових відомств, пропонує прийом «нескінченного ключа» – те, що ми сьогодні і називаємо «шифром Вернама», або «одноразовим блокнотом». Через три з лишком десятки років Клод Шеннон строго доведе абсолютну теоретико - інформаційну стійкість шифру Вернама.

До криптологічних ідей Вернама дуже уважно поставилися в Німеччині (використання «одноразових блокнотів» – модифікації шифру Вернама – введено в практику німецьких дипломатів між 1921 і 1923 рр.) і Радянському Союзі, але не в США, хоча в Америці система Вернама висвітлювалася під багатьох публікаціях.

c i p h e d o u b lr a b d f e s q a rg k l m c f g h io q s t u k m n p tv w x y z v w x y z

34

Шифр Вернама здійснює побітове додавання -бітового відкритого тексту і -бітового ключа :

, .

Вихідний текст 0 0 1 1 0 1 0 1Гамма шифра 1 0 1 1 0 0 0 1Зашифрований текст 1 0 0 0 0 1 0 0Гамма шифра 1 0 1 1 0 0 0 1Вихідний текст 0 0 1 1 0 1 0 1

Шифр Вернама є абсолютно стійким шифром.Для абсолютної стійкості шифр необхідні: повна випадковість

(рівноймовірно) ключа (це, зокрема, означає, що ключ не можна виробляти за допомогою якого-небудь детермінованого пристрої); рівність довжини ключа і довжини відкритого тексту; однократність використання ключа.

У разі порушення хоча б однієї з цих умов шифр перестає бути абсолютно стійким і з’являються принципові можливості для його розкриття (хоча вони можуть бути важко реалізованими) .

35

Додаток БРекурентні співвідношення

В симетричному шифруванні широко використовується метод гамування – накладання на відкритий текст певної послідовності (гами шифру). При розшифруванні та ж сама послідовність накладається на шифртекст , тобто гама шифру є ключем шифрування. Під накладанням, як правило, маються на увазі операції додавання-віднімання.

В якості гами шифру нерідко виступає двійкова (бітова) послідовність, оскільки дуже зручно використовувати для накладання гами бітову операцію XOR (додавання за модулем 2):

зашифрування розшифрування.

В симетричному шифруванні один і той самий ключ має бути наявний і у відправника, і у отримувача. Гама шифру має таку ж довжину, як і повідомлення, тому недоцільно передавати її по каналам зв’язку.

Одним зі способів вирішення цієї проблеми є незалежне генерування гами шифру на боці відправника і на боці отримувача. При цьому використовуються генератори псевдовипадкових послідовностей, а по каналам зв’язку передається лише початковий стан генератора.

Розглянемо генератор псевдовипадкових послідовностей на основі лінійних рекурентних послідовностей (ЛРП).

ЛРП задається наступним співвідношенням:

,

де Члени послідовності і коефіцієнти приймають значення із

множини {0, 1}.Величина називається глибиною послідовності. Початковим станом псевдовипадкової послідовності виступають

перші значень ( ).

36

Характеристичним многочленом ЛРП називається многочлен вигляду:

.

Многочлен, який не можна розкласти на множники нижчого ступеня, називається незвідним (аналог простого числа).

Якщо многочлен степеня незвідний, то многочлен

діліться на многочлен .

Порядком многочлена називається найменше число , таке що многочлен ділиться на .

Порядок многочлена степеня не перевершує .Якщо порядок многочлена степеня дорівнює ,

многочлен є незвідним.

Важливою з точки зору криптографічної стійкості характеристикою генератора на ЛРП є період генерованої послідовності. Максимальне значення періоду залежить від глибини ЛРП та співвідношення, що її задає, а конкретне значення – від початкового стану послідовності.

Максимальний період послідовності глибини дорівнює

.

Якщо многочлен діліться на многочлен

степеня , то період послідовності з характеристичним многочленом

буде дільником значення і дорівнює його порядку.

Якщо характеристичний многочлен ЛРП є незвідним і –

просте число, то період послідовності дорівнює при будь-яких початкових значеннях, окрім всіх нулів.

Криптоаналітик, знаючи глибину ЛРП і маючи ділянку цієї

послідовності , може вирахувати коефіцієнти відповідного рекурентного співвідношення, розв’язавши систему відносно . Наприклад, для ділянки :

37

Розв’язок цієї системи – коефіцієнти – дозволяють задати рекурентне співвідношення

.

Приклад 1.

Розглянемо послідовність .Глибина послідовності , характеристичний многочлен

.

Многочлен не є незвідним, оскільки многочлен

не діліться на многочлен :

.

Дійсно, многочлен можна розкласти на

множники: .

Порядок многочлена дорівнює 6:

.

Період послідовності залежить від

початкових значень, але не перевершує .Приклад 2.

Розглянемо послідовність .Глибина послідовності , характеристичний многочлен

.

38

Многочлен є незвідним, оскільки многочлен

діліться на многочлен :

,

і його порядок дорівнює 7.Період послідовності дорівнює при

будь-яких початкових значеннях, окрім всіх нулів.

Приклад 3.

Знайдемо рекурентне співвідношення, що задає лінійну рекурентну послідовність глибини , ділянкою якої є .

Для отримуємо систему рівнянь

Для ділянки лінійної рекурентної послідовності глибини розв’язком системи

є , , .Таким чином, знайдено рекурентне співвідношення, що задає

лінійну рекурентну послідовність глибини : .

Послідовність має максимальне можливий період, рівний 7, при будь-яких початкових значеннях, окрім всіх нулів.

Шифр А5

39

Для ускладнення задачі криптоаналітика нерідко декілька генераторів псевдовипадкових послідовностей на основі ЛРП об’єднують в один, синхронізуючи їхні виходи. Таки генератори називають регістрами зсуву (LFSRs – Linear Feedback Shift Registers).

Шифр А5 був розроблений в 1989 році і існує у двох версіях: А5/1 – «сильна» версія шифру, дозволена до застосування тільки в деяких країнах, і А5/2 – «ослаблена» версія, дозволена до вільного застосування. Алгоритм А5 використовується в системах GSM (Group Special Mobile) для закриття зв’язку між абонентом і базовою станцією.

Алгоритм А5 реалізує потоковий шифр на основі трьох лінійних регістрів зсуву з нерівномірним рухом. У GSM-мережах використовується 64-бітний ключ, який забезпечується трьома регістрами в 19, 22 і 23 біта (що дає в сумі 64 біта).

У А5 використовується змінюване управління тактуванням. Кожен регістр тактується залежно від свого середнього біта, потім виконується XOR із зворотною пороговою функцією середніх бітів всіх трьох регістрів. Виходом є XOR трьох регістрів зсуву .

Допоміжні функції пакету MAPLE

Divide(a, b, 'q') – перевіряє, чи ділиться многочлен на многочлен без залишку. В змінну поміщається результат ділення у випадку успіху.

Divide(x^7+1, x^3+x+1, 'q') mod 2;trueq;

x4 x2 x 1Divide(x^15+1, x^4+x^2+1, 'q') mod 2;false

Для формування лінійної рекурентної послідовності

глибини з початковими значеннями можна використати цикл:

40

x[1]:=1;x[2]:=0;x[3]:=1;for k from 1 to 20 do x[k+3]:=x[k+2]+x[k] mod 2 end do;

:= x1

1 := x2

0 := x3

1 := x4

0 := x5

0 := x6

1 := x7

1

:= x8

1 := x9

0 := x10

1 := x11

0 := x12

0 := x13

1 := x14

1

41

Додаток ВІнтерфейс програми «ГОСТ»

На рисунках В.1 і В.2 показані основні елементи інтерфейсу програми «ГОСТ».

Рисунок В.1 – Демонстрація

42

Рисунок В.2 – Шифрування

43

Додаток ГДСТУ ГОСТ 28147:2009

Інформація про ДСТУ ГОСТ 28147:2009:Державний Комітет України з питань технічного регулювання та споживчої політики, Наказ від 22.12.2008 р. № 495 Про прийняття міждержавних стандартів як національні методом підтвердження та скасування відповідних міждержавних стандартів.

Повна назва — «ДСТУ ГОСТ 28147:2009 Системи обробки інформації. Захист криптографічний. Алгоритм криптографічного перетворення». ДСТУ ГОСТ 28147:2009 замінює наступні документи: ГОСТ 28147-89

ГОСТ 28147-89 — радянський і російський стандарт симетричного шифрування, введений в 1990 році, також є міждержавним стандартом СНД.

ГОСТ 28147-89 — блоковий шифр з 256-бітовим ключем і 32 циклами перетворення, що оперує 64-бітними блоками. Основа алгоритму шифру — сітка Фейстеля. Базовим режимом шифрування за ГОСТ 28147-89 є режим простої заміни (визначені також складніші режими гамування, гамування зі зворотним зв'язком і режим імітоприкладки).

Режим простої заміни

В режимі простої заміни кожен блок відкритого тексту при шифруванні і шифртексту при розшифруванні обробляється окремо і проходить 32 раунди сітки Фейстеля. Вхідний блок розбивається на дві 32-бітні частини – ліву (старші біти) і праву (молодші біти) . На кожному -тому раунді ( ) відбуваються наступні обчислення:

,

,

де – раундова функція; – раундовий ключ.

44

Раундова функція передбачає додавання аргументів за модулем 232 і застосування декількох блоків перестановок. Раундові ключі отримуються із ключа шифрування: 256-бітний ключ розділюється на вісімь 32-бітних частин , які використовуються циклічно в раундах 1-24 і в зворотному порядку в раундах 25-32.

Після виконання всіх раундових перетворень результуючі 32-бітні напівблоки переставляються місцями і об’єднуються у блок шифртексту.

Процедура розшифрування відрізняється від процедури шифрування тільки зворотнім порядком використання раундових ключів.

Режим гамування

В режимі гамування алгоритм ГОСТ працює в якості генератора псевдовипадкової послідовності і може розглядатися як потоковий шифр. При шифруванні та розшифруванні згенерована послідовність – гама шифру – накладається на відкритий або шифртекст за допомогою операції XOR.

В якості стартового значення послідовності використовується синхропосилання (довільний 64-бітний блок), яке передається разом із шифртекстом. Гамма генерується блоками за наступним співвідношенням

, ,

де – шифрування в режимі простої заміни з ключем ;

, – допоміжні константи.

Режим гамування зі зворотнім зв’язком

В режимі гамування зі зворотнім зв’язком гама шифру ГОСТ залежить не тільки від синхропосилання і ключа , а і від попередніх блоків шифртексту .

45

В якості стартового значення послідовності використовується синхропосилання , яке передається разом із шифртекстом. Гамма генерується блоками за наступним співвідношенням

, .

Режим імітоприкладки

На відміну від попередніх режим імітоприкладки спрямований на забезпечення цілісності відкритого тексту, а не його конфіденційності.

Імітоприкладкою називається контрольне значення, яке обчислюється з відкритого тексту згідно з алгоритмом ГОСТ за схемою, зображеною на рис. Г.1. Відкритий текст розподіляється на 64-бітні блоки, перший блок проходить 16 раундів режиму простої заміни, результат накладається на наступний блок за допомогою операції XOR, результат накладання проходить 16 раундів режиму простої заміни і накладається на наступний блок – вихід останніх 16 раундів становитиме імітоприкладку.

Рисунок Г.1 – Вироблення імітоприкладки

46

Для зручності використовують не весь результуючий блок в якості імітоприкладки, а його частину з бітів. Про значення і правила його вибору (наприклад, молодші 32 біти блоку) абоненти, які використовують імітоприкладку при обміні повідомленнями, мають домовитись заздалегідь.

47

Додаток Д Асиметричний алгоритм шифрування RSA

Алгоритм шифрування RSA відноситься до криптографічних систем із відкритим ключем. Криптосистеми з відкритим ключем (асиметричні криптосистеми) були розроблені в другій половині сімдесятих років. В асиметричних криптосистемах процедури прямого і зворотного криптоперетворення виконуються на різних ключах і не мають між собою очевидних і легковідсліджуваних зв`язків, що дозволяють за одним ключем визначити інший. В такій схемі знання тільки ключа зашифрування не дозволяє розшифрувати повідомлення, тому він не є секретним елементом шифру і зазвичай публікується учасником обміну для того, щоб будь-хто бажаючий міг послати йому зашифроване повідомлення.

Принцип функціонування асиметричної криптосистеми полягає в наступному:

користувач А генерує асиметричну пару ключів – відкритий (незасекречений) і секретний – і передає відкритий ключ по незахищеному каналу користувачу Б;

користувач Б шифрує повідомлення, використовуючи відкритий ключ шифрування користувача А;

користувач Б посилає зашифроване повідомлення користувачу А по незахищеному каналу;

користувач А отримує зашифроване повідомлення і дешифрує його, використовуючи свій секретний ключ.

Асиметрична пара ключів {відкритий ключ; секретний ключ} обчислюється за допомогою спеціальних алгоритмів, при чому жоден ключ не може бути виведений з іншого.

Криптографічна система RSA (Rivest-Shamir-Adleman)

Авторами алгоритму RSA, запропонованого в 1977р., є Р.Рівест (Rivest), А.Шамір (Shamir) і А.Адлеман (Adleman). Надійність алгоритму базується на складності факторизації (розкладення на множники) великих чисел і складності обчислення дискретних алгоритмів (знаходження при відомих , і із рівняння

).

48

Алгоритм RSA складається з трьох частин: генерування ключів, зашифрування і дешифрування.

1.Генерування ключів.Оберемо два великих різних простих числа p і q (Натуральне

число називається простим, якщо воно ділиться тільки на себе і на 1.) та знайдемо їх добуток

.Обчислимо функцію Ейлера за формулою

.Закритий ключ обираємо з умов

і взаємно просте з ,

тобто і не мають спільних дільників. Відкритий ключ обираємо з умов

і .

Остання умова означає, що різниця повинна ділитись на без залишку. Для визначення числа використовуємо

розширений алгоритм Евкліда.В алгоритмі RSA

– відкритий параметр, – відкритий ключ, – секретний ключ.

2.Зашифрування.Вихідне повідомлення розбивається на блоки однакової

довжини. Кожен блок представляється у вигляді великого десяткового числа, менше , і шифрується окремо. Шифрування блока ( – десяткове число) здійснюється за наступною формулою

,

де – шифрблок, що відповідає блоку відкритого повідомлення . Шифрблоки з`єднуються в шифрограму.

3.Розшифрування.При розшифруванні шифрограма розбивається на блоки відомої

49

довжини і кожен шифрблок розшифрується окремо за наступною формулою

.

Доведемо, що .

.

Покажемо, що

.

Якщо взаємно просте з , то згідно з теоремою Ейлера

.

Нехай має спільний дільник з , тобто , . Тоді взаємно просте з , і згідно з теоремою Ейлера

Співвідношення доведено.

Приклад 1.

1.Генерування ключів.

Оберемо два простих числа і . Тоді обчислимо модуль

.і функцію Ейлера

.Закритий ключ обираємо з умов і взаємно просте з

, тобто і не мають спільних дільників. Нехай .

50

Відкритий ключ обираємо з умов і :.

Остання умова означає, що число повинно ділитись на 160 без залишку.

Таким чином, для визначення числа необхідне підібрати таке число що

. При отримуємо або

.

В прикладі 1 – відкритий параметр,

– відкритий ключ, – секретний ключ.

2. Шифрування.

Зашифруємо повідомлення 15, використовуючи відкритий ключ (27, 187):

.Таким чином, вихідному повідомленню 15 відповідає

криптограма 60.

3. Розшифрування

Розшифруємо повідомлення 60, користуючись секретним ключем (83,187):

.В результаті розшифрування було одержано вихідне

повідомлення 15.

Таблиця Д.1 – Таблиця простих чисел

2 3 5 7 11 13 17 19 23 2931 37 41 43 47 53 59 61 67 7173 79 83 89 97 101 103 107 109 113

51

127 131 137 139 149 151 157 163 167 173179 181 191 193 197 199 211 223 227 229233 239 241 251 257 263 269 271 277 281283 293 307 311 313 317 331 337 347 349353 359 367 373 379 383 389 397 401 409419 421 431 433 439 443 449 457 461 463467 479 487 491 499 503 509 521 523 541547 557 563 569 571 577 587 593 599 601607 613 617 619 631 641 643 647 653 659661 673 677 683 691 701 709 719 727 733739 743 751 757 761 769 773 787 797 809811 821 823 827 829 839 853 857 859 863877 881 883 887 907 911 919 929 937 941947 953 967 971 977 983 991 997 1009 1013

1019 1021 1031 1033 1039 1049 1051 1061 1063 10691087 1091 1093 1097 1103 1109 1117 1123 1129 11511153 1163 1171 1181 1187 1193 1201 1213 1217 12231229 1231 1237 1249 1259 1277 1279 1283 1289 12911297 1301 1303 1307 1319 1321 1327 1361 1367 13731381 1399 1409 1423 1427 1429 1433 1439 1447 14511453 1459 1471 1481 1483 1487 1489 1493 1499 15111523 1531 1543 1549 1553 1559 1567 1571 1579 15831597 1601 1607 1609 1613 1619 1621 1627 1637 16571663 1667 1669 1693 1697 1699 1709 1721 1723 17331741 1747 1753 1759 1777 1783 1787 1789 1801 18111823 1831 1847 1861 1867 1871 1873 1877 1879 18891901 1907 1913 1931 1933 1949 1951 1973 1979 19871993 1997 1999 2003 2011 2017 2027 2029 2039 20532063 2069 2081 2083 2087 2089 2099 2111 2113 21292131 2137 2141 2143 2153 2161 2179 2203 2207 22132221 2237 2239 2243 2251 2267 2269 2273 2281 2287

52

Додаток ЕСхема Діффі-Хеллмана в мультиплікативній групі

Схема Діффі-Хеллмана призначена для формування спільного секретного ключа по відкритому каналу зв’язку між двома абонентами мережі.

Схема Діффі-Хеллмана над групою залишків за простим модулем

Два абонента А і В обирають спільні відкриті параметри – велике просте число та генератор мультиплікативної групи залишків за простим модулем .

Абоненти А і В обмінюються спільними відкритими параметрами – , – по відкритому каналу мережі.

Далі абонент А обирає випадкове таємне число , , та обчислює значення за формулою:

.

Абонент В обирає випадкове таємне число , , та обчислює значення за формулою:

.

Абоненти А і В обмінюються значеннями та по відкритому каналу мережі.

Після отримання значення абонент А обчислює значення за формулою:

,

а абонент В після отримання значення обчислює значення за формулою:

.

Знайденні абонентами А і В значення та співпадають:

53

і створюють спільний секретний ключ.

Крипостійкість схеми Діффі-Хеллмана заснована на важковирішуваній задачі дискретного логарифмування.

Дійсно, для отримання спільного секретного ключа абонентів А і В по перехопленим значенням та необхідно знайти таємні або

. Для цього достатньо розв’язати одну з задач або відносно або відповідно. Якщо значення (або )

знайдено, спільний секретний ключ обчислюється за формулою ( ).

Приклад 1.Нехай відкритими параметрами схеми Діффі-Хеллмана є , . Знайдемо спільний секретний ключ для двох користувачів.Нехай абонент А обрав випадкове таємне число та

обчислив значення , абонент В обрав випадкове таємне число та обчислив значення .

Абоненти А і В здійснили обмін значеннями та по відкритому каналу мережі.

Після цього абонент А обчислив значення , а абонент В обчислив значення .

Таким чином, кожен із абонентів А і В сформував спільний секретний ключ, рівний 4.

Приклад 2.Нехай відкритими параметрами схеми Діффі-Хеллмана є , . Зловмисник перехопив значення та з відкритого

каналу мережі і бажає знайти спільний секретний ключ абонентів А і В.

Для отримання спільного секретного ключа абонентів А і В по перехопленим значенням та зловмисник розв’язує задачу

54

дискретного логарифмування : . Звідси .

Знайдено спільний секретний ключ абонентів А і В, рівний 19.

Якщо зловмисник знаходив значення , тобто розв’язував

задачу , , то знайдене значення

також дорівнює 19.

55

Додаток ЖФункції хешування

Функцією хешування (хеш-функцією) називається перетворення даних, що переводить рядок бітів довільної довжини в рядок бітів

деякої фіксованої довжини (кілька десятків чи сотень біт). Слово хешування походить від англійського дієслова “to hash” –

кришити, рубати, плутати. Результат хешування називають хеш-образом, хеш-кодом або message digest.

Хеш-функція повинна задовольняти наступним умовам:1) хеш-функція повинна бути чутливою до будь-яких змін

вхідної послідовності ;2) для даного значення повинно бути неможливо знайти

значення ;3) для даного значення повинно бути неможливо знайти

значення таке, що .

Ситуація, за якої для різних вхідних послідовностей ,

співпадають значення їхніх хеш-образів: , називається колізією.

При побудові хеш-образу, вхідна послідовність розбивається на блоки ( , де – кількість блоків) фіксованої довжини і оброблюється поблочно за формулою

,

– довільний початковий вміст, – задана функція.Хеш-значення, що обчислюється при введенні останнього блоку

повідомлення, стає хеш-кодом всього повідомлення :

.

Наведемо приклади відомих хеш-функцій та довжини їхніх образів: MD5 – 128 бітів, SHA-1 – 160 бітів, SHA-256 – 256 бітів, SHA-384 – 384 біта, SHA-512 – 512 бітів, ГОСТ Р34.11-94 (він же ГОСТ 34.311-95) – 256 бітів, ГОСТ 34. 11-2012 – 256 або 512 бітів та інші.

Приклад.

56

Нехай хеш-функція задана формулою

, .

Знайдемо хеш-образ повідомлення «КРИПТО». Згідно з кодовою таблицею Д.1 повідомлення «КРИПТО» можна

представити в вигляді послідовності десяткових чисел: «КРИПТО» = {13,19,10,18,21,17}.

Проведемо обчислення:

,

,

,

,

,

.

Таким чином, хеш-образ повідомлення .

Маємо колізію .

Таблиця Ж.1 – Кодова таблиця

А 1 00001 З 9 01001 О 17 10001 Ц 25 11001Б 2 00010 И/

Й10 01010 П 18 10010 Ч 26 11010

В 3 00011 І 11 01011 Р 19 10011 Ш 27 11011Г/Ґ

4 00100 Ї 12 01100 С 20 10100 Щ 28 11100

Д 5 00101 К 13 01101 Т 21 10101 Ю 29 11101Е 6 00110 Л 14 01110 У 22 10110 Я 30 11110Є 7 00111 М 15 01111 Ф 23 10111 Ь 31 11111Ж 8 01000 Н 16 10000 Х 24 11000 _ 32 00000

57

Додаток ИСхема цифрового підпису на базі RSA

Цифровий підпис у цифрових документах грає ту ж роль, що і підпис, поставлений від руки в документах на папері: цифровий підпис приєднується до повідомлення, котре передається, та підтверджує, що власник підпису склав чи завірив це повідомлення. Отримувач повідомлення за допомогою цифрового підпису може перевірити, що автором повідомлення є саме власник підпису і що в процесі передачі не було порушено цілісність отриманих даних.

При розробці механізму цифрового підпису виникають наступні задачі: створити підпис таким чином, щоб його неможливо було підробити; мати можливість перевірки того, що підпис дійсно належить вказаному власнику; мати можливість запобігти відмові від підпису.

Класична схема створення цифрового підпису

При створенні цифрового підпису за класичною схемою підписувач застосовує до вихідного повідомлення хеш-функцію; обчислює цифровий підпис за хеш-образом повідомлення з використанням секретного ключа створення підпису; формує нове повідомлення, яке складається з вихідного повідомлення та доданого до нього цифрового підпису.

Отримувач відділяє цифровий підпис від основного повідомлення; застосовує до основного повідомлення хеш-функцію; з використанням відкритого ключа перевірки підпису та хеш-образу повідомлення обчислює перевірочне співвідношення. Якщо перевірка коректна, підпис визнається справжнім.

Оскільки цифровий підпис створюється за допомогою хеш-функції, кожен алгоритм формування підпису пов'язаний з конкретною хеш-функцію. Наприклад, в схемі підпису RSA використовується функція хешування MD5, в DSA і ECDSA – SHA-1, в алгоритмах ГОСТ Р34.10-94, ГОСТ Р34.10-2001 використовується функція хешування ГОСТ Р34.11-94, в українському стандарті підпису ДСТУ 4145-2002 – ГОСТ 34.311-95, в новому російському стандарті ГОСТ Р34.10-2012 – ГОСТ Р34.11-2012.

58

Схема підпису RSA

Криптосистема з відкритим ключем RSA може використовуватись не лише для шифрування, але і для побудови схеми цифрового підпису.

Нехай підписувач А має асиметричну пару ключів ( – відкритий ключ, – секретний ключ, – відкритий параметр), згенеровану за алгоритмом RSA.

Для підписання повідомлення підписувач А обчислює хеш-образ за допомогою хеш-функції MD5; формує підпис за формулою , використовуючи свій секретний ключ . Пару повідомлення-підпис підписувач А відправляє користувачу В.

Для перевірки відповідності повідомлення підпису в парі користувач В обчислює – хеш-образ повідомлення

за допомогою хеш-функції MD5, обчислює за допомогою відкритого ключа абонента А. Якщо , підпис під повідомленням признається справжнім.

Дійсно, .

Приклад.

Нехай підписувач А має асиметричну пару ключів, згенеровану за алгоритмом RSA: – відкритий ключ, – секретний ключ, – відкритий параметр.

Нехай хеш-образ повідомлення . Підписувач А формує підпис за допомогою секретного ключа . Пару підписувач А відправляє користувачу В.

Для перевірки відповідності повідомлення підпису користувач В обчислює – хеш-образ повідомлення , обчислює за допомогою відкритого ключа абонента А. Оскільки , підпис під повідомленням признається справжнім.