June 18, 2020

ION от Майкрософта

Photo by puuikibeach

10 июня в блоге Майкрософт была опубликована статья о запуске ION — сети децентрализованных персональных идентификаторов — в майннете Биткоина. Стандарт Децентрализованных идентификаторов (The Bitcoin Reference DID) продвигается добровольным объединением W3C в том числе для развития идей децентрализованного подтверждения личности и так называемой "перезагрузки" Web of trust. Ссылки на репозитории и спецификации в блоге. ДИД, в отличие от адресов электронной почты, номеров телефонов, логинов, генерируются, контролируются и хранятся децентрализованно. Такая возможность обеспечивается качествами p2p сети (Биткоина) и возможностью отправки транзакции из любой точки в мире, в которой есть интернет. Концептуально всё просто, и казалось бы, зачем для этого нужны отдельные стандарты и корпоративные объединения ведь кошельков для биткоинов и так огромное множестово.

Принципиально, проблема состоит в необходимости стандартизации протокола и небольших доработках в самом протоколе Биткоина, которые упрощают работу не только узлов сети протокола идентификации поверх Биткоина, но и позволяют работать с минимальной дополнительной нагрузкой на устройства пользователей. Год назад мы приводили в канале ссылку на статью “BTCR DID Method Updates”, в которой достаточно подробно описан механизм использования специальных ссылок внутри блокчейна Биткоина для создания DID. Представим, что помимо специальных индентификаторов транзакций мы возможно хотели бы иметь набор программ, которые позволяют их находить во всех 600 000 блоках Биткоина и строить отдельную базу данных публичных ключей, подобно базам данных, в которых хранятся PGP ключи в действующих централизованных серверах ключей. Достоинства такого клиента состояли бы в том, что он мог бы работать в любой точке мира просто подключаясь к сети Интернет и синхронизируя свою базу данных с публичным блокчейном Биткоина.

ION от Microsoft использует целый набор компонентов, который выходит за границы минимального клиента, который мог бы просто отслеживать специальным образом сохранённые публичные ключи внутри всеобщей базы данных Биткоина. Для узла ION создатели предлагают поддерживать следующие элементы инфраструктуры:

  1. Ядро ION(TypeScript)
  2. Узел Bitcoin (Bitcoin Core)
  3. Узел IPFS (JS IPFS) — децентрализованной файловой системы
  4. Базу данных MongoDB

В конечном итоге, если пользователь не может запустить полный набор компонентов для работы узла, то ему нужно найти узел ION для публикации своего ION DID. Уже дальше от идеалов децентрализации, не так ли?

Схема, надо которой работают Blockchain Commons проще. BTCR DID могли бы требовать практически единственного стандартного взаимодействия кошелька с блокчейном Биткоина: генерации и отправки специальной транзакции. Нужно отметить, что стандарты генерации кошельков Биткоина допускают создание неограниченного количества пар приватного и публичного ключа. Пара, ответственная за DID должна была бы вообще не пересекаться с ключами, созданными для приёма и отправки биткоинов.

В Samourai Wallet уже несколько лет как разработана и поддерживается функция paynym'ов — платёжных псевдонимов, которые регистрируются в блокчейне Биткоина специальной транзакцией. Такие псевдонимы имеют короткие запоминающиеся сочетания слов, а их функция повышения приватности состоит в регистрации "сессионного" публичного ключа, из которого выводятся адреса Биткоина без необходимости запроса нового адреса. Для новой отправки используется новый адрес по умолчанию, как это предусмотрено протоколом. Недостаток данного метода состоит в том, что для каждого "канала" с новым корреспондентом нужно совершить отдельную транзакцию. В случае протокола идентификации это было бы чрезмерно накладно, однако пример Samourai Wallet приведён здесь в другом контексте. Реализация дополнительного протокола в отдельном кошельке (хотя, протокол открытый, никто больше не внедрил paynym) поверх протокола Биткоин реалистична.

Похожим на paynym образом кошельки могли бы поддерживать и DID, поиск по идентификатору и выгрузку публичных ключей во внешние приложения. В таком случае, получая e-mail на мобильный телефон, биткоинер мог бы верифицировать прикреплённый к письму публичный ключ через кошелёк и убедиться, что он получил письмо от определённой персоны.

Ссылки:

Спецификация W3C https://w3c.github.io/did-core/

BTCR DID Method https://w3c-ccg.github.io/didm-btcr/

Спецификация Blockchain Commons https://identity.foundation/sidetree/spec/