Среди лидеров в этой сфере можно выделить следующие приложения (с данными активности пользователей на 2023 год):
- «Telegram» - мессенджер, созданный Павлом Дуровым. Охват - 700 миллионов человек в месяц. Подобные цифры кажутся немыслимыми, ведь это чуть меньше десятой части живущих на этот момент людей на нашей планете. Этот мессенджер использует протокол шифрования «MTProto 2.0» и допускает применение сквозного шифрования;
- «WhatsApp» - мессенджер, принадлежащий компании Meta. Один из ведущих лидеров по числу пользователей на данный момент. В нем используется сквозное шифрование, а протокол разработан на основе протокола «Signal Protocol» [1];
- «Signal» - набирающее популярность приложение для обмена мгновенными сообщениями с открытым исходным кодом. Использует обязательное сквозное шифрование с уникальным и очень популярным протоколом «Signal Protocol», упомянутым ранее [2].
Целью выпускной квалификационной работы является разработка web- приложения для обмена сообщениями, представляющее собой мессенджер с реализацией средств защиты информации, средств аутентификации, хранения и передачи данных, а также анализ и сравнение имеющегося функционала web-приложения с современными аналогами, анализ существующих механизмов реализации безопасного и конфиденциального обмена информацией, оценка актуальности и обоснование выбора реализованных решений.
В задачи проекта входят:
1) изучение аналогов web-приложений для обмена сообщениями (мессенджеров);
2) анализ и выбор современных решений, реализованных в приложениях-аналогах;
3) выбор технологий и инструментальных средств для реализации web- приложения;
4) разработка функционала приложения;
5) разработка и внедрение средств защиты информации;
6) тестирование приложения.
В разработке применялись современные решения, используемые в популярных мессенджерах, например, хранение переписок на стороне сервера, обмен сообщениями в режиме реального времени, протокол шифрования между клиентом и сервером, а также «end-to-end» или сквозное шифрование.
ВВЕДЕНИЕ..................................................................................................... 4
1. Обоснование актуальности проводимых исследований.......................... 6
2. Изучение аналогов.................................................................................... 8
3. Функционал и структура интерфейса..................................................... 11
4. Выбор решений....................................................................................... 15
5. Структура проекта.................................................................................. 16
5.1. Структура хранения базы данных...................................................... 17
5.2. Файловая структура и устройство работы сервера........................... 19
5.3. Файловая структура и устройство работы «socket»-сервера............ 22
5.4. Файловая структура клиента............................................................... 22
6. Протоколы обмена ключами и шифрования......................................... 25
6.1. Клиент-серверные протоколы............................................................. 25
6.1.1. Протокол SRP (Secure Remote Password)........................................ 25
6.1.2. JWT-токен.......................................................................................... 27
6.1.3. Алгоритм шифрования AES-GCM................................................... 28
6.2. Клиент-клиентские протоколы............................................................. 31
6.2.1. Протокол X3DH................................................................................ 32
6.2.2. Протокол Double Ratchet Algorithm................................................. 35
7. Тестирование web-приложения.............................................................. 39
7.1. Валидация............................................................................................. 39
7.2. Тестирование регистрации, авторизации............................................ 40
7.3. Тестирование поиска и добавления в «Друзья»................................. 42
7.4. Тестирование модификации учетных данных..................................... 44
7.5. Тестирование интерфейса обмена сообщениями................................ 46
7.6. Тестирование безопасности................................................................. 47
7.6.1. Тестирование клиент-серверного шифрования................................ 48
7.6.2. Тестирование клиент-клиентского шифрования.............................. 54
ЗАКЛЮЧЕНИЕ............................................................................................. 62
СПИСОК ЛИТЕРАТУРЫ............................................................................. 68
ПРИЛОЖЕНИЯ............................................................................................ 70
Приложение 1. Конвейер «middleware» в «app.js»..................................... 70
Приложение 2. «SRPEncryption.js»............................................................. 70
Приложение 3. «AESGCMEncryption.js».................................................... 71
Приложение 4. «MainApi.js»........................................................................ 74
Приложение 5. Контроллеры регистрации и авторизации «users.js»........ 77
Приложение 6. Серверное шифрование «encrypting.js»...................................... 80
1) Rubin, J. Security Analysis of the Signal Protocol / Rubin Jan. — Текст
: электронный // dspace.cvut.cz : [сайт]. — URL: https://dspace.cvut.cz/bitstream/handle/10467/76230/F8-DP-2018-Rubin-Jan- thesis.pdf?sequence=-1 (дата обращения: 04.04.2023).
2) Yagublu, L. The Signal Protocol for non-Cryptographers An Explanation of the Signal Protocol and its Security Properties / Lamiya Yagublu. — Текст : электронный // odr.chalmers.se : [сайт]. — URL: https://odr.chalmers.se/server/api/core/bitstreams/527d7251-f7f4-4a6c-ac7b- f8253d174336/content (дата обращения: 04.04.2023).
3) // What Socket.IO is. - URL: https://socket.io/docs/v4/ (дата обращения: 27.04.2023).
4) Lingappan, R. // What Is Secure Remote Password (SRP) Protocol and How to Use It? / Lingappan, R. - URL: https://medium.com/swlh/what-is-secure- remote-password-srp-protocol-and-how-to-use-it-70e415b94a76 (дата обращения: 27.04.2023).
5) // Как устроен AES. - URL: https://habr.com/ru/articles/112733/ (дата обращения: 27.04.2023).
6) Perrin, T. The Double Ratchet Algorithm / Perrin Trevor. — Текст : электронный // signal.org : [сайт]. — URL: https://signal.org/docs/specifications/doubleratchet/doubleratchet.pdf (дата обращения: 04.04.2023).
7) Общая картина модульного тестирования // Хабр. - URL:
https://habr.com/ru/companies/vk/articles/412695/ (дата обращения: 16.05.2023).
8) Ткачева. А. 3 способа валидации форм / Анастасия Ткачева // HTML Academy. - URL: https://htmlacademy.ru/blog/html/valid-forms (дата обращения: 16.05.2023).
9) Воробьёв. М. Гайд по DevTools: как открыть инструменты разработчика в браузере и чем они полезны / Михаил Воробьёв, Яна Сергиенкова // Яндекс.Практикум. - URL: https://practicum.yandex.ru/blog/devtools-instrumenty-razrabotchika/ (дата обращения: 16.05.2023).
10) Поговорим о централизованном логировании // Хабр. - URL:
https://habr.com/ru/articles/551582/ (дата обращения: 16.05.2023).