Мессенджер Signal возобновил публикацию серверного кода и интегрировал криптовалюту

Организация Signal Technology Foundation, развивающая систему защищённых коммуникаций Signal, возобновила публикацию кода серверных частей мессенджера. Код проекта изначально было открыт под лицензией AGPLv3, но публикация изменений в публичном репозитории без объяснения причин была прекращена 22 апреля прошлого года. Обновление репозитория прекратилось после объявления о намерении интегрировать в Signal систему платежей.

На днях началось тестирование встроенной в Signal системы платежей, основанной на собственной криптовалюте MobileCoin (MOB), разработанной Мокси Марлинспайком (Moxie Marlinspike), автором протокола Signal. Примерно в это же время в репозитории были опубликованы накопившиеся за год изменения серверных компонентов, в том числе включающие реализацию системы платежей.


Криптовалюта MobileCoin спроектирована для построения сети мобильных платежей, обеспечивающей конфиденциальность пользователей. Данные пользователей остаются только в их руках и разработчики Signal или администраторы элементов инфраструктуры не имеют возможность получить доступ к деньгам, данным о балансе пользователя и истории транзакций. Платёжная сеть не имеет единой точки контроля и основывается на идее долевого владения, суть которой в том, все средства сети образуются как совокупность индивидуальных долей, которыми можно обмениваться. Общий размер средств в сети фиксирован и составляет 250 миллионов MOB.

В основе MobileCoin лежит блокчейн, в котором сохраняется история всех успешных платежей. Для подтверждения владением средств необходимо наличие двух ключей – ключ для передачи средств и ключ для просмотра состояния. Для большинства пользователей указанные ключи можно извлечь из общего базового ключа. Для получения платежа пользователь должен предоставить отправителю два открытых ключа, соответствующих имеющимся закрытым ключам, используемым для отправки и подтверждения владением средств. Транзакции формируются на компьютере или смартфоне пользователя, после чего передаются на один из узлов, имеющих статус валидатора, для обработки в изолированном анклаве. Валидаторы проверяют транзакцию и по цепочке (peer to peer) делятся информацией о транзакции с другими узлами с сети MobileCoin.

Данные могут быть переданы только узлам криптографичкески подтвердившим использование в анклаве немодифицированного кода MobileCoin. Каждый изолированный анклав реплицирует конечный автомат (state machine), который добавляет действительные транзакции в блокчейн, используя для подтверждения платежей алгоритм достижения консенсуса (MobileCoin Consensus Protocol). Узлы также могут брать на себя роль полных валидаторов, которые дополнительно формируют и размещают в сетях доставки контента публичную копию вычисленного блокчейна. В итоговом блокчейне отсутствуют сведения, позволяющие идентифицировать пользователя без знания его ключей. В блокчейне присутствуют лишь идентификаторы, вычисленные на основе ключей пользователя, зашифрованные данные о средствах и метаданные для контроля целостности.

Для обеспечения целостности и защиты от искажения данных задним числом применяется древовидная структура “дерево Меркла” (Merkle Tree), в которой каждая ветка верифицирует все нижележащие ветки и узлы благодаря совместному (древовидному) хешированию. Имея конечный хеш, пользователь может удостовериться в корректности всей истории операций, а также в корректности прошлых состояний БД (корневой проверочный хеш нового состояния базы вычисляется с учётом прошлого состояния).

Кроме валидаторов в сети также имеются наблюдающие узлы (Watcher), которые занимаются верификацией цифровых подписей, которые валидаторы прикрепляют к каждому блоку в блокчейне. Наблюдающие узлы постоянно отслеживают целостность децентрализованной сети, поддерживают собственные локальные копии блокчейна и предоставляют API для приложений-кошельков и клиентов, занимающихся обменом. Валидатор и наблюдающий узел может запустить любой желающий, для этого распространяются соответствующие сервисы, образы анклава для Intel SGX и демон mobilecoind.

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

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

Release. Ссылка here.