Privacy in Litentry III: TEE Sidechain
Sequel to the previous article where we explained Trusted Execution Environment (TEE), this treatise digs even deeper into explaining the TEE sidechain and its components.
Layers 0, 1, and 2
The diagram below shows three layers of blockchains, each with its own responsibilities:
Чтобы добиться агрегации идентификационных данных, Litentry должен хранить конфиденциальные пользовательские данные, такие как учетная запись Ethereum и вычисленный кредитный рейтинг. Поэтому мы выбрали Trusted Execution Environment (TEE) для обеспечения безопасности и конфиденциальности хранения и обработки данных. Litentry разработала сайдчейн, состоящий из нескольких узлов, оборудованных TEE, предлагающий распределенное хранение и обработку пользовательских данных безопасным и конфиденциальным образом.
- Уровень 0 — основная сеть цепочек ретрансляции , таких как Kusama или Polkadot, отвечает за обеспечение общей безопасности во всей цепочке ретрансляции и сети парачейн. Он также функционирует как маршрутизатор для сообщений XCM.
- Уровень 1 — Litentry Parachain и Litmus Parachain используются в качестве блокчейнов для конкретных приложений. Они соединяются с цепочкой ретрансляции, занимая слот парачейна, позволяя цепочке ретрансляции проверять свои блоки и контролировать сообщения XCM.
- Уровень 2 — сайдчейн TEE поддерживается Integrite и позволяет исполняющей среде выполняться в среде безопасного выполнения SGX. Это отличается от парачейна уровня 1, который делает все состояния и внешние элементы общедоступными и видимыми.
Парачейн состоит из узлов, которые используют механизм dPOS (делегированное доказательство доли) для синхронизации и генерации блоков, в то время как сайдчейн состоит из узлов, оснащенных доверенными средами выполнения (TEE).
Программные компоненты
На приведенной выше диаграмме Parachain-Sidechain-Client есть четыре основных программных компонента: поддон Teerex, среда выполнения SGX, клиент Identity Hub и рабочие серверы.
поддон тирекс
Поддон Teerex в Parachain позволяет работникам TEE регистрироваться , обнаруживать и общаться друг с другом. Его основные особенности:
- Действует как проверенный реестр, который позволяет удаленно проверять анклавы SGX, обеспечивая возможность публичного аудита.
- Разработанный с учетом конфиденциальности в своей основе, чтобы преодолеть разрыв доверия между анклавом и позволить любому проверить выполняемые коды.
- Выступает в качестве косвенного прокси-сервера для конфиденциальных вызовов перехода состояния вне сети, выполняемых анклавами SGX.
Среда выполнения SGX
Среда выполнения SGX в сайдчейн-воркере обеспечивает конфиденциальное выполнение и интеграцию всех поддонов, совместимых с субстратом.
Поддоны SGX создаются в рабочем анклаве TEE SGX, компилируются в большой двоичный объект/двоичный файл WASM и зависят от tee-sgx-sdk. Он хранит данные о конфиденциальности в узле SGX, связывая идентификаторы, проверяя утверждения и сохраняя графы идентификаторов. Внешние параметры/адреса зашифрованы в парачейне, а закрытые ключи известны только узлам SGX, которые расшифровывают данные в SGX и отправляют вызовы во время выполнения. Это помогает поддерживать конфиденциальность пользовательских данных, за что выступает Litentry.
Дополнительную информацию можно найти в репозитории среды выполнения SGX .
Клиент центра идентификации
Клиент Identity Hub используется для выполнения вызовов или операций и также основан на субстрате.
Клиент взаимодействует с парачейном и сайдчейном через RPC / WSS (на диаграмме не показано взаимодействие сайдчейна, так как он еще не открыт). Вызовы, сделанные в парачейн, зашифрованы и непрозрачны для обеспечения конфиденциальности. Содержимое операции видно только клиенту и сайдчейну TEE (SGX, рабочие/узлы SGX и среда выполнения SGX).
Существуют различные типы вызовов, которые могут выполняться клиентом в зависимости от назначения операции. Они включают:
- Ненадежный вызов : клиент взаимодействует с узлом парачейна посредством ненадежных вызовов, отправки транзакций или запросов. Например, перевод баланса через клиента — это ненадежный вызов.
- Trusted call: The client interacts with the TEE worker server. E.g. calling link_eth, which is extrinsic from the SGX account linker pallet. Or query the encrypted data in SGX.
- Direct call: Client calls extrinsic in SGX runtime (same as a trusted call).
- Indirect call: Client encrypts SGX runtime call, sends to Teerex Pallet in parachain. Worker node syncs blocks identify call_work extrinsic, parses call from parachain, and dispatches to SGX runtime. The details could be found in the diagram below:
The Worker Server(s) execute functions with specified inputs and resource limits in response to TEE calls and operations. To ensure a sufficient level of scaling, there are usually many worker servers required for these executions.
Серверы являются наиболее сложной частью всего TEE, и их основные функции заключаются в следующем:
- Используется при проведении удаленной аттестации — процесс запроса производителя TEE (Intel) на аутентификацию TEE. Производитель подписывает отчет, чтобы подтвердить, что и сам TEE, и хэш исполняемого им двоичного файла являются подлинными.
- Предоставляет среду выполнения для среды выполнения SGX на доверенном узле.
- Синхронизируйте блоки из парачейна, расшифруйте и проанализируйте данные из call_work
- Генерирует блок боковой цепи, синхронизирует и осуществляет консенсус между узлами
- Предоставляет услуги RPC и WSS
- Отправить ответ на парачейн через внешний
Sharding — the principle of dividing up the overall workload that servers need to handle into smaller, more manageable chunks — is supported from the beginning of sidechain design. The server node joins one shard (each call both direct and indirect has a default parameter shard identity). The server node then executes the call with the same shard that it joined. The benefit of sharding is as follows:
- The state for each shard is isolated — the different shard nodes can’t see each other’s private data
- Shard nodes can skip the call from another shard. This help to save resources and makes it faster to execute less extrinsic in the block
- Sharding makes it possible to use our solution at a large scale, at the same time protecting user data
При запросе привязки удостоверений (Web2 <> Web3 или привязки межсетевых кошельков) или проверяемой генерации учетных данных в Identity Hub все данные, необходимые для выполнения запроса, будут храниться и вычисляться в среде TEE.
Это включает в себя сам запрос, взаимосвязь между разными кошельками, данные, полученные из определенного кошелька, который поддерживает претензию в ВК, и т. д.
Первоначальные функции Litentry Parachain, включая передачу токенов, управление, стейкинг и межсетевую передачу, не включают процессы сохранения конфиденциальности.
Особая благодарность Мелу Чжоу , Эрику Чжану и Кайлай Ван за их знания и опыт, основанный на вкладе в серию статей, которые мы опубликовали для информирования пользователей, членов сообщества и энтузиастов конфиденциальности о нашем решении для управления конфиденциальностью и идентификацией.
Вот ссылки, чтобы прочитать наши предыдущие публикации, чтобы лучше понять новое решение, которое мы создаем в Litentry:

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































