a16z: Техническое объяснение криптопроекта децентрализованного доверенного установления на цепочке
Автор: Valeria Nikolaenko, Sam Ragsdale, a16z
Составитель: Amber, Foresight News
Церемония доверенной настройки (Trusted Setup Ceremony) хотя и представляет собой вызов для крипто-сообщества, тем не менее, это один из самых захватывающих аспектов для него. Цель церемонии — сгенерировать надежные криптографические ключи для защиты криптокошельков, блокчейн-протоколов или систем нулевых знаний. Эти процедуры являются корнем доверия к безопасности проекта, поэтому крайне важно обеспечить безошибочное выполнение и проведение церемонии доверенной настройки.
В настоящее время существуют различные форматы проведения церемонии доверенной настройки в блокчейн-проектах, включая, но не ограничиваясь blowtorches, radioactive dust и airplanes, и все они имеют одну общую черту — они зависят от централизованного координатора. В этой статье будет показано, как заменить централизованного координатора на смарт-контракт, чтобы сделать процесс децентрализованным, и мы также откроем библиотеку, позволяющую любому запускать церемонию, которую крипто-специалисты называют Kate-Zaverucha-Goldberg (KZG) или «powers-of-tau» на Ethereum.
Наш подход к децентрализации имеет ограничения, но он все же полезен. Из-за текущих ограничений данных в блокчейне размер криптографических параметров должен оставаться не более 64 КБ. Однако количество участников не ограничено, и любой может в любой момент внести свой вклад. Применение этих коротких параметров включает в себя малые нулевые знания SNARK, выборку доступности данных и деревья Verkle.
История и механизмы церемонии доверенной настройки
В типичной церемонии доверенной настройки группа участников сотрудничает для генерации набора криптографических параметров. Каждый участник использует локально сгенерированную криптографическую информацию для создания данных, способствующих созданию этих параметров. Правильная настройка может гарантировать, что криптографическая информация не будет раскрыта, что она может использоваться только в соответствии с установленным протоколом, и что эта информация будет полностью уничтожена по окончании церемонии. Если хотя бы одна сторона в церемонии гарантирует честность и (после завершения церемонии) уничтожит криптографическую информацию, весь процесс может считаться безопасным. (Конечно, при условии, что в коде нет ошибок)
Некоторые из самых заметных церемоний были проведены Zcash, проектом, ориентированным на конфиденциальность. Участники этих церемоний генерировали публичные параметры, предназначенные для того, чтобы позволить пользователям Zcash создавать и проверять частные криптографические транзакции. Шесть участников провели первую церемонию Zcash Sprout в 2016 году. Два года спустя крипто-исследователь Ariel Gabizon, ныне главный научный сотрудник Aztec, обнаружил разрушительную ошибку в дизайне церемонии, унаследованную из одной базовой исследовательской статьи.
Этот уязвимость могла позволить злоумышленникам создавать неограниченное количество монет Zcash без обнаружения. Команда Zcash держала эту уязвимость в секрете в течение семи месяцев, пока обновление системы Sapling (в церемонии которого участвовало 90 участников) не решило эту проблему. Хотя атаки на основе уязвимостей не затрагивают конфиденциальность транзакций пользователей, перспектива бесконечного подделывания подрывает безопасность Zcash. (Теоретически невозможно узнать, произошла ли атака.)
Другим заметным примером доверенной настройки является постоянная церемония «tau-power-of-tau», которая в основном предназначена для Semaphore, технологии защиты конфиденциальности для анонимного сигнализирования на Ethereum. Эта настройка использует эллиптическую кривую BN254, и на данный момент в ней участвуют 71 участник. Другие известные проекты позже использовали эту настройку для проведения своих церемоний, включая Tornado.Cash, сеть Hermez и Loopring.
Aztec провел аналогичную церемонию на эллиптической кривой BLS12_381 с участием 176 участников zkSync, решения для масштабирования Ethereum второго уровня, использующего нулевые знания. Filecoin, децентрализованный протокол хранения данных, провел церемонии с 19 и 33 участниками на первом и втором этапах соответственно, разветвляя оригинальный репозиторий. Celo, одноуровневый блокчейн, также провел церемонию для своего легковесного клиента Plumo.
Постоянные церемонии не имеют ограничений по количеству участников. Другими словами, любой может участвовать на любом уровне безопасности, не полагаясь на других для проведения доверенной настройки. Доверенный участник гарантирует безопасность всех результирующих параметров; цепь сильнее своего самого слабого звена. Как следует из названия, постоянные церемонии могут проводиться вечно, как и предпосылка оригинальной церемонии tau power. То есть проекты обычно решают конкретное время начала и окончания церемонии, чтобы они могли встроить сгенерированные параметры в протокол, не беспокоясь о необходимости их постоянного обновления.
Ethereum планирует провести меньшую церемонию доверенной настройки для предстоящих обновлений ProtoDankSharding и DankSharding. Эти обновления увеличат объем данных, которые Ethereum предоставляет клиентам для хранения. Срок действия этих данных составляет рекомендуемые 30-60 дней. Церемония активно разрабатывается и планируется на начало следующего года, продолжаясь около шести недель. (Смотрите kzg-ceremony-specs для получения дополнительной информации) и она становится самой крупной церемонией доверенной настройки блокчейна на сегодняшний день.
Паранойя — это «добродетель», особенно когда речь идет о церемониях доверенной настройки. Если аппаратное или программное обеспечение машины скомпрометировано, это может подорвать безопасность сгенерированных секретов. Скрытые атаки через побочные каналы, раскрывающие секреты, также трудно исключить. Например, мобильный телефон может отслеживать работу компьютера, записывая звуковые волны от вибраций ЦП. На практике, поскольку трудно устранить все возможные побочные каналы атак — включая те, которые еще не обнаружены или раскрыты — некоторые даже предложили отправить машины в космос, чтобы провести церемонию там.
В настоящее время сценарий для строгих участников церемонии обычно выглядит следующим образом. Покупка новой машины (не загрязненного оборудования). Проведение рискового изоляции путем удаления всех сетевых карт (чтобы предотвратить утечку локальных секретов). Запуск машины в удаленном, нераскрытом месте в клетке Фарадея (чтобы предотвратить потенциальных шпионов). Установка большого количества энтропии и жесткого копирования данных для генератора псевдослучайной криптографической информации, таких как случайные входные данные или семена видеофайлов (чтобы сделать криптографическую информацию трудной для взлома). Наконец, уничтожение криптографической информации — и любых следов о ней — путем сжигания всего до пепла.
Координация церемонии доверенной настройки
Все церемонии доверенной настройки зависят от централизованного координатора. Координатор — это человек или частный сервер или другое лицо, которому поручено регистрировать и упорядочивать участников, выступая в качестве ретранслятора, передавая информацию от предыдущего участника к следующему, и сохраняя централизованный журнал всех коммуникаций для аудита. Координатор также обычно отвечает за постоянное предоставление журнала общественности, хотя следует признать, что такая централизованная система легко может потерять информацию из-за плохого управления или некоторых не人为ных факторов.
Иронично, что, когда децентрализация является основным принципом крипто-духа, крипто-проекты должны полагаться на централизованные церемонии доверенной настройки. Поэтому мы решили продемонстрировать целесообразность проведения небольшой церемонии для вечных powers-of-tau непосредственно на блокчейне Ethereum. Эта настройка полностью децентрализована, не требует разрешений, устойчива к цензуре и безопасна, если хотя бы один участник честен. По текущим ценам, стоимость участия в церемонии составляет всего от 7 до 400 долларов, в зависимости от размера требуемых результирующих параметров (в данном случае от 8 до 1024 степеней tau).

На данный момент мы рекомендуем не использовать код для каких-либо целей, кроме экспериментов. Мы будем признательны, если кто-то, кто обнаружит какие-либо проблемы с кодом, сообщит нам. Мы рады собрать отзывы и аудиты о нашем методе.
Понимание KZG или церемонии «powers-of-tau»
Давайте исследуем одну из самых популярных доверенных настроек, известную как KZG или церемония «powers-of-tau». Благодаря соучредителю Ethereum Виталик Бутерину, его блог о доверенной настройке предоставил информацию для наших идей в этом разделе. Эта настройка генерирует код powers-of-tau, названный так, потому что «tau» — это переменная, используемая для обозначения секретов, сгенерированных участниками:
Для некоторых приложений (например, Groth16, популярная схема доказательства zkSNARK, разработанная Йенсом Гротом в 2016 году) после первой фазы настройки следует вторая фаза, то есть многосторонняя вычислительная (MPC) церемония, которая генерирует параметры для конкретной схемы SNARK. Однако наша работа сосредоточена только на первой фазе. Первая фаза — генерация степеней tau — уже может использоваться в качестве основного строительного блока для универсальных SNARK (например, PLONK и SONIC) и других криптографических приложений (например, KZG-призывов, деревьев Verkle и выборки доступности данных) (DAS).
Обычно параметры универсального SNARK должны быть очень большими, чтобы они могли поддерживать большие и полезные схемы. Схемы с большим количеством ворот обычно более полезны, поскольку они могут захватывать крупные вычисления; степень tau примерно соответствует количеству ворот в схеме. Таким образом, типичный размер настройки составляет |pp|= ~40 ГБ, что позволяет поддерживать схемы ~2 в 28 Gas. Учитывая текущие ограничения Ethereum, размещение таких больших параметров в цепочке невозможно, но меньшие церемонии доверенной настройки, полезные для малых SNARK-схем, деревьев Verkle или DAS, могут работать в цепочке.
Фонд Ethereum планирует провести несколько меньших церемоний для powers-of-tau размером от 200 КБ до 1,5 МБ. Хотя более крупные церемонии могут выглядеть лучше, учитывая, что более крупные параметры могут создавать более полезные схемы SNARK, на практике не всегда больше значит лучше. Некоторые приложения (например, DAS) особенно требуют меньшего приложения! [Причина очень техническая, но если вам интересно, это связано с тем, что настройки с n-ой степенью (в G) 1) позволяют KZG-призыв только для многочленов степени ≤ n, что критически важно для обеспечения того, чтобы многочлен под KZG-призывом мог быть восстановлен из любого n-ого оценивания.
Это свойство поддерживает выборку доступности данных: каждый раз, когда успешно получено (выбрано) случайное оценивание многочлена, оно гарантирует, что многочлен может быть полностью восстановлен с вероятностью t/n. Если вы хотите узнать больше о DAS, ознакомьтесь с этой статьей Бутерина на форуме исследований Ethereum.
Мы разработали смарт-контракт, который можно развернуть на блокчейне Ethereum для проведения церемонии доверенной настройки. Этот контракт полностью хранит публичные параметры в цепочке и собирает участие через транзакции пользователей.
Новые участники сначала читают эти параметры:

Затем они выбирают случайный ключ τ' и вычисляют обновленные параметры:

И публикуют их в цепочке, прилагая доказательства трех вещей:
- Знание дискретного логарифма: участник знает τ'. (Доказательство того, что последующий вклад в церемонию основывается на работе всех предыдущих участников.
- Хорошая форма pp 1: эти элементы действительно кодируют инкрементальные степени. (Подтверждено хорошее состояние вклада нового участника в церемонию.
- Обновление не стерто: τ' ≠ 0. (Защита от злоумышленников, пытающихся разрушить систему, удалив всю работу предыдущих участников.
Смарт-контракт проверяет доказательства, и если они верны, он обновляет хранимые публичные параметры. Вы можете найти больше подробностей о математике и ее обосновании в репозитории.
Расчет стоимости Gas
Основной проблемой при запуске настройки в цепочке является максимальная эффективность церемонии доверенной настройки. В идеале стоимость подачи взносов не должна превышать 50 долларов. (Крупные проекты могут быть в состоянии субсидировать Gas для вкладчиков, в этом случае легче представить, что сотни участников потратят по 100 долларов.) Ниже мы предоставляем больше подробностей о самой дорогой части настройки. Более низкие затраты на Gas снизят стоимость взносов и позволят строить более длинные параметры (больше степеней tau и более крупные схемы SNARK)!
Наша настройка предназначена для эллиптической кривой BN254 (также известной как BN256, BN128 и alt_bn128), которая поддерживает следующие предварительно скомпилированные контракты на Ethereum:
ECADD позволяет складывать две точки эллиптической кривой, то есть вычислять [α+ β]1 из [α]1 и [β]1: стоимость Gas 150
ECMULT позволяет умножать точку эллиптической кривой на скаляр, то есть вычислять [a*α]1 из a и [α]1: стоимость Gas 6,000
ECPAIR позволяет проверять произведение пар эллиптической кривой, то есть вычислять e([α1]1, [β1]2)* … *e([α1]1, [β1]2) = 1, что эквивалентно проверке α1*β1+ … + αk*βk= 0: стоимость Gas 34,000 * k + 45,000
Если Ethereum сможет активировать BLS12_381 (как предложено в EIP-2537), наш контракт настройки также может быть легко использован для других кривых.
Давайте оценим стоимость Gas для обновления настройки
Проверка доказательства. Как упоминалось ранее, каждый участник обновляет настройку и подает доказательство, состоящее из трех компонентов. Компоненты доказательства 1 и 3 — «знание дискретного логарифма» и «обновление не стерто» — проверяются очень дешево. Проблема заключается в проверке компонента 2, «хорошей формы pp» 1, в цепочке. Это требует большого многоскалярного умножения (MSM) и двух пар:

где ρ0,…,?n-1 — это псевдослучайные выборочные скаляры. Что касается предварительно скомпилированных смарт-контрактов, требуется:

стоимость Gas для хранения данных. Каждый участник также будет обновлять хранилище в цепочке как данные вызова (68 gas за байт), что составит n * 64 * 68 gas. (Для тех, кто знаком с эллиптической криптографией, стоит отметить, что согласно нашим измерениям для n = 256, хранение сжатой точки сделает декомпрессию доминирующей общей стоимостью.
Оценочная стоимость Gas выглядит следующим образом:

Конечно, мы также исследуем решения для снижения стоимости Gas.
Открытая библиотека: evm-powers-of-tau
Мы открыли исходный код на github.com/a16z/evm-powers-of-tau для основанной на EVM церемонии powers-of-tau. Проведение церемонии с использованием нашей стратегии просто и прозрачно:
- Развертывание соглашения о хранении и проверке (соглашение /KZG.sol)
- Участники читают параметры церемонии из предыдущих транзакций
- Участники локально генерируют ключ, вычисляют обновленные параметры
- Вкладчики генерируют свои доказательства: pi1, pi2
- Вкладчики подают обновленные параметры в смарт-контракт, развернутый на публичной блокчейне, через KZG.potUpdate()
- Смарт-контракт проверяет действительность обновления, восстанавливаясь в случае ошибки формата подачи
- Несколько вкладчиков могут постоянно выполнять шаги 2-5, каждый шаг может повысить безопасность церемонии
- Каждый раз, когда разработчики уверены в количестве и качестве поданных заявок, они могут запросить текущие параметры в блокчейне и использовать эти значения в качестве криптографических ключей.
Наш репозиторий использует arkworks-rs для вычисления шагов 2 и 3 (rust-код можно найти в src / potupdate.rs), но пользователи могут захотеть написать свои собственные. Полный процесс подачи обновлений от начала до конца можно найти в интеграционных тестах tests/integrationtest.rs.
Обратите внимание, что мы выбрали использовать calldata для хранения обновленных параметров powers-of-tau в цепочке, так как это дешевле на несколько порядков. Запросы для этих данных на основе ethers-rs можно найти в src/query.rs.
Наконец, доказательства и подробные уравнения можно найти в техническом отчете techreport/main.pdf.
Планы на будущее
Перед тем как использовать эту церемонию доверенной настройки в производственной среде, мы рекомендуем сначала провести всесторонний аудит математических доказательств и примеров реализации.
С увеличением размера настройки транзакционные затраты на обновление церемонии линейно растут. Для большинства приложений (SNARKs, DAS) мы хотим, чтобы n > = 256, и в настоящее время стоимость обновления составляет 73 доллара за каждое обновление.
Возможно, мы сможем достичь сублинейного роста затрат на верификацию, используя эффективные обновления вычислений STARK и векторные призывы к обновленным значениям. Эта структура также устранит зависимость от предварительно скомпилированных BN254 на Ethereum L1, что позволит использовать более популярные кривые BLS12-381.
Все стратегии церемонии тщательно взвешены и протестированы. Мы считаем, что эта структура надежна и обладает хорошей проверяемостью и устойчивостью к цензуре. Но также, прежде чем завершить больше работы по проверке разумности нашего метода, следует проявлять высокую осторожность при прямом использовании предложенной в статье схемы.













