Glossário / Nós e software
Transporte criptografado BIP-324
Outros nomes: transporte v2.
- O que é o transporte criptografado BIP-324?
- O transporte criptografado BIP-324 é a versão 2 do protocolo de enlace ponto a ponto do bitcoin, que criptografa cada mensagem trocada entre dois nós e torna a conexão indistinguível de dados aleatórios para quem a espiona.
Especificação no BIP-324.
Dois nós que ambos oferecem suporte ao BIP-324 executam uma troca de chaves efêmeras antes que qualquer mensagem do Bitcoin seja enviada e, em seguida, envolvem cada mensagem em ChaCha20Poly1305. A especificação foi marcada como final em 10 de julho de 2024, e um nó anuncia o suporte com a flag de serviço NODE_P2P_V2, o bit 11. Nada muda nas suas criptomoedas: o que muda é que um observador passivo não consegue mais ler as transações que seu nó repassa.
Como funciona
O BIP-324 substitui os bytes mágicos fixos que antes abriam uma conexão bitcoin por um fluxo que não tem forma reconhecível alguma.
O lado que disca gera uma chave secp256k1 descartável e envia a codificação ElligatorSwift de 64 bytes da sua chave pública. Essa codificação é o truque: uma chave pública comum é identificável como um ponto da curva, enquanto qualquer cadeia de 512 bits é uma codificação ElligatorSwift válida, de modo que os bytes iniciais são, estatisticamente, apenas ruído. Qualquer um dos lados pode então acrescentar até 4095 bytes de preenchimento arbitrário, chamado lixo (garbage), para que uma conexão não precise começar com exatamente 64 bytes. As duas pontas executam X-only ECDH e passam o resultado por HKDF-SHA256 para derivar quatro chaves de criptografia, dois terminadores de lixo de 16 bytes e um ID de sessão.
Esses bytes iniciais são a única parte da troca enviada em claro. Depois dos terminadores, tudo o que vai pela rede são pacotes. Um pacote é um campo de comprimento criptografado de 3 bytes seguido de um texto cifrado ChaCha20Poly1305 que cobre um cabeçalho de 1 byte e o conteúdo, custando 20 bytes mais a carga útil. O bit mais alto desse cabeçalho é o bit de ignorar, e um pacote que o carrega é um chamariz: o receptor confirma que ele descriptografa e depois o descarta, e é assim que um nó pode preencher seu tráfego para disfarçar o momento em que uma mensagem real saiu. As chaves avançam como uma catraca a cada 224 pacotes, um intervalo escolhido para que um enlace quase ocioso que não envia nada além de pings a cada 20 minutos renove as chaves mais ou menos a cada 3,11 dias, e essa catraca é o que dá sigilo futuro a uma sessão.
O projeto para deliberadamente antes de provar quem está do outro lado. Não há certificados nem identidades, então um intermediário determinado ainda pode se colocar entre dois nós. O que ele não consegue é se colocar ali de forma barata ou invisível: o ID de sessão resulta da troca de chaves, e dois operadores que lerem o seu um para o outro verão valores diferentes sempre que alguém estiver no meio.
Onde você o encontra
O BIP-324 não deixa nada na blockchain, então o único lugar onde ele aparece é entre dois nós em funcionamento.
O suporte é anunciado no gossip de endereços por meio da flag NODE_P2P_V2, que os pares conhecem pelas mensagens addr e addrv2. Essas flags passam por retransmissores não confiáveis e são combinadas com um OR lógico, então um anúncio falso é possível, e o BIP incentiva um cliente v2 que é desconectado imediatamente a tentar de novo o mesmo par pela v1. No sentido contrário, um nó v2 continua aceitando conexões v1 de entrada de propósito, para evitar que a rede se divida em duas metades que não conseguem se alcançar.
O segundo efeito visível são mensagens mais curtas. A versão 1 gastava 12 bytes ASCII em cada nome de comando; a versão 2 atribui IDs de um byte aos 28 tipos de mensagem definidos até agora, então inv é um único byte, o 14, e getblocktxn é 10, e qualquer mensagem que use um ID curto custa 3 bytes menos que sua forma v1. O que não tem um ID atribuído recorre a uma codificação de 13 bytes, um byte zero seguido do antigo nome ASCII, então nada se perde.
A especificação tem o status Deployed (implantado), inclui vetores de teste e uma implementação de referência ingênua em Python destinada apenas à demonstração, e ainda está sendo editada: a revisão 1.0.2, de 30 de janeiro de 2026, acrescentou uma tabela de IDs de tipos de mensagem em um arquivo auxiliar para que outros BIPs possam reivindicar IDs sem editar o documento principal. O cabeçalho também registra que o BIP-324 substitui o BIP-151.