1
ШИФРУВАННЯ ДАНИХ: ЕВОЛЮЦІЯ КРИПТОГРАФІЧНИХ МЕТОДІВ
Проєкт присвячено дослідженню еволюції криптографічних методів, зокрема простого шифру Цезаря, який є одним із найдавніших методів шифрування інформації. Метою роботи є дослідити вплив ранніх криптографічних підходів на розвиток сучасних методів захисту інформації та кібербезпеки загалом. Проєкт включає огляд наукової літератури, порівняльний аналіз шифрів різних історичних етапів та практичну демонстрацію шифру Цезаря, що дозволяє показати принцип роботи цього шифру та його застосування. Виконане дослідження акцентує увагу на важливості історичного досвіду в розвитку криптографії, де ранні методи шифрування слугували основою для подальшого вдосконалення технологій захисту. Шифр Цезаря, попри свою простоту, відіграв значну роль у становленні криптографії як науки та дисципліни, необхідної для захисту даних. Робота демонструє, що розуміння історичних підходів до шифрування є важливим для оцінки сучасних криптографічних технологій, а також для формування безпечних методів захисту інформації, які залишаються актуальними і в наш час.
Ключові слова: криптографія, шифр, захист інформації, шифрування, криптографічні технології, розшифровка.
Зміст
Перелік скорочень, термінів та їх значення…………………………………….5
ВСТУП……………………………………………………………………………… 7
1.Старі шифри, початок шифрування
Розділ 1.1: Початок історії. Шифр Цезаря………………………………..…9
Розділ 1.2: Одноалфавітний шифр заміни та частковий аналіз…………..13
Розділ 1.3: Шифр Віженера………………………………………………...15
2.ХХст. Кінець епохи ручних шифрів. Подальший розвиток шифрів
Розділ 2.1: Енігма та Алан Тюрінг..……………………………………..….20
Розділ 2.2: Сучасні методи шифрування……………………………….….23
Висновок…………………………………………………………………………...30
Список використаних джерел…………………………………………………..32
Додатки…………………………………………………………………………….34
Перелік скорочень, термінів та їх значення:
RSA (Rivest-Shamir-Adleman)
Алгоритм асиметричного шифрування, який базується на складності розкладання великих чисел на прості множники. Використовується для захисту даних у відкритих мережах.
ECC (Elliptic Curve Cryptography)
Криптографія на основі еліптичних кривих, яка забезпечує високу безпеку при використанні коротших ключів, у порівнянні з RSA.
DES (Data Encryption Standard)
Старий стандарт симетричного шифрування, який використовує 56-бітний ключ. Зараз вважається застарілим через низький рівень безпеки.
AES (Advanced Encryption Standard)
Сучасний симетричний алгоритм шифрування, який забезпечує високий рівень захисту даних. Використовується в багатьох системах безпеки, включаючи VPN і Wi-Fi.
VPN (Virtual Private Network)
Віртуальна приватна мережа, яка дозволяє створити захищений тунель для передачі даних через незахищені мережі, наприклад, Інтернет.
BitLocker
Інструмент від Microsoft для шифрування дисків, який забезпечує захист даних на жорстких дисках комп’ютерів.
FileVault
Інструмент для шифрування даних, розроблений для пристроїв Apple.
WhatsApp і Telegram
Месенджери, які використовують кінцеве шифрування для забезпечення приватності листування.
SSL/TLS (Secure Sockets Layer / Transport Layer Security)
Протоколи для захисту передачі даних в Інтернеті. Вони шифрують інформацію, щоб її не могли прочитати треті сторони.
Bitcoin
Перша та найвідоміша криптовалюта, що базується на технології блокчейн. Для забезпечення безпеки транзакцій використовуються криптографічні методи.
PGP (Pretty Good Privacy)
Протокол для шифрування електронної пошти та файлів. Він поєднує симетричне та асиметричне шифрування.
S/MIME (Secure/Multipurpose Internet Mail Extensions)
Стандарт для захищеної електронної пошти, який дозволяє шифрувати та підписувати повідомлення.
SSH (Secure Shell)
Протокол для захищеного доступу до серверів та інших пристроїв через мережу.
Email
Електронна пошта – спосіб передачі текстових повідомлень і файлів через Інтернет.
XOR (eXclusive OR)
Логічна операція, яка використовується в криптографії для змішування даних і ключів. Якщо два біти однакові, результат – 0; якщо різні – 1.
ASCII (American Standard Code for Information Interchange)
Стандарт кодування тексту в числовому форматі, де кожен символ має відповідний код (наприклад, A – 65, B – 66).
ВСТУП
З розвитком інформаційних технологій і цифрових комунікацій питання захисту інформації стало пріоритетним для суспільства. В умовах цифрової епохи обсяги даних, що передаються в електронному вигляді, досягли неймовірних масштабів, і кожна взаємодія, транзакція або обмін даними вимагають надійного захисту. Криптографія, наука про шифрування та захист інформації, стала фундаментальним інструментом для забезпечення конфіденційності, цілісності та автентичності даних. Вона є важливою складовою захисту в банківських і фінансових операціях, онлайн-платежах, в електронній комерції, а також у системах державного управління та навіть у персональних комунікаціях користувачів інтернету.
Еволюція криптографії бере свій початок ще з античності, коли перші шифрувальні методи базувалися на простих операціях перестановки та заміни символів. Стародавні цивілізації, такі як єгипетська, китайська, римська, вже використовували примітивні форми шифрування для захисту повідомлень від перехоплення. Одним із відомих ранніх методів був шифр Цезаря, що полягав у зсуві букв на фіксовану кількість позицій, створюючи базовий рівень захисту конфіденційної інформації. Проте розвиток криптографії не обмежувався лише античними підходами: у Середньовіччі та в епоху Відродження методи шифрування ускладнювалися, і виникали нові підходи, такі як шифри Віженера, які додавали елемент випадковості та робили шифрування більш стійким до зламу.
Найбільший стрибок у розвитку криптографії відбувся у XX столітті під час Першої та Другої світових воєн, коли виникла гостра потреба у надійній передачі військової інформації. Одним із символів криптографії цього періоду стала шифрувальна машина Енігма, яка використовувалася німецькими
військами для шифрування стратегічно важливих повідомлень. Розробка і подальший злам коду Енігми завдяки зусиллям криптоаналітиків, зокрема
Алана Тьюринга та його команди, показали силу і важливість криптографії для світової історії. Війни стали поштовхом до стрімкого розвитку криптографічних методів, зокрема до створення математичних підходів, що лягли в основу сучасних алгоритмів.
З появою комп’ютерів та інформаційної ери криптографія зазнала значних змін. Виникли нові виклики, пов’язані з кібербезпекою, що зробило традиційні методи шифрування недостатньо надійними. У відповідь на ці виклики були розроблені новітні методи криптографії, зокрема алгоритми з відкритим ключем, такі як RSA, які дозволяють здійснювати шифрування з використанням двох ключів — відкритого та приватного, забезпечуючи безпечний обмін даними навіть у відкритих мережах. Алгоритми симетричного шифрування, наприклад, AES, також стали основою сучасної криптографії, оскільки забезпечують високу швидкість шифрування і використовуються у різних галузях, від банківських операцій до захищених месенджерів.
1.Старі шифри, початок шифрування
Розділ 1.1: Початок історії. Шифр Цезаря
Ми розуміємо, що все, що може бути перехоплено, буде перехоплено. Тому криптографія як наука виникла для того, щоб забезпечити захист повідомлень на певний час. Її завдання — створити алгоритм, який дозволить зашифрувати текст так, щоб тільки одержувач із відповідним ключем міг його прочитати.
Криптографія базується на двох основних методах: перестановка і заміна.
Цей метод простіший і став основним ще з давніх часів.
Одним із перших шифрів на основі заміни став шифр Цезаря. Під час Галльських війн Юлій Цезар використовував заміну латинських літер на грецькі. Згодом він перейшов до методу зсуву, де кожна літера замінювалася на ту, що стоїть в алфавіті на кілька позицій далі.
Алгоритм шифру Цезаря:
Приклад:
Текст: DOG
Зсув: 3
Згодом шифр Цезаря розширили на англійський алфавіт (26 літер), що дало 25 можливих ключів.
Таб. 1.1. Зсувів букв
0 ABCDEFGHIJKLMNOPQRSTUVWXYZ
1 |
BCDEFGHIJKLMNOPQRSTUVWXYZA |
|
2 |
CDEFGHIJKLMNOPQRSTUVWXYZAB |
|
3 |
DEFGHIJKLMNOPQRSTUVWXYZABC |
|
4 |
EFGHIJKLMNOPQRSTUVWXYZABCD |
|
5 |
FGHIJKLMNOPQRSTUVWXYZABCDE |
|
6 |
GHIJKLMNOPQRSTUVWXYZABCDEF |
|
7 |
HIJKLMNOPQRSTUVWXYZABCDEFG |
|
8 |
IJKLMNOPQRSTUVWXYZABCDEFGH |
|
9 |
JKLMNOPQRSTUVWXYZABCDEFGHI |
|
10 |
KLMNOPQRSTUVWXYZABCDEFGHIJ |
|
11 |
LMNOPQRSTUVWXYZABCDEFGHIJK |
|
12 |
MNOPQRSTUVWXYZABCDEFGHIJKL |
|
13 |
NOPQRSTUVWXYZABCDEFGHIJKLM |
|
14 |
OPQRSTUVWXYZABCDEFGHIJKLMN |
|
15 |
PQRSTUVWXYZABCDEFGHIJKLMNO |
|
16 |
QRSTUVWXYZABCDEFGHIJKLMNOP |
|
17 |
RSTUVWXYZABCDEFGHIJKLMNOPQ |
|
18 |
STUVWXYZABCDEFGHIJKLMNOPQR |
|
19 |
TUVWXYZABCDEFGHIJKLMNOPQRS |
|
20 |
UVWXYZABCDEFGHIJKLMNOPQRST |
|
21 |
VWXYZABCDEFGHIJKLMNOPQRSTU |
|
22 |
WXYZABCDEFGHIJKLMNOPQRSTUV |
|
23 |
XYZABCDEFGHIJKLMNOPQRSTUVW |
|
24 |
YZABCDEFGHIJKLMNOPQRSTUVWX |
|
25 |
ZABCDEFGHIJKLMNOPQRSTUVWXY |
|
Мінуси шифра Цезеря:
Висновок:
Шифр Цезаря, як один із перших відомих методів шифрування, демонструє простоту й ефективність початкових підходів до криптографії. Він став основою для подальшого розвитку шифрувальних систем, показавши, що навіть прості методи можуть забезпечити базовий рівень захисту інформації. Попри його недоліки, його роль в історії криптографії залишається фундаментальною.
Код – додаток 1.1
Розділ 1.2: Одноалфавітний шифр заміни та частковий аналіз
Шифр Цезаря мав суттєвий недолік – обмежену кількість ключів. Це робило його вразливим до зламів, навіть якщо про алгоритм знали тільки відправник і одержувач. Щоб подолати цю проблему, було створено одноалфавітний шифр заміни.
Як працює шифр:
Приклад:
Ключ:
Цей метод мав значно більше ключів (26!, або понад 10^26), що унеможливлювало їх перебір. Але він виявився вразливим до часткового аналізу, винайденого арабськими вченими.
Частковий аналіз:
Арабські вчені першими помітили, що літери в природних текстах зустрічаються з різною частотою. Наприклад, в англійській найчастіше зустрічається літера «E». Аналізуючи частоти символів у зашифрованих текстах, криптоаналітики могли співставити їх із природними частотами і розшифрувати повідомлення.
Недоліки Одноалфавітного шифра:
Висновок
Одноалфавітний шифр заміни трохи ускладнив процес шифрування, але з часом виявилося, що його можна зламати, аналізуючи частоту букв у тексті. Ця проблема спонукала створювати нові, більш надійні способи захисту даних.
Розділ 1.3: Шифр Віженера
Опис шифру Віженера
Шифр Віженера – це метод симетричного шифрування, який використовує таблицю, що складається з кількох алфавітів, зсунутих один відносно одного. Цей шифр розв’язує проблему шифрування, що часто виникала у простому шифрі Цезаря, де кожна літера замінювалася на певну кількість букв вперед або назад у алфавіті. Виженер дозволяє застосовувати багато різних зсувів, що ускладнює злам шифру через частотний аналіз.
Квадрат Віженера
Квадрат Віженера – це таблиця розміром 26 x 26, що містить 26 алфавітів, кожен з яких є зсувом попереднього алфавіту на одну позицію вправо. Перший рядок містить стандартний алфавіт, а кожен наступний рядок зсувається на одну позицію вліво. Наприклад, якщо перший рядок виглядає так:
Рис. 3.1. Квадрат Віженера
Використання Квадрата Віженера для шифрування
Процес шифрування тексту за допомогою Квадрата Віженера виглядає так:
Приклад:
Повторюємо ключ так, щоб його довжина відповідала довжині тексту:
Приклад:
За допомогою квадрата Віженера:
Результат шифрування: RIJVS
Дешифрування
Дешифрування шифрованого тексту також відбувається за допомогою Квадрата Віженера, але процес зворотний.
Приклад:
Для дешифрування:
Результат дешифрування: HELLO
Вразливості шифру Віженера
Хоча шифр Віженера є потужним інструментом для шифрування тексту, він має кілька вразливостей. Основною з них є повторення ключа, що дозволяє зловмисникам використовувати методи криптоаналізу, щоб зламати шифр. Одна з таких методик — це аналіз повторюваних фраз.
Таким чином, хоча шифр Віженера є складнішим за шифр Цезаря, він все ж таки має свої обмеження і вразливості при використанні без належного додаткового захисту.
Мінуси шифра Віженера:
Висновок
Шифр Віженера зробив шифрування складнішим і допоміг захищати важливі повідомлення. Використання ключа для кожної букви зробило простий аналіз тексту менш ефективним. Проте, як і попередні методи, його з часом навчилися зламувати, що привело до пошуку ще кращих способів шифрування.
Код – додаток 1.2
Розділ 2. ХХст. Кінець епохи ручних шифрів. Подальший розвиток шифрів
Розділ 2.1: Енігма та Алан Тюрінг
Енігма — електромеханічна машина шифрування, яка використовувалася Німеччиною під час Другої світової війни для захисту військових повідомлень. Її складність і велику кількість можливих налаштувань вважали нездоланною перепоною для зламу.
Рис. 4.1. Зображення Енігми
Конструкція Енігми:
Як працювала Енігма:
Вразливість Енігми:
Попри складність конструкції, у шифрувальному процесі були вразливості, якими скористалися союзники.
Алан Тюрінг і машина «Бомба»:
Алан Тюрінг у Блетчлі-Парку створив пристрій під назвою «Бомба», який допоміг зламати Енігму.
Як працювала «Бомба»:
Роль «Бомби»:
«Бомба» дозволила зламувати шифри Енігми за кілька годин, що забезпечило союзникам доступ до ключової інформації про німецькі військові операції. Завдяки цьому союзники отримали стратегічну перевагу, що суттєво вплинуло на перебіг війни.
Висновок
Енігма була важливим винаходом для шифрування в минулому столітті. Проте її слабкі місця, а також повторювані дії операторів дозволили Аллану Тюрінгу та його команді знайти спосіб зламати її. Це довело, що навіть найкращі системи можуть бути небезпечними, якщо їх неправильно використовувати.
Розділ 2.2: Сучасні методи шифрування
Сучасні алгоритми шифрування поділяються на два основні типи: симетричні та асиметричні. Обидва типи широко використовуються у сфері інформаційної безпеки, кожен із них має свої особливості, переваги та недоліки.
Наші герої для прикладу:
Єва має дві ключові можливості:
Симетричні алгоритми шифрування
У симетричних методах використовують один і той самий ключ для шифрування і розшифрування даних.
Як працює:
Приклад:
Текст: HELLO
Ключ: SECRET
Алгоритми симетричного шифрування:
Недоліки симетричного шифрування:
Асиметричні алгоритми шифрування
Асиметричне шифрування використовує пару ключів: відкритий (для шифрування) і приватний (для розшифрування).
Як працює:
Алгоритм: як працює шифрування і розшифрування:
Шифрування:
Коли Боб хоче надіслати Алісі зашифроване повідомлення:
Розшифрування:
Аліса може розшифрувати тільки те, що було зашифровано за допомогою
її відкритого ключа. Приватний ключ дозволяє їй повернути оригінальний текст.
Алгоритми асиметричного шифрування:
Переваги асиметричного шифрування:
Недоліки:
Комбінація симетричного та асиметричного шифрування
У сучасних системах часто поєднують обидва типи шифрування:
Симетричне шифрування: використання в сучасних технологіях
Асиметричне шифрування: використання в сучасних технологіях
Системи аутентифікації на основі RSA або ECC використовуються для захисту доступу до різних сервісів, таких як SSH (Secure Shell) та VPN. Користувачі генерують пару ключів (публічний і приватний) і використовують їх для доступу до віддалених серверів, замінюючи паролі.
Поєднання симетричного та асиметричного шифрування
У більшості сучасних протоколів використовується поєднання симетричного та асиметричного шифрування для досягнення балансу між безпекою і швидкістю:
Код – додаток 1.3
Висновок:
У цій роботі було досліджено еволюцію криптографії, починаючи з найдавніших методів шифрування, таких як шифр Цезаря, і закінчуючи сучасними алгоритмами захисту інформації, як-от AES і RSA. Аналіз кожного етапу розвитку криптографії супроводжувався практичними прикладами реалізації алгоритмів, що було продемонстровано через Python-програму. Зокрема, у програмі можна побачити, як працюють шифри Цезаря та Віженера, а також як реалізуються сучасні методи шифрування, такі як AES, DES і RSA.
Шифр Цезаря, хоча й є базовим прикладом шифрування, має значні недоліки, зокрема його легко зламати через обмежену кількість можливих зсувів (усього 25). Одноалфавітні шифри, такі як цей, доволі швидко стали неефективними через появу методів частотного аналізу. З іншого боку, шифр Віженера, який використовує багатоалфавітний підхід, забезпечує кращий рівень безпеки, хоча й залишається вразливим до криптоаналізу при недостатньо довгому ключі.
Сучасні алгоритми шифрування, такі як AES та RSA, суттєво підвищили рівень захисту даних. Наприклад, алгоритм AES забезпечує швидке симетричне шифрування, яке активно використовується в банківських системах і для захисту файлів, а RSA забезпечує безпечний обмін ключами у відкритих мережах. Такі методи є основою для безпеки онлайн-комунікацій, як-от електронна пошта чи месенджери.
Однак сучасні технології також стикаються з викликами. Зокрема, поява квантових комп'ютерів ставить під загрозу ефективність існуючих асиметричних алгоритмів, таких як RSA. У зв'язку з цим дослідження в галузі постквантової криптографії стають дедалі важливішими.
Ця робота підкреслює значення криптографії для сучасного світу та її невід'ємну роль у забезпеченні безпеки цифрової інформації. Практична демонстрація алгоритмів допомагає краще зрозуміти, як теоретичні принципи шифрування реалізуються у сучасних технологіях. Вивчення еволюції шифрування дозволяє оцінити не лише історичний внесок, а й усвідомити важливість розробки нових алгоритмів, що забезпечать стійкість до майбутніх загроз.
Список використаних джерел:
RSA – https://uk.wikipedia.org/wiki/RSA
VPN – https://uk.wikipedia.org/wiki/VPN
BitLocker – https://uk.wikipedia.org/wiki/BitLocker
FileVault – https://uk.wikipedia.org/wiki/FileVault
SSL – https://uk.wikipedia.org/wiki/SSL
TLS – https://uk.wikipedia.org/wiki/Transport_Layer_Security
PGP – https://uk.wikipedia.org/wiki/PGP
S/MIME – https://uk.wikipedia.org/wiki/S/MIME
SSH – https://uk.wikipedia.org/wiki/SSH
ASCII – https://uk.wikipedia.org/wiki/ASCII
Додатки:
Додаток 1.1:
shift = 3
def caesar_cipher(text, shift, decrypt=False):
if decrypt:
shift = -shift
result = ""
for char in text:
if char.isalpha():
start = ord('A') if char.isupper() else ord('a')
result += chr((ord(char) - start + shift) % 26 + start)
else:
result += char
return result
Додаток 1.2:
def vigenere_encrypt(text, key, decrypt=False):
key = key.lower()
result = ""
key_index = 0
for char in text:
if char.isalpha():
start = ord('A') if char.isupper() else ord('a')
shift = (ord(key[key_index % len(key)]) - ord('a'))
if decrypt:
shift = -shift
result += chr((ord(char) - start + shift) % 26 + start)
key_index += 1
else:
result += char
return result
Додаток 1.3:
import base64
from Crypto.Cipher import AES, DES
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
def aes_encrypt(text, key):
key = key[:16].ljust(16, '0') # Длина ключа для AES — 16 байт
cipher = AES.new(key.encode(), AES.MODE_CFB, iv=b'1234567812345678')
encrypted = cipher.encrypt(text.encode())
return base64.b64encode(encrypted).decode()
def aes_decrypt(text, key):
key = key[:16].ljust(16, '0') # Длина ключа для AES — 16 байт
cipher = AES.new(key.encode(), AES.MODE_CFB, iv=b'1234567812345678')
decrypted = cipher.decrypt(base64.b64decode(text)).decode()
return decrypted
def des_encrypt(text, key):
key = key[:8].ljust(8, '0') # Длина ключа для DES — 8 байт
cipher = DES.new(key.encode(), DES.MODE_CFB, iv=b'12345678')
encrypted = cipher.encrypt(text.encode())
return base64.b64encode(encrypted).decode()
def des_decrypt(text, key):
key = key[:8].ljust(8, '0') # Длина ключа для DES — 8 байт
cipher = DES.new(key.encode(), DES.MODE_CFB, iv=b'12345678')
decrypted = cipher.decrypt(base64.b64decode(text)).decode()
return decrypted
def rsa_generate_keys():
key = RSA.generate(2048)
private_key = key.export_key().decode()
public_key = key.publickey().export_key().decode()
return private_key, public_key
def rsa_encrypt(text, public_key_str):
public_key = RSA.import_key(public_key_str.encode())
cipher = PKCS1_OAEP.new(public_key)
encrypted = cipher.encrypt(text.encode())
return base64.b64encode(encrypted).decode()
def rsa_decrypt(text, private_key_str):
private_key = RSA.import_key(private_key_str.encode())
cipher = PKCS1_OAEP.new(private_key)
decrypted = cipher.decrypt(base64.b64decode(text)).decode()
return decrypted