Децентрализованный мессенджер BitMessage

Описание и принцип работы

BitMessage - протокол обмена текстовыми сообщениями средствами распределённой криптографической сети.
Как и в случае с Bitcoin в роли серверов хранения и распределения информации выступают сами участники сети. Это значит, что никто не может удалить "неугодные", или "запрещённые" материалы, т.к. не известно кто их создал, в каком именно месте они лежат и кому они предназначаются.

Основные принципы работы BitMessage:

  • Каждому сообщению необходимо указать таймер самоуничтожения (на момент написания статьи он ограничивался максимальными 28 днями);
  • Каждый участник может выступать в качестве и клиента и сервера, либо только клиента (ограничив на фаерволе входящие подключения);
  • Система рассылает все исходящие сообщения абсолютно всем участникам сети (имеется в виду кто разрешил входящие сообщения) и они хранятся определённое время у каждого на компьютере;
  • Используются длинные имена вида BM-2cTKJ8nNez9dkYuSqTfVfmGuqa7AYXHC18, которые можно создавать локально в неограниченном кол-ве;
  • Используются алгоритмы шифрования с открытым ключом, это значит что сообщения написанные определённому человеку, либо группе лиц сможет прочитать лишь тот кому они предназначались;
  • Отправляемое сообщение не содержит адреса получателя (!), каждый участник сети пытается расшифровать все непрочитанные сообщения и прочитать только то что получилось расшифровать (то есть то что предназначалось ему);
  • В системе используются подробные статусы о каждом сообщении (ожидается публичный ключ от собеседника, сообщение отправляется, сообщение отправлено и расшифровано участником), то есть всегда можно узнать получил ли ваш собеседник сообщение, или он вообще не открывал BitMessage;
  • Используется Proof-of-work для защиты от спама;
  • Можно привязать адрес к домену Namecoin.

С недавнего времени в BitMessage появилась поддержка анонимных групп общения (chan). Основные отличия от обычных email-рассылок:

  • внутри chan не известен ни адрес получателя, ни адрес отправителя;
  • chan невозможно отключить благодаря полной децентрализованности сети;
  • chan невозможно подвергнуть цензуре (удалять и редактировать сообщения пользователей);
  • любой пользователь зная имя рассылки (chan) может анонимно слать и читать сообщения из этой рассылки;
  • любой пользователь может создать свою рассылку и общаться в ней с теми, кому передал название этой рассылки.

Установка

На странице проекта https://bitmessage.org/ можно скачать клиент под Windows/MacOS, установив его одним нажатием. Пользователям Linux необходимо поставить зависимости и скачать последнюю версию клиента из github (подробная инструкция для ряда дистрибутивов тут):

$ sudo apt-get install python openssl git python-qt4
$ git clone https://github.com/Bitmessage/PyBitmessage $HOME/PyBitmessage

Непосредственно сам запуск:

$ ~/PyBitmessage/src/bitmessagemain.py

Обновление осуществляется следующим образом:

$ cd $HOME/PyBitmessage
$ git pull

Использование

При первом запуске программа предложит произвести подключение, либо настроить подключение через дополнительную цепочку (например, TOR).
Далее необходимо довольно продолжительное время, чтобы скачать базу. Следить за статусом можно на соответствующей вкладке (Network Status).
Тем временем можно создавать свои ключи/адреса в любом кол-ве. Можно создать ключи используя пароли, в этом случае никаких резервных копий ключей делать не придётся, необходимо лишь запомнить пароль и версию используемого протокола.

Отправляя сообщение собеседнику следует дождаться пока оно обработается (зашифруется, отправится). Статус каждого сообщения можно посмотреть в папке Sent.

Для получения сообщений необходимо отправить один из своих публичных адресов (ключей) собеседнику.

То же самое касается chan (каналов). Сначала создаётся (вкладка Chans), далее рассылается необходимым участникам его BM-адрес.

Отдельно следует упомянуть, что значок в правом нижнем углу говорит о том в каком режиме подключен BitMessage:

  • Красный - нет соединения;
  • Жёлтый - программа работает в режиме клиента (входящие подключения закрыты);
  • Зелёный - установлено соединение с другими участниками сети (программа работает в режиме клиент-сервер и база с сообщениями раздаётся всем участникам сети).

Во втором и третьем случае всё будет работать успешно. Зелёный значок сигнализирует о том, что вы помогаете сети своими ресурсами, следовательно сеть будет работать быстрее.

Запуск сервера BitMessage без GUI

Для обычного пользования программы этот метод не нужен, но если вы хотите поспособствовать улучшению качества сети, то можете на одном из ваших серверов произвести следующие действия (пакет python-qt4 с завимостями в этом случае не нужен):

$ apt-get install python openssl git tmux
$ git clone https://github.com/Bitmessage/PyBitmessage $HOME/PyBitmessage
$ cd ~/PyBitmessage/src
$ ./bitmessagemain.py

Запускаем разово для создания конфигов ждём пару секунд, прерываем по Ctrl+c. Открываем конфиг ~/.config/PyBitmessage/keys.dat и добавляем параметр:

[bitmessagesettings]
...
daemon = true
...

Не забываем разрешить входящие соединения, если они закрыты и повторно запускаем BitMessage для работы в фоне:

$ tmux new-session -d 'cd ~/PyBitmessage/src/; ./bitmessagemain.py'