Мультипідпис
Мультипідпис (англ. multisignature) — схема реалізації електронного підпису, яка для своєї достовірності вимагає T ключів з групи N членів[1]. По своїй суті є варіантом порогового підпису, але реалізована не як єдиний об'єкт, а як перевірка заданих умов, яку здійснює базова система скриптів криптовалюти[2].
Мультипідпис в Біткоїні
Особливістю Біткоїна і багатьох інших криптовалют є незворотність транзакцій — немає механізму скасування підтвердженої операції або примусової дії, крім волі власника секретного ключа. Але Біткоїн має вбудовану мову сценаріїв, яка дозволяє вказувати різноманітні додаткові умови для проведення транзакцій. Одна з можливих умов, які реалізуються через скрипти, створення біткойн-адреси, для управління яким потрібно обумовлену кількість підписів із заданого списку (принцип T-N).
У серпні 2013 року компанія BitGo першою реалізувала гаманець з мультипідписом, який клієнти компанії могли створювати і використовувати через інтерфейс без прямого звернення до скриптів[3].
Перший символ створених з використанням мультипідпису біткоїн-адрес є трійка (звичайні біткойн-адреси починаються з одиниці).
Широке поширення отримали адреси, для операцій з якими потрібні будь-які два ключа з обговорених трьох. Найчастіше саме це і мається на увазі під терміном «мультипідпис». Вони дозволяють реалізувати оборотні транзакції.
Мультипідпис в біткоїні є набором підписів різних користувачів, а не одним об'єктом. Мультипідпис реалізований і в інших криптовалютах різними способами[4][5]. Мова розумних контрактів Ethereum володіє значно ширшими можливостями, ніж скриптова мова Біткоїна.
Оборотні транзакції в Біткоїні
Незворотність транзакцій стає суттєвою проблемою, якщо сторони не дуже довіряють один одному або є інша загроза невиконання домовленості. Подібні ситуації часто виникають при здійсненні покупки в інтернет-магазинах. При неотриманні товару або інших претензії немає гарантій повернення коштів. При оплаті через VISA або MasterCard клієнт може скористатися процедурою зворотного платежу.
В системі Біткоїн подібна процедура реалізується наступним чином.
Сторони домовляються про використання мультипідпису з залученням третьої сторони — арбітра. З використанням відкритих ключів всіх трьох сторін генерується нова адреса, яка пов'язується зі скриптом умов, де вказано, що для створення нової транзакції достатньо двох підписів. Правила створюються при створенні адреси і ніколи не можуть бути змінені.
Покупець робить грошовий переказ на створену адресу. Продавець бачить надходження, відправляє товар і створює транзакцію про переказ коштів з адреси з мультипідписом на свій. Але кошти блокуються, так як ні одна з сторін, у тому числі арбітр, не може ними самостійно розпорядитися[6]. Покупець отримує товар. Якщо все в порядку, покупець накладає на транзакцію, сформовану продавцем, свій підпис, тим самим розблокуються кошти, які йдуть на адресу продавця. Якщо товар не дійшов або покупець його повернув, то покупець формує нову транзакцію з транзитної адреси на свою, підписує її і пропонує підписати продавцю. За згодою продавця, кошти повернуться покупцеві. Якщо згода не досягнута, то останнє слово буде за арбітром. Розглянувши ситуацію, арбітр приймає рішення про передачу коштів продавцю (і накладає свій підпис на транзакцію, підготовлену продавцем) або про повернення коштів покупцю (і накладає свій підпис на транзакцію, підготовлену покупцем). Договір може передбачати винагороду арбітру. Тоді арбітр створює транзакцію з поділом платежу на користь однієї з сторін, так і у свою власну, і пропонує відповідній стороні накласти свій підпис.
Інше застосування мультипідпису
Принцип мультипідпису може використовуватися для підвищення рівня безпеки при платежах криптовалютою. Формула 2-3 дозволяє створити корпоративну адресу на основі підписів власника, директора та бухгалтера.
При мультипідписі, складеному із підписів членів сім'ї з невеликою кількістю обов'язкових підписів, втрата секретного ключа не стає катастрофічною проблемою. Навіть якщо ключ потрапить у чужі руки, зловмисник навряд чи зможе переконати родичів потерпілого підписати транзакцію.
Мультипідпис, для якого потрібно більше половини членів піклувальної ради якогось фонду, автоматично буде виконувати роль голосування при розгляді рішень про напрямки використання коштів. Оплачуватися будуть тільки ті проекти, які отримають більшість голосів у формі підписів під транзакцією.
Атака «днів народження»
Мультипідписані адреси Біткоїна використовують P2SH і захищені за допомогою HASH160 (160-бітна хеш-функція). Якщо зловмисник володіє хоча б 1 ключем з мультипідписного списку, то з урахуванням колізії хешу для підробки чужого підпису він може знизити кількість варіантів перебору до 280, що вже здійсненно для сучасних обчислювальних систем[7].
Див. також
Примітки
- Безопасность Биткоина это не только мультиподписи // coinspot.io 30.08.2016
- Биткойн — это финансовая платформа с разнообразными API // Bit•Новости
- How 2014 Became the Year of Multisig. Coindesk.com. Процитовано 17 липня 2015.
- Bytecoin (BCN) is Now Armed With Multisig. Coinbrief.com. Процитовано 16 вересня 2015.
- NXT Teases Voting System, 'Two Phase Transactions' and a Foundation. Cointelegraph.
- Обратимые транзакции в Bitcoin
- Segregated Witness Benefits