Как стать автором
Обновить

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

Время на прочтение2 мин
Количество просмотров21K
Большинству из нас известно, что «защищённые» приложения для обмена сообщениями, которые мы используем каждый день (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.

Что я упустил при разработке безопасной архитектуры приложения? Что может быть улучшено?
Теги:
Хабы:
+13
Комментарии133

Публикации

Изменить настройки темы

Истории

Работа

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн