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

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):

  1. Ato 1 — o iniciador envia uma chave efêmera + uma etiqueta de autenticação.
  2. Ato 2 — o respondente envia a sua chave efêmera + etiqueta.
  3. 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.

O handshake Noise_XK em três atos entre iniciador e respondente: troca de chaves efêmeras e, no ato 3, a chave estática do iniciador cifrada.

As primitivas

O Noise da Lightning combina blocos criptográficos bem conhecidos:

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.

Um quadro cifrado pós-handshake: tamanho de 2 bytes cifrado + MAC, seguido do corpo da mensagem cifrado + MAC.

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.