COMO FUNCIONA A VERIFICAÇÃO

Verificado no seu navegador.
Selado para o enclave.

O que seu navegador verifica, o que nosso retransmissor vê e em que você ainda confia em nós.

Ainda sem avaliação independente

  • Enclave verificado primeiro

    Como sabemos

    Antes da sua primeira mensagem, o verificador de código aberto da Tinfoil confere no seu navegador o relatório assinado pelo chip. Um relatório que não se verifica interrompe tudo.

    Ver como
  • Selado na sua aba

    Como sabemos

    Cada solicitação é criptografada com EHBP (HPKE, AES-256-GCM) para a chave que a atestação indica, antes de sair.

    Ver como
  • O retransmissor vê bytes

    Como sabemos

    Nosso retransmissor verifica sua conta e sua cota e repassa o texto cifrado aos hosts da Tinfoil. Ele vê tamanhos, horários e sua conta, e não guarda nenhuma cópia.

    Ver como
  • Um comprovante por resposta

    Como sabemos

    Seu navegador verifica o enclave do modelo que respondeu, onde o hardware dele permite, e guarda o que encontrou junto com a resposta.

    Ver como

Quem poderia olhar, e o que impede.

  1. A rede

    Risco residual: Baixo
    Obtém
    Bytes selados, tamanhos, horários
    Impedido por
    HTTPS e depois a selagem para o enclave
    Continua em aberto
    Tamanhos e horários do tráfego
  2. Nosso retransmissor

    Risco residual: Médio
    Obtém
    Sua conta, IP, tamanhos, modelo
    Impedido por
    Selado na sua aba; ele não consegue abrir
    Continua em aberto
    Os metadados que ele vê
  3. O host na nuvem

    Risco residual: Médio
    Obtém
    Memória do enclave criptografada
    Impedido por
    AMD SEV-SNP ou Intel TDX, com atestação
    Continua em aberto
    Falhas de hardware; as próprias declarações da Tinfoil
  4. Um enclave falso

    Risco residual: Baixo
    Obtém
    Nada: sua aba o recusa
    Impedido por
    Atestação, verificada no seu navegador
    Continua em aberto
    Código verificado não é código revisado
  5. Código do site alterado

    Risco residual: Médio
    Obtém
    O que você digita, antes da selagem
    Impedido por
    Manifesto, assinatura, sua própria build
    Continua em aberto
    Uma página não consegue responder totalmente por si mesma
  6. A API para desenvolvedores

    Risco residual: Alto
    Obtém
    Sua solicitação, na memória
    Impedido por
    Sem armazenamento nem logs, pela nossa política
    Continua em aberto
    Você confia no nosso gateway

DENTRO DE UM SERVIDOR

Onde o enclave começa, e onde termina.

Role a página para desmontar um servidor de GPU: o que fica dentro do limite do enclave, e o que fica fora dele.

  1. Dissipador de calorA tampa de metal sobre os chips da GPU.
  2. Die da GPUOnde o modelo roda. A documentação da Tinfoil diz que suas GPUs NVIDIA (H100, H200 e B200) funcionam em modo de computação confidencial.
  3. Memória de alta largura de bandaGuarda os pesos do modelo, e a sua solicitação enquanto ela é respondida.
  4. Máquina virtual confidencialNo processador do servidor (AMD SEV-SNP ou Intel TDX): o roteador da Tinfoil e o servidor do modelo, em uma memória que o host não consegue ler. O chip dele assina o relatório que seu navegador confere.
  5. O limite do enclaveO que o hardware mantém fora do alcance do host, e o que a atestação descreve. Sua solicitação só é aberta dentro dele.
  6. O hostA placa, o hipervisor e os drivers dela, e quem a opera: fora do limite. Ela leva bytes selados para dentro e para fora.

Uma ilustração do tipo de máquina que a Tinfoil usa, não a imagem de uma máquina específica. O registro de versão assinado da Tinfoil indica as CPUs, a memória e as GPUs de cada enclave; o painel Verificado do espaço de trabalho mostra esses dados.

Ler o texto completoOcultar o texto completoCerca de 12 minutos, seis diagramas

Em resumo

O Undergrove executa modelos de pesos abertos dentro de enclaves de hardware operados pela Tinfoil. Parte do que isso significa o seu navegador verifica por conta própria; parte é uma declaração da Tinfoil; e parte depende de nós. Veja o que é o quê.

Seu navegador verifica

  • Que o enclave é um hardware genuíno executando o código que a Tinfoil publicou.
  • Que cada solicitação é selada para a chave desse enclave antes de sair da sua aba.
  • No comprovante de cada resposta, o enclave do modelo que respondeu, quando o hardware permite.

A Tinfoil declara

  • Que não consegue acessar os próprios enclaves e que nada neles persiste entre reinicializações.
  • Que as GPUs compatíveis dela rodam em modo de computação confidencial.

Você confia em nós para

  • O código que este site envia ao seu navegador, que você pode comparar com a build.
  • O que o retransmissor faz com o que consegue ver: tamanhos, horários e sua conta.
  • O gateway da API para desenvolvedores, que lê as solicitações na memória.

Nada disso passou ainda por uma avaliação independente.

01 · Atestação

O chip responde pelo código.

Um enclave de hardware é uma parte de um servidor que o próprio host não consegue examinar: o processador criptografa a memória do enclave e mantém o software do host fora dela. Sozinho, isso seria só uma promessa. O que torna isso verificável é a atestação. Quando o enclave inicia, o processador mede o código que carregou e assina um relatório dessa medição com uma chave garantida pelo fabricante do chip. O relatório também indica a chave pública com a qual o enclave vai descriptografar.

Antes da sua primeira mensagem, o espaço de trabalho busca esse relatório do enclave roteador da Tinfoil, pelo nosso servidor, e executa nele, no seu navegador, o verificador de código aberto da Tinfoil. Buscá-lo por nós não muda nada: não conseguimos forjar a assinatura do chip, e um relatório que não passa na verificação interrompe tudo.

O enclave da TinfoilRelatório de hardwareO processador mede o código com que o enclave inicializou e assina um relatório sobre ele, que indica a chave pública do enclave, com uma chave garantida pelo fabricante do chip.
GitHub e SigstoreVersão publicadaA Tinfoil compila seu código aberto publicamente e registra a medição de cada versão no log público de transparência do Sigstore.
Seu navegadorO verificador de código aberto da TinfoilConfere a assinatura do relatório com as chaves do fabricante do chip, confere o registro de build assinado da versão e compara as duas medições.

Correspondem: as solicitações são seladas para a chave que o relatório indica.

Algo falha: nada é enviado, e o espaço de trabalho diz por quê.

Figura 1. Seu navegador compara duas coisas que consegue verificar sem confiar em nós: o relatório assinado pelo chip sobre o código que roda no enclave, e a versão que a Tinfoil publicou para esse código. Só se elas corresponderem ele sela alguma coisa.

As verificações do verificador, em ordem

  1. Encontrar a versão que a Tinfoil publicou para este código.
  2. Conferir o relatório de atestação de hardware do enclave com as chaves de assinatura do fabricante do chip.
  3. Conferir o registro de build assinado da versão (Sigstore, a partir do GitHub).
  4. Comparar: o código medido no enclave precisa ser exatamente essa versão.
  5. Conferir se a chave de criptografia é a que a atestação do enclave indica.

Um relatório verificado é reutilizado por até dez minutos, nesta aba ou em outra aba deste site, e só se for exatamente o mesmo, pelo SHA-256. O espaço de trabalho mostra cada verificação em Verificado, e a página de arquitetura mostra o código que a executa.

02 · Selagem

Só o enclave pode abrir.

Com o enclave verificado, cada solicitação real é selada na sua aba antes de sair. O corpo dela é criptografado com EHBP, o protocolo da Tinfoil para criptografar corpos HTTP, para a chave que a atestação indicou. O EHBP usa HPKE, um padrão para criptografar para a chave pública de alguém: sua aba cria um par de chaves novo para a solicitação, combina-o com a chave do enclave em um segredo compartilhado e criptografa com AES-256-GCM.

A nova metade pública viaja ao lado do texto cifrado, como a chave encapsulada. Só a chave privada do enclave, que nunca sai do enclave, consegue transformá-la de volta no segredo. A resposta volta do mesmo jeito, em frames selados que sua aba abre à medida que chegam.

Sua abaUm novo par de chaves, a cada solicitaçãoCombinado com a chave pública verificada do enclave, gera um segredo que ninguém mais consegue deduzir.
Texto cifrado + chave encapsulada
Retransmissor do UndergroveRepassaNão tem nenhuma chave que o abra.
Os mesmos bytes
O enclave da TinfoilAbreCom a chave privada que nunca sai do enclave.
Figura 2. O EHBP sela o corpo de cada solicitação com HPKE: X25519, HKDF-SHA256 e AES-256-GCM. A resposta também volta selada em streaming e só se abre na sua aba. Sele uma mensagem você mesmo e acompanhe cada etapa.

03 · O retransmissor

Bytes que ele não consegue ler.

As solicitações seladas vão para o nosso retransmissor, uma função na Vercel, em vez de irem direto para a Tinfoil. Ele verifica quem está pedindo e se a pessoa está dentro da cota, e coloca a chave da Tinfoil do Undergrove na solicitação, para que você não precise de uma conta na Tinfoil. Ele recusa tudo o que não for endereçado a um dos hosts da própria Tinfoil ou que não traga uma chave encapsulada.

Ele não consegue contar suas palavras, então estima o custo de cada solicitação pelo tamanho do texto cifrado, errando para mais. Ele não guarda nenhuma cópia, e os logs dele têm só nomes de rotas, códigos de status e tempos.

Por fora: o retransmissor vê

  • Sua conta e seu endereço IP (pela Vercel, nossa hospedagem)
  • O tamanho, o horário e o caminho de cada solicitação
  • Qual modelo respondeu, a partir de um cabeçalho que a Tinfoil define
  • Se a pesquisa na web ou imagens foram usadas, conforme seu navegador declara, para que possam ser cobradas

Selado por dentro: ele não consegue ler

  • Suas mensagens e arquivos
  • As respostas
  • Suas instruções e notas de memória
Figura 3. O retransmissor recusa qualquer coisa que não esteja selada para um dos próprios hosts da Tinfoil, coloca a nossa chave da Tinfoil e repassa os bytes. Ele cobra pelo tamanho porque não consegue contar palavras. Veja uma solicitação como o retransmissor a viu.

04 · Comprovantes

Dois enclaves, e um comprovante para cada resposta.

O enclave roteador que seu navegador verificou não executa o modelo. Ele abre sua solicitação e a repassa ao enclave onde o modelo roda com as GPUs, que o próprio roteador verifica, segundo o código publicado dele, e indica em um cabeçalho de resposta.

Seu navegador então verifica também esse enclave indicado, com o mesmo verificador, com base no repositório que o roteador da Tinfoil fixa para aquele modelo. O que ele encontrou fica guardado com a resposta como um comprovante: o enclave, o código medido nele, a versão com que ele confere e a chave para a qual a solicitação foi selada. Um comprovante é o registro do próprio navegador, não assinado por nós nem pela Tinfoil; a atestação por trás dele é assinada pela AMD e pelo GitHub, então qualquer pessoa pode verificá-la de novo.

Enclave 1Roteador da TinfoilVerificado antes do envio. Abre a solicitação.
De enclave para enclave
Enclave 2O modelo e suas GPUsIndicado no cabeçalho tinfoil-enclave.
Verificado de novo
Seu navegadorO comprovante da respostaGuardado com a resposta: o enclave, o código medido, a versão e a chave.
Verificado
Hardware genuíno, executando uma versão publicada do repositório que o roteador da Tinfoil fixa para o modelo.
Não verificado
Hardware que o verificador do navegador ainda não consegue ler: ele lê relatórios AMD SEV-SNP, então um enclave em Intel TDX é registrado como não verificado.
Não confirmado
A verificação foi executada e uma etapa falhou, por exemplo um enclave que já está em uma versão mais nova do que aquela com que o serviço da Tinfoil o associa.
Figura 4. O roteador da Tinfoil verifica ele mesmo o enclave do modelo, sob seu código publicado, e o indica em um cabeçalho de resposta. Seu navegador verifica esse enclave de novo para o comprovante da resposta. O cabeçalho não é coberto pela criptografia, então isso mostra que o enclave indicado é genuíno, não que esta solicitação foi para ele; esse trecho depende do código publicado do roteador.

05 · A API para desenvolvedores

Um caminho diferente, dito com clareza.

Um código que chama a API para desenvolvedores envia a solicitação por HTTPS ao nosso gateway, que a lê: para verificá-la, aplicar limites e executar ferramentas. Ele a lê na memória e nunca a armazena nem a registra em log. Depois, o gateway faz o que seu navegador faz no espaço de trabalho: verifica o enclave com o SDK da Tinfoil e sela a solicitação para ele.

Então, neste caminho, você nos confia a solicitação enquanto o gateway a mantém. O que você ainda pode verificar é o enclave: cada resposta da rota da Tinfoil traz cabeçalhos que indicam o pacote de atestação que o gateway verificou, para que você verifique de novo. A documentação para desenvolvedores mostra como.

Espaço de trabalho
Seu navegadorVerifica e depois sela
RetransmissorNão consegue ler
EnclaveAbre
API para desenvolvedores
Seu servidorEnvia por HTTPS
Nosso gatewayLê na memória para verificar; nunca armazena nem registra em log
EnclaveVerificado antes pelo gateway
Figura 5. Dois caminhos até os mesmos enclaves. No espaço de trabalho, quem sela é o seu navegador; pela API, é o nosso gateway, depois de ler a solicitação na memória para verificá-la. Toda resposta da API vinda dos enclaves da Tinfoil indica o pacote de atestação que o gateway verificou, que GET /v1/attestation?sha256= devolve para você conferir de novo.

06 · Esta página

Verificando o código que verifica.

Tudo o que está acima roda em código que este site envia ao seu navegador, então esse código também importa. Cada build gera um manifesto: o SHA-256 de cada arquivo que o site serve e o commit a partir do qual ele foi gerado.

Uma página não consegue responder totalmente por si mesma: uma verificação que roda na página só é tão honesta quanto a página. A verificação mais forte não depende de nós: refaça a build do commit você mesmo no ambiente fixado e compare os manifestos.

O buildUm manifestoO SHA-256 de cada arquivo que o site serve, e o commit de onde ele veio.
Publicado com o site
Seu navegadorCalcula o hash do que carregouQualquer arquivo diferente é indicado.
Ou, na sua máquina
Qualquer pessoaRecompila o commitE compara os dois manifestos.
Figura 6. Verificar esta página calcula o hash dos arquivos que seu navegador carregou e os compara com o manifesto do build e do commit dele. Recompilar esse commit no ambiente fixado (npm run rebuild:site) deve gerar o mesmo manifesto, byte a byte; qualquer pessoa pode executar e comparar, sem precisar nos pedir.

07 · Limites

O que isto não prova.

  • As declarações da Tinfoil continuam sendo da Tinfoil. Que ela não consegue acessar os próprios enclaves, que nada neles persiste entre reinicializações e que as GPUs dela rodam em modo de computação confidencial é o que a Tinfoil diz. Seu navegador verifica que o hardware é genuíno e executa o código publicado.
  • O hardware faz parte daquilo em que você confia. A proteção é tão boa quanto os processadores, o firmware deles e as chaves dos fabricantes dos chips, e enclaves de hardware já tiveram vulnerabilidades publicadas antes.
  • Um dos trechos depende de código publicado. Que sua solicitação foi do roteador para o enclave do modelo depende do código publicado do roteador. Seu navegador só consegue verificar o enclave do modelo em AMD SEV-SNP; em Intel TDX, ele fica registrado como não verificado.
  • O retransmissor vê o lado de fora. Sua conta, seu endereço IP, tamanhos, horários e qual modelo respondeu.
  • Publicado não é o mesmo que revisado. O verificador mostra qual código roda, não que o código não tem falhas.
  • Ainda sem avaliação independente. Nenhum auditor revisou este design nem o código dele até agora.

Para saber quem poderia ver o quê, observador por observador, leia o modelo de ameaças.

08 · Vá além

Veja cada parte funcionando.