Расширенный публичный ключ позволяет кошельку создавать все ваши адреса и видеть балансы, но не даёт права тратить средства, и именно его участники мультиподписи обменивают между собой при настройке хранилища: каждый отдаёт публичную часть, оставляя приватную у себя. Эта асимметрия и делает возможным совместный кошелёк без передачи ключей.

Расширенный публичный ключ — это структура, содержащая публичный ключ вместе с кодом цепочки, из которой выводится неограниченное число дочерних публичных ключей и соответствующих им адресов без какого-либо доступа к приватной части.

Что он содержит

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

Обратное вычисление не работает. Из публичной части приватную не восстановить, и в этом основа всей конструкции.

Схема из четырёх шагов: от экспорта ключа до хранения конфигурации
Схема из четырёх шагов: от экспорта ключа до хранения конфигурации

Зачем он нужен в мультиподписи

Задача Как решается
Создание общих адресов Каждый участник даёт свой ключ, из набора выводятся адреса
Просмотр балансов Любой участник видит состояние кошелька без права тратить
Проверка конфигурации Набор ключей позволяет убедиться в правильности настройки
Восстановление структуры Для сборки кошелька нужны все публичные ключи, а не только свой

Что нужно хранить помимо seed-фразы

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

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

Вопрос приватности

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

Чего делать не стоит

  • Публиковать расширенный ключ в открытых чатах при настройке
  • Передавать его сервисам, которым достаточно отдельного адреса
  • Хранить конфигурацию мультиподписи только у одного участника
  • Путать расширенный публичный ключ с приватным при экспорте

Ко мне обращалась группа, настроившая мультиподпись из трёх ключей, при этом конфигурацию сохранил только организатор, и когда его устройство вышло из строя вместе с резервной копией файла, оставшиеся двое не смогли собрать кошелёк. Их seed-фразы были целы, но без публичных ключей третьего участника и описания схемы адреса не выводились.

Как выглядит и где находится

Это длинная строка, начинающаяся с характерного префикса, который зависит от типа адресов и сети, причём кошельки экспортируют её в разделе настроек или при создании совместного хранилища, обычно с явным предупреждением о приватности. Сходство префиксов публичной и приватной версий требует внимания при копировании.

Пути деривации

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

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

Проверка перед объединением

Каждый участник должен сверить отпечаток своего ключа на собственном устройстве с тем, что видит в общей конфигурации, и эта проверка защищает от подмены: злоумышленник, заменивший один из ключей своим, получит контроль над кошельком при достижении порога подписей.

Отпечаток ключа

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

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

Кошельки только для наблюдения

Расширенный публичный ключ позволяет создать кошелёк, который видит балансы и историю, но не может подписывать. Это удобно для контроля состояния хранилища с обычного устройства без доступа к ключам, и для многих задач такого режима достаточно.

Смежные темы разобраны у нас. Вот основные. Общий раздел — кошельки и хранение. Шире — статьи про криптокошельки. Настройку хранилища разбирает материал как настроить мультисиг-хранилище для семьи, а устройство фразы — статья стандарт BIP-39 и слова восстановления.

Вопросы и ответы

Может ли кто-то украсть средства, зная расширенный публичный ключ?

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

Что делать при утрате файла конфигурации?

Если сохранились публичные ключи всех участников и параметры схемы, конфигурацию можно собрать заново вручную, а без них восстановление невозможно даже при наличии всех seed-фраз, и это главная причина хранить описание схемы отдельно у каждого участника.

Отличается ли он от обычного публичного ключа?

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

Вердикт

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

Стандарты проверяйте по первоисточникам. Описание стандарта иерархических кошельков BIP-32 и справка Ledger по работе с мультиподписью содержат техническое описание и порядок настройки.

Иван Григорьев, автор Cryptium. Практикующий разбор кошельков и самостоятельного хранения. Больше материалов — в Telegram-канале t.me/cryptiumru.