Loading AI tools
Из Википедии, свободной энциклопедии
Мультиподпись (англ. 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].