Transporte Criptografado
O túnel Noise entre os nós (BOLT 8)
⚡ Lightning · Técnico
Antes de qualquer mensagem Wire ser trocada, dois nós estabelecem um túnel cifrado e autenticado. A Lightning faz isso com o Noise Protocol Framework, no padrão Noise_XK (BOLT 8).
Por que cifrar tudo
- Privacidade — um bisbilhoteiro na rede não consegue ler as mensagens.
- Autenticação — você tem certeza de que está falando com o nó certo, e não com um impostor.
- Integridade — ninguém consegue adulterar as mensagens no caminho.
A identidade de um nó é uma chave
A identidade de um nó é o seu node id: uma chave pública secp256k1 estática. É por isso que o endereço de um nó tem a forma node_id@host:porta — você precisa do node id para se conectar.
O nome XK diz quem conhece a chave de quem no início: o K significa que a chave estática do respondente já é conhecida pelo iniciador (você precisa saber com quem quer falar); o X significa que a chave estática do iniciador é transmitida (cifrada) durante o handshake.
O handshake em três atos
O aperto de mãos leva 1,5 ida-e-volta (três mensagens):
- Ato 1 — o iniciador envia uma chave efêmera + uma etiqueta de autenticação.
- Ato 2 — o respondente envia a sua chave efêmera + etiqueta.
- Ato 3 — o iniciador envia a sua chave estática (cifrada) + etiqueta, provando quem é.
A cada ato, os dois lados combinam chaves por ECDH e vão "misturando" tudo num estado compartilhado. Ao final, ambos derivam as mesmas chaves de sessão — sem que nenhum segredo tenha trafegado em claro.
As primitivas
O Noise da Lightning combina blocos criptográficos bem conhecidos:
- ECDH na curva secp256k1 — para gerar segredos compartilhados;
- HKDF (com SHA-256) — para derivar as chaves a partir desses segredos;
- ChaCha20-Poly1305 — cifragem autenticada (AEAD) das mensagens;
- SHA-256 — o hash que costura o estado do handshake.
Depois do handshake: mensagens em quadros cifrados
Com a sessão estabelecida, cada mensagem Wire vira um quadro cifrado: primeiro um tamanho de 2 bytes cifrado (com seu próprio MAC), depois o corpo cifrado (com outro MAC). O tamanho vem cifrado para que nem o comprimento das mensagens vaze. Para manter o sigilo a longo prazo, as chaves são rotacionadas a cada 1000 mensagens.
Cobrimos a pilha inteira, de baixo a cima. Para fechar, dois apanhados: a segurança e privacidade da rede como um todo, e uma referência das mensagens do protocolo.