
Biblioteca de criptografia/protocolo do mensageiro Voron (X3DH-lite + Double Ratchet, sender-keys de grupo, transporte onion) — revisão externa solicitada
Este é o núcleo de cripto e protocolo de mensagens de um pequeno projeto de mensageiro E2EE, extraído para revisão externa. Ele não é o produto inteiro — o cliente Android e a configuração de implantação foram deixados de fora propositalmente; esta é apenas a parte que precisa de atenção.
common/ — a própria biblioteca:
e2ee/ — X3DH-lite (acordo de chaves assíncrono) + um Double Ratchet por cima, construído sobre
Curve25519/ChaCha20-Poly1305/Ed25519/HKDF (primitivas fornecidas pelo JDK, nada artesanal nessa
camada).crypto/ — wrappers finos sobre essas primitivas do JDK.group/ — mensagens em grupo via esquema de sender-keys (a abordagem pré-MLS que os primeiros
grupos do WhatsApp/Signal usavam), além de um log de eventos em cadeia de hash assinado no lado do
cliente para associação/papéis, já que o relay não tem nenhum conceito de grupos.onion/ — um transporte opcional de criptografia em camadas (número fixo de saltos, padding por
baldes de tamanho) para impedir que o relay relacione diretamente o IP de uma conexão à sua chave
de identidade.client/, transport/, backup/ — o protocolo de rede, o handshake de transporte Noise_IK e um
formato de backup criptografado.server/ — uma implementação de relay de referência: roteamento store-and-forward, diretório de
prekeys, caixa postal offline, o papel de hop onion. Confiança deliberadamente mínima: o relay nunca
vê texto puro (plaintext), nunca retém uma mensagem por mais tempo que a entrega e (por design) não
tem nenhuma ciência de associação a grupos.client/ — um harness de teste de console JVM simples (não é um aplicativo real) usado para exercitar
common/server entre si em testes de integração, além de alguns PoCs de exploit independentes (veja
abaixo).security-audit/ — relatórios de rodadas anteriores de revisão interna, os bugs que encontraram e os
que já foram corrigidos. Leia isto antes de reportar algo — há uma chance real de já estar aqui.
REPORT.md é o principal; ADVERSARIAL_REVIEW_PAVEL.md é uma rodada posterior, mais restrita;
fuzz/ e client/.../exploit/ têm PoCs executáveis, não apenas descrições.security-audit/ são exatamente "o que um relay hostil pode fazer".group/GroupCryptoSession.kt).security-audit/REPORT.md e ADVERSARIAL_REVIEW_PAVEL.md, não é algo que
esteja sendo escondido.common/src/main/kotlin/messenger/common/e2ee/) — esta é a
única construção criptográfica genuinamente sob medida aqui; tudo abaixo dela é de prateleira. Ela já
foi revisada internamente várias vezes (veja security-audit/), mas nunca por alguém de fora deste
projeto.common/src/main/kotlin/messenger/common/group/GroupControlLog.kt)
— uma cadeia de hash assinada no lado do cliente, sem nenhum enforcement por parte do servidor../gradlew test
Projeto Gradle/Kotlin padrão, JDK 17+. Nenhum acesso à rede ou serviços em execução é necessário para a
suíte de nível de unidade. security-audit/README.md tem instruções para os PoCs de fuzzing ao vivo do
relay e de correlação onion, que precisam de processos locais em execução (nunca aponte nada disso para
um host de produção).
Nenhuma auditoria criptográfica independente foi feita nisto. Tudo em security-audit/ é revisão interna
de engenharia — cuidadosa, mas uma auto-revisão, sem respaldo de prova formal e sem histórico
profissional/institucional por trás. Trate-o como um ponto de partida para revisão, não uma certificação.