Забезпечення інформаційної безпеки за допомогою криптогрфії

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык украинский
Дата добавления 13.06.2015
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

do{дія}while(i)

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

Приклад: Напишемо програму, яка використовує всі три види операторів циклу.

#include<iostream>#include<conio.h>

using std::cout;using std::endl;using std::cin;

const int n = 5;

void main(){int mas[n];

cout<<"Vvedite masiv: \n";for (int i = 0; i<n; i++){cin>>mas[i];}

i = 0;

cout<<"mi vveli takoy masiv: \n";while(i<5){cout<<mas[i]<<"\t";i++;}

i=0;do{ mas[i] = mas[i]+5;i++;}while(i<5);

cout<<"\nMasiv posle dobavleniya + 5:\n";for (i = 0; i<n;

i++){cout<<mas[i]<<"\t";}

_getch();}

Функція - це модуль в с++. Опції в мові С++ дозволяють створювати модульні програми, тобто програми складаються з модулів. Для написання програм, краще використовувати готові стандартні функції бібліотеки С++. Якщо ж ви хочете в програмі використовувати свою функцію, то необхідно оголосити прототип функції, після цього, в кінці програми написати реалізацію функції.

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

Приклад: Написати функцію get(), set(). Set - функція встановлення значення в массив. Get - функція отримання значень, або друк.

#include<iostream>#include<conio.h>

using std::cout;using std::endl;using std::cin;

const int n = 5;void set(int []); //прототип функції встановлення

значення void get(int []); //прототип функції печатки значення

void main(){int mas[n];set(mas); //виклик функції встановлення значення

в програміget(mas); //виклик функції друку в програмі_getch();}

void set(int s[n]) //реалізація функції встановлення{cout<<"SET

massiva:\n";cout<<"Vvedite "<<n<<"elementov massiva: ";for (int i = 0;

i<n; i++)cin>>s[i];}

void get(int s[n]) //реалізація функції друку{cout<<"GET massiv:\n";for

(int i = 0; i<n; i++)cout<<s[i]<<"\t";cout<<endl;} [11]

Переваги мови C++:

Швидкість роботи програм на С++ практично не поступається програмам на С, хоча програмісти отримали в свої руки нові можливості і нові засоби.

Масштабованість. На мові C++ розробляють програми для найрізноманітніших платформ і систем.

Можливість роботи на низькому рівні з пам'яттю, адресами, портами. (Що, при необережному використанні, може легко перетворитися на недолік.)

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

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

Недоліки мови C++:

Наявність безлічі можливостей, приводить до того, що в С++ програми може легко закрастися важковловима помилка. Замість контролю з боку компілятора розробники вимушені дотримуватися вельми нетривіальних правил кодування. По суті, ці правила обмежують С++ рамками якоїсь безпечнішої підмови. Більшість проблем типобезпеки С++ успадкована від С, але важливу роль в цьому питанні грає і відмова автора мови від ідеї використовувати автоматичне управління пам'яттю (наприклад, збірку сміття). Так візитною карткою С++ стали вразливості типу «переповнювання буфера».

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

Недостача інформації про типи даних під час компіляції

Мова C++ є складною для вивчення і для компіляції

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

Препроцесор С++ (успадкований від C) дуже примітивний. Це приводить з одного боку до того, що з його допомогою не можна (або важко) здійснювати деякі завдання метапрограмування, а з іншою, в наслідку своєї примітивності, він часто приводить до помилок і вимагає багато дій з обходу потенційних проблем. Деякі мови програмування (наприклад, Scheme і Nemerle) мають набагато могутніші і безпечніші системи метапрограмування (також звані макросами, але макроси С/С++ вони мало нагадують).

З кінця 1990-х в співтоваристві С++ набуло поширення так зване метапрограмування на базі шаблонів. По суті, воно використовує особливості шаблонів C++ в цілях реалізації на їхній базі інтерпретатора примітивної функціональної мови програмування, що виконується під час компіляції. Сама по собі ця можливість вельми приваблива, але, внаслідкок вище згаданого, такий код вельми важко сприймати і зневаджувати. Мови Lisp/Scheme, Nemerle і деякі інші мають могутніші і водночас простіші для сприйняття підсистеми метапрограмування. Крім того, в мові D реалізована порівнянна за потужністю, але значно простіша в застосуванні підсистема шаблонного метапрограмування.

Майбутній розвиток:

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

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

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

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

Першим компілятором, що підтримав export в шаблонах, став Comeau C++ на початку 2003 року (п'ять років після виходу стандарту). У 2004 році бета-версія компілятора Borland C++ Builder X також почала його підтримку.

Обидва цих компілятора засновані на зовнішньому інтерфейсі EDG. Інші компілятори, такі як Microsoft Visual C++ або GCC, взагалі цього не підтримують. Ерб Саттер (Herb Sutter), секретар комітету із стандартизації С++, рекомендував прибрати export з майбутніх версій стандарту унаслідок серйозних складнощів в повноцінній реалізації, проте згодом остаточним рішенням було вирішено його залишити. [12]

4. Методика оцінки ефективності криптографічної системи

(Дана методика розроблена для вибору найкращого алгоритму шифрування з боку замовника і ніяк не стосується розробника криптографічної системи)

Ефективність шифрування можна оцінити за наступними параметрами:

1. Простота використання

2. Швидкість шифрування інформації

3. Стійкість алгоритму до зовнішніх атак

4. Ціна

5. Кількість використаних математичних операцій6. Перспективність алгоритму

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

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

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

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

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

2. Швидкість кодування інформації: сучасні алгоритми шифрують інформацію за секунди, а отже великої різниці між криптографічними системами не буде. Набагато важливіше питання - чи залежить час шифрування від кількості даних і наскільки? Ставимо 2, якщо залежності немає, 1/0 якщо залежність є, але алгоритм шифрує швидко/повільно і 0, якщо алгоритм працює з обмеженою кількістю даних.

3. Стійкість алгоритму до зовнішніх атак: якщо криптографічну систему можна зламати написавши під неї алгоритм ставимо 0, якщо можна зламати систему лише методом підбору - ставимо 1, якщо інформація шифрується 512мб ключем і більше, а працює лише метод підбору - ставимо 2.

4. Ціна: цей параметр досить відносний. Якщо шифр коштує більше, або стільки ж, скільки і інформація ставимо 0, якщо ціна шифру в півтора рази нижча ціни інформації ставимо 1, якщо ціна шифру менша за ціну інформації в 2 рази і більше, то ставимо 2.

5. Кількість використаних математичних операцій: якщо використана лише одна математична операція - такий алгоритм легко зламати, тому ставимо 0; при багатьох математичних операціях в криптографічній системі ставимо 1; якщо ж відслідкувати кількість операцій в алгоритмі неможливо ставимо 2.

6. Перспективність алгоритму: в цьому параметрі все залежить від давності створення алгоритму (який, звичайно, є загальноприйнятим), чим давніше була створена криптографічна система, тим більше методів винайдено для зламу, а отже система не є перспективною. Якщо алгоритм був створений не більше 5 років тому, ставимо 2; від 5 до 10 років існування алгоритму - ставимо 1; більше 10 років на ринку - ставимо 0. Також цей пункт відповідає поняттю життєвого цикла проекту (життєвий цикл проекту -- це період часу від задуму проекту до його закінчення). Чим довше криптографічна система протримається на ринку, тим буде вища поставлена оцінка.

Після вибору замовником найголовнішого параметру, він має викреслити один з шести параметрів, який має найнижчу оцінку і не враховувати його в оцінці ефективності криптографічної системи. Після цього, оцінити алгоритм по п'яти параметрам і додати між собою цифри, які було отримано. В результаті отримаємо цифру від 0 до 10. Все що вище за 6 - рекомендовано для закупівлі. (Цей метод оцінки ефективності криптографічної системи було застосовано на таких алгоритмах, як «шифр Віженера» - 4, «шифр Вернама» - 5, а також «алгоритм Деффі-Хеллмана» - 7 і отримано правильні, на мій погляд, оцінки).

5. Новий тип шифрування

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

Алгоритм буде складатися з двох частин:

1 - пошук зашифрованих символів,

2 - розшифрування інформації за допомогою секретного ключа.

Для цього закодуємо алфавіт таким чином:

0 00, 1 01, 2 02, 3 03, 4 04, 5 05, 6 06, 7 07, 8 08, 9 09, а 10, б 11, в 12, г

13, г 14, д 15, е 16, є 17, ж 18, з 19, и 20, і 21, ї 22, й 23, к 24, л 25, м 26,

н 27, о 28, п 29, р 30, с 31, т 32, у 33, ф 34, х 35, ц 36, ч 37, ш 38, щ 39, ь

40, ю 41, я 42.

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

В такому випадку, кожний третій символ буде зашифрований за нашим кодуванням алфавіту, всі інші символи матимуть випадкове значення. В результаті ми отримаємо приблизно наступне: 6 17 (15) 11 9 (28) 79 34 (11) 165 42 (30) 87 73 (20) 27 9 (23) 16 11 (15) 52 24 (16) 13 95 (27) 26 23 (40); цифри, які знаходяться в дужках і є зашифроване повідомлення «добрий день».

За методикою оцінки ефективності криптографічної системи, яка описана вище, даний алгоритм отримує 6, а отже рекомендований для використання.

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

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

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

Ціна такого кодування буде завжди нижчою за інформацію, а отже ставимо оцінку 2.

В алгоритмі використано лише 2 математичні операції (заміна букви цифрою і підстановка секретного ключа), тому ставимо оцінку 0 по п'ятому параметру.

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

Життєвий цикл цього алгоритму є надзвичайно довгим, адже такий тип шифрування можна вдосконалити кількома ідеями, наприклад: ключем буде не цифра, а функція (припустимо х*3-2, де х - будь-яке число) - що зробить алгоритм більш захищеним від хакерів; також, щоб захиститися від зламу шифру «грубою силою» (підбір ключа) можна зробити випадкові числа не випадковими, а розрахованими по формулі, за якою числа будуть відповідати буквам і з'являтися в шифрі з однаковою частотою, а отже неможливо визначити частотність виклику програмою тієї, чи іншої букви.

6. Експериментальна частина: новий алгоритм шифрування

Алгоритм шифрування було виконано на мові програмування С++. Задля простоти було взято маленький ключ (3) і повідомлення, що складатися з одної букви (к). Використано англійський алфавіт і кодування в такому вигляді:

a=1,b=2,c=3,d=4,e=5,f=6,g=7,h=8,i=9,j=10,k=11,l=12,m=13,n=14,o=15,

p=16,q=17,r=18,s=19,t=20,u=21,v=22,w=23,x=24,y=25,z=26.

При виконанні програми отримуємо командний рядок, в який по запиту вводимо ключ (3), по новому запиту вводимо повідомлення, яке потрібно зашифрувати і отримуємо зашифроване повідомлення у вигляді цифр (8, 17, 11).

При виконанні програми дешифровки по запиту вводимо ключ (3), по новому запиту вводимо шифр у вигляді цифр (8, 17, 11) і отримуємо розшифроване повідомлення «к».

Далі будуть представлені Screenshot-и виконаної роботи, а також текст програми: Алгоритм шифрування:

“ #include <iostream>

#include <cmath>

#include <cstdlib>

#include <string>

#include <stdlib.h>

#include<time.h>

using namespace std;

int main () {

int chislo;

int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z; // Ввод переменных

srand(time(NULL));

int ran=rand()%26;

srand(time(NULL));

int rano=rand()%27; //Подстановка случайных чисел

a=1,b=2,c=3,d=4,e=5,f=6,g=7,h=8,i=9,j=10,k=11,l=12,m=13,n=14,o=15,

p=16,q=17,r=18,s=19,t=20,u=21,v=22,w=23,x=24,y=25,z=26; // Кодировка

каждой буквы алфавита

char text;

cout << "Vvedite kluch" << endl; // Вывод на экран сообщения в скобках

cin >> chislo; // Ввод ключа (цифра)

cout << "(kluch = 3), Vvedite text" << endl; // Вывод на экран сообщения

cin >> text; // Ввод текста, который нужно зашифровать

// Шифровка сообщения ключом "3":

if (text=='a')

cout << ran <<","<< rano << ","<< a << endl;

else if (text=='b')

cout << ran <<","<< rano << ","<< b << endl;

else if (text=='c')

cout << ran <<","<< rano << ","<< c << endl;

else if (text=='d')

cout << ran <<","<< rano << ","<< d << endl;

else if (text=='e')

cout << ran <<","<< rano << ","<< e << endl;

else if (text=='f')

cout << ran <<","<< rano << ","<< f << endl;

else if (text=='g')

cout << ran <<","<< rano << ","<< g << endl;

else if (text=='h')

cout << ran <<","<< rano << ","<< h << endl;

else if (text=='i')

cout << ran <<","<< rano << ","<< i << endl;

else if (text=='j')

cout << ran <<","<< rano << ","<< j << endl;

else if (text=='k')

cout << ran <<","<< rano << ","<< k << endl;

else if (text=='l')

cout << ran <<","<< rano << ","<< l << endl;

else if (text=='m')

cout << ran <<","<< rano << ","<< m << endl;

else if (text=='n')

cout << ran <<","<< rano << ","<< n << endl;

else if (text=='o')

cout << ran <<","<< rano << ","<< o << endl;

else if (text=='p')

cout << ran <<","<< rano << ","<< p << endl;

else if (text=='q')

cout << ran <<","<< rano << ","<< q << endl;

else if (text=='r')

cout << ran <<","<< rano << ","<< r << endl;

else if (text=='s')

cout << ran <<","<< rano << ","<< s << endl;

else if (text=='t')

cout << ran <<","<< rano << ","<< t << endl;

else if (text=='u')

cout << ran <<","<< rano << ","<< u << endl;

else if (text=='v')

cout << ran <<","<< rano << ","<< v << endl;

else if (text=='w')

cout << ran <<","<< rano << ","<< w << endl;

else if (text=='x')

cout << ran <<","<< rano << ","<< x << endl;

else if (text=='y')

cout << ran <<","<< rano << ","<< y << endl;

else if (text=='z')

cout << ran <<","<< rano << ","<< z << endl;

else

cout << "Vvedite bykvy" << endl;

system ("pause") ;

return 0;

} ”

При виконанні програми отримуємо командний рядок, куди вводимо дані, які від нас вимагає програма:

Алгоритм дешифрування:

“ #include <iostream>

#include <cmath>

#include <cstdlib>

#include <string>

#include <stdlib.h>

#include<time.h>

using namespace std; // подключение библиотек и стандартов программы

С++

int main () {

int random1;

int random2;

int kluch;

int chislo; //Ввод переменных

cout << "Vvedite kluch" << endl; // Вывод на экран сообщения в скобках

cin >> kluch; // Ввод ключа (цифра)

cout << "Vaw kluch=3, Vvedite tri zifri, kotorymi bylo zashyfrovano vashe

soobshenie" << endl; // Вывод на экран сообщения

cin >> random1;

cin >> random2;

cin >> chislo; // Ввод шифра(цифры), который нужно расшифровать

// Расшифровка закодированного сообщения ключом "3":

if (chislo==1)

cout << "Rasshifrovanyi text: a" << endl;

if (chislo==2)

cout << "Rasshifrovanyi text: b" << endl;

if (chislo==3)

cout << "Rasshifrovanyi text: c" << endl;

if (chislo==4)

cout << "Rasshifrovanyi text: d" << endl;

if (chislo==5)

cout << "Rasshifrovanyi text: e" << endl;

if (chislo==6)

cout << "Rasshifrovanyi text: f" << endl;

if (chislo==7)

cout << "Rasshifrovanyi text: g" << endl;

if (chislo==8)

cout << "Rasshifrovanyi text: h" << endl;

if (chislo==9)

cout << "Rasshifrovanyi text: i" << endl;

if (chislo==10)

cout << "Rasshifrovanyi text: j" << endl;

if (chislo==11)

cout << "Rasshifrovanyi text: k" << endl;

if (chislo==12)

cout << "Rasshifrovanyi text: l" << endl;

if (chislo==13)

cout << "Rasshifrovanyi text: m" << endl;

if (chislo==14)

cout << "Rasshifrovanyi text: n" << endl;

if (chislo==15)

cout << "Rasshifrovanyi text: o" << endl;

if (chislo==16)

cout << "Rasshifrovanyi text: p" << endl;

if (chislo==17)

cout << "Rasshifrovanyi text: q" << endl;

if (chislo==18)

cout << "Rasshifrovanyi text: r" << endl;

if (chislo==19)

cout << "Rasshifrovanyi text: s" << endl;

if (chislo==20)

cout << "Rasshifrovanyi text: t" << endl;

if (chislo==21)

cout << "Rasshifrovanyi text: u" << endl;

if (chislo==22)

cout << "Rasshifrovanyi text: v" << endl;

if (chislo==23)

cout << "Rasshifrovanyi text: w" << endl;

if (chislo==24)

cout << "Rasshifrovanyi text: x" << endl;

if (chislo==25)

cout << "Rasshifrovanyi text: y" << endl;

if (chislo==26)

cout << "Rasshifrovanyi text: z" << endl;

if (chislo>26)

cout << "Vy vveli nevozmognyi kod, perezapystite programmy i vvedite

novyi kod"<< endl;

else

cout << "Text rasshifrovano!" << endl;

system ("pause") ;

return 0;

} “

При виконанні програми отримуємо командний рядок, куди вводимо дані, які від нас вимагає програма:

7. Аналіз нового методу шифрування

Алгоритм шифрування, який представлено вище, є абсолютно новим і ніким раніше не дослідженим. Він поєднує в собі простоту і надійність, що так складно вдається новим криптографічним системам. Не зайвим буде згадати, що такий тип шифрування легко покращити такими доповненнями, як наприклад, зміна ключа на функцію (припустимо sinх*3-2, де х - будь-яке число) - що зробить алгоритм більш захищеним від хакерів; також, щоб захиститися від зламу шифру «грубою силою» (підбір ключа) можна зробити випадкові числа не випадковими, а розрахованими по формулі, за якою числа будуть відповідати буквам алфавіту і з'являтися в шифрі з однаковою частотою, а отже неможливо визначити частотність виклику програмою тієї, чи іншої букви.

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

Вдосконалити цей шифр можна також взявши головний принцип алгоритму Віженера, а саме, замість ключа - цифри вибрати ключ - слово. Кожна буква тексту буде зашифрована і відповідатиме цифрі, яка рівна кількості букв в ключі. Наприклад, виберемо ключ «Відмінно», в цьому слові 8 букв, отже кожна восьма цифра буде відповідати нашому тексту, інші 7 будуть випадковими.

Новий метод шифрування випереджає інші алгоритми симетричного шифрування по своїй надійності і швидкодії. Шифр Цезаря з легкістю можна зламати «грубою силою» за кілька хвилин, звичайним підбором ключа. Шифр Віженера можна розшифрувати знайшовши певні повтори у шифрі. З шифром Вернама вже буде складніше, але він не підійде для кодування великої кількості даних. Його дешифрування буде схожим на дешифрування Віженера, але через великий надлишок інформації хакерам знадобиться більше часу для зламу шифру. Всі ці методи дешифрування не спрацюють на новому алгоритмі. Однак мінус, який стосується всіх симетричних систем шифрування і його неможливо ліквідувати, полягає в тому, що як тільки хакерам стане відомий секретний ключ, алгоритм буде зламано.

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

Висновки

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

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

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

Список використаних джерел

1. Алфьоров А.П., Зубов А.Ю., Кузьмін А.С., Черьомушкін А.В. Основи криптографії: Навчальний посібник. 3-тє вид., випр. і доп. - М.: 2005. - 480 с.

2. Введення в криптографію / За заг. ред. В.В. Ященко. - 3-е вид., Доп. - М.: 2000.-288 с.

3. Нечаєв В.І. Елементи криптографії (Основи теорії захисту інформації): Посібник для університетів і педагогічних вузів. / За ред. В.А. Садовнича - М.: Вищ. шк., 1999 - 109 с.

4. Криптографія [Стаття] [Електронний ресурс] / Вікіпедія: вільна енциклопедія

5. Шифр Цезаря [Стаття] [Електронний ресурс] / Вікіпедія: вільна енциклопедія

6. Шифр Віженера [Стаття] [Електронний ресурс] / Вікіпедія: вільна енциклопедія

7. Шифр Вернама [Стаття] [Електронний ресурс] / Вікіпедія: вільна енциклопедія

8. RSA [Блог] [Електронний ресурс] / Wordpress: система керування контентом

9. Алгоритм Диффі-Хеллмана [Блог] [Електронний ресурс] / Wordpress: система кеування контентом

10. Excel [Реферат] [Електронний ресурс] / Найбільша колекція україномовних рефератів

11. С++ [Сайт] [Електронний ресурс] / Сайт: мови програмування

12. С++ [Стаття] [Електронний ресурс] / Вікіпедія: вільна енциклопедія

13. Шифрування [Стаття] [Електронний ресурс] / Вікіпедія: вільна енциклопедія

Размещено на Allbest.ru


Подобные документы

  • Основи безпеки даних в комп'ютерних системах. Розробка програми для забезпечення захисту інформації від несанкціонованого доступу: шифрування та дешифрування даних за допомогою криптографічних алгоритмів RSA та DES. Проблеми і перспективи криптографії.

    дипломная работа [823,1 K], добавлен 11.01.2011

  • Забезпечення захисту інформації. Аналіз системи інформаційної безпеки ТОВ "Ясенсвіт", розробка моделі системи. Запобігання витоку, розкраданню, спотворенню, підробці інформації. Дослідження та оцінка ефективності системи інформаційної безпеки організації.

    курсовая работа [1,6 M], добавлен 27.04.2014

  • Дослідження криптографічних методів захисту даних від небажаного доступу. Основи безпеки даних в комп'ютерних системах. Класифікаційні складові загроз безпеки інформації. Характеристика алгоритмів симетричного та асиметричного шифрування інформації.

    курсовая работа [245,8 K], добавлен 01.06.2014

  • Задачі інформаційних систем криптографічного захисту інформації. Принципи шифрування даних на основі використання хеш-функцій. Розробка програмних компонентів інформаційних систем криптографічного захисту інформації. Види криптографічних алгоритмів.

    курсовая работа [2,7 M], добавлен 23.01.2012

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

    курсовая работа [1,9 M], добавлен 21.07.2011

  • Класифікація мережевих атак, методи протидії і захисту. Технології аутентифікації, цілісності і конфіденційності. Модуль периферійного розподілу. Безпечний дизайн Cisco SAFE. Розробка схеми мультисервісної мережі. Технології віддаленого доступу до VPN.

    курсовая работа [616,8 K], добавлен 18.09.2014

  • Криптологія - захист інформації шляхом перетворення, основні положення і визначення. Криптографія - передача конфіденційної інформації через канали зв'язку у зашифрованому виді. Системи ідентифікації, характеристика алгоритмів шифрування; криптоаналіз.

    реферат [125,8 K], добавлен 19.12.2010

  • Аналіз існуючих методів несанкціонованого отримання інформації та заходів щодо протидії їм. Детальних огляд їх властивостей і можливостей впровадження на підприємстві. Наслідки недотримання правил захисту інформації від несанкціонованого отримання.

    курсовая работа [36,5 K], добавлен 19.11.2014

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

    презентация [144,4 K], добавлен 14.08.2013

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

    курсовая работа [1,5 M], добавлен 22.04.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.