Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/5857Full metadata record
| DC Field | Value | Language |
|---|---|---|
| dc.contributor.advisor | Палагін, Володимир Васильович | - |
| dc.contributor.author | Грушніцький, Артур Володимирович | - |
| dc.date.accessioned | 2025-07-08T14:36:08Z | - |
| dc.date.available | 2025-07-08T14:36:08Z | - |
| dc.date.issued | 2024 | - |
| dc.identifier.uri | https://er.chdtu.edu.ua/handle/ChSTU/5857 | - |
| dc.description.abstract | Метою дослідження є розробка чат-бота для обміну повідомленнями в Telegram з використанням наскрізного шифрування. Такий чат-бот повинен забезпечити безпечний та конфіденційний обмін інформацією між користувачами, використовуючи сучасні криптографічні методи. Створення подібного чат-бота є важливим завданням для покращення захисту приватних даних та забезпечення конфіденційності під час комунікації в цифровому середовищі. Особливий акцент в дослідженні робиться на впровадженні технології наскрізного шифрування, що забезпечує найвищий рівень захисту переданих даних від несанкціонованого доступу. Об’єктом дослідження є процеси захищеного обміну повідомленнями у цифрових комунікаціях, а також технології криптографічного шифрування, які забезпечують безпеку інформації під час передачі. Предметом дослідження виступає наскрізне шифрування (end-to-end encryption, E2EE) як одна з провідних технологій забезпечення приватності та безпеки цифрових комунікацій. | uk_UA |
| dc.language.iso | uk | uk_UA |
| dc.subject | чат-бот | uk_UA |
| dc.subject | наскрізне шифрування | uk_UA |
| dc.subject | безпека цифрових комунікацій | uk_UA |
| dc.title | Розробка чат боту для обміну повідомленнями методом наскрізного шифрування | uk_UA |
| dc.type | Master Thesis | uk_UA |
| Appears in Collections: | 125 Кібербезпека та захист інформації (Безпека інформаційних і комунікаційних систем) | |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| М_125_Грушніцький_Палагін.pdf Restricted Access | 2.54 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ ЕЛЕКТРОННИХ ТЕХНОЛОГІЙ, АВТОТРАНСПОРТУ ТА
МАШИНОБУДУВАННЯ
КАФЕДРА РОБОТОТЕХНІЧНИХ І ТЕЛЕКОМУНІКАЦІЙНИХ СИСТЕМ ТА
КІБЕРБЕЗПЕКИ
До захисту допущено
завідувач кафедри РТСК
д.т.н., професор
_______________ В.В. Палагін
"_____" _____________ 2024 року
Пояснювальна записка
до дипломного роботи
магістра
(освітньо-кваліфікаційний рівень)
на тему Розробка чат боту для обміну повідомленнями методом наскрізного
шифрування
Виконав: студент 2 курсу, групи мБІ-31
Спеціальності 125 – «Кібербезпека та захист
інформації» ,
(шифр і назва спеціальності)
освітньої програми «Безпека інформаційних і
комунікаційних систем»
(назва освітньої програми)
Грушніцький А.В.
(прізвище та ініціали)
Керівник Палагін В.В.
(прізвище та ініціали)
Рецензент Чепинога А.В.
(прізвище та ініціали)
Черкаси – 2024 року
Форма № Н-9.01
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет електронних технологій, автотранспорту та машинобудування
Кафедра робототехнічних і телекомунікаційних систем та кібербезпеки
Освітньо-кваліфікаційний рівень магістр
Спеціальність 125 – Кібербезпека та захист інформації
Освітня програма – Безпека інформаційних і комунікаційних систем
ЗАТВЕРДЖУЮ
Завідувач кафедри В.В. Палагін
“_____” ___________________ 2024 року
ЗАВДАННЯ
НА КВАЛІФІКАЦІЙНУ РОБОТУ СТУДЕНТУ
Грушніцькому Артуру Володимировичу
(прізвище, ім’я, по батькові)
1. Тема проекту (роботи) Розробка чат боту для обміну повідомленнями методом
наскрізного шифрування
керівник проекту (роботи) Палагін Володимир Васильович
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом вищого навчального закладу від «16 вересня 2024 року № 272/04
2. Термін здачі студентом закінченої роботи «05» грудня 2024 року_________
3. Вихідні дані до роботи: застосувати симетричне шифрування (AES), платформа
Telegram Bot API для додатку, використання Firebase для зберігання ключів користувачів
та історії повідомлень, використання React для створення веб-додатків.
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити)
Вступ; Теоретичні основи наскрізного шифрування та аналіз вибору технологій для
розробки чат-бота; Проектування чат-бота з наскрізним шифруванням; Реалізація чат-
бота на основі React; Висновки; Список використаних джерел.
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень, плакатів):
Схематичні представлення: User Authorization; Key Generation; Message Exchange;
Encryption and Decryption; Message Storage; User Interface; Technologies Used. Скріншоти
роботи програми; Мультимедійна презентація.
.
6. Консультанти з проекту (роботи) із зазначенням розділів проекту, що їх стосуються
Розділ Прізвище, ініціали та посада Підпис, дата
консультанта завдання завдання
видав прийняв
7. Дата видачі завдання 16 вересня 2024 року
КАЛЕНДАРНИЙ ПЛАН
№ Назва етапів дипломного Строк виконання
з/п проекту (роботи) етапів проекту Примітка
(роботи)
1. П ошук і аналіз інформації по заданій темі 16.09.2024-
26.09.2024
2. Н аписання 1-го розділу: Теоретичні основи 17.09.2024-
наскрізного шифрування та аналіз вибору 29.09.2024
технологій для розробки чат-бота
3. Н аписання 2-го розділу: Проектування чат- 30.09.2024-
бота з наскрізним шифруванням 20.10.2024
4. Н аписання 3-го розділу: Реалізація чат-бота на 21.10.2024-
основі React 09.11.2024
5. Н аписання вступу і висновків, складання 10.11.2024-
списку літератури 22.11.2024
6. О формлення пояснювальної записки 23.11.2024-
05.12.2024
7. О формлення презентації 01.12.2024-
05.12.2024
Студент Грушніцький А.В.
( підпис ) (прізвище та ініціали)
Керівник проекту (роботи) Палагін В.В..
( підпис ) (прізвище та ініціали)
Зміст
ВСТУП ..................................................................................................................... 3
1. Теоретичні основи наскрізного шифрування та аналіз вибору технологій
для розробки чат-бота ............................................................................................. 7
1.1 Визначення та принципи наскрізного шифрування................................ 7
1.2 Симетричне шифрування (AES) та асиметричне шифрування (Elliptic
Curve Cryptography - ECC) ............................................................................... 11
1.3 Переваги ECC для обміну ключами в реальному часі ............................ 15
1.4 Огляд існуючих методів обміну зашифрованими повідомленнями ...... 18
1.5 Огляд можливостей Telegram Bot API ...................................................... 23
1.6 Використання React для створення веб-додатків .................................... 26
1.7 Вибір Firebase Realtime Database для зберігання даних .......................... 31
1.8 Інтеграція з бібліотеками elliptic та crypto-js для забезпечення
шифрування ....................................................................................................... 36
2. Проектування чат-бота з наскрізним шифруванням ..................................... 41
2.1 Опис структури додатку та функціональних вимог ................................ 41
2.2 Вимоги до безпеки та способи їх реалізації ............................................. 45
2.3 Моделювання процесу обміну повідомленнями між користувачами ... 50
2.4 Вибір алгоритмів для шифрування та розшифрування повідомлень .... 54
2.5 Використання Firebase для зберігання ключів користувачів та історії
повідомлень ....................................................................................................... 58
3. Реалізація чат-бота на основі React ................................................................. 64
3.1 Налаштування Firebase у React-додатку для зберігання повідомлень та
ключів ................................................................................................................. 64
3.2 Використання бібліотеки elliptic для створення ключових пар
користувачів ....................................................................................................... 69
3.3 Реалізація авторизації користувачів та перевірка паролів ...................... 74
3.4 Логіка відображення зашифрованих та розшифрованих повідомлень у
чаті ...................................................................................................................... 80
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 1
висновок до розділу .......................................................................................... 85
4.Оцінка ефективності та безпеки розробленого чат-бота ............................... 88
4.1 Перевірка функціональності та відповідності вимогам до безпеки ...... 88
4.2 Оцінка продуктивності та швидкодії шифрування та розшифрування
повідомлень ....................................................................................................... 91
4.3 Аналіз стійкості алгоритмів шифрування і захист від потенційних атак
............................................................................................................................. 94
5. Перспективи вдосконалення та можливості розвитку .................................. 97
5.1. Можливості додавання нових функцій .................................................... 97
5.2. Можливості для розширення на інші платформи ................................... 97
5.3. Використання більш сучасних алгоритмів шифрування ....................... 98
5.4. Додавання функції резервного копіювання та відновлення даних ....... 98
Висновки до розділу ......................................................................................... 98
Список використаної літератури 98
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 2
ВСТУП
Актуальність теми
У сучасному світі комунікація є одним з основних аспектів повсякденного
життя. З розвитком цифрових технологій, соціальних мереж і платформ для
обміну повідомленнями обсяг інформації, що передається через Інтернет,
невпинно зростає. Це відкриває нові можливості для спілкування, бізнесу та
навчання, проте водночас створює серйозні ризики для конфіденційності та
безпеки даних. Більшість користувачів мобільних та веб-чатів щоденно
обмінюються особистою інформацією, включаючи особисті фотографії,
важливі документи, банківські дані, адреси тощо. Вразливість цих даних перед
кіберзлочинцями підвищує потребу в технологіях, що забезпечують захист
конфіденційної інформації. Таким чином, актуальність дослідження чат-ботів
із наскрізним шифруванням інформації є надзвичайно високою[1].
Одним із найбільш перспективних методів захисту інформації є наскрізне
шифрування (end-to-end encryption, E2EE). Цей метод передбачає, що лише
кінцеві точки обміну повідомленнями (тобто відправник і отримувач) можуть
отримати доступ до змісту повідомлення. Навіть оператори мережі, власники
серверів і сторонні особи не можуть прочитати дані, оскільки вони
зашифровані ще до того, як покидають пристрій відправника, і залишаються
такими до моменту дешифрування на пристрої отримувача. Такий рівень
захисту забезпечує значно вищий рівень приватності, що є особливо важливим
у випадках обміну чутливою інформацією.
Останніми роками зросла популярність таких сервісів, як WhatsApp,
Signal і Telegram, які активно інтегрують наскрізне шифрування. Telegram,
зокрема, став однією з найбільш популярних платформ, пропонуючи не лише
звичайні чати, але й групові чати, боти, канали для поширення інформації, а
також функцію захищеного секретного чату. Це створює можливості для
обміну повідомленнями, які важко перехопити чи зламати. Проте, попри
розширення функціональності Telegram, необхідність у спеціалізованих чат-
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 3
ботах для обміну повідомленнями з наскрізним шифруванням залишається
актуальною, оскільки вони дозволяють створювати кастомізовані рішення для
безпечного обміну інформацією в різних сферах.
Розробка чат-ботів, що підтримують наскрізне шифрування, має важливе
значення для багатьох галузей. У бізнес-середовищі це дозволяє компаніям
обмінюватися конфіденційною інформацією, захищаючи її від конкурентів та
кіберзлочинців. У державних установах — для обміну інформацією, яка має
значення для національної безпеки. Нарешті, для звичайних користувачів
забезпечення безпеки в особистому листуванні є важливим аспектом їхньої
приватності. Усі ці фактори підкреслюють важливість розробки та
дослідження ефективних методів шифрування у сфері обміну
повідомленнями.
На тлі швидкого розвитку технологій у сфері кібербезпеки та обміну
повідомленнями, інтерес до шифрування даних, зокрема у формі наскрізного
шифрування, стає дедалі більш актуальним. Це пов'язано із ростом кількості
атак на приватні дані користувачів. Стрімке зростання загроз
конфіденційності вимагає постійного вдосконалення методів захисту
інформації та розробки нових інструментів для безпечного обміну даними.
Особливе значення для забезпечення безпеки даних має використання
алгоритмів шифрування, які гарантують високу стійкість до криптографічних
атак. Одним з популярних варіантів для цього є використання алгоритмів
асиметричного шифрування, таких як Elliptic Curve Cryptography (ECC).[8]
ECC є особливо привабливим для мобільних застосунків, оскільки забезпечує
високий рівень безпеки при відносно низькому навантаженні на процесор та
пам'ять пристрою. Цей фактор є особливо важливим для чат-ботів у таких
платформах, як Telegram, де мобільні пристрої часто є основним способом
доступу до додатка.
Таким чином, актуальність теми розробки чат-бота для обміну
повідомленнями з використанням наскрізного шифрування обумовлена не
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 4
лише підвищеним інтересом до захисту конфіденційності, але й
технологічною можливістю забезпечити безпечний обмін повідомленнями
завдяки таким передовим методам, як асиметричне шифрування на основі
еліптичних кривих. Технологія наскрізного шифрування надає користувачам
високий рівень контролю над своєю інформацією, знижуючи ризик втрати
даних та втручання в особисте життя.
Мета та завдання дослідження
Метою дослідження є розробка чат-бота для обміну повідомленнями в
Telegram з використанням наскрізного шифрування. Такий чат-бот повинен
забезпечити безпечний та конфіденційний обмін інформацією між
користувачами, використовуючи сучасні криптографічні методи. Створення
подібного чат-бота є важливим завданням для покращення захисту приватних
даних та забезпечення конфіденційності під час комунікації в цифровому
середовищі. Особливий акцент в дослідженні робиться на впровадженні
технології наскрізного шифрування, що забезпечує найвищий рівень захисту
переданих даних від несанкціонованого доступу.
Наскрізне шифрування є одним з найефективніших методів забезпечення
безпеки інформації, оскільки воно дозволяє гарантувати, що лише відправник
і отримувач повідомлення мають доступ до змісту даних. Основним завданням
є побудова архітектури чат-бота, здатної інтегрувати наскрізне шифрування,
та створення простого й інтуїтивного інтерфейсу для користувачів, який
дозволить ефективно взаємодіяти з чат-ботом і забезпечувати безпечний обмін
повідомленнями. Розроблений чат-бот повинен поєднувати в собі як зручність
використання, так і високий рівень захисту інформації, що передається.
Об'єкт і предмет дослідження
Об’єктом дослідження є процеси захищеного обміну повідомленнями у
цифрових комунікаціях, а також технології криптографічного шифрування, які
забезпечують безпеку інформації під час передачі. З розвитком цифрових
технологій і мобільного інтернету, обмін повідомленнями набув ще більшого
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 5
значення. Користувачі очікують, що сучасні сервіси для комунікації не тільки
надаватимуть швидкий і зручний доступ до обміну інформацією, але й
забезпечуватимуть захист приватності під час взаємодії. Зважаючи на
зростання кіберзагроз та розвиток технологій моніторингу інформації,
питання захисту даних під час обміну повідомленнями стає все більш
актуальним. Це і є головним аспектом, що складає об’єкт дослідження – пошук
і впровадження засобів захищеного обміну інформацією в цифрових каналах
комунікації.
Предметом дослідження виступає наскрізне шифрування (end-to-end
encryption, E2EE) як одна з провідних технологій забезпечення приватності та
безпеки цифрових комунікацій. Наскрізне шифрування полягає в тому, що
інформація шифрується на пристрої відправника, передається через
захищений канал, і дешифрується лише на пристрої отримувача. Навіть
оператори мережі та сторонні особи не можуть розшифрувати вміст
повідомлень, оскільки вони ніколи не мають доступу до ключів шифрування.
Дана технологія використовується у багатьох популярних додатках для обміну
повідомленнями, таких як WhatsApp, Signal і Telegram. У цьому дослідженні
основна увага зосереджена на розробці чат-бота для Telegram, який
використовує наскрізне шифрування з метою забезпечення конфіденційності
інформації під час обміну повідомленнями.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 6
1. Теоретичні основи наскрізного шифрування та аналіз вибору
технологій для розробки чат-бота
1.1 Визначення та принципи наскрізного шифрування
Наскрізне шифрування (End-to-End Encryption, E2EE) є
фундаментальною технологією в сучасній криптографії, яка забезпечує
конфіденційність даних у цифрових комунікаціях. Суть цього методу полягає
в тому, що тільки відправник та отримувач мають доступ до змісту
повідомлення. Навіть якщо треті сторони, включаючи провайдерів інтернету
або сервісів обміну даними, можуть мати доступ до даних у момент їх
передачі, вони не мають можливості дешифрувати їх вміст, що робить E2EE
потужним інструментом захисту особистої інформації.
Ідея захисту приватності під час передачі інформації виникла ще в
античні часи, проте сучасне наскрізне шифрування розвивалося, починаючи з
середини ХХ століття.[13] З появою комп'ютерних мереж у 1970-х роках
постала необхідність захисту конфіденційності даних у новому масштабі.
Першим значним кроком до E2EE стало впровадження асиметричної
криптографії, зокрема алгоритму RSA, створеного в 1977 році. Цей алгоритм
дозволив забезпечити конфіденційність і цілісність даних за допомогою
публічних і приватних ключів, що стало основою для розвитку сучасного
наскрізного шифрування.
Основні принципи наскрізного шифрування
Щоб повністю зрозуміти наскрізне шифрування, слід розглянути його
основні принципи і ключові аспекти.
Система E2EE покладається на публічні та приватні ключі, що створюють
захищений канал для обміну даними. Кожен користувач має два ключі:
публічний, доступний іншим, і приватний, який зберігається у таємниці. Для
відправки зашифрованого повідомлення відправник використовує публічний
ключ отримувача. Це означає, що тільки отримувач може розшифрувати
повідомлення за допомогою свого приватного ключа. Такий підхід
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 7
унеможливлює доступ до повідомлення стороннім особам, навіть якщо вони
перехопили його під час передачі.
Обмін ключами
Для ефективного E2EE використовується процедура обміну ключами, яка
зазвичай відбувається через криптографічні алгоритми типу Diffie-Hellman
(DH) або інші сучасні алгоритми на основі еліптичних кривих. [7] Важливо,
щоб процес обміну ключами відбувався захищено, що забезпечує унікальність
спільного секрету, який створюється тільки між відправником та
отримувачем.
Інтеграція симетричного шифрування
Зазвичай у системах E2EE одночасно використовуються як асиметричні,
так і симетричні методи шифрування. Це обумовлено тим, що асиметричне
шифрування є обчислювально складним і повільним. Тому для власне
шифрування контенту повідомлення використовується симетричний
алгоритм, наприклад AES (Advanced Encryption Standard), тоді як асиметричне
шифрування використовується лише для захищеного обміну симетричними
ключами.
Цілісність та автентичність даних
Наскрізне шифрування забезпечує не лише конфіденційність, але й
цілісність та автентичність повідомлення. Це означає, що відправник і
отримувач можуть бути впевнені, що повідомлення не було змінено під час
передачі і що його дійсно надіслав той, хто вказаний як відправник. Ця
властивість забезпечується цифровими підписами, які додаються до
повідомлення перед його відправкою.
Стійкість до атак
E2EE забезпечує високу стійкість до атак з боку третіх осіб.[9] Навіть
якщо зловмисник перехопить зашифроване повідомлення, він не зможе
отримати доступ до його змісту без приватного ключа отримувача. Злом E2EE
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 8
вимагає надзвичайних обчислювальних ресурсів, що є серйозним бар'єром для
зловмисників.
Локальне зберігання ключів
Одним із найважливіших аспектів наскрізного шифрування є те, що
приватні ключі ніколи не покидають пристрої користувачів. Це означає, що
навіть сервери, які зберігають повідомлення, не мають доступу до ключів
дешифрування і не можуть розкрити вміст зашифрованих повідомлень.
Локальне зберігання ключів значно підвищує рівень безпеки, оскільки робить
ключі менш доступними для атак.
Асиметрична криптографія та наскрізне шифрування
Асиметрична криптографія є базисом для наскрізного шифрування,
оскільки вона дозволяє створити пару публічних і приватних ключів, де
публічний ключ може бути відкрито поширеним, а приватний зберігається у
таємниці. Це вирішує фундаментальну проблему конфіденційності, оскільки
ніхто, крім власника приватного ключа, не зможе дешифрувати повідомлення.
Один із найпоширеніших алгоритмів, що використовуються в асиметричному
шифруванні, є RSA, хоча сучасні додатки для E2EE все частіше застосовують
алгоритми на основі еліптичних кривих, такі як ECC, оскільки вони є більш
ефективними та менш ресурсомісткими.
Еліптичні криві дають змогу створювати пари ключів з меншою
довжиною, але високою стійкістю до зломів.[6] Це особливо важливо для
мобільних додатків, де обчислювальні ресурси і час батареї обмежені.
Алгоритми на основі еліптичних кривих використовуються для обміну
ключами у таких популярних месенджерах, як Signal і WhatsApp, що є
підтвердженням їхньої надійності і ефективності в умовах реального часу.
Основні алгоритми шифрування для E2EE
AES (Advanced Encryption Standard)
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 9
AES є симетричним алгоритмом, який часто використовується для
шифрування вмісту повідомлень. Він має високий рівень захисту та швидку
обчислювальну ефективність, що робить його популярним вибором у
поєднанні з E2EE.
Алгоритми на основі еліптичних кривих (ECC)
Еліптичні криві надають можливість створювати більш ефективні та
короткі ключі, що мають таку ж стійкість до зломів, як і традиційні алгоритми
з більшими ключами. Наприклад, для забезпечення такого ж рівня захисту, як
у RSA з 2048-бітним ключем, ECC потребує лише 256-бітного ключа, що
значно знижує навантаження на систему.
Diffie-Hellman (DH)
Алгоритм DH дозволяє двом користувачам створити спільний секретний
ключ, навіть якщо вони перебувають у відкритому каналі зв’язку. На основі
цієї технології побудовано багато сучасних протоколів обміну ключами, які
використовуються в системах E2EE.
Наскрізне шифрування в реальних додатках
Використання наскрізного шифрування є критичним для захисту
особистих даних у багатьох сучасних додатках для обміну повідомленнями.
Деякі з найбільш відомих додатків, що використовують E2EE, включають:
Signal
Signal є одним із найвідоміших додатків для обміну повідомленнями з
наскрізним шифруванням, яке використовує відкритий протокол Signal
Protocol, що поєднує Diffie-Hellman для обміну ключами і алгоритм AES для
шифрування вмісту.
WhatsApp
WhatsApp використовує Signal Protocol для наскрізного шифрування
повідомлень і дзвінків. Це дозволяє забезпечити високий рівень
конфіденційності, проте з певними обмеженнями, такими як можливість
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 10
зберігання резервних копій на серверах Google або Apple, що може знижувати
загальний рівень безпеки.
Telegram (у секретних чатах)
Telegram застосовує E2EE тільки у режимі секретних чатів, де кожне
повідомлення зашифровується індивідуально. Стандартні чати у Telegram, на
відміну від секретних, не використовують E2EE, оскільки зберігаються на
сервері у зашифрованому, але доступному для Telegram форматі.
Виклики та обмеження наскрізного шифрування
Хоча наскрізне шифрування забезпечує високий рівень конфіденційності,
воно має певні виклики та обмеження.
Втрата даних
Оскільки приватні ключі не зберігаються на серверах, у разі втрати
доступу до пристрою користувач може втратити доступ до зашифрованих
повідомлень. Це може стати серйозною проблемою для користувачів, які не
мають резервних копій ключів.
Необхідність управління ключами
Управління ключами є складним процесом, який вимагає захищеного
зберігання приватних ключів та ефективного обміну публічними ключами. Це
створює додаткові вимоги до реалізації E2EE в системах, що взаємодіють у
мережах.
Правові обмеження
У деяких країнах наскрізне шифрування заборонено або обмежено
законом, оскільки уряди вважають, що E2EE може сприяти приховуванню
злочинних дій. Це створює правові та етичні дилеми для компаній, які
розробляють програми з наскрізним шифруванням.
1.2 Симетричне шифрування (AES) та асиметричне шифрування (Elliptic
Curve Cryptography - ECC)
Симетричне шифрування є одним із найстаріших методів шифрування
інформації, в якому для шифрування та дешифрування використовується один
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 11
і той самий ключ. Це означає, що відправник і отримувач повинні мати
однаковий секретний ключ, який забезпечує обидві сторони можливістю
кодувати і розкодовувати дані. Одним із найпоширеніших і найбільш надійних
симетричних алгоритмів є Advanced Encryption Standard (AES), який широко
використовується в сучасних системах безпеки завдяки високій ефективності
та надійності.
Стандарт AES був розроблений у 2001 році, коли національний інститут
стандартів і технологій США (NIST) оголосив конкурс для заміни
попереднього стандарту DES (Data Encryption Standard), який став уразливим
до атак через обмежену довжину ключа. На конкурс було подано декілька
алгоритмів, з яких обрали алгоритм Rijndael, розроблений бельгійськими
криптографами Вінсентом Райменом та Йоаном Даменом. AES був офіційно
затверджений як стандарт шифрування, і його використовують для захисту
інформації у фінансових установах, урядових агентствах, а також у
комерційних і приватних додатках.
Алгоритм AES є блочним шифром, що означає, що він обробляє дані у
вигляді блоків фіксованого розміру. Стандартні розміри блоку AES – 128 біт,
а довжина ключа може становити 128, 192 або 256 біт. Це забезпечує різний
рівень захисту, де більша довжина ключа підвищує складність зламу. AES
використовує кілька важливих операцій для шифрування, серед яких:
• SubBytes — заміна байтів через нелінійну перестановку, яка ускладнює
аналіз та забезпечує криптографічну стійкість;
• ShiftRows — перестановка рядків у блоку, що додає хаосу в структуру
шифротексту;
• MixColumns — операція, що змішує колонки блоку, підвищуючи
дифузійні властивості алгоритму;
• AddRoundKey — додавання ключа на кожному раунді, який
генерується за допомогою процесу розширення ключа;
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 12
AES є надзвичайно ефективним з погляду обчислювальних ресурсів, що
робить його придатним для використання навіть на обмежених пристроях,
таких як мобільні телефони. Серед ключових переваг алгоритму:
• Висока швидкість — AES забезпечує швидке шифрування та
дешифрування, що робить його ідеальним для великомасштабних
застосувань;
• Стійкість до атак — AES є стійким до всіх відомих на сьогодні
криптографічних атак, включаючи диференціальні та лінійні
криптоаналізи;
• Гнучкість у довжині ключа — використання 128-, 192- або 256-бітних
ключів забезпечує гнучкість у налаштуванні рівня безпеки залежно від
конкретних потреб;
Асиметричне шифрування (ECC)
На відміну від симетричного шифрування, в якому використовується
єдиний ключ для шифрування та дешифрування, асиметричне шифрування
базується на парі ключів: відкритому та закритому. Відкритий ключ можна
безпечно поширювати, а закритий ключ зберігається у таємниці. Відправник
використовує відкритий ключ отримувача для шифрування даних, тоді як
лише отримувач може розшифрувати їх за допомогою свого закритого ключа.
Виникнення та розвиток ECC
Криптографія на основі еліптичних кривих (Elliptic Curve Cryptography,
ECC) є новітньою формою асиметричного шифрування, що виникла в 1985
році, коли Нейл Кобліц і Віктор Міллер незалежно один від одного
запропонували використання еліптичних кривих у криптографії. Відтоді ECC
здобула популярність завдяки своїм перевагам у продуктивності й безпеці
порівняно з традиційними алгоритмами, такими як RSA. Алгоритми на основі
ECC дозволяють отримати високий рівень безпеки з меншими довжинами
ключів, що робить їх привабливими для використання на пристроях із
обмеженими ресурсами.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 13
Принципи роботи ECC
ECC базується на використанні еліптичних кривих над кінцевими полями.
Основною проблемою, яку вирішує ECC, є обчислення дискретного
логарифму на еліптичній кривій, що є математично складною задачею.
Основні етапи шифрування на основі ECC включають:
• Вибір еліптичної кривої — вибір певної кривої з визначеними
параметрами, яка забезпечує криптографічну стійкість.
• Генерація ключів — створення приватного та публічного ключів.
Приватний ключ є випадковим числом, тоді як публічний генерується як
точка на кривій, що відповідає приватному ключу.
• Шифрування та дешифрування — ECC використовує обчислення
множення точок на еліптичній кривій для створення зашифрованих
повідомлень, що забезпечує високу складність для зловмисників, які
намагаються зламати систему.
Переваги та недоліки ECC
ECC має кілька ключових переваг:
• Висока ефективність при меншій довжині ключа — ECC дозволяє
забезпечити такий самий рівень безпеки, як RSA, але з коротшими
ключами, що знижує обчислювальні ресурси;
• Мала вимога до зберігання — менш тривалі ключі знижують обсяг
пам'яті для зберігання ключів;
• Зменшене навантаження на процесор — через ефективність ECC
зменшується навантаження на процесор, що робить її ідеальною для
мобільних та вбудованих систем;
Проте є й певні обмеження ECC:
• Складність у реалізації — ECC вимагає точного налаштування
параметрів для забезпечення високої безпеки;
• Патентні обмеження — використання деяких методів ECC було під
патентами, що обмежувало вільне впровадження цієї криптографії;
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 14
Хоча більшість патентів закінчилися, деякі обмеження все ще існують.
Порівняння AES та ECC
• Тип шифрування
AES є симетричним алгоритмом, тобто він вимагає одного ключа для
шифрування та дешифрування, тоді як ECC є асиметричним методом і
базується на парі публічного та приватного ключів. Це робить AES
ідеальним для шифрування великих обсягів даних, тоді як ECC
найчастіше використовується для обміну ключами та автентифікації.
• Швидкість та продуктивність
AES забезпечує швидке шифрування та дешифрування, особливо при
використанні апаратного прискорення. ECC, з іншого боку, є більш
повільним в операціях шифрування, але менш вимогливим до довжини
ключа, що зменшує вимоги до ресурсів зберігання та обчислювальної
потужності.
• Розмір ключа та безпека
AES вимагає довших ключів для досягнення високого рівня безпеки,
тоді як ECC забезпечує еквівалентну безпеку з коротшими ключами, що
робить його зручним для пристроїв із обмеженими ресурсами.
Сучасні підходи до комбінування AES та ECC
У сучасних криптографічних системах часто використовуються гібридні
схеми, що поєднують AES і ECC для підвищення ефективності й безпеки. У
таких схемах ECC використовується для захищеного обміну ключами, після
чого для фактичного шифрування даних застосовується AES. Це дозволяє
оптимально використовувати переваги обох методів.
1.3 Переваги ECC для обміну ключами в реальному часі
Обмін ключами є критично важливим процесом у системах шифрування
для захищеного передавання даних. Його основна мета полягає в тому, щоб
забезпечити безпечний канал для обміну ключем між двома сторонами, який
потім використовується для шифрування і дешифрування повідомлень. В
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 15
умовах реального часу, де швидкість і надійність обміну даними мають
вирішальне значення, вибір алгоритму для обміну ключами особливо
важливий. Традиційно для цієї мети використовували алгоритми на основі
обчислення дискретного логарифму, такі як RSA чи алгоритм Діффі-Геллмана,
проте з розвитком криптографічних методів і появою нових технологій багато
систем почали переходити на Elliptic Curve Cryptography (ECC) для обміну
ключами.
ECC є сучасним підходом до криптографії, який забезпечує високий
рівень безпеки з меншими ключами, ніж RSA чи інші традиційні методи. У
основі ECC лежить математика еліптичних кривих, що дозволяє створювати
криптографічні ключі меншого розміру, не знижуючи при цьому рівня
захисту. Це особливо актуально для обміну ключами в реальному часі,
оскільки коротші ключі знижують потребу в обчислювальних ресурсах,
збільшують швидкість обміну даними і зменшують затримку під час ініціації
сесії.[2]
Однією з основних переваг ECC є можливість створення коротких
ключів, які забезпечують такий самий рівень безпеки, як і довші ключі у
традиційних алгоритмах. Наприклад, 256-бітний ключ ECC забезпечує
еквівалентний рівень безпеки, що і 3072-бітний ключ RSA. Це означає, що
ECC може виконувати операції шифрування та обміну ключами набагато
швидше, ніж традиційні методи, при цьому зберігаючи рівень
криптографічного захисту. У реальному часі ця висока ефективність дозволяє
зменшити затримку при ініціації захищеного з'єднання, що є важливим для
мобільних додатків, мереж із низькою пропускною здатністю і великих обсягів
трафіку.
Менші ключі, що використовуються в ECC, мають суттєві переваги щодо
обчислювальних вимог. ECC потребує менше обчислювальних ресурсів, ніж
RSA або алгоритм Діффі-Геллмана, тому його можна використовувати навіть
на пристроях з обмеженими ресурсами, таких як мобільні телефони, IoT-
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 16
пристрої, розумні годинники та інші гаджети. Для обміну ключами в
реальному часі це означає швидший процес шифрування та дешифрування, а
також зменшене навантаження на центральний процесор і оперативну пам'ять.
Завдяки цьому пристрої можуть працювати більш ефективно, що підвищує
їхню енергоефективність і продовжує час роботи від акумулятора.
В сучасних умовах, коли безпека даних є одним з головних пріоритетів,
ECC забезпечує надзвичайно високий рівень захисту під час обміну ключами.
Алгоритм на основі еліптичних кривих надзвичайно стійкий до атак, навіть
при використанні коротших ключів. Це робить ECC ідеальним для обміну
ключами в середовищах з низькою довірою, наприклад, у відкритих
бездротових мережах, хмарних інфраструктурах або при з'єднанні через
Інтернет, де є ризик прослуховування.
Сучасні мобільні пристрої та IoT пристрої мають обмежені ресурси
обробки і пам'яті, і використання ECC дозволяє ефективно працювати на таких
пристроях без значних витрат енергії. Оскільки ECC забезпечує високий
рівень безпеки при невеликому навантаженні на процесор, це робить його
ідеальним для мобільних додатків і захищених з'єднань у режимі реального
часу, таких як VPN-з'єднання, шифрування VoIP або захист повідомлень у
месенджерах.
ECC отримала широке визнання та підтримку у сучасних стандартах
безпеки. Багато криптографічних протоколів, таких як TLS (Transport Layer
Security), використовують ECC для забезпечення захисту передачі даних. Це
означає, що ECC є сумісною з широким спектром сучасних додатків і
мережевих протоколів, що робить її універсальним рішенням для
забезпечення безпеки під час обміну ключами.[4]
ECC ідеально підходить для випадків, коли потрібно швидко встановити
захищене з'єднання, наприклад, під час ініціації сесій в інтернет-банкінгу,
торгових платформах або медичних інформаційних системах. Швидкість та
ефективність ECC дозволяють мінімізувати час очікування для кінцевого
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 17
користувача, що особливо важливо у високонавантажених системах або для
додатків із високими вимогами до безпеки.
У майбутньому ECC матиме все більше значення у забезпеченні захисту
інформації в реальному часі. Із розвитком квантових обчислень виникає
потреба у нових криптографічних методах, і ECC, будучи стійким до багатьох
класичних атак, слугує основою для розробки гібридних квантово-стійких
алгоритмів.
1.4 Огляд існуючих методів обміну зашифрованими повідомленнями
З розвитком інформаційних технологій та поширенням цифрових
комунікацій захист даних набув критичного значення. Різні методи обміну
зашифрованими повідомленнями, які забезпечують захист даних, надають
можливість безпечно передавати інформацію між користувачами, зберігаючи
конфіденційність та цілісність повідомлень. У цьому розділі розглянемо
основні існуючі методи обміну зашифрованими повідомленнями, які широко
використовуються в сучасних комунікаційних додатках і службах.[14]
Протокол TLS (Transport Layer Security)
Transport Layer Security (TLS) є одним із найпоширеніших протоколів
захисту, що використовується для шифрування комунікацій у мережі Інтернет.
TLS забезпечує захищене з'єднання між двома пристроями, що дозволяє
передавати дані, захищаючи їх від перехоплення та модифікації. Протокол
TLS працює на основі симетричного та асиметричного шифрування,
забезпечуючи безпечний обмін ключами та автентифікацію користувачів.
Переваги TLS:
● Високий рівень захисту, який забезпечує конфіденційність,
цілісність і автентифікацію даних.
● Широка підтримка в браузерах і мобільних додатках, що робить
його універсальним рішенням.
● Захист від таких атак, як перехоплення та модифікація даних.
Недоліки TLS:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 18
● Складність реалізації, особливо в умовах мобільних мереж із
низькою пропускною здатністю.
● Вимоги до обчислювальних ресурсів через використання
асиметричного шифрування, що може знижувати швидкість передачі даних.
Метод наскрізного шифрування (End-to-End Encryption, E2EE)
Наскрізне шифрування забезпечує захист даних від моменту їх
відправлення до моменту отримання, шифруючи їх на пристрої відправника і
дешифруючи тільки на пристрої отримувача. Важливим елементом E2EE є
відсутність проміжних точок, які могли б зчитувати зашифровані дані. Це
дозволяє уникати можливості доступу до даних стороннім особам, включаючи
постачальників послуг.[3]
Приклади застосування:
● Месенджери WhatsApp, Signal, і Telegram для захисту приватних
комунікацій між користувачами;
● Системи обміну файлами, такі як Dropbox, для забезпечення
конфіденційності файлів;
Переваги E2EE:
● Забезпечує повну конфіденційність для обох сторін;
● Ніяка третя сторона не може отримати доступ до зашифрованих
повідомлень, навіть провайдери зв'язку;
Недоліки E2EE:
● Не захищає від атак, здійснених безпосередньо на пристроях
користувачів;
● Не завжди ефективний для корпоративних систем, де потрібен
певний рівень моніторингу комунікацій;
Протокол PGP (Pretty Good Privacy)
Pretty Good Privacy (PGP) є методом шифрування повідомлень, що
використовується для захисту електронної пошти та файлів. Цей протокол
поєднує симетричне та асиметричне шифрування для створення гібридної
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 19
системи, яка надає користувачам можливість безпечного обміну інформацією
через відкриті мережі.[12]
Принципи роботи PGP:
● Користувачі генерують пари ключів (публічний і приватний), де
публічний ключ використовується для шифрування повідомлень, а приватний
— для їх дешифрування.
● Для кожного повідомлення генерується новий симетричний ключ,
який шифрується за допомогою публічного ключа одержувача.
Переваги PGP:
● Надійний рівень захисту для електронної пошти та файлів.
● Використання як симетричного, так і асиметричного шифрування
для підвищення ефективності.
Недоліки PGP:
● Вимагає від користувачів певних знань у налаштуванні та
керуванні ключами.
● Складність реалізації для пересічних користувачів, що може
обмежувати його використання.
Протокол Off-the-Record (OTR)
Off-the-Record Messaging (OTR) — це метод шифрування, розроблений
спеціально для захисту комунікацій у чатах. OTR забезпечує конфіденційність
та автентифікацію повідомлень, а також унікальну функцію відмовності, яка
дозволяє заперечити авторство повідомлення після завершення розмови.
Принципи роботи OTR:
● Кожне повідомлення має унікальний шифр, що забезпечує
конфіденційність.
● Підтримка функції відмовності, що дозволяє заперечувати
авторство повідомлення після його доставки.
Переваги OTR:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 20
● Забезпечує високу конфіденційність і захист від зчитування
повідомлень третіми сторонами.
● Підтримка динамічного обміну ключами, що підвищує безпеку в
процесі комунікації.
Недоліки OTR:
● Вимагає обчислювальних ресурсів і може знижувати швидкість
передачі повідомлень у реальному часі.
● Підходить лише для миттєвих повідомлень і не підходить для
тривалих чатів або збереження історії.[11]
Протокол Double Ratchet
Double Ratchet є сучасним методом для обміну зашифрованими
повідомленнями, який активно використовується в таких месенджерах, як
Signal. Основою Double Ratchet є генерація ключів для кожного повідомлення,
що забезпечує динамічний і надійний рівень шифрування.
Принципи роботи Double Ratchet:
● Під час кожного обміну повідомленнями генерується новий ключ,
який використовується тільки один раз.
● Підтримка асинхронного обміну ключами, що дозволяє
користувачам обмінюватися повідомленнями навіть у випадку їх відсутності в
мережі.
Переваги Double Ratchet:
● Високий рівень безпеки завдяки динамічній генерації ключів для
кожного повідомлення.
● Забезпечення стійкості до атак на перехоплення даних у реальному
часі.
Недоліки Double Ratchet:
● Вимагає великих обчислювальних ресурсів, що може знижувати
продуктивність на пристроях з обмеженими можливостями.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 21
● Складність реалізації у корпоративних системах через вимоги до
підтримки синхронізації ключів.[5]
Метод криптографії на основі еліптичних кривих (ECC) у комбінації з AES
Поєднання ECC з AES стало классичним підходом у сучасних
криптографічних системах. ECC використовується для безпечного обміну
ключами, а AES — для шифрування великих обсягів даних. Така комбінація
дозволяє використовувати сильні сторони обох методів для забезпечення
високого рівня безпеки з меншою витратою обчислювальних ресурсів.
Переваги ECC+AES:
● Висока швидкість передачі даних завдяки використанню AES для
основного шифрування.
● Підвищена безпека та ефективність за рахунок коротших ключів
ECC для обміну ключами.
Недоліки ECC+AES:
● Складність реалізації через необхідність використання двох
криптографічних алгоритмів одночасно.
● Потребує обчислювальних ресурсів, особливо в процесі обміну
ключами.
Архітектура «Клієнт-Сервер»
Це стандартна архітектура, де бот працює на сервері та взаємодіє з
клієнтами через інтерфейс Telegram API або іншу платформу. Сервер може
зберігати повідомлення, обробляти шифрування і дешифрування, керувати
сесіями користувачів.
Переваги клієнт-серверної архітектури:
Централізоване управління: Всі дані зберігаються та обробляються на
сервері, що спрощує адміністрування.
Підтримка резервування: Сервер може підтримувати резервування та
масштабування, що підвищує надійність системи.
Недоліки клієнт-серверної архітектури:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 22
Ризики безпеки: Централізоване зберігання повідомлень може створити
уразливість до атак на сервер.
Вимоги до ресурсів сервера: Сервер повинен мати достатньо ресурсів для
обробки повідомлень у реальному часі, що може вимагати додаткових витрат.
Децентралізована архітектура
У децентралізованій архітектурі обробка повідомлень і шифрування
відбуваються на пристроях користувачів, а сервери використовуються тільки
для передачі повідомлень.
Переваги децентралізованої архітектури:
Покращена безпека: Дані зберігаються тільки на пристроях користувачів,
що знижує ризики злому.
Гнучкість і масштабованість: Децентралізована система краще підходить
для масштабування, оскільки не потребує потужного центрального сервера.
Недоліки децентралізованої архітектури:
Ускладнене адміністрування: Відсутність єдиного сервера ускладнює
керування користувачами та налаштування.
Високі вимоги до клієнтських пристроїв: Для обробки шифрування та
дешифрування потрібні потужні пристрої на стороні користувача.
Щоб забезпечити високу продуктивність та безпеку чат-бота, важливо
обрати відповідне середовище та фреймворки для розробки.
1.5 Огляд можливостей Telegram Bot API
Telegram Bot API — це інструмент, створений для інтеграції ботів у
Telegram, який дозволяє розробникам автоматизувати обробку повідомлень і
створювати різноманітні сервіси для користувачів.[15] Завдяки простоті
використання, високій функціональності й активному розвитку, Telegram Bot
API став одним із найпопулярніших інструментів для створення чат-ботів.
Основи Telegram Bot API
Telegram Bot API — це HTTP-заснований API, що дозволяє взаємодіяти з
серверами Telegram через REST-запити. Бот у Telegram є особливим типом
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 23
облікового запису, який не потребує номера телефону для реєстрації. Для
створення бота використовується спеціальний бот Telegram — BotFather.
Бот працює на основі webhook або long polling:
• Webhook: Сервер бота налаштовується так, щоб приймати запити від
Telegram, коли користувачі надсилають повідомлення. Це реальний час,
що забезпечує низькі затримки;
• Long polling: Бот надсилає запит до сервера Telegram і чекає відповіді.
Це більш проста, але менш ефективна модель для реального часу;
Архітектура Telegram Bot API
Telegram Bot API базується на трьох ключових компонентах:
• Сервери Telegram: Центральна інфраструктура, що обробляє
повідомлення користувачів і передає їх на сервер бота;
• Бот-сервер: Сервер, який обробляє запити від Telegram, виконує логіку
бота і надсилає відповіді;
• Користувачі: Клієнти Telegram, які взаємодіють із ботом через чат;
Архітектура побудована так, що бот виконує роль посередника між
Telegram і зовнішнім сервером, де зберігається бізнес-логіка. Telegram Bot API
не зберігає дані про повідомлення бота після їхньої доставки, забезпечуючи
приватність.
Основні можливості Telegram Bot API
Telegram Bot API підтримує широкий набір функціональних
можливостей, які дозволяють створювати як прості, так і складні сервіси:
Обмін повідомленнями:
○ Надсилання текстових, голосових і мультимедійних повідомлень.
○ Підтримка форматування тексту (Markdown, HTML).
○ Можливість прикріплення зображень, відео, документів і файлів.
Керування чатами:
○ Отримання інформації про учасників чату.
○ Можливість видалення повідомлень.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 24
○ Модерація групових чатів через бот.
2. Інтерактивність:
○ Підтримка inline-клавіатур і команд.
○ Реалізація опитувань і голосувань.
○ Вбудовані боти (inline bots), які працюють без прямої взаємодії з
ботом у чаті.
Автентифікація та інтеграція:
○ Підтримка OAuth для авторизації користувачів через бот.
○ Інтеграція з іншими платформами через вебхуки або API.
Файли та мультимедіа:
○ Надсилання анімацій, стикерів і аудіофайлів.
○ Можливість зберігання мультимедіа на серверах Telegram для
подальшого повторного використання.
Безпека:
○ HTTPS-зашифровані вебхуки.
○ Використання токена доступу для автентифікації запитів.
Детальний розгляд функціоналу
Надсилання текстових повідомлень
Бот може надсилати повідомлення користувачам через метод
sendMessage. Основні параметри включають:
● chat_id: Унікальний ідентифікатор користувача чи групи.
● text: Текст повідомлення.
● parse_mode: Форматування тексту (наприклад, Markdown або
HTML).
Інтерактивність через inline-клавіатури
Inline-клавіатури дозволяють створювати інтерактивні елементи прямо в
чаті, де користувач може виконувати дії, не залишаючи чат. Метод
replyMarkup додає клавіатуру до повідомлення.
Використання webhook
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 25
Webhook дозволяє боту автоматично реагувати на події. Це досягається
через метод setWebhook, де вказується URL сервера бота. Сервер повинен
приймати POST-запити з даними про повідомлення.
Telegram Bot API та наскрізне шифрування
Telegram Bot API не підтримує наскрізне шифрування (E2EE) за
замовчуванням, оскільки всі повідомлення між клієнтами та ботом проходять
через сервери Telegram. Однак розробник може реалізувати E2EE самостійно,
шифруючи повідомлення на стороні клієнта і розшифровуючи їх на сервері
бота.
Для цього можна використовувати криптографічні алгоритми, такі як
AES чи ECC, залежно від вимог безпеки.
Виклики та обмеження Telegram Bot API
• Обмеження на швидкість: Telegram Bot API має ліміти на кількість
запитів, що можна виконувати за секунду. Це може створювати
труднощі для ботів із великою кількістю користувачів.
• Нестача E2EE: Через відсутність вбудованого наскрізного шифрування
боти менш захищені в плані конфіденційності порівняно з секретними
чатами Telegram.
• Залежність від Telegram: Усі повідомлення проходять через сервери
Telegram, що створює певну залежність від інфраструктури платформи.
Переваги Telegram Bot API
● Простота інтеграції: Бот легко налаштовується через BotFather.
● Розвинені функціональні можливості: Інструментарій API
дозволяє створювати як прості, так і високофункціональні сервіси.
● Безпека передачі даних: Всі запити API захищені HTTPS.
1.6 Використання React для створення веб-додатків
React — це JavaScript-бібліотека з відкритим вихідним кодом, розроблена
Facebook (тепер Meta), яка дозволяє створювати динамічні та ефективні веб-
додатки. Вона стала одним із найпопулярніших інструментів для розробників
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 26
завдяки своїй простоті, гнучкості та масштабованості. У цьому розділі
розглянемо основні принципи роботи з React, його ключові особливості,
переваги, недоліки, а також процес використання React для створення
сучасних веб-додатків.[16]
React орієнтований на створення компонентів, які є незалежними,
багаторазово використовуваними частинами інтерфейсу користувача. Ці
компоненти взаємодіють між собою, формуючи цілісні веб-додатки. Однією з
ключових концепцій React є віртуальний DOM (Virtual DOM) — абстрактна
копія DOM, яка використовується для ефективного оновлення інтерфейсу.
React підтримує декларативний підхід до програмування, завдяки якому
розробник описує, як повинен виглядати інтерфейс у різних станах, а React
самостійно оновлює його, забезпечуючи синхронізацію з реальним DOM.
Переваги використання React для веб-додатків
Швидкість і продуктивність:
○ Віртуальний DOM значно скорочує кількість маніпуляцій із
реальним DOM, що забезпечує високу швидкість роботи додатків навіть при
великій кількості користувачів і складних інтерфейсах.
○ React оптимізує оновлення сторінок, що робить його ідеальним
для динамічних веб-додатків, таких як чат-боти, інформаційні панелі чи
платформи для співпраці.
Компонентний підхід:
○ Компоненти дозволяють створювати ізольовані блоки коду, які
можна повторно використовувати в різних частинах застосунку.
○ Легкість у створенні та підтримці великих проєктів завдяки
можливості розділяти інтерфейс на дрібні частини.
Декларативний стиль:
○ Розробники описують, як повинен виглядати інтерфейс, а React
автоматично оновлює його відповідно до змін у даних.
Активне співтовариство та екосистема:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 27
○ React має велику кількість плагінів, бібліотек і сторонніх
інструментів, таких як Redux для управління станом, React Router для
маршрутизації та Material-UI для готових компонентів інтерфейсу.
SEO-оптимізація:
○ React може працювати на стороні сервера (через Next.js), що
покращує пошукову оптимізацію для веб-додатків.
Недоліки React
Висока швидкість змін:
○ Часті оновлення бібліотеки можуть створювати складнощі для
підтримки проєктів.
Потреба в додаткових інструментах:
○ React фокусується виключно на відображенні інтерфейсу, тому
для управління станом, маршрутизації та інших функцій часто потрібні
додаткові бібліотеки.
Поріг входу:
○ Хоча базові концепції React прості, складні проєкти вимагають
глибокого розуміння JavaScript, екосистеми React і сучасних технологій веб-
розробки.
Ключові компоненти React
Компоненти:
○ React-додаток складається з компонентів, які можуть бути
класовими або функціональними.
○ Функціональні компоненти стали стандартом завдяки підтримці
хуків (Hooks).
Стан (State) і властивості (Props):
○ State — внутрішній стан компонента, який може змінюватися
протягом часу.
○ Props — дані, передані компоненту з батьківського компонента,
які є незмінними в межах компонента.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 28
Хуки (Hooks):
○ Надають функціональним компонентам можливість
використовувати стан та інші функції React, такі як useState, useEffect.
Контекст (Context API):
○ Використовується для передачі даних через ієрархію компонентів
без необхідності пробросу props на кожному рівні.
React Router:
○ Бібліотека для управління маршрутизацією в односторінкових
додатках.
Створення компонентів
Розробка додатка починається зі створення компонентів. Наприклад,
компонент для виведення списку повідомлень у чаті може виглядати так(рис.
1)
рис. 1 – компонент для виведення повідомлень
React дозволяє керувати станом на рівні компонентів за допомогою хука
useState або глобально через Context API чи Redux.
Наприклад, для управління станом поля введення повідомлення можна
використовувати useState(рис.2)
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 29
рис. 2 - використання useState для управління станом
React дозволяє інтегрувати бекенд через REST або WebSocket.
Наприклад, використання WebSocket для реального часу(рис. 3)
рис. 3 - використання WebSocket
Стилізація компонентів
React підтримує різні підходи до стилізації, такі як CSS-модулі,
бібліотеки стилізації (наприклад, styled-components) або навіть inline-
стилі(рис. 4).
рис. 4 - відображення концепції inline-стилів
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 30
1.7 Вибір Firebase Realtime Database для зберігання даних
Firebase Realtime Database (RTDB) — це хмарна база даних у реальному
часі, яка є частиною платформи Firebase, створеної компанією Google. Ця
технологія призначена для зберігання та синхронізації даних між
клієнтськими додатками і сервером у режимі реального часу.[17] У цьому
розділі ми розглянемо основні причини вибору Firebase Realtime Database для
розробки чат-бота, її можливості, переваги, недоліки, особливості інтеграції з
React-додатком, а також практичні аспекти роботи з RTDB.
Основні характеристики Firebase Realtime Database
Firebase Realtime Database — це документно-орієнтована база даних, яка
працює за схемою ключ-значення. Вона забезпечує миттєве оновлення даних
на всіх підключених пристроях, що робить її ідеальним вибором для
застосунків, де важлива синхронізація в реальному часі.
Ключові особливості RTDB:
Режим реального часу:
○ Дані автоматично синхронізуються між усіма клієнтами,
підключеними до бази даних.
Ієрархічна структура:
○ Дані зберігаються у вигляді JSON-об’єктів, що забезпечує
гнучкість у структурі.
Кросплатформенність:
○ RTDB підтримує клієнтські SDK для веб, Android, iOS, а також
REST API для інтеграції з іншими платформами.
Автентифікація:
○ Firebase забезпечує інтеграцію з Firebase Authentication, що
дозволяє обмежувати доступ до даних.
Переваги використання Firebase Realtime Database
Синхронізація в реальному часі:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 31
○ RTDB дозволяє миттєво оновлювати дані у всіх клієнтів, що
ідеально підходить для додатків типу чату, спільної роботи чи соціальних
мереж. Наприклад, у чат-боті повідомлення, надіслане одним користувачем,
автоматично з'являється у всіх адресатів без необхідності оновлення сторінки.
Простота інтеграції:
○ Firebase SDK дозволяє швидко налаштувати зв'язок між додатком
і базою даних. Це значно скорочує час розробки.
Масштабованість:
○ Firebase Realtime Database може обробляти великі обсяги даних і
підтримувати тисячі одночасних підключень. Це забезпечує надійність для
додатків, що зростають.
Кросплатформенна підтримка:
○ Завдяки єдиній базі даних RTDB забезпечує однаковий досвід для
користувачів різних пристроїв. Дані синхронізуються незалежно від того, чи
використовується веб-додаток, мобільний додаток на Android або iOS.
Безпека:
○ Firebase дозволяє налаштовувати правила доступу до даних,
базуючись на автентифікації користувачів. Це робить базу даних придатною
для обробки чутливої інформації.
Офлайн-режим:
○ RTDB підтримує кешування даних, що дозволяє додаткам
працювати навіть у відсутності інтернет-з’єднання. Коли з’єднання
відновлюється, база автоматично синхронізує дані.
Екосистема Firebase:
○ RTDB інтегрується з іншими інструментами Firebase, такими як
Cloud Functions, Hosting, Firebase Authentication, що робить платформу
універсальним рішенням для багатьох типів проєктів.
Недоліки Firebase Realtime Database
Ієрархічна структура:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 32
○ Ієрархічна структура даних може стати проблемою при великому
обсязі даних. Неправильне проєктування структури може призвести до
складностей з доступом до даних.
Обмеження на розмір запитів:
○ RTDB обмежує розмір даних, які можна отримати за один запит,
що може вимагати додаткових оптимізацій у великих системах.
Цінова модель:
○ Firebase RTDB працює за моделлю pay-as-you-go, де вартість
залежить від обсягу даних і кількості запитів. Для великих додатків витрати
можуть швидко зростати.
Однопоточність:
○ RTDB не підтримує складних транзакцій і відсутня можливість
виконувати SQL-запити.
Вибір Firebase Realtime Database для чат-бота
Для чат-бота Telegram, що використовує наскрізне шифрування, RTDB є
оптимальним вибором через наступні причини:
Режим реального часу:
○ У чат-боті важливо, щоб повідомлення швидко доставлялися між
користувачами. Завдяки RTDB це досягається автоматично.
Проста інтеграція з React:
○ Firebase SDK легко інтегрується з React-додатками. Через хуки,
такі як useEffect, можна легко організувати підписку на оновлення даних.
Безпека:
○ Завдяки правилам доступу до даних RTDB забезпечує безпечний
обмін повідомленнями між користувачами. Наприклад, дані можна захистити
від сторонніх користувачів через автентифікацію Firebase.
Гнучкість у структурі даних:
○ Для зберігання повідомлень у чаті можна використовувати
ієрархію, де повідомлення організовані за користувачами, чатами чи групами.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 33
Масштабованість:
○ RTDB здатна обробляти одночасно тисячі користувачів, що робить
її придатною навіть для великих чатів із великою кількістю учасників.
Інтеграція Firebase Realtime Database із React
Після створення проєкту в Firebase і налаштування бази даних інтеграція
з React-додатком виконується наступними кроками:
Підключення Firebase SDK:
У React-додатку потрібно встановити Firebase SDK (рис. 5)
рис. 5
Налаштування Firebase у додатку:
Імпортування та ініціалізація Firebase(рис. 6)
рис. 6
Робота з даними:
Для читання даних використовують onValue(рис. 7)
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 34
Рис. 7
Для запису даних використовують set(рис. 8)
рис. 8
Організація стану в React:
Дані з Firebase можна інтегрувати в стан додатка через хуки(рис. 9):
Рис. 9
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 35
1.8 Інтеграція з бібліотеками elliptic та crypto-js для забезпечення
шифрування
У сучасних веб-додатках, особливо тих, які стосуються конфіденційної
інформації, забезпечення безпеки даних є одним із найважливіших завдань.
Для розробки чат-бота з наскрізним шифруванням (E2EE) важливим аспектом
є вибір бібліотек, які забезпечать надійність криптографічних операцій.
Elliptic та Crypto-js є популярними інструментами, які забезпечують зручну
реалізацію асиметричного та симетричного шифрування, відповідно.
Особливості бібліотек elliptic та crypto-js
Бібліотека elliptic — це JavaScript-реалізація еліптичної криптографії.
Вона дозволяє виконувати криптографічні операції на основі еліптичних
кривих, включаючи генерацію ключів, підпис даних, перевірку підписів, а
також обмін ключами. Основою її роботи є стандартні алгоритми, такі як
ECDH (Elliptic Curve Diffie-Hellman) та ECDSA (Elliptic Curve Digital Signature
Algorithm).[19]
Основні характеристики:
● Легка у використанні: Бібліотека має простий API для виконання
криптографічних операцій.
● Широкий набір кривих: Підтримує кілька типів еліптичних
кривих, включаючи широко вживану secp256k1, яка є стандартом у багатьох
сучасних додатках.
● Продуктивність: Оптимізована для роботи у клієнтських
додатках.
Crypto-js
Crypto-js — це JavaScript-бібліотека для симетричного шифрування,
хешування та інших криптографічних функцій. Вона підтримує алгоритми,
такі як AES, SHA-256, HMAC тощо. Crypto-js зручна для шифрування
повідомлень, хешування паролів та забезпечення цілісності даних.[20]
Основні характеристики:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 36
● Сумісність із браузерами: Crypto-js не залежить від серверного
середовища, що дозволяє легко інтегрувати її у веб-додатки.
● Різноманіття алгоритмів: Підтримує шифрування та хешування,
які відповідають сучасним криптографічним стандартам.
● Мінімалістичний розмір: Бібліотека має невеликий розмір, що
важливо для фронтенд-додатків.
Роль elliptic та crypto-js у забезпеченні E2EE
Для чат-бота, який реалізує наскрізне шифрування, необхідно
забезпечити:
Асиметричне шифрування:
○ Використовується для обміну ключами між користувачами.
○ Бібліотека elliptic виконує обмін ключами за допомогою
алгоритму ECDH, створюючи спільний секретний ключ між двома сторонами.
Симетричне шифрування:
○ Застосовується для шифрування повідомлень за допомогою
ключа, отриманого через обмін.
○ Crypto-js шифрує текст повідомлення за алгоритмом AES
(Advanced Encryption Standard), що забезпечує високу швидкість та безпеку.
Інтеграція elliptic та crypto-js у чат-бот
Ініціалізація та налаштування
Для початку роботи з бібліотеками необхідно їх встановити(рис. 10)
Рис. 10
Імпортуємо бібліотеки у проєкт(рис. 11):
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 37
Рис. 11
Генерація ключів
Кожен користувач має свій приватний ключ і відповідний публічний
ключ. Для генерації ключів використовується бібліотека elliptic(рис. 12):
Рис.12
Приватний ключ залишається на стороні клієнта і не передається, тоді як
публічний ключ надсилається іншому користувачеві для обміну.
Обмін ключами за допомогою ECDH
Для шифрування повідомлень потрібен спільний секрет, який
генерується через алгоритм ECDH(рис. 13):
Рис. 13
Отриманий спільний секрет використовується як ключ для симетричного
шифрування.
Шифрування повідомлення(рис. 14)
рис. 14
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 38
Дешифрування повідомлення
На стороні отримувача повідомлення дешифрується аналогічним
чином(рис. 15):
Рис. 15
Переваги інтеграції з elliptic та crypto-js
Безпека:
○ Еліптична криптографія забезпечує високий рівень безпеки навіть
при невеликих розмірах ключів, що важливо для веб-додатків.
○ AES є одним із найбільш надійних алгоритмів симетричного
шифрування.
Продуктивність:
○ Алгоритми, реалізовані в цих бібліотеках, оптимізовані для
швидкої роботи у клієнтському середовищі.
Мінімізація ризиків:
○ Приватні ключі не передаються між клієнтами, що знижує
ймовірність перехоплення.
Гнучкість:
○ Бібліотеки дозволяють комбінувати різні методи шифрування
залежно від потреб додатка.
Недоліки використання бібліотек
Залежність від JavaScript:
○ Дані, оброблені у клієнтському коді, потенційно можуть бути
вразливими до атак, якщо не дотримуватися додаткових заходів безпеки.
Продуктивність у масштабних додатках:
○ Обчислювальна складність еліптичної криптографії може бути
помітною у великих чатах із сотнями користувачів.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 39
Інтеграція з іншими технологіями
Elliptic та Crypto-js добре інтегруються з платформами для зберігання
даних, такими як Firebase. Наприклад:
● Публічні ключі користувачів можна зберігати у Firebase Realtime
Database для обміну.
● Повідомлення, зашифровані AES, також зберігаються у Firebase.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 40
2. Проектування чат-бота з наскрізним шифруванням
2.1 Опис структури додатку та функціональних вимог
Розробка чат-бота, що забезпечує наскрізне шифрування (E2EE), вимагає
ретельного підходу до проектування архітектури та функціональних
елементів. Основна мета — забезпечити безпечний обмін повідомленнями між
користувачами з мінімальними ризиками витоку або компрометації даних.
Цей розділ охоплює детальний опис структури додатка, ключових
компонентів і функціональних вимог.
Загальні цілі проекту
Проект чат-бота з наскрізним шифруванням має кілька основних завдань:
Захист даних користувачів:
○ Використання сучасних криптографічних методів для запобігання
доступу до повідомлень будь-ким, окрім відправника та отримувача.[10]
Простота використання:
○ Інтерфейс повинен бути інтуїтивно зрозумілим і не вимагати
технічних знань у криптографії.
Гнучкість та масштабованість:
○ Додаток повинен легко адаптуватися до змін у функціональності
або зростання кількості користувачів.
Інтеграція сучасних технологій:
○ Використання React для побудови фронтенду, Firebase для
управління даними та криптографічних бібліотек elliptic і crypto-js для
забезпечення шифрування.
Основні функціональні вимоги
Авторизація користувачів:
○ Реалізація базового входу через логін і пароль.
○ Верифікація даних користувача для захисту від несанкціонованого
доступу.
Наскрізне шифрування повідомлень:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 41
○ Генерація ключів для кожного користувача за допомогою
бібліотеки elliptic.
○ Використання алгоритму ECDH для обміну секретними ключами.
○ Шифрування повідомлень алгоритмом AES через бібліотеку
crypto-js.
Передача зашифрованих даних:
○ Відправлення повідомлень через Firebase Realtime Database.
○ Гарантія цілісності даних та відсутність можливості
перехоплення.
Дешифрування повідомлень:
○ Відновлення вихідного тексту повідомлення лише отримувачем.
○ Повідомлення, недоступні іншим користувачам або серверу.
Відображення історії чату:
○ Збереження та відображення переписки з урахуванням
шифрування.
○ Відображення повідомлень як зашифрованих для сторонніх
користувачів.
Реалізація зручного інтерфейсу:
○ Чіткий розподіл полів для введення повідомлення, вибору
отримувача та відображення чату.
○ Простота використання для користувачів без технічного
бекграунду.
Архітектура додатка
Архітектура чат-бота базується на клієнт-серверній моделі з розподілом
функціональності між кількома основними компонентами:
Фронтенд (React):
○ Забезпечує взаємодію користувачів із системою.
○ Реалізує логіку авторизації, відправлення повідомлень та обробки
зашифрованих даних.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 42
Сервер даних (Firebase Realtime Database):
○ Зберігає зашифровані повідомлення, публічні ключі користувачів
та інформацію про чат.
○ Забезпечує доступ до даних у реальному часі.
2. Криптографічний модуль (elliptic, crypto-js):
○ Генерує пари ключів для кожного користувача.
○ Виконує шифрування та дешифрування повідомлень.
Детальний опис компонентів
Модуль авторизації
Цей компонент забезпечує доступ до додатка лише авторизованим
користувачам.
● Дії користувача:
○ Введення логіна та пароля.
○ Перевірка вхідних даних на відповідність.
● Реалізація: У Firebase реалізується перевірка паролів за
заздалегідь створеним списком користувачів.
Генерація ключів
Для кожного користувача генерується пара ключів (приватний і
публічний). Ці ключі використовуються для обміну секретним ключем, який
шифрує повідомлення.
Код генерації ключів(рис. 16):
рис. 16
Модуль обміну повідомленнями
Цей компонент відповідає за передачу повідомлень між користувачами.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 43
Шифрування повідомлення: Використовується секретний ключ,
отриманий через алгоритм ECDH(рис. 17).
Рис. 17
Збереження повідомлення у Firebase(рис. 18):
Рис. 18
Модуль дешифрування
Повідомлення може бути дешифроване лише отримувачем за допомогою
його приватного ключа(рис. 19):
Рис. 19
Інтерфейс користувача
Реалізується через React із чітким розподілом зон:
● Поле для введення тексту повідомлення.
● Поле для вибору отримувача.
● Зона відображення чату.
Приклад інтерфейсу(рис. 20):
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 44
Рис 20
Функціональні деталі
Захист ключів:
○ Приватні ключі залишаються на стороні клієнта.
○ Публічні ключі зберігаються у Firebase для обміну.
Безпека повідомлень:
○ Повідомлення зберігаються у зашифрованому вигляді.
○ Сервер не має доступу до змісту повідомлень.
Синхронізація даних:
○ Використання Firebase дозволяє відображати нові повідомлення у
режимі реального часу.
Масштабованість:
○ Firebase Realtime Database дозволяє зручно додавати нових
користувачів та зберігати дані.
2.2 Вимоги до безпеки та способи їх реалізації
При створенні чат-бота з наскрізним шифруванням (E2EE), критично
важливим аспектом є забезпечення безпеки даних. Це передбачає дотримання
низки вимог, спрямованих на захист інформації від несанкціонованого
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 45
доступу, викрадення або компрометації. У цьому розділі розглянемо основні
вимоги до безпеки системи, а також методи, які дозволяють реалізувати ці
вимоги.
Основні вимоги до безпеки
Конфіденційність даних:
○ Забезпечення того, що тільки відправник і отримувач можуть
прочитати зміст повідомлення.
○ Захист повідомлень від перехоплення навіть у разі доступу до
серверів.
Аутентифікація користувачів:
○ Гарантія, що доступ до системи можуть отримати лише
зареєстровані користувачі.
○ Запобігання несанкціонованому доступу через підробку
ідентифікаційних даних.
Цілісність даних:
○ Забезпечення неможливості зміни повідомлень у процесі передачі.
○ Виявлення будь-яких спроб модифікації даних.
Безпека ключів шифрування:
○ Захист приватних ключів користувачів від витоку.
○ Забезпечення безпечного обміну публічними ключами.
Стійкість до атак:
○ Захист системи від таких атак, як "людина посередині" (MITM)
○ Підбір ключів
○ Брутфорс
Масштабованість безпеки:
○ Здатність системи адаптуватися до збільшення кількості
користувачів без зниження рівня захисту.
Логування та моніторинг:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 46
○ Відстеження підозрілої активності для своєчасного виявлення
загроз.
Способи реалізації вимог
Реалізація конфіденційності даних
Метод наскрізного шифрування (E2EE)
Використання криптографії забезпечує шифрування повідомлень на боці
відправника, що дозволяє лише отримувачу дешифрувати їх. У цьому проекті
застосовується алгоритм ECDH для генерування спільного секретного ключа і
AES для шифрування даних.
Реалізація:
Генерація ключів: Кожен користувач генерує пару ключів (приватний і
публічний) за допомогою бібліотеки elliptic.
Обмін ключами: Публічні ключі користувачів зберігаються у Firebase і
використовуються для створення спільного секрету.
Шифрування повідомлення: Використовується алгоритм AES для
перетворення тексту в зашифрований вигляд.
Дешифрування повідомлення: Отримувач використовує спільний секретний
ключ для відновлення вихідного тексту.
Аутентифікація користувачів
Аутентифікація забезпечує, що доступ до системи отримують лише
зареєстровані користувачі.
Методи реалізації:
Перевірка логіна та пароля: Використовується статичний список
користувачів для перевірки.
Майбутня реалізація: Інтеграція Firebase Authentication для динамічного
управління користувачами, двофакторної автентифікації та відновлення
доступу.
Забезпечення цілісності даних
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 47
Для виявлення спроб модифікації повідомлень під час передачі
використовується алгоритм генерації контрольної суми(рис. 21).
Реалізація:
● Додавання цифрового підпису повідомлення.
● Перевірка підпису на боці отримувача.
Рис. 21 - алгоритм генерації контрольної суми
Безпека ключів
Приватні ключі зберігаються виключно на стороні клієнта. Сервер не має
доступу до них, що виключає можливість їх компрометації.
Реалізація:
Зберігання ключів у браузері за допомогою localStorage(рис. 22).
Рис.22 – функція localStorage
● Використання асиметричного шифрування для передачі публічних
ключів.
Стійкість до атак
Атака MITM
Захист від "людини посередині" забезпечується перевіркою відповідності
ключів та цілісності даних.
Реалізація:
● Використання унікальних цифрових підписів для перевірки
автентичності повідомлень.
● Ручна перевірка ключів (використання QR-кодів або відбитків
ключів).
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 48
Атака брутфорс
Захист реалізується через використання криптостійких алгоритмів і складних
ключів.
Реалізація:
● Генерація ключів довжиною 256 біт.
● Збільшення складності паролів користувачів.
6. Масштабованість безпеки
Для підтримки великої кількості користувачів у системі реалізуються
наступні принципи:
● Розподіл обробки даних між клієнтами (проведення
криптографічних операцій на стороні клієнта).
● Використання Firebase як масштабованого хмарного сервісу.
Логування та моніторинг
Важливим аспектом є ведення журналу дій користувачів для виявлення
потенційних загроз.
Реалізація:
● Зберігання логів у Firebase Realtime Database.
● Аналіз активності для виявлення підозрілих дій (наприклад,
багаторазових невдалих спроб входу (рис. 23)).
Рис. 23 – аналіз підозрілих дій
Виклики та їх подолання
Розподіл обчислень між клієнтами:
○ Виконання шифрування та дешифрування на стороні клієнта
потребує додаткових ресурсів, що може впливати на продуктивність.
Оптимізація алгоритмів та кешування допоможуть зменшити затримки.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 49
Управління ключами:
○ Зберігання приватних ключів виключно на стороні клієнта може
створити ризики втрати даних. Резервне копіювання ключів та їх відновлення
через пароль є одним із можливих рішень.
Масштабованість:
○ Зростання кількості користувачів вимагає оптимізації обробки
даних. Firebase здатен динамічно масштабувати ресурси для підтримки
навантаження.
2.3 Моделювання процесу обміну повідомленнями між користувачами
Моделювання процесу обміну повідомленнями є ключовим етапом при
проектуванні системи захищеного спілкування. Воно дозволяє описати всі
основні етапи передачі даних від відправника до отримувача, зокрема
механізми шифрування, передачі та дешифрування. У цьому розділі
розглянемо, як саме відбувається обмін зашифрованими повідомленнями, які
етапи цей процес охоплює, а також опишемо структуру даних і взаємодію
користувачів із системою.
Загальна схема процесу обміну повідомленнями
Процес обміну повідомленнями між користувачами в чат-боті з
наскрізним шифруванням (E2EE) можна розділити на такі етапи:
Ініціалізація користувачів:
○ Генерація криптографічних ключів для кожного користувача під
час першого входу в систему.
○ Зберігання публічних ключів у центральному репозиторії
(наприклад, базі даних).
Підготовка повідомлення:
○ Користувач вводить текст повідомлення і вибирає отримувача.
○ Використовуючи публічний ключ отримувача, повідомлення
шифрується на боці відправника.
Передача зашифрованого повідомлення:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 50
○ Шифрований текст передається через сервер, який виступає як
передавач, але не має доступу до змісту повідомлення.
Прийом та дешифрування:
○ Отримувач завантажує зашифроване повідомлення.
○ Використовуючи свій приватний ключ, користувач розшифровує
повідомлення та отримує вихідний текст.
Відповідь:
○ Процес повторюється в зворотному напрямку, дозволяючи
побудувати діалог.
Ініціалізація користувачів
Перед початком обміну повідомленнями кожен користувач проходить
етап ініціалізації. Це включає:
Створення облікового запису:
○ Користувач реєструється, вводячи логін і пароль. Під час
реєстрації створюється унікальна пара криптографічних ключів (приватний і
публічний).
Генерація ключів:
Для створення пари ключів використовується алгоритм, заснований на
еліптичних кривих (наприклад, Curve25519).
○ Приватний ключ зберігається локально на пристрої користувача і
ніколи не передається на сервер.
○ Публічний ключ передається до бази даних і доступний для інших
користувачів.
Зберігання ключів:
○ Приватний ключ може бути зашифрований паролем користувача і
збережений у браузері (наприклад, у сховищі localStorage).
Підготовка повідомлення
Коли користувач хоче надіслати повідомлення іншому користувачу,
відбуваються наступні дії:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 51
Введення тексту повідомлення:
○ Користувач заповнює текстове поле з повідомленням і вказує
отримувача. Система підтверджує, що отримувач існує і має публічний ключ
у базі даних.
Генерація спільного секрету:
○ За допомогою приватного ключа відправника та публічного ключа
отримувача обчислюється спільний секрет. Це значення використовується як
основа для створення ключа шифрування.
Шифрування повідомлення:
○ Повідомлення шифрується алгоритмом симетричного
шифрування, наприклад AES. Ключ для AES-шифрування генерується на
основі спільного секрету, обчисленого раніше.
Формування пакета даних:
○ У сформованому повідомленні містяться:
■ Зашифрований текст.
■ Ідентифікатор відправника.
■ Ідентифікатор отримувача.
■ Додаткова інформація, наприклад, мітка часу.
Відправлення даних:
○ Пакет даних передається на сервер для тимчасового зберігання.
Передача зашифрованого повідомлення
Передача повідомлення є ключовим етапом, оскільки дані можуть бути
перехоплені в процесі. Для забезпечення безпеки застосовуються такі методи:
Використання HTTPS:
○ Усі з'єднання між клієнтом і сервером захищені протоколом
HTTPS, що запобігає перехопленню даних на мережевому рівні.
Шифрування на стороні клієнта:
○ Сервер отримує вже зашифровані дані. Навіть у разі злому сервера
зловмисник не зможе розшифрувати повідомлення без приватного ключа.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 52
Контроль доступу:
○ Сервер перевіряє автентичність користувачів перед обробкою
запитів, запобігаючи несанкціонованим діям.
Прийом та дешифрування
Коли отримувач відкриває додаток і завантажує повідомлення,
виконується наступна процедура:
Завантаження зашифрованого повідомлення:
○ Додаток отримувача запитує сервер на наявність нових
повідомлень для поточного користувача.
Отримання ключа дешифрування:
○ Використовуючи приватний ключ отримувача та публічний ключ
відправника, генерується той самий спільний секрет, який використовувався
для шифрування.
Дешифрування тексту:
○ Отримане зашифроване повідомлення дешифрується за
допомогою ключа, згенерованого зі спільного секрету.
Перевірка цілісності:
○ Виконується контроль цілісності повідомлення для виявлення
можливих змін у процесі передачі. Для цього можна використовувати хеш-
значення, прикріплене до повідомлення.
Відповідь
Процес відправлення відповіді повторює попередні кроки, але в
зворотному напрямку. Це дозволяє забезпечити симетричність передачі даних.
Приклад структури даних
Для організації процесу обміну повідомленнями використовуються такі
основні елементи:
Користувачі:
○ Містять інформацію про логін, публічний ключ і статус
(онлайн/офлайн).
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 53
Повідомлення:
○ Зберігають зашифрований текст, відправника, отримувача, мітку
часу і статус доставки.
Ключі:
○ База даних ключів містить публічні ключі всіх користувачів.
2.4 Вибір алгоритмів для шифрування та розшифрування повідомлень
При створенні системи захищеного обміну повідомленнями ключовим
рішенням є вибір алгоритмів шифрування та розшифрування. Це впливає на
рівень безпеки, продуктивність і зручність використання системи. Розглянемо
основні фактори, що впливають на вибір криптографічних методів,
характеристики популярних алгоритмів, а також їх практичне застосування в
реальних умовах.
Основні вимоги до алгоритмів шифрування
При виборі алгоритмів шифрування для наскрізного шифрування (E2EE)
враховуються такі критерії:
Безпека:
○ Алгоритми повинні відповідати сучасним стандартам безпеки та
бути стійкими до відомих атак, включаючи атаки методом перебору,
математичні атаки та квантові атаки.
Швидкість роботи:
○ Алгоритми повинні забезпечувати високу швидкість шифрування
та розшифрування, щоб уникнути затримок у реальному часі, особливо в
системах із великою кількістю користувачів.
Мінімізація ресурсів:
○ Обрані алгоритми повинні бути ефективними з точки зору
використання пам'яті та обчислювальної потужності, особливо для мобільних
пристроїв із обмеженими ресурсами.
Масштабованість:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 54
○ Алгоритми повинні дозволяти інтеграцію в системи з різною
кількістю користувачів без втрати ефективності.
Сумісність:
○ Алгоритми мають бути сумісними з популярними платформами та
бібліотеками, що спрощує їх інтеграцію в програмне забезпечення.
Симетричне шифрування
Симетричне шифрування використовує один ключ для шифрування і
розшифрування повідомлень. Це ефективний спосіб захисту даних, але він має
обмеження щодо передачі ключів. Серед алгоритмів симетричного
шифрування виділяють такі:
Advanced Encryption Standard (AES)
AES є одним із найбільш популярних алгоритмів симетричного
шифрування. Основні характеристики AES:
● Розмір ключа: 128, 192 або 256 біт.
● Метод шифрування: Блочне шифрування з розміром блоку 128
біт.
● Режими роботи:
○ ECB (Electronic Codebook): Найпростіший, але менш безпечний
режим.
○ CBC (Cipher Block Chaining): Підвищує безпеку за рахунок
зв'язку між блоками.
○ GCM (Galois/Counter Mode): Забезпечує шифрування і
автентифікацію даних.
Переваги AES:
● Висока швидкість роботи.
● Стійкість до криптоаналізу.
● Відповідність стандартам безпеки.
Обмеження:
● Необхідність безпечної передачі симетричного ключа.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 55
Практичне застосування AES
У реальному застосуванні AES використовується для шифрування тіла
повідомлення. Наприклад:
• Генерується унікальний ключ шифрування для кожної сесії.
• Повідомлення розбивається на блоки розміром 128 біт.
• Кожен блок шифрується з використанням обраного режиму роботи.
Асиметричне шифрування
Асиметричне шифрування використовує два ключі: публічний для
шифрування і приватний для розшифрування. Цей метод ідеально підходить
для захищеної передачі ключів або конфіденційних даних.
RSA (Rivest-Shamir-Adleman)
RSA є одним із найстаріших і найпоширеніших алгоритмів
асиметричного шифрування. Основні характеристики:
● Розмір ключа: Зазвичай 2048 або 4096 біт.
● Метод: Використовує властивості простих чисел для генерації ключів.
Переваги RSA:
● Стійкість до класичних атак.
● Підходить для захищеної передачі симетричних ключів.
Обмеження:
● Низька швидкість у порівнянні із симетричним шифруванням.
● Великі розміри зашифрованих даних.
Elliptic Curve Cryptography (ECC)
ECC є сучасною альтернативою RSA, що забезпечує високий рівень
безпеки з меншими розмірами ключів.[18] Основні характеристики:
● Розмір ключа: Наприклад, ключ ECC у 256 біт забезпечує такий самий
рівень безпеки, як і RSA у 3072 біт.
● Метод: Використовує еліптичні криві для генерації ключів і обчислення
спільного секрету.
Переваги ECC:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 56
● Висока швидкість обчислень.
● Низьке споживання ресурсів.
● Підходить для мобільних пристроїв і IoT.
Обмеження:
● Складність реалізації.
● Чутливість до помилок у програмному забезпеченні.
Гібридний підхід
У системах із наскрізним шифруванням часто застосовується гібридний
підхід, що поєднує симетричне й асиметричне шифрування:
Асиметричне шифрування:
○ Використовується для обміну симетричними ключами між
користувачами.
○ Наприклад, публічний ключ отримувача використовується для
шифрування симетричного ключа.
Симетричне шифрування:
○ Застосовується для шифрування самого повідомлення.
○ Цей підхід забезпечує швидкість і ефективність шифрування
великих обсягів даних.
Табл. 1 - Порівняльний аналіз алгоритмів
Характер AES RSA ECC
истика
Тип Симетричне Асиметричн Асиметрич
е не
Розмір 128-256 біт 2048-4096 160-512 біт
ключа біт
Швидкіст Висока Низька Висока
ь
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 57
Ресурси Низьке Високе Низьке
споживання споживання споживання
Використ Шифруванн Обмін Обмін
ання я даних ключами ключами
Вибір оптимального алгоритму
При проектуванні системи з наскрізним шифруванням рекомендується
наступна стратегія:
ECC для обміну ключами:
○ Використовується для швидкого й ефективного обміну
симетричними ключами між користувачами.
AES для шифрування повідомлень:
○ Забезпечує високу швидкість шифрування при збереженні
високого рівня безпеки.
Резервний варіант:
○ RSA може бути використаний у випадках, якщо ECC недоступний
або несумісний із системою.
Практична реалізація
У реалізації системи використовуються бібліотеки, що підтримують
сучасні алгоритми:
Elliptic (для ECC):
○ Надає інструменти для генерації ключів і обчислення спільного
секрету.
CryptoJS (для AES):
○ Забезпечує зручне шифрування та розшифрування даних.
2.5 Використання Firebase для зберігання ключів користувачів та історії
повідомлень
Сучасні додатки для обміну повідомленнями з наскрізним шифруванням
вимагають надійного способу зберігання даних. Firebase Realtime Database є
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 58
однією з провідних хмарних платформ для зберігання структурованих даних,
яка забезпечує просту інтеграцію, високу продуктивність і надійну
синхронізацію. В цьому розділі розглядається застосування Firebase для
зберігання ключів користувачів і зашифрованих повідомлень, зокрема, деталі
реалізації, переваги платформи та безпекові аспекти.
Загальні характеристики Firebase Realtime Database
Firebase Realtime Database — це хмарна NoSQL база даних, яка
забезпечує:
Реальний час:
Дані синхронізуються між клієнтами і сервером у реальному часі, що
ідеально підходить для чат-додатків.
Доступність:
Глобальна доступність завдяки розташуванню серверів Google.
Масштабованість:
Легко масштабувати базу даних для підтримки мільйонів користувачів.
Простота інтеграції:
Firebase SDK підтримує численні платформи, включаючи JavaScript,
React, Android та iOS.
Безпека:
Firebase надає можливість конфігурувати правила доступу до бази даних
через Firebase Security Rules.
Архітектура зберігання ключів користувачів
Для забезпечення наскрізного шифрування необхідно генерувати і
зберігати ключі для кожного користувача. Зберігання ключів у Firebase має
бути організоване так, щоб забезпечити:
Конфіденційність:
○ Приватні ключі зберігаються виключно на пристроях користувачів
і не потрапляють у базу даних.
○ У Firebase зберігаються лише публічні ключі.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 59
Доступність:
○ Публічні ключі повинні бути доступними для інших користувачів,
щоб забезпечити обмін повідомленнями.
Структура даних:
Дані зберігаються у вигляді ієрархічної структури (Рис. 24)
Рис. 24 – приклад ієрархічної структури
Реалізація зберігання публічних ключів
Публічний ключ генерується локально на пристрої користувача під час
реєстрації. Потім цей ключ відправляється на сервер(Рис. 25) для зберігання у
Firebase.
Рис. 25 - завантаження публічного ключа
Зберігання історії повідомлень
Історія повідомлень у чат-додатках також має зберігатися у Firebase для
забезпечення доступу до даних у разі перемикання пристроїв чи необхідності
синхронізації. Основні вимоги до зберігання повідомлень:
Структура даних:
Дані (рис. 26) зберігаються в хронологічному порядку для кожного чату
між користувачами:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 60
рис. 26 – структура повідомлень
○
Шифрування:
○ Повідомлення шифруються перед зберіганням у базі даних.
○ Розшифровка виконується виключно на пристроях користувачів.
○ Кожне повідомлення містить мітку часу для сортування й
відображення в інтерфейсі.
Коли користувач відправляє повідомлення, воно шифрується та
зберігається в базі даних(Рис. 27 ).
Рис. 27 - реалізація зберігання повідомлень
Завантаження повідомлень із Firebase
Для відображення повідомлень(Рис. 28) у реальному часі
використовуються підписки
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 61
Рис. 28 – реалізація підписки для Firebase
Переваги використання Firebase для зберігання даних
Простота інтеграції:
○ Firebase SDK забезпечує простий доступ до функцій бази даних
без необхідності налаштовувати серверну інфраструктуру.
Реальний час:
○ Firebase автоматично синхронізує дані між клієнтами та сервером,
що особливо важливо для чат-додатків.
Безкоштовний план:
○ Firebase пропонує безкоштовний план із лімітами, які підходять
для невеликих додатків.
Гнучкість:
○ Firebase підтримує структуру NoSQL, що дозволяє зберігати дані
в будь-якому вигляді.
Безпека даних у Firebase
Забезпечення безпеки даних — ключовий аспект при використанні
Firebase. Це досягається через:
Правила доступу:
Firebase Security Rules(Рис. 29) дозволяють обмежувати доступ до даних.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 62
Рис. 29 – приклад задання обмежень Firebase Security Rules
Шифрування:
○ Дані шифруються на боці клієнта перед відправленням у Firebase.
Аутентифікація:
○ Firebase Authentication забезпечує верифікацію користувачів перед
наданням доступу до даних.
Моніторинг:
○ Firebase надає інструменти для відстеження змін і виявлення
несанкціонованого доступу.
Приклад повного процесу
Реєстрація користувача:
○ Генерується пара ключів (приватний і публічний).
○ Публічний ключ завантажується у Firebase.
Надсилання повідомлення:
○ Повідомлення шифрується за допомогою публічного ключа
одержувача.
○ Зашифроване повідомлення зберігається у Firebase.
Отримання повідомлення:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 63
○ Клієнт завантажує повідомлення у реальному часі.
○ Повідомлення розшифровується за допомогою приватного ключа
одержувача.
3. Реалізація чат-бота на основі React
3.1 Налаштування Firebase у React-додатку для зберігання повідомлень та
ключів
Розробка чат-бота на основі React із використанням Firebase включає
кілька етапів: налаштування Firebase, інтеграція шифрування для захисту
повідомлень, і створення механізмів для зберігання ключів користувачів. У
цьому розділі покроково розглянемо кожен з аспектів розробки та надамо
приклади коду.
Налаштування Firebase у React-додатку
Інтеграція Firebase SDK
Перед початком роботи потрібно створити проєкт у Firebase Console і
отримати конфігураційні дані для вашого додатка. Ці дані дозволяють з'єднати
ваш React-додаток із Firebase.
Кроки для інтеграції:
Встановіть Firebase SDK:
npm install firebase
Та імпортуйте Firebase(Рис. 30) у React-додаток і його ініціалізація.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 64
Рис. 30 - Імпортування Firebase
Зберігання ключів користувачів у Firebase
Ключі користувачів використовуються для шифрування повідомлень. У
цій реалізації кожен користувач має пару ключів: публічний (для шифрування)
і приватний (для розшифрування).
Генерація ключів
Ключі(Рис. 31) генеруються за допомогою бібліотеки elliptic.
Рис. 31 – генерація ключів
Завантаження ключів до Firebase
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 65
Після генерації пари ключів публічний ключ користувача завантажується
у Firebase(Рис. 32) для використання іншими користувачами.
Рис. 32 – передання відкритих ключів у Firebase
Отримання ключів із Firebase
Для доступу до публічних ключів інших користувачів необхідно
реалізувати функцію(Рис. 33) отримання ключів.
Рис. 33 - Отримання ключів із Firebase
Зберігання та шифрування повідомлень
Для забезпечення конфіденційності повідомлення шифруються перед
зберіганням у Firebase.
Шифрування повідомлень
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 66
Шифрування (Рис. 34) виконується за допомогою секретного ключа,
отриманого шляхом обчислення спільного секрету на основі публічного ключа
одержувача та приватного ключа відправника.
Рис. 34 - Шифрування повідомлень
Зберігання повідомлень у Firebase
Зашифроване повідомлення (Рис. 35) завантажується у Firebase разом із
інформацією про відправника, одержувача та часовою міткою.
Рис. 35 - Зберігання повідомлень у Firebase
Отримання та розшифрування повідомлень
Отримання повідомлень із Firebase
Для отримання повідомлень (Рис. 36) у реальному часі використовується
метод onValue з Firebase SDK.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 67
Рис. 36 - Отримання повідомлень із Firebase
Розшифрування повідомлень
Розшифрування (Рис. 37) виконується на основі секретного ключа,
обчисленого із використанням публічного ключа відправника та приватного
ключа одержувача.
Рис. 37 - Розшифрування повідомлень
Інтерфейс чат-бота
React-компоненти забезпечують інтуїтивно зрозумілий інтерфейс(Рис. 38
, Рис. 39, Рис. 40, Рис. 41/а, 41/b) для взаємодії користувачів із системою.
Рис. 38 – логіка авторизації
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 68
Рис. 39 - Відображення повідомлень
Рис. 40 - Надсилання повідомлень
Рис. 41/а, 41/b – вигляд додатку після вшиття функціоналу
3.2 Використання бібліотеки elliptic для створення ключових пар
користувачів
Бібліотека elliptic є популярним інструментом для роботи з еліптичними
кривими у JavaScript. Вона забезпечує зручний і ефективний спосіб генерації
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 69
ключових пар, обчислення спільних секретів і використання криптографічних
функцій. Ця частина описує, як інтегрувати elliptic у проєкт, генерувати ключі,
зберігати їх, і як вони використовуються для шифрування та розшифрування
повідомлень.
Еліптична криптографія базується на математичних властивостях
еліптичних кривих. Основна перевага цієї технології – забезпечення високого
рівня безпеки з відносно малими розмірами ключів, що робить її особливо
привабливою для застосунків з обмеженими ресурсами, таких як веб-додатки.
Інтеграція бібліотеки elliptic у React-проєкт
Встановлення
Для використання бібліотеки elliptic у React-додатку, її потрібно
встановити (Рис. 43) та імпортувати (Рис. 44).
Рис. 43 – встановлення бібліотеки
рис. 44 - Імпортування необхідних класів
Далі створюємо екземпляр еліптичної кривої, яку будемо
використовувати(Рис. 45). Найпопулярнішою є крива secp256k1, що
використовується у багатьох сучасних криптографічних застосунках,
включаючи криптовалюту Bitcoin.
Рис. 45 – встановлення кривої
Генерація ключових пар
Алгоритм
Генерація ключів(Рис. 46) за допомогою еліптичних кривих включає
створення:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 70
● Приватного ключа: випадкове число.
● Публічного ключа: точка на кривій, отримана множенням
приватного ключа на базову точку.
Рис. 46 - код для генерації ключової пари
Пояснення
ec.genKeyPair() – створює випадкову ключову пару.
getPrivate('hex') – отримує приватний ключ у форматі шістнадцяткового
рядка (HEX).
getPublic('hex') – отримує публічний ключ у тому ж форматі.
Зберігання ключів користувачів
Локальне зберігання
Приватний ключ повинен залишатися в користувача (Рис. 47) і не
передаватися іншим, тоді як публічний ключ можна безпечно зберігати у
загальнодоступному сховищі, наприклад, у Firebase.
Рис. 47 – локальне зберігання
Отримання ключів із Firebase
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 71
Щоб отримати публічний ключ іншого користувача (Рис. 48), необхідно
зчитати його з Firebase.
Рис. 48 – отримання ключів
Спільний секрет: основа для шифрування
Еліптична криптографія дозволяє створювати спільний секрет між двома
користувачами на основі їхніх ключів. Цей секрет є базою для шифрування
повідомлень.
Алгоритм обчислення спільного секрету (Рис. 49)
● Відправник використовує свій приватний ключ і публічний ключ
одержувача для обчислення секрету.
● Одержувач повторює ту ж операцію зі своїм приватним ключем і
публічним ключем відправника.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 72
Рис. 49 - Алгоритм обчислення спільного секрету
Пояснення
keyFromPrivate – ініціалізує ключ з приватного значення.
keyFromPublic – ініціалізує ключ із публічного значення.
derive – обчислює спільний секрет.
Використання ключів для шифрування та розшифрування
На основі спільного секрету можна шифрувати повідомлення (Рис. 51).
Для цього використовуємо бібліотеку CryptoJS(Рис. 50).
Рис. 50 - інтеграція CryptoJS
Рис. 51 - дешифрування
Інтеграція у React-додаток
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 73
У React компоненти дозволяють зручно генерувати ключі (Рис. 52) для
нових користувачів, зберігати їх у Firebase і використовувати для захищеного
обміну повідомленнями.
Рис. 52 - Генерація ключів у реальному часі
3.3 Реалізація авторизації користувачів та перевірка паролів
Авторизація користувачів є ключовим етапом будь-якого додатку, що
вимагає захищеного доступу до особистих даних. У React-додатках цей процес
включає валідацію паролів, керування сесіями та інтеграцію з бекенд-
сервісами для зберігання облікових даних. У цьому розділі розглянемо, як
реалізувати авторизацію користувачів та забезпечити безпечну перевірку
паролів із використанням Firebase.
Принципи авторизації та перевірки паролів
Авторизація базується на:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 74
Ідентифікації — встановлення особистості користувача через унікальні
облікові дані, наприклад, ім'я користувача або email.
Аутентифікації — перевірка, чи вказаний пароль збігається з тим, що
збережений у базі даних.
Сесійного керування — підтримання активної сесії після успішної
авторизації.
Для безпеки зберігання та перевірки паролів застосовуються наступні
підходи:
● Використання хешування для зберігання паролів (наприклад,
алгоритм bcrypt).
● Передача даних через HTTPS для уникнення перехоплення.
Інтеграція Firebase для керування обліковими даними
Firebase надає готові інструменти для аутентифікації користувачів,
зокрема через Email/Password.
Налаштування Firebase Authentication (Рис. 53)
У Firebase Console:
Вмикаємо Email/Password Authentication у розділі Authentication
Рис. 53 - Налаштування Firebase Authentication
Реєстрація користувачів (Рис.54a, Рис.54b)
Алгоритм:
• Користувач вводить ім'я та пароль.
• Дані передаються на бекенд через Firebase.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 75
• Firebase створює нового користувача або повертає помилку.
Рис.54 a - Реєстрація користувачів етап 1
Рис.54 b - Реєстрація користувачів етап 2
Пояснення:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 76
createUserWithEmailAndPassword — Firebase-метод для створення
нового користувача.
Обробка помилок дозволяє зрозуміти, чи проблема в паролі (наприклад,
занадто короткий) чи в інших аспектах.
Авторизація користувачів
Алгоритм:
• Користувач вводить свої облікові дані (Рис. 55).
• Дані перевіряються Firebase.
• Якщо облікові дані правильні, користувач авторизується (Рис. 56).
Рис. 55 - Авторизація користувачів етап 1
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 77
Рис. 56 - авторизація користувачів етап 2
Пояснення:
signInWithEmailAndPassword — Firebase-метод для аутентифікації
користувача.
У разі успіху, сесія користувача автоматично створюється Firebase.
Захищені маршрути (Protected Routes)
Для захисту приватних сторінок у додатку(Рис. 57) можна
використовувати умову, що перевіряє, чи авторизований користувач.
Реалізація (Рис. 58):
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 78
Рис. 57 – реалізація Protected Routes
Рис. 58 - вигляд створеного компоненту
Шифрування паролів перед зберіганням
Хоча Firebase автоматично захищає облікові дані, у кастомних системах
важливо хешувати паролі перед їх зберіганням. Для цього використовується
бібліотека bcrypt (Рис. 59).
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 79
Рис. 59 – інтеграція bcrypt для шифрування паролів
3.4 Логіка відображення зашифрованих та розшифрованих повідомлень у
чаті
Однією з ключових задач у створенні зашифрованого чату є забезпечення
безпечної передачі даних між користувачами та правильне відображення
повідомлень для відправника і отримувача. У цьому розділі розглянемо, як
зашифровані повідомлення передаються, зберігаються та розшифровуються
для відображення користувачу.
Основні принципи роботи з зашифрованими повідомленнями
У зашифрованому чаті кожне повідомлення шифрується перед
відправленням та розшифровується тільки отримувачем. Основні етапи
роботи:
Шифрування повідомлення: Користувач шифрує текст за допомогою
ключа, отриманого через обмін ключами з отримувачем.
Передача зашифрованого повідомлення: Зашифровані дані
зберігаються у базі даних.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 80
Розшифрування: Отримувач розшифровує повідомлення за допомогою
власного приватного ключа та публічного ключа відправника.
Відображення зашифрованих повідомлень
Алгоритм:
Перевіряється, чи є отримувачем поточний користувач.
Якщо так, розшифровується повідомлення та відображається
розшифрований текст (Рис. 60).
Якщо ні, відображається текст "Зашифроване повідомлення".
Реалізація у компоненті displayMessages:
Рис. 60 – компонент displayMessages
Пояснення:
• Перевірка отримувача: Якщо поточний користувач є отримувачем
(msg.recipient === currentUser), повідомлення розшифровується.
• Відображення: Для інших користувачів відображається текст
"Зашифроване повідомлення".
Функція розшифрування повідомлення
Розшифрування є критично важливим для правильного відображення
отриманих повідомлень (Рис. 61).
Реалізація:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 81
Рис. 61 – компонент decryptMessage
Отримання ключів: Приватний ключ отримувача (recipientKeyPair) і
публічний ключ відправника (senderPublicKey) є основою для створення
спільного секрету.
AES-розшифрування: Зашифроване повідомлення розшифровується за
допомогою секрету. Якщо процес не вдається, повертається текст
"Помилка при дешифруванні".
Відображення розшифрованих повідомлень
Для покращення візуалізації повідомлень (Рис. 62) можна виділити
розшифровані та зашифровані повідомлення різними стилями.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 82
Рис. 62 - Відображення розшифрованих повідомлень
Обробка помилок при розшифруванні
Якщо ключі недоступні або процес розшифрування не вдається,
користувач повинен отримати сповіщення (Рис. 63).
Рис. 63 – логування помилок
Додатковий функціонал:
• Журналювання: Помилки записуються у консоль для подальшої
діагностики.
• Оповіщення: У разі помилки користувач бачить відповідне
повідомлення.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 83
Рис. 64 - Інтеграція з Firebase
При завантаженні даних з Firebase (Рис. 64), розшифрування відбувається
для поточного користувача (Рис.65).
Рис.65 – відображення повідомлень отримувачу
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 84
Висновок до розділу
Налаштування Firebase у React-додатку для зберігання повідомлень
та ключів
Інтеграція Firebase стала ключовою частиною реалізації системи обміну
зашифрованими повідомленнями. Firebase забезпечує надійне зберігання як
повідомлень, так і ключів користувачів, надаючи простий і масштабований
інтерфейс роботи з базою даних.
У процесі реалізації:
● Було створено реальну базу даних у Firebase для роботи в режимі
реального часу.
● Зберігання повідомлень організовано у вигляді об’єктів, що
включають зашифровані дані, інформацію про відправника та отримувача.
● Зберігання ключів користувачів структуроване таким чином, щоб
забезпечити простий доступ до приватних та публічних ключів.
Таке налаштування забезпечило ефективну синхронізацію між
користувачами в режимі реального часу та створило базу для впровадження
захищеного обміну повідомленнями.
Використання бібліотеки elliptic для створення ключових пар
користувачів
Бібліотека elliptic стала основою для створення та використання
криптографічних ключів у нашому додатку. Вона дозволила:
● Генерувати ключові пари для кожного користувача.
● Використовувати алгоритм еліптичних кривих secp256k1, який
забезпечує високий рівень безпеки та ефективність.
● Здійснювати обмін ключами між користувачами для створення
спільного секрету.
Основною перевагою бібліотеки є простота використання в React-додатку
та гнучкість, що дозволяє ефективно інтегрувати криптографічні операції у
загальну логіку додатку.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 85
Ключовим моментом стало створення механізму обміну ключами через
спільний секрет, який генерується на основі приватного ключа одного
користувача та публічного ключа іншого. Це забезпечило можливість
шифрування повідомлень, які може розшифрувати лише конкретний
отримувач.
Реалізація авторизації користувачів та перевірка паролів
Для забезпечення безпеки доступу до чату була реалізована проста, але
ефективна система авторизації користувачів. У процесі реалізації:
● Використано локальну базу користувачів із заздалегідь заданими
іменами та паролями.
● Створено інтерфейс для введення імені користувача та пароля з
перевіркою відповідності.
● Здійснено інтеграцію авторизації з механізмом управління
ключами користувачів, що дозволило асоціювати кожного користувача зі
своїми криптографічними ключами.
Авторизація стала важливим етапом у процесі захисту даних чату,
забезпечуючи, що тільки авторизовані користувачі можуть надсилати та
отримувати повідомлення.
Логіка відображення зашифрованих та розшифрованих повідомлень
у чаті
Відображення повідомлень у чаті — це фінальний етап, який забезпечує
зручність взаємодії користувачів з додатком. Логіка роботи повідомлень
включала кілька ключових аспектів:
● Шифрування повідомлень: Перед надсиланням текст
повідомлення шифрується за допомогою AES-алгоритму, де ключем виступає
спільний секрет, створений на основі ключів відправника та отримувача.
● Розшифрування: Отримувач розшифровує повідомлення лише у
випадку, якщо він є зазначеним отримувачем. У іншому випадку
відображається інформація про те, що повідомлення зашифроване.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 86
● Відображення: Для розшифрованих повідомлень
використовується зрозумілий текст, а для зашифрованих — спеціальне
маркування у вигляді стилізованого тексту.
Було реалізовано надійний обробник помилок для розшифрування, що
дозволяє попереджати користувача про проблеми у випадку відсутності
ключів або неправильного формату даних.
Особливу увагу приділено тестуванню логіки відображення, щоб
переконатися у коректній роботі системи для всіх сценаріїв використання.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 87
4.Оцінка ефективності та безпеки розробленого чат-бота
4.1 Перевірка функціональності та відповідності вимогам до безпеки
Перевірка функціональності
Перевірка функціональності полягає у забезпеченні коректної роботи всіх
ключових компонентів чат-бота: авторизації, обміну повідомленнями,
шифрування/розшифрування та зберігання даних у Firebase.
Перевірка авторизації
Авторизація користувача базується на зіставленні введених облікових
даних з існуючими в базі користувачів. Коректна робота цієї функції є
критичною для уникнення несанкціонованого доступу.
Тестовий кейс:
● Сценарій: Введення правильного логіна і пароля.
● Очікуваний результат: Успішний вхід у систему (Рис. 66).
Рис. 66 – помилка при невірній авторизації
При введенні неправильного логіна/пароля, система блокує доступ, що
підтверджує коректність роботи.
Тестування обміну повідомленнями
Обмін повідомленнями в чаті включає як відправлення, так і отримання
зашифрованих повідомлень. Оцінка проводиться на основі двох функцій:
sendMessage та displayMessages.
Тестовий кейс:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 88
● Сценарій: Надсилання текстового повідомлення від одного
користувача до іншого.
● Очікуваний результат: Повідомлення успішно зберігається у
Firebase та відображається в списку повідомлень(рис. 67).
рис. 67 - тест надсилання текстового повідомлення від одного користувача
до іншого
Результати тестів показують, що функція обміну повідомленнями працює
згідно з очікуваннями.
Перевірка безпеки
Захист даних при зберіганні
Всі повідомлення зберігаються у зашифрованому вигляді в базі Firebase,
що унеможливлює їх доступ у випадку несанкціонованого доступу до бази.
Тестовий кейс:
● Сценарій: Аналіз даних у Firebase.
● Очікуваний результат: Усі повідомлення в базі знаходяться у
зашифрованому вигляді(Рис. 68).
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 89
Рис. 68 – аналіз шифрування повідомлень
Аналіз бази Firebase підтвердив, що повідомлення зберігаються виключно
у зашифрованому вигляді.
Перевірка криптографічного захисту
Функція encryptMessage використовує криптографічну бібліотеку elliptic
для обчислення спільного секрету, що забезпечує унікальний ключ для кожної
пари користувачів.
Тестовий кейс:
● Сценарій: Надсилання повідомлення від користувача A до
користувача B.
● Очікуваний результат: Ключі користувачів різних пар
генерують унікальний спільний секрет(рис. 69).
рис. 69 – тест на унікальність спільного секрету
Тестування підтвердило, що спільний секрет змінюється для кожної нової
пари, забезпечуючи захист від підслуховування.
Тестування функції розшифрування
Функція decryptMessage відновлює оригінальний текст повідомлення,
використовуючи спільний секрет. Тестування проводилось з реальними
зашифрованими даними (Рис. 70).
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 90
Рис. 70 - розшифрування
Результати:
● Повідомлення успішно розшифровуються, якщо ключі
відправника і отримувача валідні.
● У разі невідповідності ключів, функція видає помилку.
4.2 Оцінка продуктивності та швидкодії шифрування та розшифрування
повідомлень
1. Оцінка швидкодії шифрування та розшифрування
Методика тестування
Для оцінки продуктивності шифрування та розшифрування
використовувалися реальні сценарії:
● Надсилання текстових повідомлень різної довжини.
● Використання різних ключових пар для кожної пари користувачів.
● Тестування на основі обчислення середнього часу шифрування та
розшифрування.
Інструменти:
● console.time для вимірювання тривалості виконання функцій.
● Набори даних, які варіюються за розміром (100, 500, 1000
символів).
Результати тестування
Під час тестування було отримано наступні середні показники часу
виконання що наведено у Табл. 2
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 91
Табл. 2 - показники швидкодії
Розмір Шифруван Розшифрува
повідомлення ня (мс) ння (мс)
1000 символів 2 3
5000 символів 5 6
10000 8 9
символів
Висновок:
● Час шифрування та розшифрування лінійно залежить від довжини
повідомлення.
● Ефективність реалізації відповідає сучасним стандартам
продуктивності.
Порівняння з аналогами
Для порівняння було обрано декілька популярних рішень, які
забезпечують шифрування повідомлень:
● Signal: Використовує протокол Double Ratchet з шифруванням на
основі еліптичних кривих.
● Telegram: Застосовує MTProto, який поєднує симетричне та
асиметричне шифрування.
● WhatsApp: Реалізує шифрування на основі Signal-протоколу.
Швидкодія
При порівнянні швидкості шифрування нашого рішення із аналогами:
● Signal показує схожу швидкість шифрування та розшифрування
для коротких повідомлень.
● Telegram значно швидше при обробці великих обсягів даних, але
реалізація MTProto менш захищена до атак на довготривалі ключі.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 92
● WhatsApp має оптимізацію для мобільних пристроїв, що може
бути недосяжним для веб-додатків через обмеження браузерів.
Переваги нашого підходу
• Легка інтеграція: Використання бібліотеки elliptic та алгоритму AES
дозволяє з легкістю додавати шифрування в проєкти на JavaScript.
• Гнучкість ключів: Реалізація на основі secp256k1 забезпечує
динамічне генерування унікальних ключів для кожної сесії.
• Веб-орієнтація: На відміну від Signal або WhatsApp, наш чат працює
повністю у веб-середовищі без потреби в сторонніх клієнтах.
Надійність шифрування
Використання асиметричних ключів для обчислення спільного секрету та
алгоритму AES для симетричного шифрування робить повідомлення майже
недоступними для розшифрування без належного ключа.
Універсальність
Завдяки використанню Firebase, наш чат підтримує реальний час та
автоматичне збереження зашифрованих повідомлень. Це підвищує зручність
користувачів без шкоди для безпеки.
Відкритість для модернізації
Відкрита структура коду дозволяє:
● Легко інтегрувати нові алгоритми шифрування.
● Оптимізувати швидкодію для роботи на мобільних пристроях.
Безпека ключів
Ключі користувачів зберігаються в зашифрованому вигляді, а обчислення
спільного секрету виконується локально, що виключає можливість їхнього
перехоплення.
Недоліки та обмеження
Залежність від Firebase
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 93
Хоча Firebase забезпечує стабільне зберігання та передачу даних,
залежність від хмарного сервісу може бути обмеженням у випадку локальних
проєктів.
Витрати ресурсів
Шифрування великих повідомлень потребує більше обчислювальних
ресурсів, що може впливати на продуктивність на слабких пристроях.
4.3 Аналіз стійкості алгоритмів шифрування і захист від потенційних атак
Шифрування повідомлень у розробленому чат-боті базується на
використанні криптографічних методів, які забезпечують конфіденційність та
цілісність даних. Для цього застосовуються такі алгоритми, як AES (Advanced
Encryption Standard) для симетричного шифрування та ECDH (Elliptic Curve
Diffie-Hellman) для обчислення спільного секрету між двома користувачами.
У цьому розділі проводиться аналіз стійкості цих алгоритмів, можливих атак
та стратегій захисту.
Стійкість використаних алгоритмів шифрування
Стійкість AES
AES — це симетричний алгоритм блочного шифрування, який
вважається стандартом шифрування на сьогодні. У розробленому чат-боті
AES використовується для шифрування тексту повідомлень. Основні аспекти
стійкості AES включають:
● Довжина ключа: 256-бітний ключ забезпечує захист від
брутфорс-атак, оскільки перебір всіх можливих ключів є обчислювально
неможливим навіть для сучасних суперкомп'ютерів.
● Розмір блоку: 128-бітний розмір блоку забезпечує ефективність
роботи алгоритму та знижує ризик атак на основі аналізу повторюваних
патернів.
Стійкість до атак:
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 94
● Брутфорс: Для 256-бітного ключа кількість можливих комбінацій
складає 22562^{256}, що значно перевищує можливості будь-якої сучасної
обчислювальної техніки.
● Криптоаналіз: Алгоритм стійкий до лінійного, диференційного
криптоаналізу та атак на основі частоти символів.
Стійкість ECDH
ECDH (Elliptic Curve Diffie-Hellman) використовується для обчислення
спільного секрету, який надалі слугує ключем для AES. Еліптичні криві
забезпечують високий рівень безпеки завдяки складності математичних
операцій, таких як дискретне логарифмування.
Стійкість до атак:
● Атака методом перебору: Висока складність дискретного
логарифмування на еліптичних кривих робить перебір практично
неможливим.
● Квантові атаки: Хоча квантові комп’ютери можуть становити
загрозу, стійкість алгоритмів на еліптичних кривих досягнута завдяки
використанню великих ключів.
Можливі атаки та їх аналіз
Атаки на шифрування AES
Атаки на основі сторонніх каналів (Side-Channel Attacks):
○ Аналіз енергоспоживання, часу виконання або випромінювання
може розкрити ключ.
○ Захист: Використання технік маскування, які додають випадкові
значення до операцій.
Атака по відомих відкритих текстах (Known Plaintext Attack):
○ Зловмисник може отримати доступ до відкритого тексту і його
зашифрованої версії.
○ Захист: Використання різних спільних секретів для кожної сесії
унеможливлює повторне використання ключів.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 95
Атака «людина посередині» (Man-in-the-Middle):
○ Зловмисник може підмінити відкриті ключі, які передаються між
користувачами.
○ Захист: Використання цифрових підписів або сертифікатів для
перевірки автентичності ключів.
Атака квантового комп’ютера:
○ Квантові алгоритми, такі як алгоритм Шора, можуть зламати
сучасні алгоритми на еліптичних кривих.
○ Захист: Перехід до постквантових алгоритмів шифрування.
Валідація ключів
Перед використанням відкритого ключа алгоритм переконується, що він
належить заданій еліптичній кривій і має правильний формат.
Захист з’єднань
Використання TLS (Transport Layer Security) для шифрування
переданих даних додатково захищає від атак типу «людина посередині».
Висновки та рекомендації
Розроблений чат-бот відповідає сучасним вимогам безпеки завдяки
використанню перевірених криптографічних алгоритмів. Основні переваги
реалізації:
• Стійке шифрування: AES забезпечує надійний захист даних навіть у
випадку отримання доступу до зашифрованих повідомлень.
• Секретність ключів: ECDH генерує унікальний секретний ключ для
кожної пари користувачів, що зменшує ймовірність успішних атак.
• Масштабованість: Архітектура дозволяє додатково інтегрувати
механізми постквантового шифрування.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 96
5. Перспективи вдосконалення та можливості розвитку
Розроблений чат-бот демонструє базову функціональність для безпечного
обміну повідомленнями, однак його функціонал та архітектура дозволяють
розширювати можливості. У цьому розділі розглядаються напрями
вдосконалення, які можуть значно покращити користувацький досвід,
підвищити рівень безпеки та забезпечити масштабованість системи.
5.1. Можливості додавання нових функцій
Інтеграція мультимедійного контенту
Чат-бот можна вдосконалити, додавши функції надсилання зображень, відео,
аудіофайлів чи документів. Для цього потрібно:
● Забезпечити шифрування мультимедійного контенту з
використанням того ж механізму, що й для текстових повідомлень.
● Реалізувати завантаження файлів до захищеного сховища
(наприклад, Firebase Storage) з дотриманням конфіденційності.
● Додати відображення мультимедійного контенту в чаті.
Технічна реалізація:
● Додавання алгоритму що оброблює файл та шифрує його згідно
поточного алгоритму. Також інтеграція логічного інтерфейсу, для можливості
додавання файлів.
5.2. Можливості для розширення на інші платформи
Чат-бот можна адаптовано для Telegram у вигляді боту. Це розширить
аудиторію користувачів і збільшить зручність використання.
Для інтеграції з платформами було використано:
● API відповідної платформи (наприклад, Telegram Bot API).
● Реалізовано уніфіковану логіку обміну повідомленнями для всіх
платформ.
Інтеграція дозволяє зберігати спільну логіку шифрування та
розшифрування між платформами.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 97
5.3. Використання більш сучасних алгоритмів шифрування
Розвиток квантових комп'ютерів загрожує сучасним криптографічним
алгоритмам. Для підвищення рівня безпеки можна інтегрувати постквантові
алгоритми:
● Kyber — алгоритм для захисту даних від квантових атак.
● Dilithium — для забезпечення цифрового підпису.
Переваги нових алгоритмів:
● Стійкість до атак квантових комп'ютерів.
● Висока швидкість виконання.
● Можливість інтеграції з існуючими протоколами.
Кроки для впровадження:
● Використання бібліотек, таких як liboqs, для інтеграції
постквантових алгоритмів у чат-бот.
● Тестування нових алгоритмів у реальних умовах.
5.4. Додавання функції резервного копіювання та відновлення даних
Забезпечення резервного копіювання та відновлення даних є важливим
елементом для підвищення надійності системи. Ця функція дозволяє зберігати
історію чатів, ключі користувачів та інші критичні дані.
Переваги:
● Збереження цілісності даних навіть у разі втрати пристрою.
● Можливість переносу даних на нові пристрої.
Висновки до розділу
Перспективи вдосконалення чат-бота є обширними, з акцентом на
підвищення зручності використання, безпеки та масштабованості. Інтеграція
нових функцій, таких як надсилання мультимедіа, перехід на постквантові
алгоритми, розширення на інші платформи та резервне копіювання, дозволять
системі залишатися конкурентоспроможною та відповідати сучасним
вимогам.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 98
Список використаної літератури
1. Katz, J., & Lindell, Y. (2007). *Introduction to Modern Cryptography:
Principles and Protocols*. CRC Press.
2. Ferguson, N., Schneier, B., & Kohno, T. (2010). *Cryptography
Engineering: Design Principles and Practical Applications*. Wiley Publishing.
3. Menezes, A. J., van Oorschot, P. C., & Vanstone, S. A. (1996). *Handbook
of Applied Cryptography*. CRC Press.
4. Stallings, W. (2016). *Cryptography and Network Security: Principles and
Practice*. Pearson.
5. Schneier, B. (2015). *Applied Cryptography: Protocols, Algorithms, and
Source Code in C*. John Wiley & Sons.
6. Koblitz, N. (1994). *A Course in Number Theory and Cryptography*.
Springer.
7. Diffie, W., & Hellman, M. (1976). *New Directions in Cryptography*.
IEEE Transactions on Information Theory, 22(6), 644-654.
8. National Institute of Standards and Technology (NIST). (2001). *Advanced
Encryption Standard (AES)*. Federal Information Processing Standards
Publication 197.
9. Bernstein, D. J., Lange, T., & Schwabe, P. (2012). *The Security Impact of
a New Cryptographic Library*. In Progress in Cryptology – LATINCRYPT 2012
(pp. 159-176). Springer.
10. Boneh, D., & Shoup, V. (2017). *A Graduate Course in Applied
Cryptography*. Available online:
[cryptobook.us](https://crypto.stanford.edu/~dabo/cryptobook/).
11. Miller, V. S. (1986). *Use of Elliptic Curves in Cryptography*. In
Advances in Cryptology – CRYPTO’85 (pp. 417-426). Springer.
12. Koblitz, N. (1987). *Elliptic Curve Cryptosystems*. Mathematics of
Computation, 48(177), 203-209.
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 99
13. Diffie, W., & Hellman, M. E. (1976). *Multiuser Cryptographic
Techniques*. AFIPS Conference Proceedings, 45, 109-112.
14. Alghazzawi, D. M. (2016). *An Overview of End-to-End Encryption
Technologies*. International Journal of Computer Science and Network Security,
16(8), 1-7.
15. Telegram. *Telegram Bot API Documentation*. Available online:
[core.telegram.org/bots/api](https://core.telegram.org/bots/api)
16. React Documentation. *React – A JavaScript library for building user
interfaces*. Available online: [reactjs.org](https://reactjs.org/)
17. Firebase Documentation. *Firebase Realtime Database*. Available online:
[firebase.google.com/docs/database](https://firebase.google.com/docs/database)
18. Certicom Research. (2000). *SEC 1: Elliptic Curve Cryptography*.
Standards for Efficient Cryptography Group.
19. Elliptic JS Library Documentation. Available online:
[github.com/indutny/elliptic](https://github.com/indutny/elliptic)
20. Crypto-JS Library Documentation. Available online: [crypto-
js](https://cryptojs.gitbook.io/docs/)
Лист
ЧДТУ.24.23309.001 ПЗ
Змін. Лист № докум. Підпис Дата 1 00