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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Мультиподпись (англ. 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].

См. также[править | править код]

Примечания[править | править код]