Briar - мессенджер, которого нет.

by @garant_copy
Briar - мессенджер, которого нет.

Разработка стартовала в уже далеком 2012-м году, спустя 6 полных лет процесс все еще не закончен. Весьма солидный срок, казалось бы, уже можно было несколько приложений наклепать, но решаемые задачи по-настоящему масштабны и требуют времени для решения.

В статье про архитектуры мессенджеров я говорил, что, несмотря на открытый код сервера, мы все равно не можем знать точно, что на самом деле происходит на сервере. Так вот, в данном случае нас это не волнует, так как сервера не существует. Перед нами один из немногих успешно существующих и активно разрабатываемых p2p мессенджеров.

К безопасности подход хардкорный. Это вам не Signal с добавлением контактов по телефонной книге (что, кстати, делается максимально приватно и безопасно). Чтобы добавить человека в контакт-лист, нужно встретиться с ним лицом к лицу. К счастью, это не единственный способ пополнения контакт-листа, уже добавленные люди могут вас "познакомить" с кем-нибудь, передав известный им контакт. Не самый удобный и доступный способ, но самый безопасный. Когда приложение считывает QR-код с телефона будущего собеседника, одновременно с этим происходит обмен приватными ключами для шифрования, что делает невозможным их перехват или подмену, как при передаче через сеть. Пока-пока, man-in-the-middle, мы не будем скучать, ты был ужасным другом.

После таких мер даже странно говорить об этом, но, естественно, сквозное шифрование присутствует, не забыли и о Forward Secrecyисходный код приложения открыт и оно распространяется бесплатно. А еще, в качестве приятного бонуса, разработчики поработали над вопросом метаданных. Они не просто "не сохраняются на сервере", они намеренно скрываются. Можно больше не беспокоиться о том, что телефонная книга утечет в сеть.

Перед тем, как обсудить основные принципы работы приложения, небольшая деталь о разработке p2p приложений. Большинство известных распределенных сетей, предполагающих взаимодействие между пользователями, строится на распределенных хэш-таблицах – DHT. Если очень коротко объяснять то, как эта технология работает, можно сказать, что это похоже на большую адресную книгу, которую частично дублирует каждый узел. Участники сети постоянно обмениваются адресами для составления наиболее полного списка участников. Большой минус такой системы - большое потребление ресурсов. Если подобный мессенджер портировать на смартфон, заряд его батареи будет уменьшаться на глазах.

Briar же, напротив, ориентирован на мобильные устройства, он не использует DHT и бережет вашу батарею. Помните блокировки в Египте и Иране? Signal показал настоящий мастер-класс в том, как противостоять подобному варварству, использовав domain fronting. Я уже рассказывал, что P2P мессенджеры архитектурно лишены даже возможности подобной блокировки. Сам принцип их устройства спасает от еще одного типа угроз – DOS атак. Что, если правительство найдет какую-нибудь уязвимость серверной части системы? А если банально заплатит за мощную DDOS-атаку неугодного средства общения? В сравнении с бюджетом страны, это не такие уж большие деньги. Но распределенные системы так легко из строя не вывести, единой точки отказа просто не существует, атаковать некого, блокировать нечего.

Децентрализация – сильный аргумент против блокировок и тоталитарных режимов, но не единственный в нашем арсенале. Вместо взаимодействия через обычный интернет, был сделан выбор в пользу Tor. Кроме полного шифрования трафика, анонимизации пользователей и значительного усложнения слежки за ними, Tor решает также проблему поиска контакта в сети. Именно благодаря такому подходу удалось избавиться от DHT.

Но это только вершина айсберга. Обычно, когда человек загнан в угол, он может решиться на самые дикие поступки. Что, если государство переходит на крайние меры и отключает вообще весь интернет? Кажется, что это невозможно, но прямо сейчас свободное государство на севере Сирии, построенное на идеях Хомски и Букчина, полностью отрезано от интернета. Самоорганизация и поддержание коммуникации в таких условиях чудовищно осложнены. Да и многие другие задачи тоже, в наши дни без сети как без рук. Сейчас самое время для подарка – Briar может работать в условиях отсутствия сети.



На данный момент, кроме работы через через Tor, реализована также связь через локальную сеть (например через Wi-Fi роутер), а для особо тяжелых ситуаций даже Bluetooth. Следующие на очереди Wi-Fi Direct и I2P. Благодаря мастерству разработчиков, архитектура приложения устроена таким образом, что обмен сообщениями может идти вообще через любой канал данных. Пока технологический стек не особо велик, но не сложно представить момент, когда можно будет передавать сообщения на значительные расстояние без интернета, а, например, просто присоединив к телефону какой-нибудь простенький радио-передатчик. При этом надежность будет на прежнем уровне, полное шифрование и невозможность MITM-атак все еще с нами.

В качестве совсем экстремального примера, Torsten Grote, один из разработчиков, убеждает нас, что передавать сообщение можно даже голубиной почтой. Здесь задействована еще одна сильная сторона Briar – устойчивость к большим задержкам сети.



Функционал, кстати, не ограничивается приватным общением между двумя собеседниками. Есть также надежно зашифрованные групповые чаты, публичные форумы и личные блоги, к которым имеют доступ только ваши контакты. Даже RSS-ридер прикрутили. В общем, швейцарский нож на все случаи жизни. Хочется отдельно рассказать про организацию форумов, в условиях децентрализации это очень сложная задача. Но, кажется мне, эта тема будет интересна слишком узкому кругу читателей. Любителям таких извращений рекомендую погуглить выступление Torsten Grote на 34-м Chaos Computer Club.

Одним из факторов, способствующих достижению столь высокого уровня кастомизации, было решение разделить программу на три условных слоя.



Самый верхний: интерфейс приложения. Промежуточный слой: ядро приложения, обеспечивающее основной функционал из сообщений, чатов, форумов, блогов и RSS-ридера. И, наконец, самый нижний уровень представляет собой отдельный проект и называется Bramble. Это протокол и фреймворк, отвечающий за организацию распределенной сети и связь между узлами. Словами не передать, насколько это полезная штука. Эта программная библиотека может быть использована для децентрализации практически любого сервиса. Разработчику не нужно будет писать свою систему организации распределенной сети, он может взять Bramble и получить все из коробки. Думаю, эта тема заслуживает отдельной статьи, а пока подробнее об этом фреймворке можно почитатьна сайте одной из разработчиков – Eleanor Saitta.

После такого внушительного списка достоинств и плюсов у вас наверняка уже появилось желание собственноручно проверить весь функционал. Тут у меня есть хорошая новость: хоть проект и находится в бета-версии, он уже весьма успешно прошел аудит безопасности. Совсем без обнаружения уязвимостей не обошлось. В конце-концов, аудитом занимались Cure53, широко известные их исследованиями SecureDropDovecot и многих других приложений. Было бы странно, если бы они не нашли бы за что зацепиться. Но, важно сказать, что в заключение своего исследования Cure53 отметили, что "качество и читаемость исходного кода были исключительны", а также выделили "хорошее понимание принципов работы уязвимостей". В отчете исследователи пришли к выводу, что мессенджер "способен обеспечить хороший уровень приватности и безопасности. Другими словами, Briar может быть рекомендован к использованию в качестве безопасного."

Скачать приложение можно не только в Google-play, но и в магазине приложений с открытым кодом F-Droid (о котором я непременно расскажу отдельно), подключив репозиторий проекта. Также приложение можно скачать напрямую с официального сайта.

Хочу завершить свой рассказ словами, что даже читать об этом проекте было редким удовольствием. Я искренне рад, что подобные вещи существуют, активно развиваются и финансируются.

November 17, 2018