Privacidade em Litentry III: TEE Sidechain

Jan 13 2023
Continuação do artigo anterior, onde explicamos o Trusted Execution Environment (TEE), este tratado se aprofunda ainda mais na explicação da sidechain TEE e seus componentes. Camadas 0, 1 e 2 O diagrama abaixo mostra três camadas de blockchains, cada uma com suas próprias responsabilidades: Para obter a agregação de identidade, o Litentry deve armazenar dados confidenciais do usuário, como uma conta Ethereum e pontuação de crédito computada.

Continuação do artigo anterior, onde explicamos o Trusted Execution Environment (TEE), este tratado se aprofunda ainda mais na explicação da sidechain TEE e seus componentes.

Camadas 0, 1 e 2

O diagrama abaixo mostra três camadas de blockchains, cada uma com suas próprias responsabilidades:

Para obter a agregação de identidade, o Litentry deve armazenar dados confidenciais do usuário, como uma conta Ethereum e pontuação de crédito computada. Assim, escolhemos o Trusted Execution Environment (TEE) para garantir a segurança e a privacidade do armazenamento e processamento de dados. A Litentry desenvolveu uma sidechain composta por vários nós equipados com TEE, oferecendo armazenamento distribuído e processamento de dados do usuário de maneira segura e privada.

  • Camada 0 — A rede principal de cadeias de retransmissão , como Kusama ou Polkadot, é responsável por fornecer segurança compartilhada em toda a cadeia de retransmissão e rede parachain. Ele também funciona como um roteador para mensagens XCM.
  • Camada 1 — Litentry Parachain e Litmus Parachain são empregados como blockchains específicos de aplicativos. Eles se interconectam com a cadeia de retransmissão ocupando um slot de parachain, permitindo que a cadeia de retransmissão valide seus blocos e supervisione as mensagens XCM.
  • Camada 2 — A cadeia lateral TEE é suportada pelo Integritee e permite que o tempo de execução seja executado em um ambiente de execução seguro SGX. Isso é diferente da paracadeia da Camada 1, que torna todos os estados e extrínsecos públicos e visíveis.

A parachain é composta por nós que utilizam um mecanismo dPOS (Delegated Proof of Stake) para sincronizar e gerar blocos, enquanto a sidechain é composta por nós equipados com Trusted Execution Environments (TEEs).

Componentes de Software

No diagrama Parachain-Sidechain-Client acima, há quatro componentes de software principais: o Teerex Pallet, SGX Runtime, Identity Hub Client e Worker Server(s).

Palete Teerex

O palete Teerex em Parachain permite que os trabalhadores da TEE se registrem , descubram e se comuniquem uns com os outros. Suas principais características são:

  • Atuando como um registro verificado que permite a verificação remota de enclaves SGX - fornecendo auditabilidade pública.
  • Projetado com confidencialidade em seu núcleo para preencher a lacuna de confiança entre o enclave e permitir que qualquer pessoa verifique os códigos que são executados.
  • Atuando como um proxy indireto para chamadas de transição de estado confidenciais off-chain executadas por enclaves SGX.

Tempo de execução SGX

O tempo de execução SGX no sidechain worker permite a execução confidencial e a integração de todos os paletes compatíveis com o substrato.

Os paletes SGX são instanciados no enclave de trabalho TEE SGX, compilados em blob/binário WASM e dependem de tee-sgx-sdk. Ele armazena dados de privacidade no nó SGX, vinculando identidades, verificando asserções e armazenando gráficos de ID. Os parâmetros/endereços extrínsecos são criptografados no parachain e as chaves privadas são conhecidas apenas pelos nós SGX, que descriptografam os dados no SGX e despacham as chamadas para o tempo de execução. Isso ajuda a manter a privacidade dos dados do usuário, o que significa Litentry.

Mais informações podem ser encontradas no repositório de tempo de execução SGX .

Cliente do hub de identidade

O Identity Hub Client é usado para executar chamadas ou operações e também é baseado em substrato.

O cliente interage com a parachain e sidechain via RPC / WSS (o diagrama não mostra a interação da sidechain, pois ainda não está aberta). As chamadas feitas para a parachain são criptografadas e opacas para invocar a confidencialidade. O conteúdo da operação é visível apenas para o Cliente e o TEE sidechain (SGX, SGX workers/nodes e SGX runtime).

Existem diferentes tipos de chamadas que podem ser executadas pelo cliente com base no destino da operação. Eles incluem:

  • Chamada não confiável : o cliente interage com o nó parachain por meio de chamadas não confiáveis, enviando transações ou consultas. Por exemplo, uma transferência de saldo via cliente é uma chamada não confiável.
  • Chamada confiável : o cliente interage com o servidor TEE worker. Por exemplo, chamando link_eth, que é extrínseco do palete do vinculador de conta SGX. Ou consulte os dados criptografados no SGX.
  • Chamada direta : Chamadas do cliente extrínsecas no tempo de execução SGX (o mesmo que uma chamada confiável).
  • Chamada indireta : o cliente criptografa a chamada de tempo de execução SGX, envia para o Teerex Pallet em parachain. Os blocos de sincronização do nó do trabalhador identificam call_work extrínseco, analisam a chamada da parachain e despacham para o tempo de execução SGX. Os detalhes podem ser encontrados no diagrama abaixo:

O(s) servidor(es) de trabalho executa(m) funções com entradas especificadas e limites de recursos em resposta a chamadas e operações TEE. Para garantir um nível suficiente de dimensionamento, geralmente há muitos servidores de trabalho necessários para essas execuções.

Os servidores são a parte mais complicada de todo o TEE e suas principais funções são as seguintes:

  1. Usado na realização de atestado remoto — o processo de pedir ao fabricante do TEE (Intel) para autenticar um TEE. O fabricante assina um relatório para confirmar que tanto o próprio TEE quanto o hash do binário que está executando são genuínos
  2. Fornece o ambiente de execução para tempo de execução SGX no nó confiável
  3. Sincronize os blocos de parachain, descriptografe e analise os dados de call_work
  4. Gera o bloqueio da cadeia lateral, sincroniza e realiza um consenso entre os nós
  5. Fornece serviço RPC e WSS
  6. Envie uma resposta para a paracadeia via extrínseca

Sharding – o princípio de dividir a carga de trabalho geral que os servidores precisam lidar em partes menores e mais gerenciáveis ​​– é suportado desde o início do design da sidechain. O nó do servidor junta-se a um shard (cada chamada direta e indireta tem uma identidade de shard de parâmetro padrão). O nó do servidor então executa a chamada com o mesmo shard ao qual se juntou. O benefício do sharding é o seguinte:

  1. O estado de cada estilhaço é isolado — os diferentes nós de estilhaços não podem ver os dados privados uns dos outros
  2. Os nós do shard podem pular a chamada de outro shard. Isso ajuda a economizar recursos e torna mais rápido executar menos extrínsecos no bloco
  3. O sharding possibilita o uso de nossa solução em larga escala, ao mesmo tempo em que protege os dados do usuário

Ao solicitar a vinculação de identidade (Web2 <> Web3 ou vinculação de carteiras cruzadas) ou geração de credenciais verificáveis ​​no Identity Hub, todos os dados envolvidos para concluir a solicitação serão armazenados e computados no ambiente TEE.

Isso inclui a solicitação em si, o relacionamento entre diferentes carteiras, dados obtidos de uma carteira específica que suporta a reivindicação em um VC, etc.

As funcionalidades iniciais do Litentry Parachain, incluindo transferência de token, governança, staking e transferência entre cadeias, não envolvem processos de preservação da privacidade.

Um agradecimento especial a Mel Zhou , Eric Zhang e Kailai Wang por seu conhecimento e contribuição baseada em experiência para a série de artigos que publicamos para educar usuários, membros da comunidade e entusiastas da privacidade sobre nossa solução de gerenciamento de privacidade e identidade.

Aqui estão os links para ler nossas publicações anteriores para entender melhor a nova solução que estamos construindo na Litentry: