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
- Privacidad — un fisgón en la red no puede leer los mensajes.
- Autenticación — tienes la certeza de que estás hablando con el nodo correcto, y no con un impostor.
- Integridad — nadie puede alterar los mensajes en el camino.
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):
- Acto 1 — el iniciador envía una clave efímera + una etiqueta de autenticación.
- Acto 2 — el respondente envía su clave efímera + etiqueta.
- 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.
Las primitivas
El Noise de Lightning combina bloques criptográficos bien conocidos:
- ECDH en la curva secp256k1 — para generar secretos compartidos;
- HKDF (con SHA-256) — para derivar las claves a partir de esos secretos;
- ChaCha20-Poly1305 — cifrado autenticado (AEAD) de los mensajes;
- SHA-256 — el hash que une el estado del handshake.
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.
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.