Transporte Cifrado

El túnel Noise entre nodos (BOLT 8)

⚡ Lightning · Técnico

Antes de que se intercambie cualquier mensaje Wire, dos nodos establecen un túnel cifrado y autenticado. Lightning hace esto con el Noise Protocol Framework, en el patrón Noise_XK (BOLT 8).

Por qué cifrarlo todo

La identidad de un nodo es una clave

La identidad de un nodo es su node id: una clave pública secp256k1 estática. Por eso la dirección de un nodo tiene la forma node_id@host:puerto — necesitas el node id para conectarte.

El nombre XK dice quién conoce la clave de quién al principio: la K significa que la clave estática del respondente ya es conocida por el iniciador (tienes que saber con quién quieres hablar); la X significa que la clave estática del iniciador se transmite (cifrada) durante el handshake.

El handshake en tres actos

El apretón de manos toma 1,5 ida y vuelta (tres mensajes):

  1. Acto 1 — el iniciador envía una clave efímera + una etiqueta de autenticación.
  2. Acto 2 — el respondente envía su clave efímera + etiqueta.
  3. Acto 3 — el iniciador envía su clave estática (cifrada) + etiqueta, probando quién es.

En cada acto, ambos lados combinan claves mediante ECDH y van "mezclando" todo en un estado compartido. Al final, ambos derivan las mismas claves de sesión — sin que ningún secreto haya viajado en claro.

El handshake Noise_XK en tres actos entre iniciador y respondente: intercambio de claves efímeras y, en el acto 3, la clave estática del iniciador cifrada.

Las primitivas

El Noise de Lightning combina bloques criptográficos bien conocidos:

Después del handshake: mensajes en tramas cifradas

Con la sesión establecida, cada mensaje Wire se convierte en una trama cifrada: primero un tamaño de 2 bytes cifrado (con su propio MAC), luego el cuerpo cifrado (con otro MAC). El tamaño va cifrado para que ni la longitud de los mensajes se filtre. Para mantener el sigilo a largo plazo, las claves se rotan cada 1000 mensajes.

Una trama cifrada tras el handshake: tamaño de 2 bytes cifrado + MAC, seguido del cuerpo del mensaje cifrado + MAC.

Cubrimos toda la pila, de abajo hacia arriba. Para cerrar, dos resúmenes: la seguridad y privacidad de la red en conjunto, y una referencia de los mensajes del protocolo.