Worldcoin Foundation disponibiliza componentes principais do software do Orb como código aberto

Mar 22, 2024 7 Minute Read

O Orb foi construído para dar aos indivíduos uma maneira de provar sua humanidade online com máxima privacidade e segurança. Agora, os componentes principais do software do Orb estão publicamente disponíveis no GitHub sob uma licença dupla MIT/Apache 2.0. Para mais contexto sobre por que o código aberto do Orb é importante, veja a seção de hardware da Árvore de Tecnologia do Worldcoin.

Esses novos componentes abertos complementam os repositórios de hardware e reconhecimento de íris lançados anteriormente, e sua disponibilidade pública marca um progresso significativo em tornar o processamento de imagem do Orb transparente e suas alegações de privacidade verificáveis. O lançamento de hoje inclui todo o código no Orb que é essencial para capturar imagens e transferi-las de forma segura para o World App[1].

Este post revisa os requisitos de design do software do Orb, destaca detalhes importantes de implementação e olha para o seu futuro.

Se você está interessado em trabalhar no software do Orb, veja as funções abertas no contribuinte do projeto Tools for Humanity aqui.

Uma visão geral do software do Orb

Requisitos de nível superior

O Orb fornece o mais alto nível de verificação para World ID distinguir humanos de IA[2]. Ele faz isso primeiro verificando que o portador do World ID é humano usando imagens dos olhos e do rosto. Se esses checagens de humanidade forem aprovados, o Orb então realiza um processo de verificação de íris e envia o código de íris resultante para um serviço que verifica a singularidade da pessoa. O processo é concluído em poucos segundos. Para mais informações sobre como os World IDs verificados pelo Orb podem ser usados, veja aqui

Figure

O único caso de uso do Orb para verificar a humanidade leva aos seguintes requisitos de alto nível, sem precedentes para um dispositivo biométrico:

  1. Privacidade: Durante a verificação do World ID, o Orb deve processar imagens localmente no dispositivo e depois transferi-las com segurança para a custódia do usuário. Isso elimina qualquer exigência de armazenar imagens no Orb ou de enviá-las para um backend central para processamento[3].
  2. Segurança: O protocolo Worldcoin espera que os Orbs verifiquem apenas World IDs de humanos genuínos. Isso significa que o Orb deve ser altamente resistente a spoofing e adulteração, mesmo em ambientes adversos[4]. Dispositivos modificados ou falsificados devem ser rejeitados pelo protocolo. 
  3. Transparência & Verificabilidade: O Orb deve ser projetado para exigir a confiança mínima em seus fabricantes e operadores. Deve haver uma maneira de o público auditar os Orbs, incluindo verificar o estado do software e das chaves criptográficas. Veja a seção relevante do whitepaper para mais detalhes.

Esses requisitos direcionam o design do Orb e impactam virtualmente todos os aspectos do seu software.

Figure

O stack de computação do Orb

Tools for Humanity (TFH), um colaborador do projeto Worldcoin, passou anos construindo um ambiente de computação seguro e poderoso para o Orb. O design é centrado em NVIDIA Jetson, que processa localmente os cinco fluxos de câmera do Orb para verificar um World ID em segundos. Cada Orb possui adicionalmente dois microcontroladores Arm Cortex M4 (executando Zephyr RTOS) para lidar com coisas como gerenciamento de energia, controles em tempo real e detecção de violação. Finalmente, cada Orb possui um elemento seguro dedicado que, como uma carteira de hardware, armazena uma chave de assinatura privada em um invólucro resistente a violações.

O Orb executa várias aplicações em Rust no Jetson, com um uso intenso de async Rust. Essas aplicações tratam de funções principais como processamento de dados de sensores, interface com redes neurais e aplicação de atualizações do sistema. Para inferência de rede neural, o Orb usa o motor TensorRT da NVIDIA para aproveitar completamente a GPU de 384 núcleos do Jetson. 

Amarrando tudo isso está o Orb OS[5]: uma distribuição GNU/Linux personalizada baseada no Debian e Ubuntu, otimizada para segurança. O Orb OS inclui verificações de integridade do sistema completo, uma configuração de Linux reforçada para segurança, um sistema robusto de atualização over-the-air e suporte para compilações reproduzíveis. Para operações criptográficas críticas (e.g. autenticação no backend), o Orb OS se comunica com um ambiente de execução confiável (TEE) no Jetson, bem como com o elemento seguro dedicado. 

Um tour pelo código

Entre os principais componentes do software do Orb que foram lançados hoje está a do_signup em orb-core, que codifica o fluxo de alto nível do Orb para cada verificação do World ID. Essa função chama a fase de captura de imagem e a fase de processamento biométrico, depois submete códigos de íris assinados ao serviço de unicidade. Adicionalmente, do_signup chama upload_custody_images para enviar com segurança as imagens do usuário para o seu World App.

Captura de imagem

Em questão de segundos, o sistema óptico avançado do Orb pode criar de forma confiável imagens de alta qualidade de olhos e rosto. Essa funcionalidade principal é habilitada por software personalizado e redes neurais que trabalham juntos para implementar detecção de rosto, rastreamento ocular, autofoco e auto exposição.

O autofoco foi uma das partes mais difíceis de implementar no sistema de imagem. Ele controla a lente líquida especificamente desenvolvida para encontrar rapidamente uma imagem nítida dos olhos de um indivíduo. A implementação em Rust contém um controlador de feedback, com estimativas de nitidez fornecidas por uma rede neural em tempo real. A saída de controle é enviada do Jetson para um microcontrolador, que implementa um loop de controle interno para conduzir a corrente elétrica para a lente[6].

Um vislumbre no loop de controle de feedback externo para encontrar o valor de foco mais nítido.

Figure

O autofoco comanda a lente líquida personalizada do Orb para encontrar rapidamente uma imagem nítida da íris.

Processamento de imagem

Uma vez que o Orb tenha criado imagens de olho e rosto de qualidade suficiente, elas são passadas para o pipeline biométrico. Esse pipeline tem dois objetivos: verificar se as imagens são autênticas[7] e gerar códigos de íris. Ambos são tratados por interfaces Python para redes neurais personalizadas, bem como uma implementação de filtro de Gabor.

As imagens de alta qualidade dos olhos da fase anterior são passadas para o Sistema de Inferência de Reconhecimento de Íris (IRIS). Esta implementação de ponta foi construída pela TFH e subsequentemente aberta ao público pela Worldcoin Foundation. O código em Rust é otimizado para sempre manter o IRIS e outros modelos grandes na memória, evitando a sobrecarga de recarregar regularmente esses grandes componentes. Isto é realizado com um design inspirado no processo Zygote do Android, que evita carregar cópias redundantes de dependências compartilhadas (como CUDA).

Privacidade e segurança

Privacidade e segurança sempre foram prioridades máximas ao construir o Orb. As alegações de privacidade do Orb[8] foram o foco de uma auditoria de caixa branca realizada pela Trail of Bits, que foi recentemente publicada. Mais auditorias estão em andamento e, juntamente com o código aberto, refletem o objetivo da Fundação de manter um nível continuamente alto de transparência em relação à privacidade e segurança.

Um passo crítico para a privacidade é enviar dados individuais do Orb para o World App para um recurso chamado “Custódia Pessoal”. Os indivíduos podem usar esses dados auto-custodiados, por exemplo, para Autenticação Facial no World App. Olhando para o futuro, esse recurso também pode reduzir a frequência com que os usuários precisariam retornar a um Orb para re-verificar seu World ID.

A implementação no Orb garante que os indivíduos estejam sempre no controle de seus dados. Cada pacote de dados é assinado com a chave privada do Orb, depois criptografado com uma chave pública fornecida pelo usuário[9][10] antes de ser transferido para o celular do usuário. A assinatura é realizada por um elemento seguro dedicado, que é emparelhado criptograficamente ao Jetson durante a fabricação[11]. A implementação de criptografia usa uma caixa selada para garantir que apenas o indivíduo possa descriptografar esses dados biométricos[12]. Uma vez que os dados criptografados são enviados do Orb para o World App do indivíduo, não existem cópias não criptografadas desses dados em lugar algum. 

Olhando para frente: transparência e verificabilidade

Este lançamento inicial do software do Orb é um passo importante em direção aos objetivos[13] de melhorar a transparência e verificabilidade do Orb. Para os próximos passos, a Worldcoin Foundation e a comunidade mais ampla do Worldcoin pretendem focar nas seguintes áreas relacionadas ao software do Orb:

  1. Desenvolvimento maximamente aberto. A maioria dos componentes lançados hoje já tem desenvolvimento aberto em seus repositórios públicos. No entanto, alguns componentes (notavelmente orb-core e orb-secure-element) são lançados como forks das versões internas, com algum código sensível[14] removido manualmente. Em consonância com a missão do protocolo, o objetivo da comunidade seria eliminar essa divergência e mover todo o código não sensível para desenvolvimento aberto.
  2. Componentes não confiáveis de código fechado. Para minimizar a confiança necessária em componentes de código fechado, eles são executados em uma "sandbox" para restringir seu acesso ao sistema. A configuração atual da sandbox está sendo ativamente aprimorada para evitar que todos os modelos de ML acessem a rede e o armazenamento persistente. Criticamente, a implementação do sandbox é em si mesma de código aberto.
  3. Apoie auditorias descentralizadas.  A Worldcoin Tech Tree inclui suporte para atestar propriedades de Orbs específicos, como o software exato que eles estão executando. Qualquer pessoa deve ser capaz de realizar essas atestações e divulgar os resultados. Essa infraestrutura é necessária para reduzir a confiança exigida nos fornecedores de Orb. Vários projetos de engenharia estão em andamento para apoiar tais atestações, incluindo relatórios de versão segura e builds públicas reprodutíveis.

Finalmente, esses componentes visam ajudar a trazer segurança, privacidade e transparência para muitos outros projetos, especialmente aqueles que executam aprendizado de máquina em dispositivos de borda. Por exemplo, ambientes de aprendizagem habilitados por IA (como este aqui) vêm com desafios de privacidade de dados semelhantes ao Orb. A esperança da Worldcoin Foundation é que a comunidade, para ajudar a tornar um mundo alimentado por IA seguro, melhore continuamente os componentes de código aberto hoje para maximizar sua utilidade para outros projetos. 

Detalhes de lançamento

Componentes Disponíveis Hoje

Nome do ComponenteDescrição
orb-core O aplicativo principal no Orb, que inclui o fluxo de verificação do World ID.

O lançamento de hoje é um fork de uma versão interna, com verificações de fraude removidas.
orb-attestUsa o elemento seguro para gerar um token de autenticação efêmero para comunicação com o backend.
orb-secure-elementInterface para o elemento seguro dedicado.
orb-firmwareFirmware que roda no MCU principal do Orb.
orb-messagesDefinições de Protobuf para conversar com o MCU principal.
orb-uiGerencia as luzes e sons no Orb.
orb-canWrapper em Rust para usar CAN no Linux.
orb-security-utilsBiblioteca para tarefas comuns sensíveis à segurança em Rust.
orb-backend-stateObtém o estado do Orb do backend. Atualmente não utilizado.
orb-slot-ctrlGerencia o slot de inicialização do Orb via variáveis EFI.
seek-cameraEncapsulamento seguro em Rust para a câmera térmica.
thermal-cam-utilFerramenta utilitária para gerenciamento da câmera térmica.

Trabalho futuro

Nome do ComponenteDescrição
orb-core O aplicativo principal no Orb, que inclui o fluxo de verificação do World ID.

Espera-se que a interface para caminhos de código privado seja explicitada. Espera-se que o código não privado seja movido para o desenvolvimento aberto.
orb-os Compila scripts para Orb OS.

Espera-se que esses scripts, bem como imagens de contêineres executáveis, sejam publicados. Componentes sensíveis à segurança devem ser removidos das imagens públicas.
orb-update-agent Responsável por realizar atualizações over-the-air (OTA).
orb-supervisor Coordena os outros serviços personalizados no Orb.
orb-trustzone Código que roda no Ambiente de Execução Confiável (TEE) do Jetson.
orb-update-verifier Bloqueia atualizações se elas forem bem-sucedidas.

References

  1. 1.
    World App é a primeira carteira compatível com World ID, criada e operada pelo colaborador do projeto Tools for Humanity (TFH).
  2. 2.
    Para uma visão geral sobre a necessidade de proof of humanness, veja post recente no blog de Vitalik Buterin.
  3. 3.
    Os usuários podem optar explicitamente por dar à Worldcoin Foundation acesso às suas imagens para fins de garantia de confiança, segurança e melhoria do sistema.
  4. 4.
    Todo o conjunto de medidas de detecção de fraude se estende além do Orb para o backend do Orb e o World App. Por razões de segurança, o código fonte disponível publicamente para o lançamento de hoje não inclui todos os componentes de software do Orb relacionados à prevenção de fraudes.
  5. 5.
    O código fonte da construção do Orb OS será incluído em um lançamento futuro. Consulte a tabela de lançamentos para mais informações. 
  6. 6.
    O segundo loop de controle no microcontrolador ajuda a estabilizar as oscilações naturais da lente.
  7. 7.
    “Autêntico” significa que as imagens são de um humano real. Imagens exibidas em uma tela na frente do Orb, por exemplo, serão rejeitadas. Essas verificações de fraude não estão incluídas nos repositórios de código aberto. Veja a seção “Olhando para o futuro: transparência e verificabilidade” para mais detalhes.
  8. 8.
  9. 9.
    A chave pública do indivíduo é enviada do World App para o Orb através da infraestrutura de backend. O backend não precisa ser confiável porque o hash da chave pública é enviado para o Orb diretamente via um código QR, que é usado para verificar a chave antes de ser usada. 
  10. 10.
    Esta chave pública é gerada pelo World App e é usada apenas para criptografar os dados da Custódia Pessoal. Detalhes adicionais são especificados aqui.
  11. 11.
    Detalhes sobre a descentralização adicional deste processo podem ser encontrados aqui.
  12. 12.
    Mesmo o Orb não pode descriptografar o pacote de Custódia Pessoal após criptografá-lo. 
  13. 13.
    Veja a seção “Oracles: Orbs” de Advancing Decentralization.
  14. 14.
    Código “sensível” se refere à verificação de fraude e detecção de adulteração.

Isenção de responsabilidade

O conteúdo acima refere-se apenas à data indicada. Além disso, está sujeito a riscos, incertezas e pressupostos, pelo que pode estar incorreto e ser alterado sem aviso prévio. Podes encontrar uma parte dedicada à isenção de responsabilidade completa nos nossos Termos de Utilização e as informações importantes para o utilizador estão na nossa página sobre os Riscos.

As informações neste artigo têm mais de 12 meses e podem estar desatualizadas. Por favor, visite world.org/blogpara obter as informações mais recentes sobre o projeto.