Может ли Блокчейн существовать только программно и не использовать оборудования?

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

Конфиденциальность блокчейна на основе TEE

Phala Network реализует технологию конфиденциальных смарт-контрактов. Эта технология будет отличается от традиционных смарт-контрактов, потому что контракты выполняются внутри специального аппаратного места в CPU, и название этого места Trusted Execution Environment. Программа, работающая внутри TEE сильно изолирована. Если кто либо захочет провести атаку с целью украсть данные, то они столкнуться с проблемой невозможности ни прочитать данные в памяти без авторизации, ни манипулировать программой, чтобы вызвать какие-либо непреднамеренные сбои.

В сети Phala мы реализуем вспомогательную программу, работающую внутри TEE, имя которой «pRuntime».

pRuntime — это больше среда выполнения команд чем сама программа в целом, которая поддерживает основной протокол TEE-майнера и гейткипера внутри TEE.
pRuntime обрабатывает удаленную аттестацию TEE, регистрацию в сети, управление ключами и конфиденциальное выполнение контрактов.

Но как убедить пользователя, что смарт-контракт работает внутри pRuntime, а не в эмуляторе? Вот основная концепция:

Удаленная аттестация

«Приложение, которое размещает в TEE данные , может также попросить TEE создать отчет, а затем передать этот отчет специально созданной службе для создания определенного вида учетных данных, отражающих состояние не только TEE в целом но и платформы. Эти учетные данные именуются “ quote“ или простым языком цитата TEE . Данные которые предоставляет “ quote” может быть передана организациям вне платформы и проверена… »

Удаленная аттестация — ключ к обеспечению безопасности системы TEE. Вот комментарии от Intel , который показывает, что измеряемый хешем код с настраиваемыми данными или сгенерированными кодами, работает внутри актуального подлинного TEE — Intel SGX.

Секретная подготовка

Удаленная аттестация — это основной строительный блок конфиденциальных смарт-контрактов. Но не все так прекрасно, существует проблема установки сквозного безопасного канала связи между стороной TEE. И на помощь приходит Intel SGX которая разработала и внедряет протокол Secret Provisioning для решения проблемы.

Используя протокол Secret Provisioning, можно установить полную цепочку доверия от пользователя к pRuntime:

  1. Блокчейн имеет заданный и установленный хеш кода pRuntime.
  2. pRuntime запускает протокол удаленной аттестации, получает отчет с данными: таких как хэш аттестованного кода и открытый ключ из пары эфемерных ключей идентификации.
  3. Отчет RA передается в Блокчейн и подтверждается в самом Блокчейне.
  4. Блокчейн сравнивает хэш из отчета RA.
  5. Открытый ключ идентификации регистрируется в Блокчейне НО с учетом что ,только текущий pRuntime имеет контроль над этим ключом.

В результате, пока сообщение подписано тем самым ключом идентификации, создавается зарегистрированный pRuntime. Кроме того, пользователи могут установить соединение типа TLS с pRuntime с его зарегистрированным открытым ключом.

Для связи с TEE пользователь может получить открытый ключ определенного времени pRuntime из Блокчейна. Затем пользователь может использовать открытый ключ своей учетной записи для запуска определенного протокола. Этот протокол получает секретный ключ для связи между пользователем и pRuntime.

Установленная цепочка считается проверенной и также подразумевает, что идентификационный ключ является достоверным для представления идентификатора pRuntime. Таким образом, единая удаленная аттестация может защитить всю будущую связь с pRuntime, если предполагается.

Как насчет обновления?

Самостоятельное обновление цепочки является нежелательным требованием, поскольку оно значительно снижает риски безопасности.
Но есть и хорошие новости, то что Substrate изначально поддерживает обновление не каждого “звена” , а всей цепочкев целом. Это делается с помощью алгоритма созданного для помощи управления цепочкой. Что касается TEE, то эта “среда” также может обновляться.

При обновлении pRuntime мы должны отправить хэш новой версии pRuntime в Блокчейн.
Затем сообщество должно обсудить и проголосовать за обновление.
Гейткиперы, так и Майнеры должны обновить pRuntime после того, как новая версия будет принята в сети.
Для Майнеров этот процесс проходит намногопроще, потому что они могут просто остановить добычу, выполнить обновление запуститься вновь. Но к Гейткиперам предъявляются более жесткие требования. Поскольку они либо запускают другой клиент TEE с более новой версией и ждут естественного переключения гейткиперов в следующий период формирования эры, либо делают аварийный дамп шифрования состояний и восстанавливают его в новую pRuntime.

Чтобы снизить риски взломов, ключи в привратниках распределяются по схеме совместного использования “Secret Shamir”, что означает, что даже если блокировка целостности нарушена, хост по-прежнему не может получить исходные ключи без общего согласования или одобрения.

Атака и защита

Наша модель безопасности основывается на том, что производителю TEE можно доверять. И согласитесь это разумно.

Во-первых, информация о том, как будет использоваться оборудование скрыта , что усложняет заранее спланировать атаку, снижая риски.

Во-вторых, при атаке так называемого “нулевого дня” другие приложения, работающие на этом ЦП, тоже подвергаются риску.

К счастью, эти все уязвимости решаются несколькими способами.

Принято считать, что только программные уязвимости можно исправить, а уязвимости оборудования увы — нет. Это не совсем ерное рассуждение.
К примеру ЦП можно исправить с помощью обновлений микрокода. Благодаря особой конструкции архитектуры Intel SGX большинство уязвимостей можно исправить. Возможно вы слышали, что недавно прошла большая серия атак под названием SGAxe , и все уязвимости были исправлены обновлением микрокода с последующей сменой группового ключа. После смены ключа все устаревшие устройства стали отклоняются от удаленной аттестации.

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

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

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

Имея репликации, он не смог вернуться к модели безопасности, подобной валидатору Polkadot. Злоумышленник должен контролировать достаточное количество майнеров, чтобы нарушить корректность, даже если предположение SGX о безопасности нарушено.

Итог

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

1 Like