Criptografia em Duas Camadas: Como o Z-Text Protege Suas Mensagens
A maioria dos mensageiros criptografados depende de uma única camada de criptografia. O Z-Text usa duas camadas independentes, cada uma protegendo contra diferentes vetores de ameaça.
A maioria dos mensageiros criptografados depende de uma única camada de criptografia. O Z-Text usa duas camadas de criptografia independentes, cada uma protegendo contra diferentes vetores de ameaça. Este artigo explica como elas funcionam juntas para fornecer defesa em profundidade para suas mensagens.
Camada 1: Blindagem da Blockchain
A primeira camada de criptografia vem da própria blockchain BitcoinZ. As transações blindadas usam zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge) para criptografar todos os dados da transação.
Quando uma mensagem Z-Text é enviada como uma transação blindada, os seguintes dados ficam ocultos de todos os observadores da rede:
- O endereço do remetente
- O endereço do destinatário
- O valor da transação
- O campo memo (onde a mensagem é armazenada)
Somente o detentor da viewing key do z-address do destinatário pode descriptografar o campo memo e ler o conteúdo da mensagem. Isso protege contra vigilância passiva da rede e análise de blockchain.
Camada 2: Criptografia por Chave de Contato
A segunda camada adiciona criptografia de ponta a ponta sobre a blindagem da blockchain. Durante o processo de handshake, o Z-Text estabelece uma chave secreta compartilhada entre dois contatos usando a troca de chaves Elliptic Curve Diffie-Hellman (ECDH).
Antes de qualquer mensagem ser colocada no memo da transação, ela é criptografada com essa chave compartilhada. Isso significa que, mesmo que alguém obtenha a viewing key do z-address (por coerção, roubo ou uma vulnerabilidade futura), ainda não poderá ler as mensagens sem a chave de contato derivada separadamente.
A Troca de Chaves do Handshake
A chave de contato é estabelecida por meio de um protocolo de handshake sem necessidade de confiança:
- Alice envia uma solicitação de handshake para o z-address de Bob, contendo sua chave pública efêmera (criptografada no memo de uma transação blindada)
- Bob aceita enviando sua chave pública efêmera de volta para Alice (também via transação blindada)
- Tanto Alice quanto Bob derivam independentemente o mesmo segredo compartilhado usando ECDH
- Esse segredo compartilhado se torna a chave de criptografia simétrica para todas as mensagens futuras
A beleza dessa abordagem é que até mesmo a troca de chaves é protegida pela blindagem da Camada 1. Um observador não pode ver as chaves públicas sendo trocadas ou sequer que um handshake está ocorrendo.
Por Que Duas Camadas Importam
Cada camada protege contra diferentes cenários de ataque:
- Camada 1 sozinha protege contra observadores da rede e analistas de blockchain, mas é vulnerável ao comprometimento da viewing key
- Camada 2 sozinha protege contra o comprometimento da viewing key, mas seria vulnerável se as mensagens fossem enviadas em texto claro on-chain
- Ambas as camadas juntas exigem que um atacante comprometa dois sistemas criptográficos independentes simultaneamente
Este é o princípio da defesa em profundidade aplicado à criptografia de mensagens. Nenhum ponto único de falha pode expor suas mensagens.
Primitivas Criptográficas
A pilha de criptografia do Z-Text usa primitivas criptográficas bem estabelecidas:
- zk-SNARKs (Groth16) para transações blindadas da Camada 1
- ECDH sobre Curve25519 para troca de chaves
- ChaCha20-Poly1305 para criptografia simétrica da Camada 2
- BLAKE2b para derivação de chaves
Todas as operações criptográficas são realizadas no núcleo Rust da aplicação, aproveitando implementações de tempo constante para prevenir ataques de canal lateral por temporização.
Implicações Práticas
Para o usuário, a criptografia de duas camadas é completamente transparente. O aplicativo lida com toda a troca de chaves e criptografia automaticamente. As mensagens aparecem em uma interface de chat familiar sem nenhuma indicação da criptografia sofisticada acontecendo por baixo.
O resultado é um nível de segurança de mensagens que supera o que qualquer mensageiro centralizado pode oferecer -- não porque a criptografia é mais complexa, mas porque o modelo de confiança é fundamentalmente diferente. Não há servidor para intimar, não há empresa para coagir e não há uma única chave que desbloqueia tudo.
Artigos Relacionados
O Handshake Blockchain: Troca de Chaves Sem Confiança
Antes de dois usuários do Z-Text trocarem mensagens, eles precisam completar um handshake criptográfico. Este artigo explica como funciona e por que é importante para a segurança.
Z-Text vs Signal vs Telegram: Comparação de Privacidade
Nem todas as alegações de privacidade são iguais. Este artigo compara a arquitetura do Z-Text com duas alternativas populares: Signal e Telegram.