Перейти к содержимому
buybitcoinsmart

Глоссарий / Протокол и обновления

Подпись Schnorr

Другие названия: BIP340.

Что такое подпись Schnorr?
Подпись Schnorr представляет собой 64-байтовую схему подписи, которую биткоин принял вместе с Taproot, а ее определяющее свойство состоит в линейности: несколько ключей и подписей складываются в одну.

Определено в BIP-340.

Подписи ECDSA занимают 71 или 72 байта и не могут объединяться; подписи Schnorr всегда занимают 64 байта и могут. Это различие объясняет, почему два подписанта, или пятнадцать, могут создать одну подпись, проверяемую одним публичным ключом, без каких-либо данных ончейн о том, сколько их было. Биткоин получил эту схему в BIP-340, созданном в январе 2020 года и действующем с блока 709 632.

Как это работает

Схема использует ту же эллиптическую кривую, которую биткоин использовал всегда, secp256k1, и те же приватные ключи. Меняется алгебра вокруг них.

Чтобы подписать, вы выбираете секретный одноразовый номер (нонс), публикуете точку, которую он порождает, как R и вычисляете одно число s из нонса, хеша R вместе с публичным ключом и сообщением и вашего приватного ключа. Подпись представляет собой R и s, записанные по 32 байта, отсюда и берется фиксированная длина в 64 байта. Проверка перестраивает то же уравнение и убеждается, что две точки совпадают. ECDSA требует модульного обращения в середине этого вычисления; Schnorr не требует, и именно из-за отсутствующего обращения все остается линейным.

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

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

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

Есть причина, по которой ничего этого не появилось в 2009 году. Claus Schnorr располагал американским патентом 4 995 082 на эту схему, и он действовал до февраля 2008 года, за несколько месяцев до появления белой книги биткоина. ECDSA был тогда стандартом, свободным от патентов, поэтому биткоин вышел со вторым по качеству вариантом и ждал двенадцать лет, чтобы это исправить.

Почему это важно при покупке биткоина

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

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

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

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

MuSig2: два подписанта, одна подпись

MuSig2, стандартизированный как BIP-327, является протоколом, который превращает линейность в нечто, что кошельки действительно могут использовать.

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

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

Ончейн попадает одна подпись в 64 байта, тратящая один выход по пути ключа. Совместная трата двумя сторонами стоит около 57,5 vbytes, меньше любого другого типа входа, и наблюдатель не может определить, авторизовал ли ее один человек или комитет.

Подпись Schnorr vs подпись

В биткоине слово «подпись» без уточнений обычно по-прежнему означает ECDSA, и обе схемы используются ежедневно. Биткоины на адресе, начинающемся с 1, 3 или bc1q, тратятся с помощью ECDSA, точно так же, как в 2010 году. Биткоины на адресе bc1p тратятся с помощью Schnorr. Кошелек, хранящий и те и другие, а так поступает большинство кошельков с какой-либо историей, создает оба вида подписей в одной сессии, не упоминая об этом. Любой, кто говорит вам, что биткоин использует ECDSA, и точка, описывает протокол таким, каким он был до ноября 2021 года.

Подпись Schnorr vs MuSig2

Schnorr является схемой подписи; MuSig2 является одним протоколом, построенный на ней. Вы можете использовать Schnorr с одним ключом всегда и никогда не касаться MuSig2, что и делает сегодня каждый обычный кошелек Taproot. MuSig2 вступает в игру, только когда несколько сторон хотят выглядеть как одна, и это не единственный вариант, построенный на том же свойстве: пороговые схемы, которые допускают отсутствие подписанта, и адаптерные подписи, используемые для атомарных обменов и в Lightning, представляют собой отдельные конструкции, опирающиеся на ту же линейность.

Не путать с

Часто задаваемые вопросы

Безопаснее ли подписи Schnorr, чем ECDSA?

Они опираются на ту же кривую и те же размеры ключей, поэтому уровень безопасности сопоставим. Schnorr добавляет более простое доказательство безопасности, фиксированную длину в 64 байта и возможность объединять ключи, поэтому биткоин и принял его.

Почему биткоин не использовал подписи Schnorr с самого начала?

Из-за патента. Claus Schnorr владел патентом США 4 995 082 на эту схему, пока тот не истек в феврале 2008 года, за несколько месяцев до появления белой книги биткоина, поэтому на момент запуска доступным стандартом без патентных ограничений был ECDSA.

Нужно ли что-то делать, чтобы использовать подписи Schnorr?

Нет, кроме использования адреса Taproot. Любое расходование с выхода bc1p автоматически создает подпись Schnorr, а ваш кошелек продолжит создавать подписи ECDSA для биткоинов, хранящихся на адресах более старых типов.

Читайте далее

Связанные термины

Еще в разделе «Протокол и обновления»

Читать эту страницу на английском