Как я написал 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.

https://habr.com/ru/articles/1030854/

#E2EE #мессенджер #Spring_Boot #X3DH #криптография #WebSocket #Java #шифрование #Signal_Protocol #WebCrypto

Как я написал E2EE-мессенджер на Spring Boot и WebCrypto — и почему сервер не видит сообщения

Привет, Хабр. Я Java-разработчик и в основном работаю с backend: Spring Boot, базы данных, интеграции, авторизация, WebSocket — всё то, что обычно находится за интерфейсом. В какой-то момент я поймал...

Хабр

Постквантовая защита WhatsApp, новый Matrix 2.0 и PoW-задачи для входа на сайт

На Хабре уже упоминали , что протокол Signal получил постквантовую защиту, хотя в краткой новости не вдавались в детали. Но это действительно важное событие с учётом того, что количество пользователей этого протокола превышает 1 млрд человек за счёт WhatsApp. Signal применяется для криптографической защиты сессий в одноимённом мессенджере, в Google RCS , WhatsApp и др. Опенсорсный протокол можно использовать в любом ПО. Итак, что изменилось в криптографической подсистеме?

https://habr.com/ru/companies/globalsign/articles/774962/

#Signal #Onion_Services #PoW_DDoS #CPP #client_puzzle_protocol #Equix #Matrix_20 #Element_X #Online_Safety_Bill #OSB #P2P #эллиптические_кривые #X3DH #PQXDH #CRYSTALSKyber

Постквантовая защита WhatsApp, новый Matrix 2.0 и PoW-задачи для входа на сайт

На Хабре уже упоминали , что протокол Signal получил постквантовую защиту, хотя в краткой новости не вдавались в детали. Но это действительно важное событие с учётом того, что количество...

Хабр

Hey does anyone know if there is a pattern in the #Noise #protocol that maps to #x3dh or #3dh

#crypto

#signal : The #PQXDH #protocol is an extension of the #X3DH #protocol that establishes a shared #secret #key between three parties: Alice, Bob, and a server1 .
PQXDH provides #postquantum #forward #secrecy and a form of cryptographic deniability but still relies on the hardness of the discrete log problem for mutual authentication4 PQXDH is already supported in the latest versions of Signal's client applications and is in use for chats[…] #Further #reading

https://signal.org/docs/specifications/pqxdh/

Signal Messenger: Speak Freely

Say "hello" to a different messaging experience. An unexpected focus on privacy, combined with all of the features you expect.

Signal Messenger
In this blog post I take a detailed look at how the Extended Triple Diffie-Hellman Key Exchange (X3DH) works.
This algorithm is part of the cryptography that drives OMEMO. https://blog.jabberhead.tk/2019/04/04/shaking-hands-with-omemo-x3dh/
Shaking Hands With OMEMO: X3DH – vanitasvitae's blog

vanitasvitae's blog