闪电网络协议中的密钥协商分析与解决方案
1. 协议行为概述
闪电网络中用于认证密钥交换的握手协议选择了 Noise XK。它是 Noise 协议框架的十二种基本交互式握手模式之一。协议名称中的 “X” 表示发起者的静态密钥将传输给响应者,“K” 表示发起者已知响应者的静态密钥。在握手过程中,双方会维护以下变量:
- e :新生成的临时密钥对, e priv
是私钥, e pub
是公钥。
- s :静态密钥对, s priv
是私钥, s pub
是公钥。
- ck :链密钥,是所有先前 ECDH 输出的累积哈希,用于在协议结束时派生加密密钥。
- h :握手哈希,是所有发送和接收的握手数据的累积哈希,不传输,用作 AEAD 消息中的关联数据。
- temp k1, temp k2, temp k3 :中间密钥,用于握手期间加密消息。
协议的消息交换通过公共通道 c
进行,具体消息交换如下表所示:
| 消息 | 方向 | 内容 |
| ---- | ---- | ---- |
| 消息 0 | nodeR
→ nodeI
| s pubR
|
| 消息 1 | nodeI <