You are on page 1of 9

Курсова робота № 1

З дисципліни
прикладна криптологія
Студент кб-31 з
Король Андрій
Викладач: Лагун Андрій Едуардович
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ДЕРЖАВНА СЛУЖБА
УКРАЇНИ З НАДЗВИЧАЙНИХ СИТУАЦІЙ
ЛЬВІВСЬКИЙ ДЕРЖАВНИЙ УНІВЕРСИТЕТ БЕЗПЕКИ
ЖИТТЄДІЯЛЬНОСТІ
Кафедра управління інформаційною безпекою Завдання до
курсової роботи з дисципліни: "Прикладна криптологія"
ЗАВДАННЯ
1. Симетричне шифрування. Вибрати ключі та розробити блок-схему
алгоритму та програму для шифрування файлу даних афінним шифром 2+(і
mod 4) порядку. Тип афінного шифру визначається останньою цифрою і
номера залікової книжки (НЗК).
2. Асиметричне шифрування. 2.1. Зашифрувати Слово відкритого тексту за
алгоритмом RSA. Слово визначається останньою цифрою і НЗК і задано в
таблиці 1. Для генерування використати числа p та q, які визначаються
передостанньою цифрою j НЗК і задані в таблиці 2. Букви тексту замінити
натуральними числами, що відповідають порядковому номеру букви
латинської абетки. Наприклад, А=00, B=01, C=02 і т.д.

2.2. Скласти блок-схему алгоритму та написати програму шифрування однієї


сторінки текстового файлу алгоритмом RSA для вхідних даних із завдання 2.1
1. Афінний шифр - це один з класичних методів шифрування, який
використовується для захисту конфіденційної інформації. Він отримав
свою назву від Грецького міста Афіни, де він, ймовірно, вперше був
використаний. Афінний шифр базується на математичних операціях
лінійної функції: шифрування полягає в обчисленні нового значення
кожної букви повідомлення за допомогою формули, що включає
множення на ключ і додавання константи. Розшифрування полягає в
оберненому процесі: зашифрований текст домножується на ключ і
віднімається константа. Щоб забезпечити безпеку шифрування, ключ
повинен бути вибраний таким чином, щоб його було складно вгадати.
В афінному шифрі ключом є два числа - а та b, які мають бути взаємно
простими і не рівними нулю. При використанні правильного ключа,
афінний шифр може забезпечити високий рівень захисту інформації.
2. Алгоритм RSA - це асиметричний алгоритм шифрування, який
використовує відкритий ключ для шифрування повідомлень та
закритий ключ для їх розшифрування. Алгоритм можна розбити на
наступні кроки:
1. Генерація ключів Вибираються два різних простих числа p і q.
Обчислюється їх добуток n = p * q, який стає модулем для
шифрування та розшифрування. Обчислюється функція Ейлера від n:
phi(n) = (p-1) * (q-1). Вибирається випадкове число e, яке є взаємно
простим з phi(n) та меншим за нього. Зазвичай в якості e
використовують число 65537 (або 0x10001 в шістнадцятковому
форматі), яке є простим та взаємно простим з будь-якими
значеннями phi(n), що зазвичай забезпечує ефективну роботу
алгоритму. Обчислюється число d, яке є оберненим до e за модулем
phi(n), тобто d таке, що (d * e) mod phi(n) = 1. Публічним ключем стає
пара (n, e), приватним ключем - пара (n, d).
2. Шифрування повідомлення .Повідомлення представляється у
вигляді числа m, яке менше за n. Шифроване повідомлення
обчислюється за формулою: c = (m^e) mod n, де ^ позначає
піднесення до степеню.
3. Розшифрування повідомлення Зашифроване повідомлення
представляється у вигляді числа c. Розшифроване повідомлення
обчислюється за формулою: m = (c^d) mod n.
Отже, зашифроване повідомлення може бути розшифроване тільки з
використанням відповідного приватного ключа, який знаходиться у
володінні тільки одного одержувача. Цього робить алгоритм RSA дуже
безпечним для передачі конфіденційної інформації, оскільки навіть
якщо хтось перехопить зашифроване повідомлення та знає публічний
ключ, він не зможе розшифрувати повідомлення без приватного ключа.
Однак, слід зазначити, що алгоритм має високу обчислювальну
складність і потребує великих чисел для ефективної роботи, що робить
його менш ефективним для шифрування великих об'ємів інформації.
Також важливо зберігати приватний ключ в таємниці, щоб уникнути
можливості несанкціонованого доступу до конфіденційної інформації.
Виконуємо перше завдання
Виконаємо наші програми на мові Python:
Симетричне шифрування :
Остання цифра моєї залікової книжки це 8.Отже:
Ключі: a = 2 + (8 mod 4) = 2, b = 8

Функція приймає текст в якості вхідного параметру і повертає зашифрований


текст. Використовуючи ключі a=2 та b=8, вона проходить по кожному символу
в тексті і обчислює нове значення символу за формулою a*x + b mod 26.
Зашифрований текст зберігається у змінній result, яка повертається як
результат роботи функції.
Для прикладу напишемо Hello World!
І маємо такий результат:
Виконаємо друге завдання
Асиметричне шифрування:
Останній номер моєї залікової книжки = 8.
Перед останній номер моєї залікової книжки = 9.
Написавши правильно програму можемо вставити наше СЛОВО, задане в
таблиці по номеру НЗК.
Та маємо такий вивід:

Наше ввідне слово KID


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

файл

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


починаючи з 0
Цей масив кодуємо
Отриманий результат декодуємо.
Висновок : я опрацював завдання курсової роботи , дослідив та виконав
завдання з симетричним шифруванням (афінним шифром), а також з
асиметричним шифруванням (Алгоритм RSA) на практиці, всі завдання
справно працюють. Зробив висновки з проробленої роботи та відкрив для
себе нові методи шифрування.
Література :
Шеннон К. Теория связи в секретных системах / Шеннон К. // Работы по
теории информации и кибернетике. – М.: Изд. Иностр. Лит, 1963. – С. 333 –
402.
2. Вельшенбах М. Криптография на Си и С++ в действии / М. Вельшенбах. –
М.: Триумф, 2004.
3. Шнайер Б. Прикладная криптография, 2-е издание: протоколы, алгоритмы,
исходные тексты на языке Си / Б. Шнайер. – М.: Триумф, 2002.
4. Вербіцький О. В. Вступ до криптології / О. В. Вербіцький. – Львів: "ВНТЛ",
1998.

You might also like