Consultoria: Uma Descoberta Crítica no Modelo de Computação Não-Custodial PIE
O modelo remove a capacidade do operador de descriptografar qualquer coisa depois que um trabalho termina. O dispositivo ainda criptografa para uma chave pública não verificada publicada pelo único componente que o modelo designa como não confiável.
Developed by Robert E. Beckner III (Merlin) | rbeckner.com
Eu tenho construído sistemas por 25 anos, e adoro construir coisas que são intencionalmente projetadas e operacionais, carregando apenas tanto de um vetor quanto ganha seu peso.Nesse enfoque, minimizar o que armazeno dos dados de um usuário sempre fez sentido para mim, por razões que vão além da óbvia. A soberania dos dados deles importa. Embaixo disso há algo mais simples: as coisas pertencem onde pertencem. A maior parte do que construo é processamento, e uma arquitetura de processamento não tem negócio de operar como algo diferente. Manter um registro que nunca precisou é um vetor que não ganha nada. Tratar isso como uma otimização, em vez de um exercício de conformidade, é o que mantém o design honesto — e um sistema construído dessa forma tende a ficar em boa situação com a regulamentação por conta própria, porque há muito pouco dela sobrando para regular.Então, quando o anúncio de Mary Camacho apareceu no meu feed no X, eu li sua arquitetura da mesma forma que leio a minha própria. Ela havia publicado o núcleo disso no registro público sob uma licença Creative Commons, no nível de detalhe que um engenheiro precisaria para reconstruí-lo, e ela foi direta sobre a arte prévia que sustenta isso.Trabalhando pela sequência, coloquei uma entidade adversarial dentro do servidor e segui o que ela poderia alcançar. Ela poderia ultrapassar o trabalhador.Quase todo o trabalho que seguiu aconteceu como uma conversa de voz — sobre 30 notas de voz, pensando alto e testando a preocupação de diferentes ângulos até que ela segurasse ou desmoronasse.O que percebi: o dispositivo criptografa para quem escrever o registro de reivindicação primeiro#
A divulgação especifica a ordem das operações diretamente. O trabalhador reivindica o trabalho e publica sua chave, e só então o dispositivo criptografa:O lado do dispositivo desse acordo é especificado com igual precisão:— §2.1, Fluxo de dados (por trabalho)
- Trabalhador → coordenação: consulta e reivindica o trabalho (escrita única, primeiro vence), publicando a chave pública do trabalhador.
- Dispositivo ← coordenação: consulta, recupera a chave pública do trabalhador, deriva o segredo compartilhado, criptografa a carga útil.
O dispositivo, ao aprender a chave pública do trabalhador, realiza sua própria troca X25519 e uma encapsulação ML-KEM contra a chave do trabalhador, produzindo sua própria contribuição pública (chave pública X25519 ‖ texto cifrado ML-KEM) e o segredo compartilhado.— §4.2, Vinculação ao ciclo de vida do trabalhadorAo aprender. Em 19 páginas não há assinatura sobre a chave pública efêmera do trabalhador, nenhum certificado, nenhuma atestação que o dispositivo avalie, e nenhum segredo pré-compartilhado. A ausência é deliberada e apresentada como uma força: o modelo bloqueia a descriptografia sem nenhum documento de atestação, citação TPM ou artefato de boot medido, e não mantém nenhum segredo pré-provisionado do trabalhador.Assim, o dispositivo criptografa sua carga útil para qualquer chave pública que esteja no registro de reivindicação, sem meio de distinguir a chave de um trabalhador legítimo de qualquer outra. Qualquer parte que consiga escrever uma reivindicação primeiro torna-se a parte para quem o dispositivo criptografa, e a carga confiada descriptografa em suas mãos.
flowchart TB
subgraph BEFORE["Antes: como publicado"]
direction TB
A2{"Quem reclama primeiro?"} -->|Trabalhador real| A3["Chave genuína"]
A2 -->|Qualquer outro escritor| A4["Chave do atacante"]
A3 --> A5["O dispositivo criptografa para ela"]
A4 --> A5
A5 --> A6["O detentor da chave pode ler"]
end
subgraph AFTER["Depois: chave assinada"]
direction TB
B2{"Assinatura válida?"} -->|Sim| B3["Chave do trabalhador verificada"]
B2 -->|Não| B4["Recusar, tentar novamente"]
B3 --> B5["Apenas o trabalhador verdadeiro lê"]
end
A6 ~~~ B2Copy sourceA criptografia é sólida e a introdução é não autenticada#
O atacante não quebra nada. X25519 e ML-KEM-768 funcionam exatamente como especificado. O atacante fornece uma chave e se torna uma parte legítima do acordo.Isso é acordo de chave não autenticado, e seu modo de falha é o resultado mais antigo no campo. Diffie-Hellman simples não autentica ninguém e cai para uma parte que substitui sua própria chave pública. Mecanismos de encapsulamento de chave herdam a propriedade, razão pela qual RFC 9180 coloca a autenticidade da chave pública do destinatário fora de seu próprio escopo e assume que a aplicação circundante a estabelece por meio de certificados, um diretório de chaves ou verificação fora de banda. Esse modelo é a aplicação circundante, e o canal que ela usa para distribuir a chave do destinatário é o componente que seu próprio modelo de confiança rotula como não confiável.A divulgação antecipa um ataque vizinho e o fecha:A reivindicação é escrita única/primeiro vence, então um trabalhador posterior não pode sequestrar a troca de chave de um trabalho.— §6, Implementação de referênciaEsse raciocínio é sólido e o mecanismo faz o que diz. Cobre um dos dois casos simétricos.
| Ameaça | Tratado pela reivindicação de escrita única |
|---|---|
| Um segundo trabalhador sobrescreve uma reivindicação existente | Sim — a escrita é rejeitada |
| Uma parte não autorizada escreve a reivindicação primeiro | Não — a primeira escrita vence |
Nenhum intermediário (gateway, coordenação, armazenamento, monitor) jamais detém material chave suficiente para derivar qualquer segredo. Um atacante que compromete a coordenação ou o armazenamento obtém apenas blobs opacos e chaves públicas.— §4.3, Chaves independentes por direçãoA primeira frase é precisa. A segunda descreve um atacante que lê. Um atacante que escreve coloca uma chave pública escolhida no registro de reivindicação antes que o dispositivo faça polling, e derivar o segredo legítimo torna-se desnecessário para uma parte que pode se organizar para ser a contraparte. Quem governa o conteúdo desse registro governa quem pode ler a carga útil, o que faz da camada de coordenação um componente confiável para confidencialidade — a única coisa que §3 diz que nenhum componente além do dispositivo e do trabalhador jamais deve ser.Um limite honesto na reivindicação: isso não significa que qualquer pessoa na internet aberta possa ler esses dados hoje. Em uma implantação real, a capacidade de escrever reivindicações fica atrás de redes e credenciais na nuvem, e a divulgação descreve um gateway autenticador no caminho do dispositivo. O problema preciso é que a confidencialidade agora repousa nesse perímetro, enquanto a promessa central da arquitetura é que ela permanece sem confiar nos componentes entre o dispositivo e o trabalhador.