Блокчейн/Уровень IV · Глубины протокола/4.3 Хранение и приватность/Урок 3
Мультиподпись: хранение и наследование
Распределение ключей между людьми, местами и во времени
МатериалыТри отдельных аппаратных кошелька или защищённых устройстваНадёжная офлайн-копия дескриптора кошелькаМеталлические пластины для резервного хранения сид-фразКошелёк в тестовом режиме (testnet или signet)
Любопытство
- Почему потеря ключа и его резервной копии означает конец для кошелька с одной подписью, а мультиподписной кошелёк может пережить такую потерю?
- Как кастодиан может хранить один ключ, чтобы помогать с восстановлением, в то время как владелец сохраняет фактический контроль над средствами?
- Какие именно данные, помимо самих сид-фраз, нужны для восстановления мультиподписного кошелька, если все устройства потеряны?
Исследование
- Стандартный кошелёк с одной подписью опирается на один приватный ключ. Если этот ключ украдут, вор сможет забрать всё; если ключ и все его резервные копии будут потеряны, монеты пропадут. Один секрет — это единая точка отказа. Мультиподписные схемы распределяют этот риск, требуя для авторизации любой транзакции нескольких разных ключей.
- В распространённой конфигурации 2 из 3 три приватных ключа создаются на отдельных устройствах, часто от разных производителей, и хранятся в разных физических местах. Любые два из этих ключей могут совместно подписать транзакцию. Если одно устройство потеряно или украдено, оставшиеся два по-прежнему контролируют средства, а один украденный ключ сам по себе не может их переместить.
- Совместное хранение (collaborative custody) формализует такое распределение для организаций и состоятельных частных лиц. Кастодиан хранит один ключ, чтобы предоставлять услуги восстановления и операционную поддержку, а владелец сохраняет два ключа. Такая структура позволяет получать профессиональную помощь, не уступая одностороннего контроля: если кастодиан выйдет из строя или будет скомпрометирован, двух ключей владельца по-прежнему достаточно для перемещения активов.
- Для восстановления после полной потери устройств одних сид-фраз недостаточно. Для воссоздания адресов необходима конфигурация кошелька — а именно расширенные публичные ключи (xpub) всех совместных подписантов и тип скрипта. Без этих метаданных одни лишь сиды не позволяют сгенерировать правильные адреса для получения средств. Для восстановления нужны эти xpub или дескриптор выходов (output descriptor), поэтому их необходимо резервировать вместе с сидами.
- Обратная сторона — сложность и стоимость. Управление тремя ключами увеличивает операционную нагрузку при повседневном использовании и планировании наследования. Транзакции с более крупными скриптами занимают больше байтов в блокчейне, что приводит к более высоким сетевым комиссиям по сравнению с транзакциями с одной подписью. Taproot может снизить эти издержки, если ключи агрегируются с помощью протоколов вроде MuSig2: тогда совместная трата выглядит как одна подпись. Однако большинство мультиподписных кошельков по-прежнему используют скриптовый P2WSH, а операционная сложность никуда не исчезает.
- Мультиподпись не гарантирует защиты от всех рисков. При взломе Bitfinex в 2016 году было украдено около 120 000 BTC из мультиподписной схемы с участием BitGo. Bitfinex держал два ключа из трёх, а сервис BitGo автоматически ставил вторую подпись в соответствии с настройками Bitfinex, поэтому злоумышленник, проникший в системы Bitfinex, мог набрать нужный порог подписей. Около 94 000 BTC удалось вернуть в 2022 году. Мультиподпись защищает ровно настолько, насколько независимы её ключи.
- Хранение биткоина сопряжено с фундаментальным противоречием: секретность, необходимая для защиты средств от кражи, делает их восстановление невозможным для наследников. Если держатель ключа умирает или становится недееспособным, не передав сведения о доступе, эти сатоши потеряны навсегда. Это не теория — именно поэтому при управлении цифровыми активами и планируют их «сохранность» (survivability). По оценкам аналитиков, миллионы монет утрачены из-за потерянных ключей по самым разным причинам, в том числе из-за смерти владельцев.
- Скриптовый движок Bitcoin позволяет закодировать логику, срабатывающую при определённых условиях. Дескриптор Miniscript, например `wsh(or_d(pk(@0), and_v(v:multi(2,@1,@2,@3), older(65535))))`, задаёт кошелёк, в котором один ключ (`@0`) может тратить средства сразу, а любые два из трёх других ключей (`@1`, `@2`, `@3`) — после того как пройдёт 65 535 блоков. Ключ владельца может тратить в любой момент; путь наследников открывается только по истечении задержки. (Кошельки отображают такие политики с плейсхолдерами вроде @0 вместо ключей.)
- Число 65 535 в этом скрипте обозначает конкретный срок. Примерно при десяти минутах на блок 65 535 блоков — максимум для относительного таймлока, отсчитываемого в блоках, — составляют около 455 дней. Это «наследственный замок». Поскольку таймлок относительный, отсчёт начинается с момента подтверждения монет, а не с момента исчезновения владельца. Владелец должен периодически перемещать монеты, чтобы путь наследников оставался закрытым; как только таймлок истечёт, наследники смогут тратить средства.
- Мультиподписные схемы распределяют контроль между доверенными сторонами, например родственником и юристом, специализирующимся на цифровых активах. В конфигурации 2 из 3 после истечения таймлока ни у одного человека нет полной власти единолично перемещать средства: требуются две подписи. Это повторяет традиционное планирование наследства, где исполнитель завещания работает вместе с наследниками. Тому, кто выступает исполнителем, нужно достаточно технических указаний, чтобы реализовать план.
- Обычно техническую настройку дополняют письмом с инструкциями, в котором объясняется, что существует и как этим пользоваться, но сами секреты не приводятся. Правила зависят от юрисдикции: во многих странах завещание после процедуры утверждения становится публичным документом, поэтому сид-фразам в нём не место. Поучительный пример сосредоточенного контроля — QuadrigaCX, канадская биржа, основатель которой Джеральд Коттен (Gerald Cotten) умер в декабре 2018 года, оставив перед клиентами долг около 215 млн канадских долларов; позже регуляторы установили, что потери возникли в основном из-за его мошенничества, которое было легко скрыть, поскольку ключи хранились у него одного. Обычно рекомендуется получить профессиональную юридическую консультацию.
- Прежде чем полагаться на план, его часто отрабатывают: настраивают ту же политику в testnet или с минимальной суммой, дожидаются истечения таймлока и проверяют, что ключи наследников действительно могут подписывать, — так становится известно, что техническая настройка соответствует юридическому замыслу. Кошельки на основе Miniscript, такие как Liana, созданы именно для такого восстановления с таймлоком.
Часть IХранение с мультиподписью
Часть IIПланирование наследования
Ключевые факты
- Мультиподпись 2 из 3 требует для авторизации транзакции двух разных подписей из трёх возможных ключей.
- При совместном хранении третья сторона держит один ключ для восстановления, а владелец — два оставшихся.
- Для восстановления мультиподписного кошелька необходимо сохранить резервные копии xpub всех совместных подписантов и тип скрипта, а не только сид-фразы.
- Исторически более крупные мультиподписные скрипты увеличивали комиссии за транзакции из-за большего размера в байтах в блокчейне.
- Взлом Bitfinex в 2016 году привёл к потере около 120 000 BTC из мультиподписной схемы с участием BitGo.
- Благодаря агрегированным ключам Taproot позволяет совместной трате с мультиподписью выглядеть как одна подпись.
- Дескриптор Miniscript `wsh(or_d(pk(@0), and_v(v:multi(2,@1,@2,@3), older(65535))))` допускает немедленную трату одним ключом или отложенную трату мультиподписью 2 из 3 после 65 535 блоков.
- Относительный таймлок (BIP68) может отложить путь восстановления максимум на 65 535 блоков — около 455 дней.
- Основатель QuadrigaCX умер в декабре 2018 года, оставив перед клиентами долг около 215 млн канадских долларов.
- Мультиподписные кошельки требуют для авторизации транзакции нескольких приватных ключей — например, конфигурация 2 из 3, используемая в продвинутых скриптах наследования.
- «Сохранность» (survivability) доступа к биткоину — важный аспект безопасности: без переданных сведений о доступе или мультиподписных схем средства после смерти владельца могут оказаться невосстановимыми.
- Во многих юрисдикциях завещания после процедуры утверждения становятся публичными, поэтому хранить в них секреты — плохая идея.
Упражнение девять, шесть, три, один
9СобратьПеречислите 9 различных схем хранения или стратегий управления ключами, которые используют частные лица или организации. Укажите, у кого хранится каждый ключ и что запускает процедуру восстановления.
6СгруппироватьРаспределите эти 9 схем по 6 категориям в зависимости от того, где кроется основной риск: ошибка владельца, сбой кастодиана, физическая потеря всех ключей, изъятие по закону, уязвимость протокола или социальная инженерия.
3Выделить главноеСведите 6 групп к 3 фундаментальным причинам, по которым мультиподписные схемы всё равно дают сбой, несмотря на распределённый характер.
1КристаллизоватьНапишите одно предложение о том, какие именно метаданные чаще всего теряются в резервных копиях мультиподписи, из-за чего сид-фразы становятся бесполезными.
Проверка фактов
Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.
- A. M. Antonopoulos & D. A. Harding, Mastering Bitcoin, 3rd ed. (2023), ch. 7
- BIP380: Output Script Descriptors General Operation
- Bitfinex hack public disclosures (2016)
- Chainalysis, Lost Coins Estimates (2020)
- Ontario Securities Commission, Report on QuadrigaCX (2020)
- Liana Wallet Documentation