# Mantenha o enclave pequeno

> Cada linha dentro da caixa custa mais para escrever, mais para mudar e mais para verificar — e cada mudança invalida a medição que seus clientes fixaram. A divisão entre o núcleo confidencial e o produto comum é a decisão de maior alavancagem do projeto.

2026-09-20 · https://synsema.com/pt/blog/mantenha-o-enclave-pequeno


A primeira arquitetura confidencial que quase todo time desenha coloca o produto dentro do enclave. A camada web, o banco, o dashboard, os jobs — tudo, porque tudo acaba tocando os dados em algum momento.

É a resposta cara, e normalmente é a errada. Não porque um enclave seja lento, mas pelo que custa viver dentro de um depois.

## Quanto custa uma linha de código dentro da caixa

- **Toda mudança muda a medição.** A medição é o que seus clientes fixaram. Um ajuste de texto num template despacha um PCR0 novo, e cada contraparte que verifica precisa aceitar um valor esperado novo. Isso é um processo de release com times de segurança de outras empresas dentro.
- **O ambiente é hostil a software comum.** No Nitro não há armazenamento persistente, nem acesso interativo, nem rede própria — cada byte atravessa um proxy vsock que você mantém. Fazer um estado sobreviver a um restart significa chaves seladas ou uma integração com KMS.
- **A superfície de auditoria é o pacote inteiro.** O valor da caixa é que alguém lê o código que está lá dentro. Dez mil linhas transformam isso num projeto que ninguém termina; duzentas, numa tarde.

## A divisão

Coloque no enclave o que satisfaz as duas condições: **código que você publicaria sem problema, sobre dados que você não tem permissão de ler.** Todo o resto fica fora.

| Dentro | Fora |
|---|---|
| A decisão: o score, o match, a regra de pagamento, a assinatura | O site, o cadastro, as sessões, o dashboard |
| A decifragem do que a contraparte enviou | O armazenamento do texto cifrado, a fila, as retentativas |
| A chave que só este código pode usar | Cobrança, cotas, e-mails, a trilha de auditoria |
| O único valor que volta para fora | Tudo o que o cliente olha |

O formato decorre disso: o lado de fora guarda texto cifrado e metadados, entrega um trabalho ao enclave e recebe uma resposta pequena e deliberada. Em Synsema essa última parte não é uma convenção — a resposta é um sumidouro público, então qualquer coisa privada que não seja explicitamente desclassificada nunca sai:

```synsema
let score be private(payload["score"], "applicant")
let approved be score >= CUTOFF
give declassify(approved, "the yes/no is what the lender asked for; the score stays inside")
```

Um valor, uma frase dizendo por que ele pode ser publicado, e essa frase é listada por `synsema code check --json` antes de qualquer coisa rodar. Um enclave pequeno tem uma lista curta, e uma lista curta é uma revisão de segurança que o seu cliente consegue de fato ler.

## Troca de versão: planeje antes do primeiro cliente

Como a medição é fixada, entregar dentro da caixa é diferente:

1. Publique o novo `program_sha` e a medição esperada **antes** do rollout, onde os clientes procuram.
2. Rode a versão antiga e a nova lado a lado durante a janela. Clientes que fixaram a medição antiga continuam funcionando; clientes que adotam o valor novo migram.
3. Aposente a antiga numa data que você anunciou. Isto é depreciação de API, com criptografia no lugar de um cabeçalho de versão.

Os times que pulam essa parte descobrem na primeira vez que uma correção de segurança precisa sair numa sexta-feira.

## Onde cada metade roda

O enclave roda onde você escolheu — Nitro, uma VM confidencial, dstack, ou ancorado numa cadeia; isso é [o post anterior](/pt/blog/onde-rodar-uma-carga-de-trabalho-confidencial). O resto é software comum com um vizinho incomum, e precisa exatamente do que qualquer produto precisa: HTTPS, sessões, um banco, segredos que nunca são impressos, jobs agendados, um dashboard, cobrança.

É isso que esta plataforma faz. `syn deploy` coloca a camada pública no ar com um certificado, uma trilha de auditoria de cada capacidade que o programa usou e segredos guardados selados — e faz isso com um comando, para que a metade interessante da sua semana vá para as duzentas linhas que moram na caixa.

As duas metades conversam por HTTPS comum, com um acréscimo: antes de a camada de fora mandar um trabalho para dentro, ela verifica o documento de identidade do enclave e fixa a chave que veio nele. Vinte linhas, a mesma linguagem, sem SDK — o formato está [no manual](https://synsema.dev/en/0.6.x/24-attestation).

## A regra prática

Se você não consegue dizer, numa frase por valor, o que sai do enclave e por quê, a caixa está grande demais. Encolha até conseguir. Cada hora gasta nisso volta no processo de release, na auditoria e naquela conversa em que o time de segurança de um cliente pergunta o que, exatamente, eles estão confiando.

