Как я написал E2EE-мессенджер на Spring Boot и WebCrypto — и почему сервер не видит сообщения
Привет, Хабр.
Я Java-разработчик и в основном работаю с backend: Spring Boot, базы данных, интеграции, авторизация, WebSocket — всё то, что обычно находится за интерфейсом.
В какой-то момент я поймал себя на мысли: я каждый день пользуюсь мессенджерами, но плохо понимаю, как они устроены внутри. Окей, JWT, WebSocket, PostgreSQL, Redis — это понятно. Но что технически означает фраза “end-to-end encryption”? Как сервер доставляет сообщения, если он не должен их читать? Где живут ключи? Что хранится в базе? Что происходит, если у пользователя два устройства?
Решил разобраться через практику. Написал мессенджер с нуля. Назвал Chaos Messenger.
Сразу честно: криптографическую часть я изучал вместе с Claude и ChatGPT — читал спецификации X3DH и Double Ratchet, разбирал примеры, задавал вопросы, пока не сложилась цельная картина. Frontend тоже делался с активной помощью ChatGPT: я backend-разработчик, React для меня не основная среда. Но архитектура, backend, интеграция WebCrypto, модель конвертов, хранение сообщений и принципиальные решения — мои.
Для меня AI здесь был не заменой понимания, а инструментом — примерно как документация, Stack Overflow и ревью коллег. Без понимания threat model и архитектуры такой проект всё равно не собрать.
В статье расскажу, как работает E2EE изнутри: как устанавливается сессия через X3DH, как каждое сообщение получает отдельный ключ через Symmetric Ratchet, почему сервер хранит только зашифрованные конверты, и какие ошибки я допустил по дороге.
Стек: Spring Boot 3, React 18, WebCrypto API, PostgreSQL, Redis, WebSocket/STOMP, Prometheus, Grafana.
Читать далееИсточник: Хабрахабр
Похожие новости
- Почему Big Data стек небезопасен по своей природе
- Immunefi: разочарование в Web3-хантинге и почему проект вам не заплатит (а платформа ничего с этим не сделает)
- Когда pull request выглядит нормальным, но ревью на нём всё равно зависает
- Thoughtworks Technology Radar Vol. 34: что в тренде и каким становится software engineering после агентного поворота
- Кто на чём шлёт и принимает почту: измеряем email-инфраструктуру 660 тысяч доменов из Tranco top-1M
- bitkogan: «Вам пришли деньги» — как не попасть на блокировку счета
- Редакция Spark.ru: Какому бизнесу нужны самозанятые: в отдельных сегментах с ними работают до 11,2% компаний
- УК «Альфа-Капитал»: Выход ОАЭ из ОПЕК+
- AlinaTen: Крупные технологические компании расширяют сотрудничество с оборонным сектором США
- Партнеры Spark: Как купить USDT за рубли в России в 2026 году: пошаговый гайд с Cifra Markets