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:
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.
— §2.1, Fluxo de dados (por trabalho)
O lado do dispositivo desse acordo é especificado com igual precisão:
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 trabalhador
Ao 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.
Diagram source
flowchart TB
subgraph BEFORE["Antes: como publicado"]
direction LR
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 LR
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 ~~~ B2
A gravidade vem do que o modelo carrega. Esta arquitetura existe para conter exatamente os dados que as pessoas têm menos vontade de ter lidos, e ela tem sucesso na metade mais difícil desse problema: um trabalho concluído não pode ser descriptografado por ninguém, incluindo o operador. A lacuna está na única etapa em que o dispositivo tem que estabelecer com quem está falando.
A 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ência
Esse 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
First-wins é uma corrida. A regra garante que o vencedor mantém o trabalho e não diz nada sobre quem é o vencedor.
Uma afirmação adicional vale a pena citar, porque a descoberta a contradiz:
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ção
A 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.
Duas propriedades de design compõem a consequência#
Os resultados retornam ao dispositivo sob um segundo acordo que o mesmo adversário media, então um trabalho interceptado é concluído e parece comum do ponto de vista do usuário.
A ausência deliberada de um trabalho durável e um livro de resultados — a mesma ausência que cria não custódia e reduz a superfície regulatória — remove a maior parte do que um investigador usaria depois para reconstruir quais trabalhos foram afetados. Registros de coordenação expiram em torno de uma hora. A propriedade que protege os dados no caso comum afina o registro forense no caso adversarial.
A lacuna é a sombra lançada pela melhor decisão do modelo#
A arquitetura separa dados que um operador pode legítimamente manter de dados que nunca deve manter. Dados de contato são quem uma pessoa é e como alcançá‑la. Dados confidenciados são o que eles divulgam sobre si mesmos. Sistemas convencionais arquivam ambos em um banco de dados, o que é a mudança que transforma uma tabela de conta em um registro da vida privada de alguém. A resposta estrutural é uma única linha: manter o contato, não poder manter o confidenciado.
Remover o orquestrador central serve isso diretamente. Um componente que atribui trabalhos a trabalhadores necessariamente aprende quem faz o quê, e esse conhecimento é o ativo preciso que o modelo se recusa a manter. Removê‑lo também removeu o componente que normalmente atestaria a identidade de um trabalhador, e todo caminho restante para autenticar o trabalhador foi rejeitado de forma independente, cada um por uma razão defensável.
O resultado é um design que pensa sobre custódia com rigor real e aplica o raciocínio de custódia no único ponto onde a forma do problema é autenticação. O modelo de confiança pergunta o que cada componente mantém e responde corretamente. A pergunta necessária lá é o que cada componente pode substituir. Estes são dois problemas de confiança independentes, e resolver um nunca resolveu o outro.
Uma assinatura sobre a chave pública efêmera do trabalhador a fecha#
O trabalhador gera seu par de chaves efêmeras na inicialização exatamente como faz agora. Antes que essa chave seja publicada em uma reivindicação, ela é assinada por uma chave de operador de longo prazo cujo lado público acompanha a aplicação. O dispositivo verifica a assinatura antes de derivar qualquer coisa e recusa uma chave não assinada ou inválida. A recuperação já está especificada, pois a tentativa de reenvio guiada pelo cliente com um trabalho fresco e um acordo de chave fresco é o caminho padrão de falha do modelo.
A propriedade decisiva é que uma chave de assinatura não descriptografa nada. A violação da chave de assinatura do operador permite a falsificação de um trabalhador no futuro e não concede capacidade de ler um único trabalho concluído, porque essas chaves por trabalho foram destruídas com seus trabalhadores. Não‑custódia, o cofre de chaves vazio e a impossibilidade de descriptografia retrospectiva permanecem intactos. Isso é o que faz deste um complemento do design.
O assinador permanece livre de se tornar o orquestrador que o design removeu. Ele só precisa atestar que uma determinada chave pública efêmera pertence a um trabalhador que o operador lançou, e nunca precisa saber qual trabalho esse trabalhador reivindicará. O monitor existente é o lar natural: ele já provisiona e recolhe trabalhadores, não possui dados de usuário nem chaves, e por design não encaminha nem atribui trabalhos.
Replay merece uma verificação, pois um assinador sem conhecimento de trabalho não pode vincular uma assinatura a um identificador de trabalho. Um atacante que copia uma chave de trabalhador genuinamente assinada para um registro de reivindicação diferente ainda carece da chave privada correspondente, então a carga permanece ilegível. O resultado é um trabalho que ninguém pode processar — negação de serviço, com confidencialidade intacta.
Três limites permanecem, e a divulgação nomeia os três: o texto simples existe na memória do trabalhador enquanto o trabalho roda, o tempo do trabalho vaza metadados, e a construção de derivação de chave é sinalizada para melhoria pelo autor.
Esta descoberta existe porque a arquitetura foi colocada nos commons. A publicação foi o que tornou possível a avaliação independente, e é por isso que a lacuna surgiu aqui em vez de em um relatório de incidente. Uma versão proprietária desse sistema teria o mesmo problema sem ninguém posicionado para dizer isso.
Agradeço a contribuição, e o modelo merece a análise que ele convidou. A reivindicação central permanece, e é a forma que quero que mais sistemas adotem, porque uma arquitetura que nunca mantém dados confidenciais carrega uma fração da superfície regulatória de uma que os mantém.
A recomendação é estreita: autenticar a chave pública efêmera do trabalhador antes que o dispositivo a criptografe. Uma assinatura, verificada no dispositivo, a um custo de nada que faça o modelo valer a adoção. Tudo o que veio de uma conversa de voz-para-texto em mais de 30 notas, verificada contra a divulgação publicada em vez de qualquer resumo dela. Se essas descobertas forem validadas do lado deles, são diretas de agir.