Fase 4: Recuperação de Chaves por Herdeiros com Shamir's Secret Sharing
-2026-02-15
-O que acontece com suas memórias quando você morre? Até agora, Tesseras -conseguia preservar conteúdo ao longo de milênios — mas as chaves privadas e -seladas morriam com o dono. A Fase 4 continua com uma solução: Shamir's Secret -Sharing, um esquema criptográfico que permite dividir sua identidade em -fragmentos e distribuí-los para as pessoas em quem você mais confia.
-A matemática é elegante: você escolhe um limiar T e um total N. Qualquer T -fragmentos reconstroem o segredo completo; T-1 fragmentos não revelam -absolutamente nada. Isso não é "quase nada" — é informação-teoricamente seguro. -Um atacante com um fragmento a menos que o limiar tem exatamente zero bits de -informação sobre o segredo, independentemente do poder computacional que tenha.
-O que foi construído
-Aritmética de corpo finito GF(256) (tesseras-crypto/src/shamir/gf256.rs) —
-Shamir's Secret Sharing requer aritmética em um corpo finito. Implementamos
-GF(256) usando o mesmo polinômio irredutível do AES (x^8 + x^4 + x^3 + x + 1),
-com tabelas de lookup para logaritmo e exponenciação computadas em tempo de
-compilação. Todas as operações são em tempo constante via consulta a tabelas —
-sem ramificações baseadas em dados secretos. O módulo inclui o método de Horner
-para avaliação de polinômios e interpolação de Lagrange em x=0 para recuperação
-do segredo. 233 linhas, exaustivamente testado: todos os 256 elementos para
-propriedades de identidade/inverso, comutatividade e associatividade.
ShamirSplitter (tesseras-crypto/src/shamir/mod.rs) — A API principal de
-split/reconstruct. split() recebe uma fatia de bytes do segredo, uma
-configuração (limiar T, total N) e a chave pública Ed25519 do dono. Para cada
-byte do segredo, constrói um polinômio aleatório de grau T-1 sobre GF(256) com o
-byte do segredo como termo constante, e então o avalia em N pontos distintos.
-reconstruct() recebe T ou mais fragmentos e recupera o segredo via
-interpolação de Lagrange. Ambas as operações incluem validação extensiva:
-limites do limiar, consistência de sessão, correspondência de impressão digital
-do dono e verificação de checksum BLAKE3.
Formato HeirShare — Cada fragmento é um artefato autocontido e serializável -com:
--
-
- Versão do formato (v1) para compatibilidade futura -
- Índice do fragmento (1..N) e metadados de limiar/total -
- ID de sessão (8 bytes aleatórios) — impede mistura de fragmentos de sessões -diferentes -
- Impressão digital do dono (primeiros 8 bytes do hash BLAKE3 da chave pública -Ed25519) -
- Dados do fragmento (os y-values de Shamir, mesmo comprimento do segredo) -
- Checksum BLAKE3 sobre todos os campos anteriores -
Os fragmentos são serializados em dois formatos: MessagePack (binário -compacto, para uso programático) e texto base64 (legível por humanos, para -impressão e armazenamento físico). O formato texto inclui um cabeçalho com -metadados e delimitadores:
---- TESSERAS HEIR SHARE ---
-Format: v1
-Owner: a1b2c3d4e5f6a7b8 (fingerprint)
-Share: 1 of 3 (threshold: 2)
-Session: 9f8e7d6c5b4a3210
-Created: 2026-02-15
-
-<dados MessagePack codificados em base64>
---- END HEIR SHARE ---
-
-Este formato é projetado para ser impresso em papel, armazenado em um cofre -bancário ou gravado em metal. O cabeçalho é informacional — apenas o payload -base64 é analisado durante a reconstrução.
-Integração com CLI (tesseras-cli/src/commands/heir.rs) — Três novos
-subcomandos:
-
-
tes heir create— divide sua identidade Ed25519 em fragmentos de herdeiros. -Solicita confirmação (sua identidade completa está em jogo), gera arquivos -.bine.txtpara cada fragmento e escreveheir_meta.jsonno diretório de -identidade.
-tes heir reconstruct— carrega arquivos de fragmentos (detecta -automaticamente formato binário vs texto), valida consistência, reconstrói o -segredo, deriva o par de chaves Ed25519 e opcionalmente o instala em -~/.tesseras/identity/(com backup automático da identidade existente).
-tes heir info— exibe metadados do fragmento e verifica o checksum sem expor -nenhum material secreto.
-
Formato do blob secreto — As chaves de identidade são serializadas em um -blob versionado antes da divisão: um byte de versão (0x01), um byte de flags -(0x00 para somente Ed25519), seguido da chave secreta Ed25519 de 32 bytes. Isso -deixa espaço para expansão futura quando as chaves privadas X25519 e ML-KEM-768 -forem integradas ao sistema de fragmentos de herdeiros.
-Testes — 20 testes unitários para ShamirSplitter (roundtrip, todas as -combinações de fragmentos, fragmentos insuficientes, dono errado, sessão errada, -limite threshold-1, segredos grandes até o tamanho de chave ML-KEM-768). 7 -testes unitários para aritmética GF(256) (propriedades de campo exaustivas). 3 -testes baseados em propriedades com proptest (segredos arbitrários até 5000 -bytes, configurações T-de-N arbitrárias, verificação de segurança -informação-teórica). Testes de roundtrip de serialização para ambos os formatos -MessagePack e texto base64. 2 testes de integração cobrindo o ciclo de vida -completo de herdeiros: gerar identidade, dividir em fragmentos, serializar, -desserializar, reconstruir, verificar par de chaves e assinar/verificar com -chaves reconstruídas.
-Decisões de arquitetura
--
-
- GF(256) ao invés de GF(primo): usamos GF(256) ao invés de um corpo primo -porque ele mapeia naturalmente para bytes — cada elemento é um único byte, -cada fragmento tem o mesmo comprimento do segredo. Sem aritmética de inteiros -grandes, sem redução modular, sem padding. Esta é a mesma abordagem usada pela -maioria das implementações reais de Shamir, incluindo SSSS e Hashicorp Vault. -
- Tabelas de lookup em tempo de compilação: as tabelas LOG e EXP para
-GF(256) são computadas em tempo de compilação usando
const fn. Isso -significa zero custo de inicialização em tempo de execução e operações em -tempo constante via consulta a tabelas ao invés de loops.
- - ID de sessão previne mistura entre sessões: cada chamada a
split()gera -um novo ID de sessão aleatório. Se um herdeiro acidentalmente usar fragmentos -de duas sessões diferentes de divisão (por exemplo, antes e depois de uma -rotação de chaves), a reconstrução falha de forma limpa com um erro de -validação ao invés de produzir dados corrompidos.
- - Checksums BLAKE3 detectam corrupção: cada fragmento inclui um checksum -BLAKE3 sobre seu conteúdo. Isso captura degradação de bits, erros de -transmissão e truncamento acidental antes de qualquer tentativa de -reconstrução. Um fragmento impresso em papel e escaneado via OCR vai falhar no -checksum se um único caractere estiver errado. -
- Impressão digital do dono para identificação: os fragmentos incluem os -primeiros 8 bytes de BLAKE3(chave pública Ed25519) como impressão digital. -Isso permite aos herdeiros verificar a qual identidade um fragmento pertence -sem revelar a chave pública completa. Durante a reconstrução, a impressão -digital é verificada contra a chave recuperada. -
- Formato duplo para resiliência: ambos os formatos binário (MessagePack) e -texto (base64) são gerados porque mídias físicas têm modos de falha diferentes -de armazenamento digital. Um pendrive pode falhar; papel sobrevive. Um QR code -pode ficar ilegível; texto base64 pode ser digitado manualmente. -
- Versionamento do blob: o segredo é envolvido em um blob versionado -(versão + flags + material de chave) para que versões futuras possam incluir -chaves adicionais (X25519, ML-KEM-768) sem quebrar compatibilidade com -fragmentos existentes. -
O que vem a seguir
--
-
- Fase 4 continuada: Resiliência e Escala — NAT traversal avançado -(STUN/TURN), ajuste de performance (pool de conexões, cache de fragmentos, -SQLite WAL), auditorias de segurança, integração de nós institucionais, -empacotamento para sistemas operacionais -
- Fase 5: Exploração e Cultura — navegador público de tesseras por -era/localização/tema/idioma, curadoria institucional, integração com -genealogia, exportação para mídia física (M-DISC, microfilme, papel livre de -ácido com QR) -
Com Shamir's Secret Sharing, Tesseras fecha a última lacuna crítica na -preservação a longo prazo. Suas memórias sobrevivem a falhas de infraestrutura -através de erasure coding. Sua privacidade sobrevive a computadores quânticos -através de criptografia híbrida. E agora, sua identidade sobrevive a você — -passada adiante para as pessoas que você escolheu, exigindo a cooperação delas -para desbloquear o que você deixou para trás.
- -