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

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

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

Мультиподпись в Биткойне[править | править код]

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

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

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

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

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

Обратимые транзакции в Биткойне[править | править код]

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

В системе Биткойн подобная процедура реализуется следующим образом.

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

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

Иное применение мультиподписи[править | править код]

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

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

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

Атака «дней рождения»[править | править код]

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

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

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