Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
53
Добавлен:
31.01.2021
Размер:
501.54 Кб
Скачать

.Міністерство освіти і науки України

Харківський національний університет радіоелектроніки

Факультет_____________________Інфокомунікацій__________________________

Кафедра _________________Інфокомунікаційної інженерії_______________

КУРСОВА РОБОТА

ПОЯСНЮВАЛЬНА ЗАПИСКА

Алгоритми електронного цифрового підпису

Ель-Гамаль, DSS/DSA.

Алгоритми хешування сімейства SHA2.

Алгоритм на основі еліптичних кривих.

Ель-Гамаль, Діффі-Хеллман.

Освітній рівень бакалавр

Харків, 2017р.

РЕФЕРАТ

Пояснювальна записка до курсової роботи містить 39 сторінок; 24 рисунки; 1 таблицю; 7 посилань.

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

Об'єкт дослідження – сімейство хеш-функції SHA 2. Схеми цифрового підпису. Криптографічні алгоритми на основі еліптичних кривих.

Предмет дослідження – алгоритм хешування SHA 2-256, SHA 2-384, SHA 2-512. алгоритмів електронно цифрового підпису DSA і Ель-Гамаль. Схема . Ель-Гамаля і Діффі-Хеллмана на еліптичних кривих.

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

Ключові слова: SHA-2-256, SHA-2-384, SHA-2-512.ХЕШУВАННЯ, ХЕШ-ФУНКЦІЯ,АСИМЕТРИЧНІ КРИПТОСИСТЕМИ, АЛГОРИТМ DSA, ЕЛЕКТРОННИЙ ПІДПИС, ШИФР, ВІДКРИТИЙ КЛЮЧ,СЕКРЕТНИЙ КЛЮЧ, АБОНЕНТ.

ЗМІСТ

РЕФЕРАТ 1

ПЕРЕЛІК СКОРОЧЕНЬ, УМОВНИХ ПОЗНАЧЕНЬ, СИМВОЛІВ, ОДИНИЦЬ І ТЕРМІНІВ 4

ВСТУП 5

1 ХЕШУВАННЯ 9

1.1 ХЕШ-ФУНКЦІЙ SHA2 12

1.1.1 Алгоритм SHA-2-256 12

1.1.2 Алгоритм SHA-2-384 16

1.1.3 Алгоритм SHA-2-512 17

1.3 ПРОГРАМНА РЕАЛІЗАЦІЯ 20

1.4 ВИСНОВОК 21

2.ЕЛЕКТРОННИЙ ЦИФРОВИЙ ПІДПИС ЕЛЬ-ГАМАЛЯ І DSS / DSA 22

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

2.2 Електронний цифровий підпис по Ель-Гамалю 26

2.3 Стандарт DSS 29

ПЕРЕЛІК СКОРОЧЕНЬ, УМОВНИХ ПОЗНАЧЕНЬ, СИМВОЛІВ, ОДИНИЦЬ І ТЕРМІНІВ

ЕОМ – електронна обчислювальна машина

SHA – Secure Hash Algorithm

ЕЦП – електронний цифровий підпис

NIST -National Institute of Standards and Technology

DSA - Digital Signature Algorithm

DSS - Digital Signature Standard

SHS - Secure Hash Standard

ВСТУП

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

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

Поява в середині ХХ століття перших електронна обчислювальних машин (ЕОМ) кардинально змінило ситуацію - практична криптографія зробила в своєму розвитку величезний стрибок і термін "криптографія" далеко пішов від свого первісного значення - "таємний лист". Сьогодні ця дисципліна об'єднує методи захисту інформаційних взаємодій абсолютно різного характеру, які спираються на перетворення даних по секретним алгоритмам, включаючи алгоритми, що використовують секретні параметри.

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

Ø неавторизований доступ до інформації;

Ø неавторизована зміна інформації;

Ø неавторизований доступ до мереж та інших сервісів.

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

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

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

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

У даній роботі розглядаються алгоритми криптографічного хешування сімейства SHA-2 (Secure Hash Algorithm), які користуються високою популярністю в програмах, пов'язаних із систематизацією, пошуком і захистом інформації.

Метою даної роботи є реалізація алгоритмів хешування SHA-2-256, SHA-2-384, SHA-2-512 за допомогою мови програмування C#, проведення порівняльного аналізу використовуваних алгоритмів.

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

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

Засоби і системи криптографічного захисту інформації відіграють важливу роль в сучасних комп'ютерних інформаційних системах, використовуваних в сфері фінансової та комерційної діяльності. Інтерес до них обумовлений не тільки зростаючими суспільними потребами в перекладі економічних і державно-правових відносин на «електронну основу», а й сильно розширилися можливості передачі, обробки та зберігання інформації в розподілених обчислювальних системах. Застосування спеціальних криптографічних протоколів і криптосистем дозволяє здійснювати різноманітні економічні відносини «дистанційно», виключаючи необхідність особистої зустрічі учасників цих відносин, а також підтримувати при цьому належну фінансову та правову дисципліну. До криптографічним протоколам відносять протоколи шифрування, електронного цифрового підпису (ЕЦП), ідентифікації та протоколи аутентифікованого розподілу ключів, шифри на еліптичних кривих. Шифри на еліптичних кривих основною перевагою яких є те, що на сьогоднішній день не існує алгоритмів розв'язання задачі дискретного логарифмування.

Метою даної курсової роботи є дослідження шифрів на еліптичних кривих, а зокрема алгоритму Діффі-Хелмана і Ель-Гамаля, а також їх порівняльний аналіз.

1 Хешування

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

Функція хешування H являє собою відображення, на вхід якого подається повідомлення змінної довжини М, а виходом є рядок фіксованої довжини Н (М). Хеш-фунцкії - це спеціальний клас стискаючих односпрямованих функцій, які використовуються в процедурах забезпечення цілісності. За їх допомогою формуються цифрові відбитки повідомлень: невеликі фрагменти даних, які можуть служити для ідентифікації досить великих цифрових об'єктів. Це функції, які не використовують секретний ключ в обчисленнях. Хеш-функції широко застосовуються в криптографічних протоколах і процедурах забезпечення комп'ютерної безпеки. Вони використовуються в усіх підсистемах Інтернету для обробки ключового матеріалу, зв'язування послідовностей подій та вироблення цифрового підпису.

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

Однонаправлені хеш-функції будуються на ідеї функції стиснення, яка видає вихідне значення довжини n при заданих вхідних даних більшої довжини m. односпрямовані хеш функції строяться на ідеї функції стиснення. Входом функції стиснення є блок сполучення і вихід попереднього результату стиснення. Таким чином, в загальному випадку хеш-значення блоку Мi знаходять за формулою (1.1):

(1.1)

де hi – і-тий хеш-блок, вихід функції стиснення;

f – функція стиснення;

Mi – і-тий блок сполучення, блок повідомлення;

h i-1 – вихід попереднього результату стиснення.

Це значення hi разом з наступним блоком повідомлення стає наступним входом функції стиснення. Цифровим відбитком всіх даних є значення останнього блоку. На рис. 1.1 представлена узагальнена схема односпрямованої хеш-функції.

Рисунок 1.1 – Односпрямована функція

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

1) Незворотність або стійкість до відновлення прообразу: для заданого вихідного значення b хеш-функції H має бути обчислювально неможливо знайти вхід x, такий що b = H(x).

2) Хеш-функція H повинна бути стійкою до колізій першого роду (слабо чинити опір колізіям). Це означає, що для заданого повідомлення М має бути обчислювально неможливо підібрати інше повідомлення N, для якого H(N) = H(M), при цьому M і N не рівні.

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

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

Зазвичай знаходження зворотного значення є лише обчислювально складним завданням.

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

Очевидно, що чим менше довжина хеш-значення, тим частіше буде зустрічатися колізія. Може здатися, що можливість в 50% випадків зустріти колізію настає після генерації половини всіх можливих виходів хеш-функції, і для n-бітного хеш-значення буде потрібно 2n-1 входів. Це не зовсім вірно. Насправді, необхідно тільки приблизно 2n / 2 входів для того, щоб отримати 50 відсоткову можливість зустріти колізію. Таке явище названо «парадокс днів народжень»

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

1.1 ХЕШ-ФУНКЦІЙ SHA2

На сучасному етапі розвитку обчислювальної техніки і можливості проведення криптоаналізу з використанням розподілених інформаційних систем, зявляється потреба більш високій стійкості і відповідність використовуваних механізмів захисту. Тому після введення нових стандартів шифрування, було прийнято рішення про зміну механізму вироблення цифрових відбитків і заміні стандарту Secure Hash Standart. В результаті був розроблений набір алгоритмів SHA-2, який дозволяє формувати відбитки довжиною 256, 384, 512 бітів.

Кожен алгоритм складається з двох етапів: первинна обробка і обчислення хешу. Первинна обробка полягає у доповненні повідомлення, розбитті його на блоки та ініціалізації констант, початкових значень хешу. Всі алгоритми значно відрізняються числом бітів рівня безпеки, що робить можливим вибирати шифруючі та хешуючі перетворення еквівалентними по стійкості. При цьому слід звернути увагу, що SHA-1 і SHA-2-256 використовують 32-бітові слова, а SHA-2-384 SHA-2-512 використовують 64-бітові слова. Технічні характеристики SHA-1 і SHA-2 наведені в таблиці 1.1.

Таблиця 1.1 – Технічні характеристики SHA-1 і SHA-2.

Алгоритм

Розмір повідомлення

Розмір блоку

Розмір слова

Довжина цифрового відбитку

Рівень безпеки

SHA-1

< 264

512

32

160

80

SHA-224

< 264

512

32

224

112

SHA-2-256

< 264

512

32

256

128

SHA-2-384

< 2128

1024

64

384

192

SHA-512

< 2128

1024

4

512

256