Проектируем вместе защищенное приложение для обмена сообщениями

от автора

Большинству из нас известно, что «защищённые» приложения для обмена сообщениями, которые мы используем каждый день (SMS, WhatsApp, Viber, Skype и тд) на самом деле изобилуют возможностями перехвата переписки. Они используют промежуточные сервера для передачи сообщений и сохраняют копию каждого сообщения. Автоматически копия каждого сообщения дублируется на государственных серверах и оттуда уже никогда не удаляется. Также автоматически логируется информация о том, какой IP в какое время с кем общался.

Пару месяцев я задумался о том, как реализовать по-настоящему безопасное приложение для обмена сообщениями, которые невозможно перехватить никаким способом.

Иногда сообщения пытаются шифровать и отправить их на сервер уже шифрованными, но работает ли это в действительности? Здесь легко реализуется атака Man In The Middle, когда сервер притворяется клиентом, которому предназначается сообщение и получает сообщение в незашифрованном виде, хотя клиент думает, что сообщение может быть прочитано только конечным получателем.

Рассуждая над архитектурой приложения, которым можно было бы пользоваться каждый день и при этом не задумываться о проблемах приватности, я пришел к следующему набору:

  1. Открытый исходный код. Таким образом любой может детально изучить, как именно работает приложение и убедиться в отсутствии бэкдоров.
  2. P2P. Клиенты устанавливают соединение друг с другом напрямую. Сообщения никогда не проходят через сервер, что исключает возможность их перехвата в любом виде. В данный момент я рассматриваю WebRTC Jingle, чтобы реализовать P2P с использованием libjingle для iOS и Android.
  3. TOR. Все соединения клиент осуществляет внутри анонимной сети Tor. Таким образом скрываются IP адреса клиентов, а также происходит первоначальная шифрация трафика, которая предоставращает прослушивание.
  4. OTR используется для дополнительного шифрования всех сообщений между пользователями и целей аутентификации.
  5. Версия для Android разрабатывается на базе ChatSecure. Версия для iOS разрабатывается с нуля.
  6. Для того, чтобы помочь клиентам найти друг друга и установить прямые P2P соединения, используется XMPP сервер. В данный момент выбор лежит между Openfire и ejabberd.

Что я упустил при разработке безопасной архитектуры приложения? Что может быть улучшено?

ссылка на оригинал статьи http://habrahabr.ru/post/200248/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *