Применение технологии "TEE" в Polkadot

Данная статья была впервые опубликована 3 декабря, 2019 г. в блоге Polkadot. Автор: [Alain Brenzikofer], — Co-founder Integritee, project initiator and Head of Decentralized Systems at “Supercomputing Systems AG”(https://medium.com/@funny_mango_mouse_595)

Привет от команды “SubstraTEE” в “Supercomputing Systems AG”! В этой статье мы хотели бы представить ключевые концепции надежных оффчейн вычислений. Мы покажем, что вы можете сделать с помощью нашего инструмента SubstraTEE сегодня и наше видение будущих приложений.

SubstraTEE — это фреймфорк, который объединяет доверенные среды выполнения (TEE) с блокчейнами, разработанными на основе Substrate. Другими словами, цепочки, построенные с использованием собственного инструмента разработки в Polkadot, предоставляющего самый простой путь для подключения к сети Polkadot. SubstraTEE стремится улучшить конфиденциальность, масштабируемость и функциональную совместимость блокчейнов, выгружая обновления состояния в TEE.

Что такое ТЕЕ?

Мы привыкли к тому, что должны доверять нашим ИТ-администраторам. Если раньше эти администраторы были штатными сотрудниками в наших компаниях, сегодня мы часто используем арендованные облачные платформы.

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

Применение TEE.

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

Если кратко, TEE обещает целостность и конфиденциальность (удаленных) вычислений. Однако вы должны знать о возможных угрозах безопасности.

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

Обеспечение конфиденциальности в блокчейнах

Блокчейны прозрачны по своей природе. Они должны быть такими для обеспечения децентрализации. Вы можете легко добиться псевдонимности, но во многих случаях требуется конфиденциальность. Предприятия не хотят разглашать коммерческую тайну, и должны соблюдать европейские законы о конфиденциальности данных (GDPR). Последнее означает, что никакие личные данные не должны размещаться в блокчейне общего пользования. Проверка целостности вычислений при невозможности чтения обрабатываемых данных представляет собой еще одну проблему. Здесь TEE предлагает отличное решение: целостность и конфиденциальность вычислений.

ТЕЕ против доказательств с нулевым разглашением

Доказательства с нулевым разглашением (ZKP) позволяют ZCash осуществлять приватные переводы токенов. Хотя ZKP гарантируют конфиденциальность, не доверяя производителям оборудования, они требуют больших объемов вычислений и больших размеров транзакций. Кроме того, ZKP — это передовая область исследований, и понимание их требует специальных знаний.

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

Приватные транзакции в SubstraTEE

Компания Supercomputing Systems напряженно трудилась, чтобы завершить рабочий proof-of-concept своего продукта SubstraTEE. Приватные транзакции с токенами лежат в основе первых вариантов использования.

Давайте рассмотрим пример, как будет работать приватная транзакция с токеном. Алиса хочет передать Бобу 100 токенов, чтобы никто, кроме Боба, не знал о деталях этого перевода. Она создает защищенную транзакцию SubstraTEE:

let call = TrustedCall::balancetransfer(aliceincognito.public(), bobincognito.public(), 100);

Алиса шифрует этот вызов с помощью ключа защиты рабочего узла SubstraTEE, и отправляет его в рантайм модуль SubstraTeeRegistry как обычный экстринзик Substrate. Поскольку полезные данные зашифрованы, никто, кроме рабочего узла TEE в SubstraTEE не может ее расшифровать, и увидеть детали этого вызова. SubstraTeeRegistry действует как прокси-сервер и отправляет событие, включая непрозрачную полезную нагрузку.

Рабочий узел в SubstraTEE прослушивает такие события вызова, и пересылает полезную нагрузку в свой TEE. Затем TEE расшифровывает полезную нагрузку, и извлекает исходный вызов, который обрабатывается функцией перехода состояния (STF). Для этого демо STF — это точно такой же код, как и рантайм модуль балансов на Substrate.

STF работает с зашифрованным состоянием офчейн, и выполняет обновление состояния. В этом примере он переводит 100 токенов из учетной записи alice_incognito в bob_incognito. Полученное состояние зашифровывается, и сохраняется в IPFS. Затем рабочий узел отправляет внешнее подтверждение в цепочку, включая хэш вызова и хэш обновленного состояния.

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

Вы можете посмотреть это демо SubstraTEE на YouTube.

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

Как Алиса и Боб могут быть уверены, что рабочий узел в SubstraTEE действительно выполняет ожидаемый код на подлинном TEE? Удаленная аттестация — это процесс обращения к производителю TEE с просьбой подтвердить подлинность TEE, и подписать отчет, подтверждающий подлинность TEE, а также хэш двоичного файла, выполняемого TEE. Такой отчет также включает открытый ключ подписи TEE, поэтому мы можем быть уверены, что действительно взаимодействуем с доверенным TEE, проверив его подпись. SubstraTEE упрощает этот процесс для своих пользователей, сохраняя удаленные подтверждения ончейн в SubstraTeeRegistry. Таким образом, пользователям не нужно регистрироваться в службах аттестации производителей.

Резервирование

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

Архитектура SubstraTEE полностью децентрализована: кто угодно может запустить новый рабочий узел, отослав ключ удаленной аттестации в реестр SubstraTeeRegistry. Для подключения, новый рабочий узел должен запросить ключи у двух любых аттестованных узлов. После проведения взаимной удаленной аттестации, два узла предоставляют ключи новичку. Новый рабочий узел забирает самое актуальное состояние из IPFS хранилища, и сразу начинает обрабатывать запросы параллельно остальным узлам. Теперь мы можем отключить все узлы, кроме одного, но сеть все равно останется живой и активной.

Перспективы

Мы показали, как SubstraTEE повышает конфиденциальность. Далее идет бездоверительный доступ к состоянию цепочки. Мы работаем над предоставлением общих приватных вычислений с помощью контрактов ink! и строим мосты между чейнами.

Вскоре мы сможем реализовать прямой вызов, что повысит масштабируемость. В то время как наше текущее решение требует 1+N транзакций в цепочке на запрос (N — количество рабочих узлов), прямой вызов означает, что запросы напрямую отправляются рабочему узлу, и подтверждаются в цепочке партиями, что позволяет выполнять 1000 запросов в секунду. Прямой вызов дает еще одно преимущество в отношении GDPR: право на удаление. Поскольку никакие личные данные никогда не попадают в блокчейн, право на удаление может быть реализовано как функция STF.

Работа поддержана грантом фонда Web3 Foundation.

Данная статья является переводом на русский язык официальной статьи с веб-сайта Polkadot.

Original published in December 3, 2019, "Have a TEE with Polkadot"

Мы также рекомендуем ознакомиться c lightpaper Polkadot на русском языке.

Присоединяйтесь в Telegram чат "Subsocial на русском", общайтесь и получайте самые свежие новости о SubSocial

0
3sPM3K…WueaD7Post author

Polkadot Russian Community (Полкадот Россия и страны СНГ)

0 comments

Polkadot Russian Community (Полкадот Россия и страны СНГ)