Автор: Омер Шломовиц, ZenGo.
Схема пороговой подписи (TSS) — это криптографическая примитивная схема для генерации и подписания распределенных ключей. Использование TSS в вычислениях блокчейна — это новая парадигма, которая может предложить множество различных преимуществ, особенно с точки зрения безопасности. То есть TSS может влиять на разработку систем управления ключами (таких как цифровые кошельки) и лидировать в области локальной поддержки в случаях использования DeFi. Однако TSS по-прежнему является новой технологией, поэтому при ее использовании также необходимо учитывать риски и ограничения.
В этой статье мы расскажем, что такое TSS, какие потенциальные преимущества он может принести в область блокчейна, как его можно реализовать в клиентском блокчейне, как его сравнивать с разделением секретов Шамира и Multisig, каковы различные способы использования TSS. в распределенном управлении ключами, и, наконец, мы обсуждаем его потенциальные риски и ограничения.
Роль шифрования
Чтобы понять TSS, нам сначала нужны базовые знания о криптографии. С 1970-х годов в интернет-системах используется все больше и больше асимметричного шифрования (например, TLS и PGP), которое также известно как криптография с открытым ключом (PKC). PKC использует два ключа: открытый и закрытый. Хотя открытый ключ не является секретным и может быть передан и использован кем угодно, закрытый ключ представляет собой часть конфиденциальной информации, которая обеспечивает безопасность системы и не может быть передана другим лицам.
Шифрование и цифровые подписи являются наиболее распространенными вариантами использования PKC. Схемы шифрования и цифровой подписи основаны на наборах из трех алгоритмов. Первый — это генерация пары частного и открытого ключей, второй — генерация зашифрованного текста/подписи, а третий — процесс расшифровки/проверки. Что касается цифровых подписей: Алгоритм подписи требует, чтобы закрытый ключ, известный только его владельцу, создавал уникальную подпись. Подпись прикрепляется к конкретному сообщению таким образом, чтобы любой, кто владеет открытым ключом, мог проверить ее подлинность и подлинность.
Блокчейн
Нет сомнений в том, что блокчейн — чрезвычайно мощная технология. Он обеспечивает уровень консенсуса, который организует и записывает события. Такая инфраструктура дает нам пользователям и даже правительствам потенциальную возможность построить децентрализованную экономику. Удивительно, но шифрование, необходимое для работы простого блокчейна, может опираться только на цифровые подписи. В блокчейне закрытые ключи представляют личность, а подписи представляют собой публичное заявление или утверждение, сделанное личностью. Блокчейн запрашивает и проверяет данные в соответствии с набором правил, которые, среди прочего, гарантируют, что подписи невозможно подделать и они действительны.
Современный набор инструментов криптографии включает в себя несколько крутых магических трюков, в отличие от более классической криптографии, используемой в блокчейне. Некоторые примеры этих приемов включают доказательства с нулевым разглашением, гомоморфную криптографию и многосторонние вычисления. Как мы видели за последнее десятилетие, исследования блокчейна значительно продвинули прикладную криптографию благодаря неожиданным недавним достижениям в знаниях во всем вышеперечисленном и многом другом.
В этой статье мы сосредоточимся на одном из достижений — эффективных безопасных пороговых сигнатурах (TSS).
MPC и схема пороговой сигнатуры (TSS)
Многосторонние вычисления (MPC) — это раздел криптографии, который начался с плодотворной работы Эндрю К. Яо почти 40 лет назад. В MPC группа сторон, которые не доверяют друг другу, пытаются вычислить функцию на основе своих входных данных, сохраняя при этом эти входные данные конфиденциальными.
Например, предположим, что несколько сотрудников компании хотят знать, кому платят больше, но не раскрывают друг другу свою фактическую зарплату. Здесь особым входом являются зарплаты, а смущением будет имя сотрудника с самой высокой зарплатой. Когда этот расчет производится с использованием MPC, в результате при расчете не утекает ни одна зарплата.
Двумя основными особенностями MPC являются подлинность и конфиденциальность:
Корректность: выходные данные, сгенерированные алгоритмом, верны (как и ожидалось).
Конфиденциальность: Конфиденциальные входные данные, хранящиеся одной стороной, не будут переданы другим сторонам.
Мы будем использовать MPC для распределенного вычисления цифровой подписи. Давайте посмотрим, как указанные выше свойства можно применить к подписям. Для подписей у нас есть три шага:
Генерация ключей. Первый шаг также является самым сложным. Нам нужно создать ключ, который будет общедоступным и будет использоваться для проверки будущих подписей. Но нам также необходимо создать индивидуальный секрет для каждой участвующей стороны, который мы будем называть общим секретом. В контексте корректности и конфиденциальности мы говорим, что функция будет выводить один и тот же открытый ключ для всех сторон и разные секретные ресурсы для следующих целей: (1) Конфиденциальность: между двумя сторонами не происходит утечки данных о секретном ресурсе и ( 2) Правильность: открытый ключ является функцией секретных акций.
Подпись: Этот шаг включает в себя функцию создания подписи. Вклад каждой стороны — это их секретная доля, которая генерируется как результат предыдущего шага (генерация распределенного ключа). Существует также общий ввод, известный всем, который представляет собой сообщение, которое необходимо подписать. Результатом будет цифровая подпись, а функция конфиденциальности гарантирует, что во время расчета не произойдет утечка секретных акций.
Проверка: Алгоритм проверки остается таким же, как и в классических настройках. Чтобы обеспечить совместимость с подписями отдельных ключей, каждый, кто знает открытый ключ, должен иметь возможность проверять и аутентифицировать подписи. Именно это и делают узлы проверки блокчейна.
Пороговая схема подписи (TSS) — это имя, которое мы даем комбинации распределенной генерации ключей (DKG) и распределения подписи по пороговой схеме подписи.
Объединение TSS и блокчейна
Естественный способ использования TSS в блокчейне — это изменение клиента блокчейна для генерации ключей и подписей с использованием TSS. Здесь мы используем термин клиент для обозначения набора команд, которые выполняются полным узлом. В практическом применении технология TSS позволяет заменить все команды, связанные с закрытым ключом, распределенными вычислениями.
Чтобы объяснить это более подробно, мы начнем с краткого описания того, как создавать новые адреса в классической структуре блокчейна. Проще говоря, мы можем создать новый адрес, сгенерировав закрытый ключ и затем вычислив открытый ключ на основе закрытого ключа. Наконец, адрес блокчейна получается из открытого ключа.
Теперь, используя TSS, у нас будет группа сторон, совместно вычисляющих открытый ключ. Каждая участвующая сторона владеет секретной долей закрытого ключа (отдельные доли не раскрываются другим участвующим сторонам). Используя открытый ключ, мы можем получить адрес так же, как и в традиционной системе, что делает блокчейн несколько нейтральным в способе генерации адресов. Преимущество здесь в том, что закрытый ключ больше не является единственной точкой отказа, поскольку каждая сторона хранит одну его часть.
То же самое можно сделать и при подписании транзакций. В этом случае вместо подписи одной стороны своим закрытым ключом мы запускаем распределенный генератор подписей между несколькими сторонами. Даже каждая сторона может предоставить действительную подпись, если достаточное количество участников действует честно. Мы снова перешли с локальной учетной записи (единая точка отказа) на интерактивную учетную запись.
Важно отметить, что генерация распределенных ключей может осуществляться таким образом, чтобы обеспечить различные типы доступа к ним: общая настройка «t из n» сможет выдержать до t произвольных сбоев в операциях, связанных с секретный ключ без ущерба для безопасности.
TSS против Multisig
Некоторые сети блокчейнов предлагают функциональность TSS как встроенную или программируемую часть программного обеспечения. Мы называем эту функцию мультиподписью или мультиподписью. Чтобы лучше понять различия, мы можем рассмотреть мультиподпись как TSS на этапе реализации блокчейна.
Другими словами, и multisig, и TSS в основном пытаются достичь схожих целей, но TSS использует шифрование вне цепочки, а multisig — внутри цепочки. Однако для блокчейна требуется метод мультиподписного шифрования, который может поставить под угрозу конфиденциальность, поскольку структура доступа (количество подписантов) раскрывается в блокчейне. Стоимость транзакции с мультиподписью выше, поскольку информация на двух разных сайтах также должна передаваться в блокчейне.
В TSS данные подписантов объединяются в обычную транзакцию, что снижает затраты и сохраняет конфиденциальность. С другой стороны, Multisig может быть неинтерактивным, что избавляет от необходимости запуска сложного уровня связи между различными сайтами.
Основное отличие заключается в том, что мультиподпись блокчейна необходимо повторно реализовывать в каждом блокчейне, а в некоторых случаях она вообще не поддерживается. Напротив, TSS основан на чистом шифровании, поэтому его всегда можно поддерживать. Отличную статью, описывающую различия, можно найти здесь.
Схема обмена секретами TSS против Шамира
Схема совместного использования секрета Шамира (SSSS) обеспечивает распределенный способ хранения закрытого ключа. Пока закрытый ключ находится в хранилище, он хранится в нескольких местах. Между SSSS и TSS есть два различия:
Генерация ключей. В SSSS есть одна сторона, называемая «дилер», которая отвечает за создание секретных частей ключа. Это означает, что во время генерации ключа закрытый ключ генерируется в одном месте, а затем распределяется дистрибьютором по разным местам. Но в TSS нет распространителя, потому что его роль распределена так, что полный закрытый ключ никогда не находится в одном месте.
Подписание: в SSSS стороны должны восстановить полный закрытый ключ для подписи, что снова приводит к единой точке отказа каждый раз, когда требуется подпись. С другой стороны, в TSS подписание осуществляется распределенным образом без воссоздания секретных общих ресурсов.
Как мы видим в TSS, закрытый ключ (представляющий безопасность системы) никогда не находится в одном месте на протяжении всего своего существования.
Пороговый регулятор
Кошелек, построенный на технологии TSS, немного отличается от традиционных криптовалютных кошельков. Традиционный кошелек обычно создает начальную фразу и использует ее для детерминированного получения адресов. Позже пользователь может использовать детерминированную иерархическую структуру (HD), чтобы 1) получить доступ к закрытым ключам, соответствующим адресам кошельков, и подписывать с их помощью транзакции. 2) Восстановить все ключи кошелька, используя сид-фразу.
В пороговых кошельках дела обстоят сложнее. Хотя можно создать детерминированную иерархическую (HD) архитектуру, ее конструкция должна рассчитываться распределенным образом, как и другой протокол MPC. Участвующие стороны должны принять совместное решение о том, какой ключ будет использоваться следующим. Другими словами, у каждой стороны будет свое первоначальное заявление. Начальные операторы генерируются отдельно и не объединяются, так что ни одна из сторон в одиночку не может вывести секретные ключи из начального оператора.
Кошельки на основе TSS также имеют хорошую функцию безопасности, которая позволяет менять закрытый ключ без изменения соответствующего открытого ключа и адреса блокчейна. Ротация закрытых ключей, также известная как упреждающее совместное использование секретов, — это еще один протокол MPC, который принимает секретные общие ресурсы в качестве входных данных и выводит новый набор секретных общих ресурсов. Старые секретные общие ресурсы можно удалить, а новые общие ресурсы можно использовать таким же образом.
Эта архитектура добавляет временной аспект безопасности, а это означает, что злоумышленнику придется находиться в нескольких местах одновременно, чтобы попытаться взломать кошелек Threshold. Объединение секретных акций до и после ротации не даст злоумышленнику каких-либо дополнительных возможностей, если он захочет подделать подпись.
Недостатком этого типа кошелька является отсутствие исходной фразы, что делает его несовместимым с системами кошельков с одним ключом. Поэтому важно решить, какие стороны будут сохранять конфиденциальность обмена информацией.
Есть несколько возможных способов, таких как:
Аутсорсинг TSS: пользователь разрешит «n» серверам выполнять вычисления от его имени. Эффективно поручите создание, управление и подписание ключей поставщикам услуг, которые не являются владельцами активов, но обеспечивают уровень безопасности в обмен на определенный стимул.
Использование нескольких устройств: пользователь будет запускать TSS на своих устройствах. Например, одна сторона может быть устройством Интернета вещей, другая сторона — пользователем мобильного телефона, третья сторона — ноутбуком и так далее.
Гибридные системы: TSS будет работать таким образом, что некоторые стороны будут контролироваться внешними поставщиками услуг, а некоторые будут работать на собственном оборудовании.
Первый метод разгружает тяжелые вычисления TSS на стороне пользовательского клиента. С другой стороны, поставщики услуг могут вступить в сговор (мы предполагаем, что большое количество из них не подвергается атаке одновременно, но на практике они могут быть атакованы одновременно) и украсть пользовательские активы.
Второй метод дает пользователю полный контроль, но делает процесс транзакции громоздким, поскольку вам нужно несколько устройств для подключения к Интернету и участия в учетной записи TSS.
Третий вариант является лучшим из обоих вариантов, поскольку он дает пользователю простой и быстрый способ совершать транзакции без риска совершать транзакции без разрешения пользователя.
TSS и смарт-контракты
За прошедшие годы исследователи нашли множество применений цифровых подписей, но некоторые из них неудивительны. Как упоминалось ранее, TSS — это примитивное шифрование, которое может существенно повысить безопасность. В контексте блокчейна мы могли бы сказать, что многие функции можно заменить криптографией на основе TSS. На платформе TSS можно построить децентрализованные приложения, решения уровня 2 для масштабирования, атомарных свопов, перетасовки, наследования и многое другое. В конечном итоге это позволит заменить дорогостоящие и рискованные операции смарт-контрактов более дешевыми и надежными альтернативами.
Приведу несколько конкретных примеров: Multi-Hop Locks умным образом использует двухсторонние подписи и может использоваться для замены сети Lightning Bitcoin на более безопасную и частную сеть каналов платежей. ShareLock — это, вероятно, самое дешевое решение для шифрования блокчейна Ethereum, основанное на проверке с использованием подписи с одним порогом.
Риски
За последние два года количество заявок TSS значительно возросло. Но, как и любая относительно новая технология, она все еще имеет некоторые ограничения и проблемы. По сравнению с традиционной криптографией с открытым ключом, протоколы TSS могут быть очень сложными и еще не были «проверены в действии». TSS обычно требует дополнительных, более слабых криптографических предположений по сравнению с простыми цифровыми подписями. В результате теперь обнаруживаются векторы криптографических атак, которых раньше не существовало в традиционных условиях (см. презентацию с конференции Breaking Bitcoin Conference 2019). Инженеры по безопасности и специалисты по криптографии приложений могут помочь безопасно внедрить TSS в вашу систему.
Положительным моментом является то, что существующие и новые приложения становятся все сильнее благодаря повышению качества, экспертным оценкам, перекрестным проверкам и повышению производительности вычислений с использованием алгоритмов.
Заключительные мысли
В этой статье мы представляем основы схемы пороговой подписи (TSS), удивительного примитива криптографии, который может кардинально изменить способ использования блокчейнов.
Поскольку в этой статье не обсуждался порог ECDSA, который можно использовать в Binance Chain и Bitcoin, заинтересованные люди могут прочитать статьи в следующем списке. Также, если вы хотите опробовать некоторые реализации TSS, вы можете найти код для двухстороннего кошелька Binance Chain здесь или попробовать кошелек ZenGo, который использует гибридный метод предоставления двухстороннего кошелька Binance Chain.
Углубленное чтение:
Быстрое безопасное двухстороннее подписание ECDSA
Быстрая и безопасная многосторонняя ECDSA с практичной распределенной генерацией ключей и приложениями для хранения криптовалюты
Двухсторонний ECDSA от Hash Proof Systems и эффективных инстанцирований
Быстрый многосторонний порог ECDSA с быстрой беспроверочной настройкой
Безопасный двухсторонний порог ECDSA из предположений ECDSA
Порог ECDSA из предположений ECDSA: многопартийный случай

