Schnorr

Замена алгоритма цифровой подписи Bitcoin (ECDSA) на более эффективный алгоритм Schnorr уже давно находится в верхней части списка пожеланий многих разработчиков Биткоина. Простой алгоритм, использующий криптографию эллиптических кривых, Schnorr дает несколько улучшений по сравнению с существующей схемой, сохраняя при этом все ее функции, говорится в заявлении.

Примечательно, что подписи Schnorr поддерживают «native multisig», который позволяет агрегировать несколько подписей в одну, действительную для суммы ключей их соответствующих входов. Эта функциональность предлагает три важных преимущества:

  1. Сигнатуры с постоянным размером, независимо от количества участников в настройке мультивещания. Транзакция 50 на 50 фактически имеет тот же размер, что и тот, который использует один открытый ключ и подпись. По этой причине производительность таких схем значительно улучшается за счет устранения первоначального требования проверки каждой подписи в отдельности. Кроме того, проверка подписей Schnorr происходит несколько быстрее, чем проверка ECDSA.

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

  3. С точки зрения конфиденциальности Schnorr позволяет полностью исключить всю политику multisig и будет неотличим от обычного единого ключа.

К сожалению, в отличие от ECDSA, алгоритм Schnorr не был стандартизирован с момента его изобретения. Хотя их общие схемы системы математически обоснованы, но отсутствие документации и спецификаций делает ее более сложной для реализации.

По мнению разработчика Питера Велле, основная проблема, с которой могут столкнутся подписи Schnorr — их «отмена». Создание группой пользователей подписи, сочетающей сумму их ключей, открывает возможность для злоумышленника вычислить и исключить из всего ключа одного из пользователей. Однако, выход есть и из этой ситуации!

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

В ближайшей перспективе подписи Schnorr рассматриваются как жизнеспособная замена для двух важных функций протокола Биткоина: OP_CHECKSIG и OP_CHECKMULTISIG.

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

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

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

Довольно просто оценить тип экономии ресурсов, который был бы возможен, если бы агрегация подписи Schnorr была реализована с момента генезиса блока. Если предположить, что каждая историческая подпись будет уменьшена до 1 байта, за исключением одной транзакции, то это приведет к сокращению как минимум на 25% объема хранения и пропускной способности. А более широкое использование пороговых значений n-го уровня может привести к большей экономии.