Как я написал 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.
Читать далееИсточник: Хабрахабр
Похожие новости
- MediaGuru: Кейс: Как мы увеличили бронирования в 3 раза за один день с помощью Яндекс.Директ
- Каждый шестой рекламодатель малого бизнеса увеличил рекламный бюджет в пять раз за год
- 60% российских музеев используют технологии, но треть считает цифровизацию переоцененной
- Яндекс Директ запустил управление рекламой на базе ИИ в мессенджерах
- MARGO & Lil Pump взяли бронзу на премии НПБК за эффективную промо-кампанию трека Kukareku
- Креативная премия G8 Creative Awards 2026 открыла приём работ
- Как не получить бан в Claude: возможные причины и решения
- [Перевод] Модели угроз пакетных менеджеров
- Spark_news: Почти половина работающих россиян регулярно сталкиваются со стрессом на работе
- Как обнаруживают утечку информации по сетевым скрытым каналам