Случайные числа не лгут: более подробный технический взгляд на недавние хаки DeFi

Случайныечисланелгутболееподробныйтехническийвзгляднанедавниехакиdefi

Поскольку плата за газ Ethereum взлетела до рекордных высот во время бычий рынок, из-за чего многие протоколы децентрализованного финансирования (DeFi) стали непригодными для случайных пользователей, несколько проектов были вынуждены развернуть в других сетях.

Это вызвало огромный всплеск спроса на механизмы кросс-цепочки, называемые мостами, которые могут безопасно передавать ресурсы пользователей из одной цепочки в другую. Межцепочечные мосты обычно можно разделить на централизованные кастодиальные мосты (CCB) и децентрализованные некастодиальные мосты (DNCB).

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

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

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

  • ChainSwap подвергся взлому 2 июля на сумму около $ 1400 K в пользовательских активах.
  • Пулы ликвидности AnySwap V3 пострадали от взлома на 25 й день июля стоимостью почти 8 миллионов долларов в долларах США. USDC и $ MIM. AnySwap – это кросс-чейн DEX на базе Fusion Network.
  • ChainSwap подвергся другому взлому , всего через 9 дней после первого взлома. На этот раз пользовательские активы стоят 4 миллиона долларов. ChainSwap – это поддерживаемая Alameda платформа, которая связывает Ethereum с Binance Smart Chain.

Основная цель этой редакционной статьи – обучить и представим относительно подробно два часто игнорируемых, но все же жизненно важных элемента децентрализованных межцепочечных мостов: случайное число k, участвующее в безопасных многосторонних вычислениях (SMPC), и его производное R.

chainswap-exploit
Некоторые из использованных токенов ChainSwap во время взлома 2 июля. Источник: CoinGecko

Взлом AnySwap: два не всегда лучше, чем один

Как сообщается, AnySwap Взлом произошел из-за того, что две отдельные транзакции были подписаны с использованием одного и того же значения R. Хакер использовал эти две подписи для реинжиниринга закрытого ключа, управляющего кросс-чейн-аккаунтом MPC AnySwap, и похитил средства пользователей.

Но что такое значение R?

Что такое «R» – Ахиллесова пята безопасности учетной записи

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

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

В настоящее время стандартным алгоритмом цифровой подписи, используемым в блокчейнах, является Elliptic Curve Digital. Алгоритм подписи (ECDSA).

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

Каждый раз, когда транзакция подписывается с использованием ECDSA, генерируется криптографически безопасное случайное число «k». Затем «k» используется для вычисления точки на эллиптической кривой, которая, в свою очередь, используется для вычисления значения «R». Крайне важно, чтобы новое случайное число k генерировалось каждый раз, когда транзакция подписывается с использованием ECDSA.

Если один и тот же k используется для подписи нескольких транзакций, значение R для две транзакции будут одинаковыми, и секретный ключ будет протекать. Это называется конфликтом значений ‘k’ и является причиной взлома Sony PS3 в конце 2010. Это также стало причиной взлома AnySwap.

Затем давайте посмотрим, как хакер AnySwap реконструировал закрытый ключ, управляющий кросс-чейн-аккаунтом MPC AnySwap, чтобы украсть средства пользователей.

Два определенно не всегда лучше, чем один

Рассмотрим, что происходит, когда две транзакции подписываются с использованием одного и того же случайного числа «k». Поскольку «k» используется для получения «R», значение «R» двух транзакций также будет одинаковым. Назовем эти две подписи (s1) и (s2).

Согласно ECDSA, уравнения, представляющие эти две транзакции, следующие:

где S1, S2 и ‘R’ представляют данные подписи и данные транзакции. Это все данные, которые общедоступны в блокчейне. При этом остаются два оставшихся неизвестных параметра: случайное число «k» и закрытый ключ учетной записи.

Те, кто помнит свою школьную алгебру, сразу узнают, как решить неизвестные параметры, используя два уравнения. Закрытый ключ sk поэтому можно записать как:

Хакер AnySwap заметил, что две транзакции имели одинаковое значение «R», что означает, что в обеих было использовано одно и то же случайное число «k». Это позволило хакеру перепроектировать закрытый ключ, управляющий кросс-чейн-аккаунтом MPC AnySwap, используя простую алгебру, и украсть активы пользователей.

Критическая ошибка заключалась в том, что то же случайное число «k» использовалось в множественные транзакции. Ясно, что «k» не было сгенерировано случайным образом! Так как же этого можно было избежать?

Необходимость безопасных многосторонних вычислений

По сравнению с базовыми подписями транзакций, безопасные многосторонние вычисления (SMPC) действительно довольно сложны. Однако это стоит дополнительных усилий. Если SMPC – это очень отличается от мультиподписей – правильно используется для генерации реальных случайных чисел, нет риска раскрытия случайного числа k.

При использовании SMPC подписывающий агент больше не является отдельным лицом, а несколькими людьми, работающими сообща для подписания транзакций.

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

Таким образом, неразумно позволять одному человеку генерировать ‘R ‘ценны сами по себе, поскольку они могут быть злоумышленником. Если только они контролируют случайное число «k» и, в свою очередь, значение «R», они смогут реконструировать закрытый ключ учетной записи и украсть активы. Следовательно, при использовании SMPC для генерации значения ‘R’ необходимо соблюдать три принципа:

  1. Значение ‘R’ не может быть создано одним человеком;
  2. Ни один человек не может знать случайное число k, используемое для получения значения R;
  3. Случайное число k должно быть достаточно случайным, чтобы быть беспристрастным и непредсказуемым.
    1. С точки зрения непрофессионалов SMPC требует, чтобы группа людей работала вместе над задачей, не зная, над чем они работают и с кем работают.

      Установщик стандартов SMPC: публично проверяемый дизайн совместного использования секретов Wanchain

      Межцепочечные мосты Wanchain основаны на уникальном механизм, который использует SMPC для блокировки активов кросс-чейнов в учетных записях, управляемых 29 анонимные стороны, называемые узлами кладовщика. Количество узлов Storeman может быть увеличено по мере необходимости.

      При подписании транзакций с заблокированной учетной записи значение ‘R’ совместно определяется этими 29 Узлы кладовщика через процесс, известный как публично проверяемое совместное использование секретов. Этот процесс гарантирует, что никакие две транзакции никогда не будут иметь одинаковое значение ‘R’.

      Конкретные шаги, которые эти 27 Узлы кладовщика принимают следующие меры:

      1. Каждый узел кладовщика (Pi) генерирует случайное число ki локально с использованием генератора истинных случайных чисел;
      2. Каждый узел кладовщика (Pi) совместно использует его случайное число ki с другими узлами через защищенный канал с использованием

      Обмен секретами Шамира .

      Обмен секретами Шамира – это схема обмена секретами, предназначенная для обмена секретами в распределенный способ. Секрет разделен на несколько частей, называемых долями. Секрет можно восстановить, используя минимальное количество долей. Совместное использование секретов Шамира часто используется в криптографии.

    2. После получения секретных долей от других узлов каждый узел Хранителя собирает секретные доли и умножает их на эллиптическую кривую. базовая точка и транслирует результат;
    3. Каждый узел Storeman выполняет интерполяцию Лагранжа, используя широковещательные данные, чтобы получить точку эллиптической кривой, абсцисса которой является значением ‘R’.

    Хотя Вышеупомянутый процесс довольно сложен, основная концепция довольно проста. Значение ‘R’ определяется совместно Узлы кладовщика. Каждый узел Storeman вносит часть зашифрованного случайного числа «k». Затем значение ‘R’ определяется с помощью криптографических операций.

    Другими словами, работают вместе, не зная, над чем они работают и кем являются другие узлы Storeman.

    Публично проверяемое совместное использование секретов : Почему это критично

    Открытый доступ к секретам гарантирует, что:

    1. Невозможно, чтобы две транзакции имели одинаковое R-значение

    Для этого есть две основные причины. Во-первых, значение ‘R’ определяется совместно 27 Кладовщик узлов, а не отдельных лиц. Теоретически, пока существует единственный честный узел, значение «R» будет случайным. Во-вторых, вклад каждого узла Storeman генерируется генератором истинных случайных чисел.

    В совокупности две транзакции будут иметь одинаковое значение R, только если сумма случайных чисел, выбранных всеми 29 Узлы кладовщика одинаковы в двух транзакциях. Вероятность этого составляет 2 ^ (- 368). Это менее вероятно, чем в вас прямо сейчас, когда вы читаете это предложение.

    1. Случайное число k, использованное для получения значения R, остается скрытым

    Как было показано ранее, как только случайное число k известно, закрытый ключ может быть реконструирован. При подписании транзакций из заблокированной учетной записи каждый узел Storeman генерирует только долю случайного числа «k». Поскольку каждая общая папка передает данные по защищенным каналам, ни один узел Storeman не может восстановить полное значение случайного числа k.

    Другими словами, благодаря конструкции SMPC Wanchain случайное число k использовать d для получения значения «R» всегда остается скрытым. Заблокированные учетные записи, используемые в ведущих в отрасли межсетевых мостах Wanchain, чрезвычайно безопасны. Не существует возможности утечки закрытого ключа.

    Вердикт

    Команда разработчиков Wanchain не согласна с тем, что взлом AnySwap представляет собой общий риск для других проектов, использующих SMPC. Группа исследований и разработок Wanchain вместе с другими разработчиками в отрасли, внедрившими SMPC, не рассматривает уязвимости или ошибки, которые позволили взломать AnySwap, как общий риск.

    Команда также хочет подчеркнуть важную роль, которую случайные числа играют в цепочке блоков. Случайные числа используются не только для подписания транзакций. Они используются на нескольких уровнях технического проектирования и являются важными компонентами PoS Consensus и алгоритмов сегментов, которые напрямую определяют безопасность сети блокчейнов.

    Эффективное создание надежных случайных чисел – непростая задача. Это Святой Грааль целых областей математики и криптографии. Гениальные люди посвятили свою жизнь и свой разум оптимизации генерации случайных чисел.

    Разработчики блокчейнов по всему миру должны продолжить эту традицию и разрабатывать алгоритмы генерации более распределенных случайных чисел, продолжая оптимизировать случайные числа в цепочке. генерация числа. Будущее DeFi – и блокчейна в целом – будет построено на работе, проделанной сегодня.

    Раскрытие информации: эта статья была написана группой исследований и разработок Wanchain.

      СПЕЦИАЛЬНОЕ ПРЕДЛОЖЕНИЕ (спонсируемое)

      Binance Futures 53 БЕСПЛАТНЫЙ Ваучер USDT: Используйте эту ссылку , чтобы зарегистрироваться и получить 25% скидки и 53 USDT при торговле USDT (ограниченное предложение).

      Специальное предложение PrimeXBT: Используйте эту ссылку , чтобы зарегистрироваться и ввести КАРТОФЕЛЬ 64 код для получения 53% бесплатный бонус на любой депозит до 1 BTC.