O BIP324 descreve como encriptar as mensagens trocadas entre nós Bitcoin. Um nó é um programa que verifica transações e blocos e comunica com outros participantes da rede. Estas ligações diretas entre participantes da rede chamam-se P2P; a variante encriptada é conhecida como v2 transport. Quem apenas escuta uma ligação não deve conseguir ler facilmente o seu conteúdo. Contudo, a encriptação, por si só, não confirma com que nó se está realmente a comunicar. A cadeia pública e as regras de validade das transações permanecem inalteradas.
Um bloco é um conjunto de transações acrescentado ao histórico comum do Bitcoin. Os blocos são públicos, mas observar a sua propagação não equivale a ler a cadeia já formada. Quem observa uma ligação não encriptada também vê a ordem das mensagens, os pedidos e o momento em que um nó retransmitiu uma transação. Isso pode ajudar a associar atividade de rede a pessoas. O BIP324 limita essa leitura fácil por um observador passivo. [1] [2] [7]
Dois nós compatíveis acordam chaves ao estabelecer a ligação e depois comunicam de forma encriptada. Não precisam de conhecer previamente a identidade um do outro nem de um certificado de uma autoridade central. É precisamente por isso que encriptado não significa de confiança. O outro nó lê naturalmente as mensagens e ainda pode pertencer a um atacante. [1]
No início da ligação, num processo chamado handshake, ambos os nós geram chaves temporárias. Uma chave privada é um valor numérico secreto; a chave pública correspondente pode ser partilhada com outras pessoas. Através de ECDH, cada um calcula o mesmo segredo partilhado sem trocar chaves privadas. Desse segredo derivam as chaves que protegem a transmissão. ElligatorSwift codifica as chaves públicas de forma que essa parte da troca se assemelhe a dados aleatórios e seja mais difícil reconhecê-la por um padrão fixo. São exclusivamente chaves da ligação de rede. Não são chaves privadas para gastar bitcoin nem uma seed, o valor secreto inicial do qual se derivam as chaves da carteira. Ativar o transporte encriptado nunca exige partilhar a cópia de segurança da carteira. [1] [8]
Imagine que alguém interceta uma mensagem e altera o conteúdo pelo caminho. O BIP324 utiliza ChaCha20Poly1305: encriptação acompanhada de uma verificação de que a mensagem corresponde à chave da ligação e não foi alterada. Sem essa chave, um atacante não pode simplesmente reescrever os dados e produzir uma mensagem válida. A verificação não demonstra, porém, que a chave é partilhada com o nó pretendido. Um intermediário ativo pode apresentar-se a cada lado como o respetivo interlocutor durante o estabelecimento das ligações. Fica então com duas ligações encriptadas separadas e lê e reencaminha as mensagens entre elas. Proteger mensagens e verificar o interlocutor são, por isso, tarefas diferentes. [1]
As chaves mudam durante a comunicação. Se os segredos anteriores forem devidamente apagados, obter mais tarde as chaves atuais não permite automaticamente abrir toda a gravação anterior. Esta propriedade chama-se forward secrecy. Não protege mensagens que o outro nó já leu ou guardou. Também não ajuda contra um atacante que mantém o controlo do computador; o grupo de mensagens mais recente pode ainda ficar exposto. [1]
O v1 transport continua disponível por compatibilidade. Se uma ligação v2 falhar, o programa pode tentar v1. Um atacante ativo pode, portanto, bloquear ligações encriptadas e tentar forçar esse regresso sem encriptação. O BIP324 encarece a vigilância passiva, mas não promete resistência geral ao downgrade nem disponibilidade da ligação. [1] [4]
O BIP324 não oculta o endereço IP nem todos os padrões de tempo e volume do tráfego. O endereço IP é o endereço de rede que um dispositivo utiliza para comunicar pela internet. O Tor pode tratar outra parte do problema, mas nem a combinação garante anonimato. Seja qual for o percurso da mensagem, o Full Node tem de verificar transações, assinaturas e blocos. Só a encriptação não resolve um Eclipse Attack, em que atacantes rodeiam o nó. [1] [6]
O Bitcoin Core 26.0 introduziu o v2 em 2023, inicialmente desativado por predefinição. A versão 27.0 ativou-o por predefinição. O ano desta entrada assinala, por isso, o primeiro suporte no Bitcoin Core, não a origem da proposta. O transporte é negociado por ligação; a compatibilidade do programa não significa que todos os seus peers usem v2. [3] [4]
Um operador de Bitcoin Core pode consultar o estado com bitcoin-cli getpeerinfo. É uma consulta através de RPC, uma interface para controlar o nó e obter informações; este comando não difunde transações na rede Bitcoin nem altera definições. O resultado apresenta cada ligação separadamente. Em transport_protocol_type, v2 significa transporte encriptado, v1 o transporte antigo sem encriptação e detecting uma escolha ainda por determinar. O campo session_id contém o identificador de uma ligação v2; caso contrário, está vazio. A sua presença, por si só, não verifica o interlocutor. Dois operadores podem comparar o identificador da ligação entre ambos através de outro canal de confiança para detetar um intermediário; as ligações normais não fazem esta verificação automaticamente. O resultado descreve essa ligação, não todo o percurso de uma transação na rede. Inclui também dados de rede que não é necessário publicar. [5] [1]
O BIP324 indica Dhruv Mehta, Tim Ruffing, Jonas Schnelli e Pieter Wuille como autores. O número foi atribuído em 2019; na revisão de 17 de outubro de 2026, o estado é Deployed. A adoção não exige Soft Fork nem alteração da oferta de bitcoin. Melhora gradualmente a comunicação, dependendo de uma implementação correta e das ligações realmente utilizadas. [1]
Para ter uma visão mais completa, leia este verbete junto com Full Node, Eclipse Attack, Privacidade no Bitcoin, Bitcoin Core. Também há referências a este verbete em Mix Network.