Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Бакалаврська дипломна робота Шифр на основі перестановок байтів

.pdf
Скачиваний:
14
Добавлен:
24.01.2021
Размер:
1.4 Mб
Скачать

31

16 = ( 12 + 16) 256 = (86 + 18) 256 = 10417 = (238 + 104) 256 = 86

17 = (256 − 86) = 17017 = ( 4 + 17) 256 = (187 + 170) 256 = 101

18 = (86 + 101) 256 = 18718 = (256 − 187) = 69

18 = ( 0 + 18) 256 = (45 + 69) 256 = 114

Таким чином, в результаті процесу розшифрування, було отримано вхідне повідомлення M:

= "112,101,114,109,117,116,97,116,105,111,110,32,99,105,112,104,101,114"

Усимвольному форматі повідомлення має вигляд:

= “ ”

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

2.5 Регістр зсуву з лінійним зворотнім зв'язком

Для генерування послідовностей бітів y1, y0, що використовуються на етапах перестановок P1, P2, було обрано два 32-бітні регістри зсуву з лінійним зворотнім зв'язком. Даний вибір зумовлений такими причинами [13]:

-РЗЛЗЗ можуть генерувати послідовності з великим періодом та гарними статистичними властивостями;

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

-легко реалізуються як програмно, так і апаратно.

Регістр зсуву з лінійним зворотнім зв'язком складається з двох частин:

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

Регістр зсуву являє собою послідовність бітових комірок, тож його довжина виражається в бітах. Відповідно, регістр, що складається з l комірок, буде l-бітовим регістром зсуву. Кожного разу, після генерування нового біта, усі біти регістра

32

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

біт, що найчастіше є молодшим бітом регістра. Період регістра зсуву – це довжина вихідної послідовності до початку її повторення [20].

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

XNOR, що являються лінійними булевими функціями. Такий регістр називається конфігурацією Фібоначчі (рис. 2.3).

 

 

 

 

 

 

 

 

 

Вихідний біт

 

−1

−2

 

6

5

4

3

2

1

0

 

Рисунок 2.3 – Конфігурація Фібоначчі

Наприклад, нехай для 32-бітного регістра зсуву задано примітивний многочлен 32 + 28 + 27 + + 1. Це значить, що для генерації нового біта треба додати за модулем 2 двадцять сьомий, двадцять шостий та нульовий біти регістра.

А оскільки даний многочлен примітивний, то такий РЗЛЗЗ буде мати максимально можливий період, тобто 232 – 1.

У РЗЛЗЗ можна модифікувати схему зворотного зв'язку перетворивши регістр в конфігурацію Галуа (рис. 2.4). Не можна сказати, що такий генератор стає кращим з криптографічної точки зору, але він також може мати максимальний період і простий в програмній реалізації. У даній схемі, якщо згенерований біт дорівнює нулю, то всі біти в комірках зсуваються вправо без змін, якщо згенерований біт рівний одиниці, то до кожного біта з точки знімання і виходу генератора застосовується операція XOR і результат замінюється сумою, що вийшла; потім вихід генератора стає новим крайнім лівим бітом. Таким чином, на відміну від регістру Фібоначчі, де зворотний зв'язок є функцією від всіх комірок в

33

регістрі, а результат поміщається в найлівішу комірку, зворотний зв'язок в регістрі Галуа потенційно застосовний до кожної комірки регістра, хоча є функцією тільки від значення крайньої правої комірки [20].

 

 

 

 

 

 

 

 

Вихідний біт

 

−1

−2

 

6

5

4

3

2

1

0

Рисунок 2.4 - РЗЛЗЗ конфігурації Галуа

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

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

Для отримання максимальних періодів РЗЛЗЗ було підібрано найбільш відповідні поліноми. У роботі [14] представлена таблиця поліномів для довжин послідовностей 32 степені, з якої і було обрано найвідповідніший примітивний поліном (табл. 2.3).

Таблиця 2.3 – Таблиця примітивних поліномів

40035532523

42003247143

 

 

40020000007

41760427607

 

 

40460216667

 

 

 

Для генерування псевдовипадкової послідовності на етапі перестановок P1

було обрано наступний поліном: 00010000000011010100111001100011.

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

00001111110000100010111110000111.

34

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

можна переходити до оцінювання швидкості роботи алгоритму.

2.6 Оцінка швидкості роботи алгоритму

Для порівняння швидкості шифрування було обрано один з найшвидших на даний момент методів шифрування, а саме AES.

Advanced Encryption Standard (AES) – симетричний блоковий шифр, що має фіксований розмір блоку 128 біт та ключ довжиною Lk = 128, 192 або 256 біт. Для ключів довжиною 128 та 192 біт, алгоритм має 10 та 14 раундів шифрування відповідно. У 2002 році цей шифр був оголошений стандартом шифрування Сполучених Штатів.

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

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

Для перестановки одного байту вхідного повідомлення, має бути згенеровано псевдовипадкову послідовність y1, y0 що визначає номер лічильника, який буде вирішувати, на яку позицію проміжного масиву S буде переставлено байт, після чого лічильник змінює свій стан для подальших викликів. Генерування послідовності займає 3 операції. Зміна стану лічильника займає 1 операцію.

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

тому це ще 4 операції. В сумі на 1 байт виконується 10 операцій.

Порівняння розробленого методу шифрування з уже відомим AES

представлено у табл. 2.5.

35

Таблиця 2.5 – Порівняльна характеристика методів шифрування

Назва алгоритму

Швидкість (число операцій/байт)

 

 

AES-128

10,08

 

 

AES-256

14,14

 

 

Метод шифрування на основі

10

перестановок байтів

 

 

 

Отже, як бачимо, метод шифрування на основі перестановок байтів володіє

найвищим показником швидкості серед шифрів AES-128 та AES-256.

36

3 РОЗРОБКА ПРОГРАМНОГО ЗАСОБУ

3.1 Обґрунтування вибору середовища програмування

Розробка програмного засобу шифрування даних буде проводитись за допомогою мови програмування Java.

Java – це об’єктно-орієнтована мова програмування. Компілятор з java

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

атрибути, події, узагальнені типи і методи, ітератори, коментарі в форматі XML.

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

які визначаються розробником.

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

Бібліотеки з відкритим кодом полегшують використання Java у всьому світі. Apache, Google та інші організації розробили велику кількість потужних бібліотек,

що полегшує та пришвидшує розробку програм.

Враховуючи усі вище наведені характеристики буде доцільно обрати саме цю мову програмування для реалізації поставленої задачі.

37

3.2Вимоги до програмного засобу

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

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

Доцільно передбачити використання таких ресурсів:

-текстові поля для обміну даними між користувачем і програмою;

-кнопки в якості основного засобу керування програмою;

-діалогові вікна в якості основного вікна для роботи із програмою;

-вікна повідомлень;

Інформація про помилки в програмі, і про неправильне використання програми, буде виведена у вікні повідомлення.

Таким чином, при розробці програми потрібно виконати і дотримуватись таких дій:

-побудова схеми роботи програми;

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

-розробка загального інтерфейсу і його елементів;

-тестування програмного засобу з метою перевірки правильності роботи;

-виявлення помилок та їх усунення.

3.3Розробка структурної схеми роботи програмного засобу

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

38

Початок

Формування головного вікна

Генерація секретного ключа

Вибір файлу

Формування

проміжного масиву S

Зчитування байту у природньому порядку

Підстановка

Запис з використанням перестановки P1

Зчитування з використанням перестановки P2

Запис у файл шифротексту

Кінець

Рисунок 3.1 – Загальна схема роботи програми у режимі зашифрування

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

39

Початок

Формування головного вікна

Введення секретного ключа

Вибір файлу

Формування

проміжного масиву S

Зчитування байту у природньому порядку

Запис з використанням перестановки P2

Зчитування з використанням перестановки P1

Підстановка

Запис у файл

Кінець

Рисунок 3.2 - Загальна схема роботи програми у режимі розшифрування

3.4 Реалізація інтерфейсу програмного засобу

Інтерфейс відіграє досить важливу роль, так як це робить зручним використання програмного засобу для користувача. Тому було реалізовано інтерфейс у якому передбачено:

-головне вікно;

-текстове поле для введення, або генерування секретного ключа;

40

-робота з файлами;

-діалогові вікна.

На рис 3.3 зображено вигляд головного вікна програмного засобу:

Рисунок 3.3 – Вигляд головного вікна програмного засобу

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

Рисунок 3.4 – Вигляд вікна вибору файлу

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