Перейти к содержимому

bronevik's блог

  • записи
    23
  • комментария
    224
  • просмотра
    158 562

BitMessage - протокол безопасного обмена сообщениями, основанный на биткойн.

br0nevik

6 866 просмотров

Bitmessage – предложенный в ноябре 2012 года протокол конфиденциального обмена информацией, основанный на идеях биткойн. Работа протокола базируется на децентрализованной Р2Р-сети и системе открытых\закрытых ключей.

 

Введение

Сердце биткойн — структура blockchain. Основная её функциональность — обмениваться защищенной информацией в одноранговой Р2Р-сети, распределенно её хранить и своевременно обновлять. По умолчанию в роли этой информации выступают данные о распределении монет по кошелькам (открытым ключам несимметричной системы шифрования), однако эта информация может быть любой. Пример — проект NameCoin, который представляет собой распределенную DNS-базу, основанную на blockchain.

На страже любых изменений (и честных, и мошеннических) стоит алгоритм Proof-of-Work (PoW). Концепция PoW означает, что для проведения некоторой операции пользователь должен выполнить определенное количество вычислений. В случае биткойн для того чтобы создать транзакцию вычисления не нужны, а вот для того, чтобы её подтвердить (включить в блок) необходимо найти хэш определенной формы.

Создателями BitMessage (BM) была поставлена задача адаптировать эти идеи для построения сети защищенного обмена сообщениями. Потребность в такой достаточно простой в использовании и при этом хорошо защищенной системе существует. Так, в емейл системе все завязано на сервера провайдеров — в лучшем случае mail.ru или gmail. Любой имеющий к ним доступ может просматривать любую переписку, а тот факт, что у них есть специальный терминал для автоматического доступа правоохранительных и силовых ведомств различных стран, даже не скрывается. Кроме того, любое сообщение можно подделать путем подмены заголовков и использовать для социальной инженерии.

Системы шифрования вроде PGP\GPG обеспечивают высокий уровень конфиденциальности и частично исправляют эти недостатки. Используя криптографические подписи они гарантируют для адресата, что автором сообщения является именно указанный отправитель и что сообщение отправлено в том самом виде, в котором получено. Однако они крайне непросты в использовании, требуют понимания основ шифрования, механизма открытых\закрытых ключей, текущего состояния шифрования алгоритмов. Даже грамотные пользователи PGP\GPG используют их не повседневно, а лишь для отправки особо важной корреспонденции. Кроме того, такая система неспособна скрыть сам факт переписки двух конкретных человек, даже если содержание их разговора остается неизвестным.

BitMessage по заявлению своих создателей — прототип средства обмена информации одновременно простого как емейл и защищенного как PGP.

При этом из криптовалютного мира было позаимствовано несколько базовых идей:

1. Использование хэша открытого ключа в качестве адреса. На данный момент адрес представляет собой двоичную последовательность длиной 18 или 19 байт, как правило кодированную в base58. То есть очень похожа на криптовалютный кошелек, к которым мы уже успели привыкнуть. Пример — BM-BbkPSZbzPwpVcYZpU4yHwf9ZPEapN5Zx (официальный канал обновлений программы).

2. Proof-of-Work. Необходимо несколько минут процессорного времени для отправки 1 сообщения.

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

 

Особенности реализации

Аутентификация в сети происходит почти также как в криптовалютах. При отпрвке сообщения выбирается адрес адресата (т. е. Фактически его открытый ключ), сообщение подписывается закрытым ключом отправителя. Расшифровать его сможет только адреса, обладающий закрытым ключом, парным к адресу. Чтобы передать сообщение необходимо выполнить процедуру PoW в форме подбора хэша определенной формы. Сложность линейно зависит от размера сообщения, зашита в код программы и может быть изменена со временем. В данный момент (версия 2.0.4 - 2.0.5) «порядка 3-5 минут работы среднего ЦПУ».

Как и в биткойне, пользователи формируют одноранговую Р2Р сеть и все получают все сообщения. Клиент пытается декодировать каждое тем набором закрытых ключей, которыми обладает. Сообщения содержат время отправки. Через 2 дня сообщение умирает, и чтобы переслать его снова, придется вновь выполнить PoW.

Масштабируемость системы обеспечивает иерархическая структура стримов (stream - “поток”). После превышения определенного порога нагрузки ноды начинают агрегироваться в стримы. Стрим прописан в каждом адресе, нода поддерживает соединение только с теми стримами, адресами в которых владеет. Каждый родительский стрим имеет ровно 2 дочерних, в итоге получается иерархическое бинарное дерево.

 

01.jpg

Время от времени нода коннектится к пирам родительского стрима и демонстрирует, что жива. Кроме того, каждая нода держит в память краткий список нодов обоих дочерних стримов и корневого стрима #1.

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

Отдельный механизм предусмотрен в ВМ для рассылок (broadcast). В клиенте присутствует специальная секция рассылок. Используя эту функцию некто сможет анонимно рассылать любую информацию, и её получатели будут уверены, что отправил её именно он и дошла она без искажений.

 

Описание клиента

Объектом пересылки может быть запрос открытого ключа, открытый ключ или сообщение. Клиент поддерживает соединение с пирами своего стрима и скачивает те объекты, которых у него нет. После этого хранит 2 дня, потом удаляет.

На прием адресованного к нему сообщения клиент отвечает подтверждением. Таким образом, отправитель может понять, что его сообщение не дошло до адресата в течение 2 дней и отправить заново.

Знакомые с криптовалютными клиентами вряд ли найдут в программа BitMessage много нового. Пожалуй, единственный нюанс заключается в процессе генерации адреса, в которой возможны 2 опции.

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

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

Служебную информацию клиент хранит в папке ~/PyBitMessage (c:\Users\Alex\AppData\Roaming\PyBitmessage\ в случае windows). Внутри снова все до боли знакомо по криптовалютным клиентам. В текущей версии в ней присутствуют:

• keys.dat – файл ключей, аналог wallet.dat

• messages.dat – файл текущих сообщений. Размер на момент написания меньше 1 МБ.

• knownnodes.dat – инфо об известных пирах.

Мой клиент поддерживает 10 активных соединений и почти не генерирует трафика. Последнее, правда, может измениться с ростом использования сети.

04.jpg

 

Текущее состояние безопасности

С момента первых версий (ноябрь 2012) в ВМ было обнаружено несколько серьёзных уязвимостей. Так, при переходе с версии 0.1 до 0.2 был изменен алгоритм шифрования с RSA на ECC, что привело к обратной несовместимости. В данный момент официальный статус программы - «нуждается в независимом аудите безопасности».

Собственно, это вполне ожидаемо от криптографической системы, которой всего 3 месяца от роду.

 

В итоге

BitMessage предлагает систему, которая была бы проста в использовании, при этом хорошо защищена и высокоанонимна. Нельзя сказать, кто владеет какими адресами, нельзя понять, что эти несколько адресов принадлежат одному владельцу. Вероятность деанонимизации в такой системе мала, а передаваемая информция надежно зашифрована.

В перспективе протокол может найти применение как средство повседневной конфиденциальной переписки и анонимной рассылки информации — например торрент-файлов.

Разумеется, для особо снедаемых паранойен дам и господ, весь трафик без труда пускается через Tor.

 

Ссылки

BM-BcKajCHjXt1LeDZ9XM2F4BDwS4wssHu6 - пишите письма, шлите телеграммы. :)

https://bitmessage.org/wiki/Main_Page - официальный сайт. Почему-то редиректит на эту вики.

https://bitmessage.org/bitmessage.pdf - whitepaper

https://bitmessage.org/forum/ - форум проекта

https://bitcointalk.org/index.php?topic=128230.0;all - основная тема на bitcointalk

http://bitslog.wordpress.com/2012/11/30/bitmessage-completely-broken-crypto/ - первый доклад о безопасности. Уязвимость ветки 0.1



4 комментария


Рекомендуемые комментарии

 

Разумеется, для особо снедаемых паранойен дам и господ, весь трафик без труда пускается через Tor.

Так оно что, еще и не имеет встроенного тора или и2п?? Вот что туда нужно прикрутить и код выложить на обозрение..

Поделиться комментарием


Ссылка на комментарий

Русскоязычный "Хабрачат":

BM-BbtSwdV95YLwjRVytmPygHygL4LGEER6

Поделиться комментарием


Ссылка на комментарий

код клиента открыт   https://github.com/Bitmessage/PyBitmessage

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

Поделиться комментарием


Ссылка на комментарий

Пославил Bitmessage, вот мой адрес:

BM-oo7S4Rhesn2tBfsR6wyvD8ZaitkAKnTRM

Поделиться комментарием


Ссылка на комментарий

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×