В данной статье мы рассмотрим: что такое пороговая подпись, какими потенциальными преимуществами она обладает, как может быть реализована эта технология в блокчейн-клиентах, как она будет сочетаться со схемой разделения секрета Шамира и мультиподписью, различные варианты использования TSS для распределенного управления ключами и в заключение проанализируем недостатки и ограничения, которые с этим связаны.
Сила криптографии
Блокчейн
Данная статья акцентирует ваше внимание на эффективность и безопасность пороговых подписей (TSS).
Протокол конфиденциального вычисления и пороговая подпись (TSS)
Протокол конфиденциального вычисления (multi-party computation или MPC) - это ветвь криптографии, которая взяла свое начало с работы Эндрю Яо Цичжи, около 40 лет назад. В MPC группа сторон, которые не доверяют друг другу, пытаются совместно вычислить функцию входных данным, сохраняя при этом приватность на выходе.
Из вышеперечисленных фактов следует, что MPC обладает двумя свойствами:
Правильность: результат работы алгоритма всегда является верным.
Приватность: входные данные хранится у одной из сторон и не могут передаваться другим.
Мы будем использовать MPC для расчета цифровой подписи распределенным способом. Давайте рассмотрим, как вышеперечисленные свойства могут быть применены к цифровым подписям. Вспомним, что подпись состоит из трех составляющих:
Генерация ключей: первый, но самый сложных этап. Он заключается в необходимости сгенерировать публичный ключ, который в будущем будет использоваться для проверки ваших подписей, но нам также необходимо индивидуально воссоздать секрет для каждой из сторон и мы это называем секретная доля. С точки зрения правильности и конфиденциальности, мы с помощью этого заявляем, что функция будет выдавать один и тот же публичный ключ всем сторонам, а также предоставлять разную долю секрета для каждого из участников, во-первых, чтобы соблюдалась конфиденциальность между сторонами, во избежание утечки секретных данных, и во-вторых, сохранялась правильность публичного ключа, которая является одной из функций секретной доли.
Подпись: данный этап включает в себя функцию генерацию вашей подписи. Ввод данных от каждой из сторон является его секретной долей, созданной как выход от предыдущего этапа (генерации распределенного ключа). Также есть и всем известный публичный вход, что является сообщением, которое будет подписано. Результатом таких операций будет цифровая подпись, а конфиденциальность данных гарантирует, что во время ее генерации не произошло утечки секретной информации.
- Верификация: работа алгоритма на данном этапе происходит в классическом режиме. Чтобы подпись была совместима с одним сгенерированным ключом, каждый кто обладает знанием о публичном ключе должен иметь возможностью проверки и валидации подписи. Благодаря этому блокчейн обладает возможностью осуществлять проверку информации с помощью узлов.
Пороговая подпись (TSS) является именем, которое вы даете комплексу операций по генерации распределенного ключа (DKG) и схеме создания данной подписи.
Комбинация технологий: TSS и блокчейн
Чтобы рассмотреть это более подробно, начнем с краткого описания того, как создаются новые адреса в классической блокчейн-сети. Изъясняясь в простой форме, мы можем создать новый адрес генерируя приватный ключ и затем на его основе создать публичный. Таким образом публичный адрес является производным публичного ключа.
По аналогии, такой процесс также может использоваться в подписании транзакций. В таком случае, вместо односторонней подписи с помощью приватного ключа нам предоставляется возможность распределенного подписания между несколькими участниками. Таким образом, каждая из сторон может производить валидную подпись до тех пор, пока достаточное количество из них действует честно. Следовательно мы переходим из локальной вычислительной среды (одной точки отказа) в интерактивную.
Различия между TSS и мультиподписью
Если рассматривать две технологии с другой точки зрения, оба способа пытаются достичь одну и ту же цель, однако разница между ними заключается в том, что TSS использует криптографию вне цепи, в то время как мультиподпись является внутри цепной. Тем не менее, блокчейн нуждается в шифровании мультиподписей, что может нанести ущерб конфиденциальности пользователей, поскольку структура доступа (количество подписывающих) отображается непосредственно в самой сети. По этой причине стоимость транзакции с мультиподписью гораздо выше, в связи с тем, что информация о разных подписях должна также транслироваться в блокчейн.
В TSS информация о всех подписывающих участниках формируется в одну транзакцию, что снижает ее стоимость и обеспечивает более высокий уровень конфиденциальности. Но с другой стороны мультиподпись может быть неинтерактивной, что избавляет от необходимости создавать сложный коммуникационный уровень между участниками.
TSS и схема шифрования секрета Шамира
Схема разделения секрета Шамира представляет собой способ хранения приватного ключа распределенным образом, в котором ключ или же секрет находится в состоянии покоя и хранится в нескольких местах до момента его использования. Между секретом Шамира и пороговой подписью существуют два различия:
Генерация ключа: в схеме Шамира присутствует одна сторона (дилер), которая отвечает за распределение секретных частей. Это означает, что приватный ключ в полном объеме генерируется в одном месте, а затем распределяется дилером среди других участников. В TSS отсутствует такого понятие как дилер, поскольку его роль изначально выполняется системой, таким образом приватный ключ сразу после своей генерации распространяется в разных местах.
Подпись: в схеме Шамира все стороны должны взаимодействовать между собой в целях полной реконструкции приватного ключа для подписания транзакции, что опять же приводит к единой точки отказа каждый раз, когда будет необходимо осуществить данную операцию. В TSS подписание осуществляется распределенным способом, без необходимой реконструкции секретных частей.
Исходя из всего вышеперечисленного, приватный ключ TSS (который предоставляет безопасность системы) никогда не находится в одном месте, в течении всего своего существования.
Кошельки на основе пороговой подписи
В случае с пороговым кошельком всё становится намного сложнее. Несмотря на возможность формирования упомянутой выше структуры, расчеты для ее генерация должны происходить распределенным образом, аналогично протоколу конфиденциально вычисления (MPC). Все стороны должны совместно принимать решение в отношении того, какой следующих ключ будет использован. Другими словами, каждая из сторон будет обладать своей персональной сид-фразой, генерация всех элементов которого осуществляется индивидуально, чтобы все части никогда не могли объединится между собой, таким образом одна из сторон не сможет извлечь из них приватные ключи.
Кошельки на основе TSS также обладают высокой степенью безопасности, которая позволяет осуществлять ротацию приватного ключа без изменения соответствующего публичного ключа и адреса в блокчейн. Ротация приватного ключа, также известна как проактивное разделение секрета, является еще одной функцией протокола конфиденциального вычисления, которая принимает часть засекреченных данных на входе и на выходе предоставляет новый набор секретных элементов. Таким образом старые секреты могут быть удалены, а новые будут использоваться вместо них.
Такая структура предоставляет период безопасного времени, это означает, что злоумышленник должен будет находится в нескольких местах одновременно, чтобы атаковать пороговый кошелек. Объединение секретных частей перед и после ротации не предоставит атакующему дополнительную возможность, в случае, если он намерен подделать подпись.
Недостатком кошельков такого вида является отсутсвие сид-фразы, что делает его несовместимым с системой кошельков с одним ключом. По этой причине необходимо учитывать, какие из сторон будут владеть вашими секретными данными.
Несколько возможных решений:
- Аутсорсинг TSS: пользователь предоставляет разрешение "n-ому" количеству серверов производить вычисления от их имени для: эффективного аутсорсинга генерации ключа, управление и подписание поставщиков услуг, которые не являются владельцами активов, но обеспечивают определенный уровень безопасности в обмен на элементы стимулирования.
Использование нескольких девайсов: пользователь сможет запускать TSS для своих устройств. Например: одна сторона отвечает за IoT девайсы, другая за смартфон пользователя, третья за ноутбук и так далее.
Гибридность: TSS работает таким образом, что одни из сторон контролируются сторонними поставщиками услуг, а другие с помощью пользовательских устройств.
Первое решение исключает сложные вычисления TSS со стороны пользовательского клиента. С другой стороны, поставщики услуг могут вступать в сговор (предположительно они не атакуют в достаточной мере и в одновременном порядке, но на практике они могут это сделать) и украсть активы пользователя.
Второй метод предоставляет пользователю полный контроль своих действий, но усложняет процесс отправки транзакций, поскольку при их осуществлении необходимо будет подключить несколько устройств к сети и принимать участие в вычислениях TSS.
Третий вариант считается лучшим, поскольку он обеспечивает пользователю легкий и быстрый способ проведения транзакций и не ставит под угрозу финансовые операции, которые могут выполнятся без авторизации пользователя (автоматизированные или регулярные платежи).
TSS и смарт-контракты
Риски
Заключение
В данной статье мы описали основы пороговой подписи (TSS), которая представляет собой увлекательный криптографический примитив, который может существенно изменить способ использования технологии блокчейн.
Рекомендуемая литература: