You are on page 1of 20

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ АВІАЦІЙНИЙ УНІВЕРСИТЕТ


Кафедра комп’ютеризованих систем захисту інформації

КУРСОВА РОБОТА
з дисципліни
“Прикладна криптологія”

Виконав:
студент БІ-443Б
Варіант № 3
Бусько Андрій Петрович

Перевірив:
Доцент кафедри КСЗІ Ільєнко А.В.

Київ 2023
ЗМІСТ
ВСТУП

В сучасному інформаційному суспільстві, де електронна інформація стає основним


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

Сучасні технології дозволяють нам швидко і легко обмінюватися електронними


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

В роботі також обговорюються загальні принципи криптографії, які використовуються для


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

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


реалізацію системи, тестування, висновки та рекомендації для подальших досліджень.
ТЕОРЕТИЧНІ ВІДОМОСТІ

Основні принципи криптографії:

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


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

Конфіденційність

Конфіденційність полягає у забезпеченні та збереженні секретності інформації.


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

Цілісність

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


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

Автентичність

Автентичність передбачає визначення і підтвердження справжності джерела інформації. Цей


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

ШИФРУВАННЯ ДАНИХ

Шифрування даних є фундаментальним аспектом криптографії, спрямованим на захист


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

Види шифрування
1. Симетричне шифрування:
 Один ключ використовується для як шифрування, так і розшифрування.
 В даній роботі обрано TripleDES (Triple Data Encryption Standard), який
використовує три ключі для забезпечення вищого рівня безпеки.

2. Асиметричне шифрування:
 Використовує пару ключів: публічний та приватний.
 Публічний ключ використовується для шифрування, а приватний — для
розшифрування.

TripleDES

TripleDES, або Triple Data Encryption Standard, є блочним шифром симетричного


шифрування, який використовує три ключі для трьох послідовних застосувань DES. DES
використовує 64-бітні блоки даних, та ключ завдовжки 56 біт. В TripleDES, три ключі
використовуються для забезпечення високого рівня безпеки, оскільки треба пройти три етапи
шифрування/розшифрування.

Режим шифрування: CBC (Cipher Block Chaining):

У режимі CBC, кожен блок тексту перед шифруванням комбінується з попереднім


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

Довжина ключа та розмір блоку:

Довжина ключа TripleDES складається з 112 біт, що забезпечує достатню стійкість для
багатьох застосувань. Розмір блоку використовується 64 біта, який є стандартом для DES.

Процес шифрування:
1. Генерація ключа:
 Ключ для TripleDES генерується випадковим чином або отримується від
користувача.

2. Вибір режиму шифрування:


 Обирається режим CBC для забезпечення надійності та стійкості.

3. Шифрування тексту:
 Текст розбивається на блоки.
 Кожен блок комбінується з попереднім зашифрованим блоком (у випадку CBC).
 Застосовується алгоритм TripleDES для кожного блоку.

Процес розшифрування:

1. Отримання ключа:
 Ключ для розшифрування повинен бути тим самим, як і для шифрування.

2. Розшифрування блоків:
 Застосовується алгоритм TripleDES для кожного блоку.

3. Відновлення оригінального тексту:


 Результат розшифрування об'єднується для отримання оригінального тексту.

Шифрування даних за допомогою TripleDES в режимі CBC забезпечує надійний та стійкий


захист конфіденційності інформації під час її передачі чи зберігання.
АРХІТЕКТУРА СИСТЕМИ

Архітектура системи є ключовим елементом успішної реалізації криптографічного захисту.


Цей розділ детально розглядає структуру та взаємодію компонентів системи.

Модуль шифрування:

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


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

Модуль електронно-цифрового підпису:

Другий компонент — модуль електронно-цифрового підпису. Цей модуль використовує


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

Захищені контейнери для ключів:


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

Інтерфейс користувача:

Інтерфейс користувача взаємодіє з іншими компонентами системи та забезпечує зручність


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

Вибір криптопровайдера та алгоритмів:

Система повинна здати визначити доступні криптопровайдери та підтримувані алгоритми


симетричного шифрування. Користувач може обрати конкретний алгоритм та параметри для
своїх потреб.

Сховище зашифрованих даних:

Для збереження зашифрованих даних система може використовувати захищене сховище або
зберігати їх у визначених файлах з застосуванням вибраного формату.

Вибір режиму роботи:

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

Взаємодія компонентів:
Взаємодія між компонентами здійснюється через визначені інтерфейси та протоколи. Модулі
обмінюються необхідними даними та керуючими сигналами для виконання операцій
шифрування та підпису. Ця архітектура забезпечує модульність та гнучкість системи,
дозволяючи легко вносити зміни та розширювати функціонал для відповіді на конкретні
вимоги користувача.
ВИБІР КРИПТОГРАФІЧНИХ АЛГОРИТМІВ

При виборі криптографічних алгоритмів для системи шифрування і електронно-цифрового


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

Симетричне шифрування: TripleDES

1. Безпека:
 TripleDES є розширенням стандарту DES, що дозволяє використовувати три
ключі замість одного.
 Ключові біти використовуються в різних частинах алгоритму, забезпечуючи
вищий рівень безпеки.
2. Ефективність:
 Хоча TripleDES є безпечним, він менш ефективний порівняно з більш сучасними
алгоритмами.
 Для невеликих обсягів даних або обмеженого ресурсу це може бути прийнятно.
3. Відповідність вимогам:
 Застосовується для симетричного шифрування, яке підходить для захисту
конфіденційності даних.

Асиметричне шифрування: RSA

1. Безпека:
 RSA базується на складних математичних проблемах, таких як факторизація
великих простих чисел.
 Забезпечує надійний захист від криптоаналізу.
2. Ефективність:
 RSA може бути ефективним для використання з великими обсягами даних, але
завдання підпису вимагає обчислень.
3. Відповідність вимогам:
 Використовується для асиметричного шифрування та створення електронно-
цифрових підписів для забезпечення автентичності та цілісності даних.

Хеш-функції: SHA-256

1. Безпека:
 SHA-256 є однією з найбільш стійких хеш-функцій на сьогоднішній день.
 Забезпечує великий розмір вихідного хешу, що робить його стійким до колізій.
2. Ефективність:
 Хеш-функції ефективно використовуються для перевірки цілісності даних та
створення електронно-цифрових підписів.
3. Відповідність вимогам:
 Застосовується для генерації хешів даних, що дозволяє перевірити цілісність та
автентичність інформації.

Вибір алгоритмів для конкретних завдань

1. Шифрування даних:
 TripleDES обрано для симетричного шифрування через його безпеку та
можливість використання трьох ключів для підвищення стійкості.
2. Електронно-цифровий підпис:
 RSA обрано для асиметричного шифрування, оскільки він дозволяє створювати
цифрові підписи та перевіряти їх за допомогою відкритого ключа.
3. Хешування даних:
 SHA-256 використовується для генерації хешів, що гарантує стійкість до колізій та
забезпечує надійну перевірку цілісності.
ПРОГРАМА

Для виконання поставленої задачі мені було необхідно підключити бібліотеку cryptography.
Бібліотека `cryptography` в мові програмування Python є потужним інструментарієм для
роботи з криптографією та забезпечення безпеки даних. Вона надає реалізації різноманітних
алгоритмів криптографії, ключових обмінів, геш-функцій та інших криптографічних
примітивів.

Щоб підключити дану бібліотеку нам необхідно написати в термінал команду pip install
cryptography.
Тепер, щоб перевірити, чи все правильно встановлено я ввів команду pip list, вона дозволяэ
переглянути список встановлених бібліотек.

Далі я детально продемонструю, що робить дана програма. Сам код програми буде
знаходитися в Додатку А.

1. При запуску програми у користувача просить придумати пароль, за цим паролем в


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

Заданий пароль: busko_kursova

2. Тепер користувач має обрати що саме він бажає зробити, зашифрувати повідомлення
чи дешифрувати, в залежності від натиснутої кнопки зміниться результат.
Обираємо «Е» для того щоб зашифрувати повідомлення.

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

Я обрав слова з пісні Wham! – Last Christmas, так як скоро новий рік.

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

Я назвав файл busko_test.

Ми можемо переглянути зашифроване повідомлення як у самій програмі, так і у вигляді


файлу на ПК.
5. Тепер запускаємо програму знову, вводимо той самий пароль, який ми створювали в
пункті 1.

Якщо ввести неправильний пароль, то програма нічого не виконає, тому при написанні
паролю треба бути уважним.

6. Далі обираємо пункт дешифрування, для цього натискаємо кнопку «D».

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

ВИСНОВОК

Курсова робота присвячена розробці та дослідженню системи криптографічного захисту


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

Загальною метою курсової роботи було не лише розроблення функціональної системи


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

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ


 Іванов. "Криптографія: теорія і практика". - К.: Наукова Думка, 2008.
 Сміт. "Криптографія для новачків". - Лондон: McGraw-Hill, 2015.
 https://sky.pro/media/kak-ispolzovat-python-dlya-raboty-s-kriptografiej/
 https://crypto.stackexchange.com/questions/63449/what-is-the-keyspace-of-2-key-3des
 https://studfile.net/preview/9124450/page:113/
ДОДАТОК А
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms,
modes
from base64 import urlsafe_b64encode, urlsafe_b64decode
from cryptography.hazmat.primitives import padding
def generate_key(password):
digest = hashes.Hash(hashes.SHA256(), backend=default_backend())
digest.update(password.encode())
key = digest.finalize()
return key[:16] # 3DES requires a 16-byte key
def pad_text(plaintext):
padder = padding.PKCS7(algorithms.TripleDES.block_size).padder()
padded_data = padder.update(plaintext.encode()) + padder.finalize()
return padded_data
def unpad_text(ciphertext):
unpadder = padding.PKCS7(algorithms.TripleDES.block_size).unpadder()
unpadded_data = unpadder.update(ciphertext) + unpadder.finalize()
return unpadded_data.decode()
def encrypt_text(key, plaintext):
iv = b'\x00' * 8 # Initialization vector for CBC mode
cipher = Cipher(algorithms.TripleDES(key), modes.CBC(iv),
backend=default_backend())
encryptor = cipher.encryptor()
padded_text = pad_text(plaintext)
ciphertext = encryptor.update(padded_text) + encryptor.finalize()
return urlsafe_b64encode(ciphertext)
def decrypt_text(key, ciphertext):
iv = b'\x00' * 8
cipher = Cipher(algorithms.TripleDES(key), modes.CBC(iv),
backend=default_backend())
decryptor = cipher.decryptor()
decrypted_text = decryptor.update(urlsafe_b64decode(ciphertext)) +
decryptor.finalize()
return unpad_text(decrypted_text)
def main():
password = input("Введіть пароль: ")
key = generate_key(password)

choice = input("Натисніть 'E' для шифрування чи 'D' для дешифрування:


")

if choice.upper() == 'E':
plaintext = input("Введіть текст для шифрування: ")
ciphertext = encrypt_text(key, plaintext)
output_file = input("Введіть назву вихідного файлу: ")
with open(output_file, 'wb') as file:
file.write(ciphertext)
print("Шифрування завершене.")
elif choice.upper() == 'D':
input_file = input("Введіть назву вхідного файлу: ")
with open(input_file, 'rb') as file:
ciphertext = file.read()
decrypted_text = decrypt_text(key, ciphertext)
print("Дешифрований текст:", decrypted_text)
if __name__ == "__main__":
main()

You might also like