СИМЕТРИЧНІ ТА АСИМЕТРИЧНІ МЕТОДИ ЗАШИФРУВАННЯ ІНФОРМАЦІЇ

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
УІ
Кафедра:
Кафедра захисту інформації

Інформація про роботу

Рік:
2013
Тип роботи:
Курсова робота
Предмет:
Криптографія

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра захисту інформації КУРСОВА РОБОТА З дисципліни «Криптографія та стеганографія» на тему: «СИМЕТРИЧНІ ТА АСИМЕТРИЧНІ МЕТОДИ ЗАШИФРУВАННЯ ІНФОРМАЦІЇ» Зміст: Вступ Опис заданих систем шифрування. Симетричне шифрування. Лінійний афінний шифр 1-го порядку. Асиметричне шифрування. Алгоритм RSA. Розроблення алгоритму зашифрування афінним шифром Всі матеріали, що стосуються виконання Завдання 2 курсової роботи. Висновок Використана література Вступ Криптография (від грецького kryptós – прихований і gráphein – писати) – наука про математичні методи забезпечення конфіденційності і автентичності інформації. Розвинулась з практичної потреби передавати важливі відомості най надійнішим чином. До нашого часу, криптографія займалася виключно забезпеченням конфіденційності повідомлень (тобто шифруванням) — перетворенням повідомлень із зрозумілої форми в незрозумілу і зворотне відновлення на стороні одержувача, роблячи його неможливим для прочитання для того, хто перехопив або підслухав без секретного знання (а саме ключа, необхідного для розшифрування повідомлення). В останні десятиліття сфера застосування криптографії розширилася і включає не лише таємну передачу повідомлень, але і методи перевірки цілісності повідомлень, ідентифікування відправника/одержувач, цифрові підписи, інтерактивні підтвердження, та технології безпечного спілкування, тощо. Для сучасної криптографії характерне використання відкритих алгоритмів шифрування, що припускають використання обчислювальних засобів. Відомо більше десятка перевірених алгоритмів шифрування, які, при використанні ключа достатньої довжини і коректної реалізації алгоритму, роблять шифрований текст недоступним для крипто аналізу. Криптографія є найпотужнішим на сьогоднішній день засобом захисту інформації. Вона зародилася майже одночасно із самим мистецтвом письма і на сьогоднішній день перетворилася на могутню прикладну науку, засновану на глибоких математичних знаннях. Опис заданих систем шифрування. 2.1.Симетричне шифрування. Шифр зсуву 3-го порядку. До алгоритмів симетричного шифрування належать методи шифрування, в яких і відправник, і отримувач повідомлення мають однаковий ключ (або, менш поширено, ключі різні але споріднені та легко обчислюються). Для яких шифрування і розшифрування виконується однаковим ключем, тобто і відправник, і отримувач повідомлення мають користуватися тим самим ключем. Такі алгоритми мають досить велику швидкість обробки як для апаратної, так і для програмної реалізації. Основним їх недоліком є труднощі, пов'язані з дотриманням безпечного розподілу ключів між абонентами системи. Ці алгоритми шифрування були єдиними загально відомими до липня 1976. Сучасні дослідження симетричних алгоритмів шифрування зосереджено, в основному, навколо блочних та потокових алгоритмів шифрування та їхньому застосуванні. Блочний шифр подібний до поліалфавітного шифру Алберті: блочні 69 шифри отримують фрагмент відкритого тексту та ключ, і видають на виході шифротекст такого самого розміру. Оскільки повідомлення зазвичай довші за один блок, потрібен деякий метод склеювання послідовних блоків. Афінні шифри- це підклас шифрів заміни, що включає часткові випадки шифр зсуву, Віженера, перестановки з фіксованим періодом, тощо. Моно алфавітні k-гранні шифри заміни можна позначити як блокові шифри з періодом k. Відповідно шифр простої заміни можна трактувати як блоковий шифр з періодом 1. n- символьний алфавіт ототожнюємо з кільцемZn. Якщо в алфавіті 33 букви, то користуємся Z33, якщо латинська абетка – Z26. Після прийняття цього правила до букв відкритого тексту можна застосовувати операції додавання і множення за відповідним модулем. Отже n – кількість букв в алфавіті відкритого тексту. Шифр зсуву Ключ: s таке, що 0 ≤ s ≤ n НСД(a,n)=1 . Шифрування: У повідомленні кожна буква х заміщується буквою E(x)=(x+s) mod n. Розшифрування: У криптотексті кожна буква х' заміщується буквою D(x’)=(x’+s’) mod n, де s’=n-s. Величина зворотного зсуву s' називається розшифровуючим ключем. 2.2.Асиметричне шифрування. Алгоритм RSA. Алгоритми асиметричного шифрування, як уже відзначалося, використовують два ключі: k1 - ключ за шифрування (відкритий) і k2 - ключ розшифрування (секретний). Відкритий ключ обчислюється із секретного: k1 = f(k2). Асиметричні алгоритми шифрування засновані на застосуванні односпрямованих функцій. Відповідно до визначення, функція y = f(x) є односпрямованою, якщо: 1) її легко обчислити для всіх можливих варіантів x; 2) для більшості можливих значень y досить складно обчислити таке значення x, при якому y = f(x). Для асиметричнихкриптографічнихалгоритмівформуютьдодатковуінформацію, яка має назву електронний цифровий підпис. Формуючи електронний цифровий підпис, виконують такі операції: • за допомогою односторонньої хеш-функції обчислюють прообраз цифрового підпису, аналог контрольної суми повідомлення; • отримане значення хеш-функції шифрується: а) таємним або відкритим; таємним і відкритим ключами відправника і отримувача повідомлення - для алгоритму RSA • використовуючи значення хеш-функції і таємного ключа, за допомогою спеціального алгоритму обчислюють значення цифрового підпису, - наприклад, для російського стандарту Р.31-10. Для того, щоб перевірити цифровий підпис, потрібно: • виходячи із значення цифрового підпису та використовуючи відповідні ключі, обчислити значення хеш-функції; • обчислити хеш-функцію з тексту повідомлення; • порівняти ці значення. Якщо вони збігаються, то повідомлення не було модифікованим і відправлене сааме цим відправником. Останнім часом використання електронного цифрового підпису значно поширюється, у тому числі для регулювання доступу до конфіденційної банківської інформації та ресурсів системи, особливо для оn-line - систем реального часу. Ще один важливий клас функцій, використовуваних в асиметричному шифруванні, - односпрямовані функції з таємним ходом: існує можливість ефективного обчислення зворотної функції x = f-1(y), якщо відомий "таємний хід" (значення секретного ключа). Ціфункціївикористовуються в широко розповсюдженомуалгоритміасиметричногошифрування RSA. Розглянемо більш докладно сааме цей алгоритм асиметричного шифрування. Через низьку швидкість шифрування, повідомлення звичайно шифрують за допомогою продуктивніших симетричних алгоритмів з випадковим ключем , а за допомогою RSA шифрують лише цей ключ. Перший алгоритм кодування з відкритим ключем (PKE) було запропоновано Вітфілдом Діффі та Мартіном Хелманом у Стенфордському університеті. Перевага PKE полягає у відсутності потреби секретної передачі ключа. PKE базується на нерозв'язності проблеми розкладу натурального числа на прості множники. RSA схему шифрування було запропоновано у 1978 році та названо іменами трьох його винахідників: Роном Рівестом, Аді Шаміром та Леонардом Адлеманом. RSA належить до классу алгоритмів кодування з відкритим ключем. Алгоритм використовує два ключі – відкритий і закритий. Для того, щоб згенерувати пари ключів, виконуються такі дії: Вибираються два великі прості числа / і / приблизно 512 бітзавдовжкикожне Обчислюєтьсяїхдобуток / Обчислюється функція Ейлера / Вибираєтьсяціле / таке, що / та / взаємнопросте з / Задопомогою розширеного алгоритму Евкліда знаходиться число / таке, що / Число / називається модулем, а числа / і / — відкритою й секретною експонентами, відповідно. Пари чисел / є відкритою частиною ключа, а / — секретною. Числа / і / після генерації пари ключів можуть бути знищені, але в жодному разі не повинні бути розкриті. Шифрування й розшифрування Для того, щобзашифрувати повідомлення / обчислюється /. Число / івикористовується в якостішифртексту. Для розшифруванняпотрібнообчислити /. Неважкопереконатися, що при розшифруванні ми відновимовихіднеповідомлення: / З умови / випливає, що / для деякого цілого /, отже / Згідно з теоремою Ейлера: /, Тому / / Розроблення алгоритму за шифрування афінним шифром Завдання 1 Шифр зсуву 3-го порядку / / / Завдання 1: Таблиця ідентифікаторів: Змінна тип призначення  K1, k2, k3 int Ключi зашифрування/розшифрування  Slovo, sl char Масив заданих символів  I , j, c ,os, shfr, sl int Допоміжні змінні  Shuf, Roshuf void Методи зашифрування/розшифрування   Лістинг програми: #include "stdafx.h" //бібліотеки #include<iostream> #include<string.h> #include<stdio.h> #include<stdlib.h> #include<math.h> using namespace std; void Shuf(int k1, int k2, int k3, char slovo[80]); void Roshuf(int k1, int k2, int k3, char slovo[80]); int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,"Ukrainian"); int k1, k2, k3; cout<<"\n-------------------------------\n"; cout<<"Введiть будь-ласка речення:\n"; char sl[80], shfr[80]; for(int i=0;i<80;i++) { sl[i] = '\0'; shfr[i] = '\0'; } gets(sl); int i = 0; cout<<"\n"; while(sl[i]!='\0') { cout<<"буква = "<<(int)sl[i]<<"; "; i++; } cout<<"\n Введiть ключi:\n"; cout<<"\nключ 1 = "; cin>>k1; cout<<"\nключ 2 = "; cin>>k2; cout<<"\nключ 3 = "; cin>>k3; Shuf(k1, k2, k3 ,sl); cout<<"\n----------- Зашифровано --------------------\n"; puts(sl); cout<<"\n"; i=0; while(sl[i]!='\0') { cout<<"буква = "<<(int)sl[i]<<"; "; i++; } cout<<"\n----------- Розшифровано --------------------\n"; Roshuf(k1, k2, k3 ,sl); puts(sl); cout<<"\n"; i=0; while(sl[i]!='\0') { cout<<"буква = "<<(int)sl[i]<<"; "; i++; } cout<<"\n"; return 0; } //--------------------------------------------------- void Shuf(int k1, int k2, int k3, char slovo[80]) { int count = 0, c, os; int i=0; while(slovo[i]!='\0') { count++; i++; } c = count/3; os = count - 3*c; if(count == 1) { slovo[0] = (char) ( k1+(int)slovo[0] ); } if(count == 2) { slovo[0] = (char) ( k1+(int)slovo[0] ); slovo[1] = (char) ( k2+(int)slovo[1] ); } if(count == 3) { slovo[0] = (char) ( k1+(int)slovo[0] ); slovo[1] = (char) ( k2+(int)slovo[1] ); slovo[3] = (char) ( k3+(int)slovo[2] ); } if(count>3) { for(int i=0; i<c*3; i+=3) { slovo[i] = (char) ( k1+(int)slovo[i] ); slovo[i+1] = (char) ( k2+(int)slovo[i+1] ); slovo[i+2] = (char) ( k3+(int)slovo[i+2] ); } } if(os==1) { slovo[c*3] = (char) ( k1+(int)slovo[c*3] ); } if(os==2) { slovo[c*3] = (char) ( k1+(int)slovo[c*3] ); slovo[3*c+1] = (char) ( k2+(int)slovo[c*3+1] ); } } //------------------------------------- void Roshuf(int k1, int k2, int k3, char slovo[80]) { int count = 0, c, os; int i=0; while(slovo[i]!='\0') { count++; i++; } c = count/3; os = count - 3*c; if(count == 1) { slovo[0] = (char) ( (int)slovo[0] - k1 ); } if(count == 2) { slovo[0] = (char) ( (int)slovo[0] - k1 ); slovo[1] = (char) ( (int)slovo[1] - k2); } if(count == 3) { slovo[0] = (char) ( (int)slovo[0] - k1); slovo[1] = (char) ( (int)slovo[1] - k2); slovo[3] = (char) ( (int)slovo[2] - k3); } if(count>3) { for(int i=0; i<c*3; i+=3) { slovo[i] = (char) ( (int)slovo[i] - k1); slovo[i+1] = (char) ( (int)slovo[i+1] - k2); slovo[i+2] = (char) ( (int)slovo[i+2] - k3); } } if(os==1) { slovo[c*3] = (char) ( (int)slovo[c*3] - k1); } if(os==2) { slovo[c*3] = (char) ( (int)slovo[c*3] - k1); slovo[3*c+1] = (char) ( (int)slovo[c*3+1] - k2); } } Результати: / / / 4.Всі матеріали, що стосуються виконання Завдання 2 курсової роботи. А) Зашифрувати слово ЕРА відкритого тексту за алгоритмом RSA. Для генерування ключів використати числа p=5, q=11. Букви тексту замінити натуральними числами, що відповідають порядковому номеру букви в українському алфавіті. Згідно з варіантом: p=5q=11 n=p*q=55 шукаємо функцію Ейлера: ȹ(n)=n-p-q+1=40 обираємо число «е», нехай число е=19 (НСД 40, 21) d= 19 −1 mod40=19 d шукаємо за алгоритмом Евкліда: 40=19*2+2 19=2*9+1 1=19+(-9)*2=19+(-9)*(40+(-2)*19)=(-9)*40+19*19 розбиваємо відкритий текст на блоки і зашифровуємо: М 1 =07 М 2 =21 М 3 =01 С 1 = М 1 е
Антиботан аватар за замовчуванням

16.12.2013 23:12-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!