Мультиподпись

Мультиподпись (англ. multisignature) — схема реализации электронной подписи, которая для своей достоверности требует T ключей из группы N членов[1] (T < N). По своей сути является вариантом пороговой подписи, но реализована не как единый объект, а как проверка заданных условий, которую осуществляет базовая система скриптов криптовалюты[2].

Мультиподпись в Биткойне

Особенностью Биткойна и многих других криптовалют является необратимость транзакций — нет механизма отмены вошедшей в блокчейн транзакции, а также нет возможности иного действия, игнорирующего волю текущего владельца. Но Биткойн имеет встроенный скриптовый язык (неполный по Тьюрингу), позволяющий указывать разнообразные дополнительные условия для проведения транзакций. Одно из возможных условий, реализуемых через скрипты — создание биткойн-адреса, для управления которым требуется оговорённое количество подписей из заданного списка (принцип T-из-N)[2].

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

В августе 2013 года компания BitGo[англ.] первой реализовала интерфейс, в котором адреса с мультиподписью клиенты компании могли создавать и использовать без прямого обращения к скриптам[3].

Мультиподпись в биткойне является набором подписей различных пользователей, а не одним объектом. Мультиподпись реализована в других криптовалютах разными способами[4][5]. Язык умных контрактов Эфириума обладает гораздо более широкими возможностями, чем скриптовый язык Биткойна.

Широкое распространение получили адреса, для операций с которыми нужны любые два ключа из оговорённых трёх. Чаще всего именно это и подразумевается под термином «Мультиподпись». Они позволяют реализовать обратимые транзакции.

Обратимые транзакции в Биткойне

Необратимость транзакций становится существенной проблемой, если стороны не очень доверяют друг другу или если есть иная угроза неисполнения договорённости. Подобные ситуации часто возникают при покупках в интернет-магазинах. При неполучении товара или иных претензиях в сети Биткойна не существует механизмов или гарантий возврата средств, в то время как при оплате через VISA или MasterCard клиент может воспользоваться процедурой возвратного платёжа.

В системе Биткойн подобного эффекта можно достигнуть при использовании трёхсторонней мультиподписи — привлечении в качестве третьей стороны арбитра, с которым соглашаются участники сделки. С использованием открытых ключей всех трёх сторон генерируется новый адрес, который связывается со скриптом условий[1], где прописывается, что для создания новой транзакции достаточно двух подписей. Правила (условия для скриптов) указываются при создании адреса, становятся его составной частью и не могут измениться без изменения самого адреса.

  • Покупатель делает перевод на созданный адрес, который в полной мере не принадлежит ни одной из сторон и является транзитным.
  • Продавец видит поступление, отправляет товар и создаёт транзакцию о переводе средств с транзитного адреса на свой. Но средства «повисают», так как ни одна из сторон, в том числе арбитр, не может распорядиться ими самостоятельно[6].
  • Покупатель получает товар. Если всё в порядке, покупатель накладывает на транзакцию, сформированную продавцом, свою подпись. Наличие второй подписи является выполнением скриптового условия для отправки средств в адрес продавца.
  • Если товар не дошёл или покупатель его вернул, то покупатель формирует новую транзакцию для возврата средств с транзитного адреса на свой, подписывает её и предлагает подписать продавцу. При согласии продавца средства вернутся покупателю. Если консенсус не достигнут, то последнее слово остается за арбитром.
  • Рассмотрев ситуацию, арбитр принимает решение либо о передаче средств продавцу (и налагает свою подпись на транзакцию, подготовленную продавцом), либо о возврате средств покупателю (и налагает свою подпись на транзакцию, подготовленную покупателем).
  • Договор может предусматривать вознаграждение арбитру. Тогда арбитр создаёт ещё одну транзакцию с разделением платежа как в пользу одной из сторон, так и в свою собственную, а затем предлагает соответствующей стороне наложить свою подпись.

Неподписанные «лишние» транзакции утратят свою актуальность после отправки средств и не приведут к двойной трате.

Иное применение мультиподписи

Принцип мультиподписи может использоваться для повышения уровня безопасности при платежах криптовалютой. Формула 2-из-3 позволяет создать корпоративный адрес на основе подписей владельца, директора и бухгалтера[1].

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

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

Атака «дней рождения»

Мультиподписные адреса Биткойна используют P2SH и защищены с помощью HASH160 (160-битная хеш-функция). Если злоумышленник владеет хотя бы 1 ключом из мультиподписного списка, то с учётом коллизии хеша для подделки чужой подписи он может снизить количество вариантов перебора до 280, что уже осуществимо для современных вычислительных систем[7].

См. также

Примечания

  1. 1 2 3 Безопасность Биткоина это не только мультиподписи Архивная копия от 20 июня 2018 на Wayback Machine // coinspot.io 30.08.2016
  2. 1 2 Биткойн — это финансовая платформа с разнообразными API // Bit•Новости. Дата обращения: 30 ноября 2017. Архивировано 4 марта 2014 года.
  3. How 2014 Became the Year of Multisig. Дата обращения: 17 июля 2015. Архивировано 26 июля 2015 года.
  4. Bytecoin (BCN) is Now Armed With Multisig. Coinbrief.com. Дата обращения: 16 сентября 2015. Архивировано 28 февраля 2015 года.
  5. NXT Teases Voting System, 'Two Phase Transactions' and a Foundation. Cointelegraph. Дата обращения: 30 ноября 2017. Архивировано 20 сентября 2015 года.
  6. Обратимые транзакции в Bitcoin. Дата обращения: 30 ноября 2017. Архивировано 7 февраля 2014 года.
  7. Segregated Witness Benefits. Дата обращения: 26 декабря 2017. Архивировано 26 апреля 2018 года.