Архитектура распределённого месенджера, request for comments?

Привет. Опишите пожалуйста, на ваш взгляд, слабые места такой архитектуры.

Пока что я вижу следующие:

— не является честным p2p, есть централизованные элементы

— безопасна к перехвату, но не рассчитана на анонимность

— является очередным велосипедом

По первому минусу — он позволяет значительно упростить реализацию и интерфейс, оставляя его таким же, как и большинства популярных IM. Децентрализация достигается за счёт неограниченного количества серверов.

По второму — любые штуки, гарантирующие анонимность будут усложнять архитектуру, уменьшать скорость работы и увеличивать трафик. Кроме того частичная анонимность всё же будет доступна — при отправке сообщений через сервер прямой ip сходу определить не получится.

По третьему — наиболее близкая архитектура у XMPP. Основные отличия:

— шифрование сообщений, сервер не может дешифровать сообщения пользователя (в XMPP — по умолчанию — можно).

— прямые соеднения между клиентами (&обход NAT)

— google protobuff (вместо XML)

— встроенные в основной протокол аудио & видео звонки.

— отсутствие в протоколе расширений и запрет на модификацию протокола (нельзя сделать клиент, который, к примеру, использует другой видеокодек).

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

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

Войдите, чтобы написать ответ

Похожие вопросы