Цифровые подписи – это основа онлайн-суверенитета. Появление в 1976 году криптографии с открытым ключом открыло путь к созданию глобального средства коммуникации – интернета – и совершенно новой формы денег, Биткойна. Хотя фундаментальные свойства криптографии с открытым ключом с тех пор не сильно изменились, сегодня криптографам доступны уже десятки различных схем цифровой подписи с открытыми исходниками.
Когда Сатоши Накамото начинал работать над Биткойном, один из ключевых моментов, которые необходимо было учесть, заключался в том, какую из схем подписи следует выбрать для открытой и общедоступной финансовой системы. Требования были ясны: нужно было создать алгоритм, который был бы широко используем, понятен, достаточно безопасен, лёгок и, самое главное, с открытым исходным кодом. Из всех доступных на тот момент опций он выбрал ту, что отвечает этим критериям лучше всего: Elliptic Curve Digital Signature Algorithm (алгоритм цифровой подписи, основанный на эллиптических кривых), или ECDSA.
В то время нативная поддержка ECDSA была предусмотрена в OpenSSL, открытом наборе инструментов шифрования, разработанных шифропанками со стажем с целью повышения конфиденциальности онлайн-коммуникаций. По сравнению с другими популярными схемами, ECDSA обладает такими преимуществами, как меньшая требовательность к вычислительным ресурсам и меньшая длина ключей – это полезные свойства для цифровых денег. В то же время он обеспечивает пропорциональный уровень безопасности для таких схем, как RSA: к примеру, 256-битный ECDSA-ключ обладает равноценным в сравнении с 3072-битным RSA-ключом уровнем безопасности при значительно меньшем размере ключа.
Благодаря тяжёлой работе, проделанной Питером Вуйле с коллегами над улучшенной эллиптической кривой, называемой secp256k1, ECDSA Биткойна стал ещё быстрее и эффективнее. Однако ECDSA по-прежнему присущи и некоторые недостатки, которые могут служить достаточным основанием и для полной его замены. После нескольких лет исследований и экспериментов была установлена новая схема подписи, повышающая конфиденциальность и эффективность транзакций Биткойна: схема цифровой подписи Шнорра.
В этой статье я расскажу в общих чертах о многочисленных имплементациях подписей Шнорра и о преимуществах этих подписей. Затем мы поговорим о MuSig, новом стандарте мультиподписи, который может служить основой для внедрения новых биткойн-технологий, таких как Taproot. Наконец, я расскажу вам, как полная реализация подписей Шнорра может нарушить используемую в блокчейн-аналитике эвристику и в то же время способствовать развитию сильного рынка комиссий на основном слое Биткойна.
История появления подписей Шнорра
Притом, что схема цифровых подписей Шнорра обладает множеством преимуществ по сравнению с ECDSA, она определённо не нова. Она была изобретена ещё в 1980 гг. Клаусом-Петером Шнорром, немецким криптографом и академиком, на тот момент профессором и исследователем Франкфуртского университета. В основание предложенной им схемы подписи легли исследования и работы Дэвида Чаума, Тахера Эль-Гамаля, Амоса Фьята и Ади Шамира. Тем не менее, прежде чем опубликовать новую схему, Клаус Шнорр заполнил множество патентов, которые в течение многих лет препятствовали её прямому использованию.
Интересно, что предшественник ECDSA, алгоритм DSA, представлял собой гибрид схем Эль-Гамаля и Шнорра, созданный исключительно для обхода патентов Клауса Шнорра. На самом деле, всего через два месяца после выдачи американского патента Клаусу Шнорру прародитель DSA, Национальный институт стандартов и технологий США (NIST), также оформил патент для своего решения. После этого Клаус Шнорр стал ещё активнее защищать свои патенты и прямо ответил своим критикам в рассылке Coderpunks (ответвлении оригинальной email-рассылки Cypherpunks). Его ответы можно прочитать здесь и здесь (англ.). А здесь можно найти внутреннюю записку NIST с описанием патентных проблем.
В 2008 году, спустя почти два десятилетия после представления схемы подписи Шнорра, срок действия патента Клауса Шнорра истёк. По совпадению, 2008 стал также годом, когда Сатоши Накамото, представил миру Биткойн. Несмотря на то что подписи Шнорра на тот момент уже можно было использовать, они ещё не были стандартизированными или широко используемыми. Вероятно, поэтому Сатоши и остановил свой выбор на ECDSA. И, хотя криптографы и математики часто характеризуют этот алгори, ECDSA до сих пор довольно широко используется, а на тот момент он был более безопасной опцией для Биткойна.
Алгоритм цифровой подписи RSA
Текущий стандарт интернета для шифрования сообщений, нарушая алгоритм RSA известен как проблема RSA. Его односторонняя функция потайных входов основана на концепции простой факторизации.
RSA является более громоздким, чем другие алгоритмы цифровой подписи, и используется для массового шифрования, а не для непосредственного шифрования пользовательских данных. Тем не менее, он остается безусловно самым популярным алгоритмом цифровой подписи, используемым сегодня.
Подписи Шнорра в Биткойне
Пропустим на быстрой перемотке ещё одно десятилетие и перенесёмся в сегодняшний день. Схема подписей Шнорра теперь выглядит намного менее эзотерично и её стандартизированные реализации – такие как ed25519 – становятся популярной опцией для некоторых альткойнов. Неформальные разговоры о потенциальной реализации подписей Шнорра в сети Биткойна восходят к этой ветке форума BitcoinTalk, датируемой 2014 годом, но предложение было формализовано только после нескольких лет исследований и экспериментов, когда Питер Вуйле написал Schnorr BIP (Bitcoin Improvement Proposal, «предложение по улучшению Биткойна»). В этом черновике предложения описывается спецификации и технические аспекты потенциальной реализации подписей Шнорра, которые будут обладать следующими преимуществами по сравнению с ECDSA:
- Доказательство безопасности:
Безопасность подписей Шнорра легко доказывается при использовании в достаточной мере случайной хеш-функции (модель случайных оракулов) и достаточной сложности задачи дискретного логарифмирования в группе точек эллиптической кривой (elliptic curve discrete logarithm problem, ECDLP). Для ECDSA такого доказательства не существует. - Негибкость:
ECDSA-подписи по своей природе являются гибкими, что может позволить третьей стороне, не имеющей доступа к секретному ключу, изменить существующую действительную подпись и расходовать средства дважды. Официально эта проблема обсуждалась в BIP62. Для сравнения, подписи Шнорра являются доказуемо негибкими. - Линейность:
Подписи Шнорра обладают замечательным свойством: несколько сторон могут совместно создать подпись, действительную для суммы их открытых ключей. Это может служить конструкционным блоком для различных конструкций более высокого уровня, повышающих эффективность и приватность – таких как мультиподписи и прочие смарт-контракты.
Доказательства безопасности подписей Шнорра, а также гарантия их негибкости, дают им явные преимущества над ECDSA. Уже эти два преимущества могут служить достаточным основанием для софт-форка. Но особенно впечатляющим свойством подписей Шнорра является их линейность. В частности, это позволяет нескольким подписантам транзакции с мультиподписью объединять свои открытые ключи в один агрегированный ключ, представляющий всю группу – это свойство называется агрегированием ключей.
Хотя возможность объединения ключей в один может прозвучать несколько тривиально, преимуществ этого не следует недооценивать. Поскольку в ECDSA нет нативной поддержки мультиподписей, в Биткойне их пришлось реализовывать через стандартизированный смарт-контракт (да-да, в Биткойне тоже есть смарт-контракты), называемый Pay-to-ScriptHash (P2SH). Он позволяет пользователям добавлять условия расходования, называемые обременениями, чтобы указать, как могут быть потрачены средства – например, «разблокировать баланс только если сообщение подпишут Боб и Алиса».
Первая проблема с P2SH заключается в том, что он требует знания открытых ключей всех участников мультиподписи, что не является эффективной системой. Агрегирование этих ключей позволило бы оптимизировать проверку, поскольку сети понадобилось бы верифицировать лишь один ключ, а не несколько. Это также подразумевает меньший след в блокчейне, меньшую стоимость транзакции и улучшение пропускной способности сети.
Вторая проблема с P2SH заключается в том, что он предлагает очень небольшие гарантии конфиденциальности. Как указывалось в BIP13, для P2SH-транзакций необходимо, чтобы адреса начинались с цифры 3. Это позволяет блокчейн-аналитикам не только распознавать все P2SH-транзакции в сети, но и точно определять адреса, участвующие в мультиподписи:
Блокчейн-аналитик: «Определённо, мультиподпись». – Не хорошо.
В примере выше сеть будет знать (1) о существовании транзакции с мультиподписью, (2) о том, сколько адресов участвуют в мультиподписи и (3) о том, кто именно подписал транзакцию. Не здорово для операционной безопасности, особенно для таких вариантов использования, как 2FA. Это плохо с точки зрения конфиденциальности.
Агрегирование ключей, с другой стороны, сохраняет анонимность участников мультиподписи и не компрометирует операционную безопасность через раскрытие ключей, необходимых для разблокирования баланса. Самое главное, агрегирование ключей позволяет сделать транзакции с мультиподписью неотличимыми от обычных транзакций:
Блокчейн-аналитик: «Это может быть мультиподписью… Невозможно сказать наверняка…» – Теперь хорошо.
Первая итерация подписей Шнорра в Биткойне упразднит семейство опкодов OP_CHECKSIG и OP_CHECKMULTISIG, используемых в настоящее время с ECDSA, в пользу нового класса опкодов, называемого OP_CHECKDLS. Если не слишком вдаваться в подробности, DLS означает Discrete Log Signature (подпись с дискретным логарифмированием), и это позволяет верифицировать подписи эффективнее и с меньшим количеством опкодов.
Ещё в начале 2020 года Грегори Максвелл, Эндрю Поэлстра, Янник Сеурин и Питер Вуйле опубликовали уайтпэйпер новой, основанной на подписи Шнорра схемы мультиподписи, под названием MuSig. После этой публикации они много работали над переводом предлагаемой схемы мультиподписи в пригодный для использования код.
Одним из самых интересных моментов в MuSig в контексте агрегирования ключей является возможность создания приватных смарт-контрактов вне блокчейна. По сути, MuSig позволяет участникам мультиподписи применять обременения к агрегированным ключам офчейн, не разглашая этих условий и совершенно отдельно от правил консенсуса Биткойна.
В декабре 2020 года Энтони Таунс стал первым разработчиком Bitcoin Core, подготовившим полуформализованное предложение по активации подписей Шнорра, которое было представлено в рассылке для разработчиков Биткойна. Я ожидаю, что в ближайшие месяцы количество разговоров о потенциальном софт-форке возрастёт.
Подводя итог сказанному, первая итерация MuSig в Биткойне будет обладать поддержкой агрегирования ключей, что может немедленно (1) улучшить конфиденциальность мультиподписей, (2) повысить эффективность проверки транзакций, (3) повысить безопасность за счёт устранения проблем, присущих ECDSA, и (4) обеспечить возможность для интеграции таких смарт-контрактов, как Taproot, о котором мы поговорим в следующем разделе.
И это только начало.
Подписи Лампорта
Подписи Лампорта были одними из первых цифровых подписей и, в частности, одноразовыми ключами, которые нельзя использовать повторно.
Изобретенные Лесли Лэмпортом в 1979 году, подписи Лампорта могут быть защищены с помощью любой односторонней функции потайных входов, что делает их чрезвычайно гибкими в своей конструкции. Обычно они используют хеш-функции, и их безопасность напрямую зависит от безопасности хеш-функции.
Сигнатуры Лампорт могут быть построены из современных криптографических хеш-функций, таких как квантово-устойчивый хэш Скейна или Кеккака.
Поскольку они могут работать с большими хэш-функциями, такими как Скейн и Кеккэк, Лампортс идеально подходят для квантового сопротивления на ранних стадиях, хотя прогнозировать динамический потенциал квантовых компьютеров и вытекающие из них успехи практически невозможно.
Вывод
Криптографические подписи были интересной областью изучения с момента их создания. Криптовалюты ускорили темпы разработок в области криптографии с момента их распространения и выхода. Более продвинутые схемы подписи, несомненно, будут развиваться по мере развития отрасли.
На данный момент, ECDSA, кажется, доминирует как основной выбор для большинства криптовалютных сетей, в то время как кольцевые подписи популярны среди криптовалют, более ориентированных на конфиденциальность.
Некоторое время вокруг подписей Шнорра было много волнений, и их ожидающая интеграция в Биткойн должна обеспечить отличные преимущества унаследованной криптовалюты.
Кольцевые подписи
Кольцевая подпись — это тип цифровой подписи, которая запутывает фактического подписавшего транзакцию, смешивая его подпись в группе (кольце) других действительных подписей. Это работает так, чтобы в вычислительном отношении было невозможно определить, кто является истинной подписавшей стороной транзакции.
Кольцевые подписи используются в монетах CryptoNote, включая Monero. Monero использует кольцевые подписи, беря ключ учетной записи отправителя транзакции и смешивая его с другими открытыми ключами, чтобы все члены кольца были равны и действительны.
Открытые ключи могут быть использованы несколько раз для различных кольцевых подписей в сети. В Monero они предназначены для повышения функциональности токена XMR, гарантируя, что выходные данные транзакций не будут отслеживаться.
Существует несколько типов кольцевых подписей. Кольцевые подписи в Monero основаны на отслеживаемых кольцевых подписях, прежде чем они будут оптимизированы для получения конфиденциальных транзакций кольца, что является их текущей итерацией в Monero.
Алгоритм цифровой подписи эллиптической кривой (ECDSA)
ECDSA используется во многих криптовалютах и является предпочтительным алгоритмом цифровой подписи для Биткоина до его перехода к подписи Schnorr.
ECDSA более эффективен, чем криптография RSA, благодаря гораздо меньшему размеру ключа. Это оптимальный выбор для блокчейнов, которым необходимо уменьшить разрастание сети.
ECDSA опирается на понятие точечного умножения для обеспечения односторонней функциональности потайного входа, необходимого для цифровой подписи. Шифрование для ECDSA основано на алгебраической функции и ее кривой на конечном графе. Хорошая случайность важна для любого алгоритма цифровой подписи, но особенно важна для ECDSA.
384-битный ключ ECDSA считается достаточно безопасным для самой секретной правительственной службы АНБ (США).