Архитектура распределённого месенджера, request for comments?
Я бы пошел дальше и попытался бы разработать не просто распределенный мессенджер, а полностью распределенный и децентрализованный транспорт+key/value storage, удовлетворяющий заданным требованиям (надежная взаимная аутентификация + анонимность + non-repudiation +… ). Задача, конечно, довольно амбициозная, но почему бы и нет?
В классической теории информации, в той ее части, которая касается защиты, есть перечень атак на клиента и сеть в целом.
Приведу лишь несколько для того, чтоб более менее направить разработчиков в правильное русло, кое есть наука…
1. Атака типа man-in-the-middle
2. Атака повторением
3. Атака на протокол, анализ трафика
4. Отказ от обслуживания
Ну и ряд других…
Надо почитать умные книги — там все сказано.

Самый главный минус всей архитектуры выше состоит в том, что связка открытый-закрытый ключ, генерируются сервером!
Я бы предложил линковать в клиент библиотеку QCA и генерировать ключи локально, отдавая на сервер публичный ключ. Тогда сервер выступал бы только вроде публичной адресной книги для установления соединения между клиентами.