Skip to content

安全边界(威胁模型) ​

从安全评审角度看 v0 防什么、不防什么 —— token 握手规范,以及诚实划出的边界。

状态: 骨架页 —— 加固工作随实现增量落地。

防 / 不防 ​

下方每条诚实边界都附升级路径;版本升级的机制细节见升级指南。

防得住防不住(v0 边界)
静态 token 泄露(token 走 CONNECT 携带)网络窃听(无 TLS —— wss 留给 v1;listen_ws.tls 占位)—— 升级路径:TLS/wss 终结(v1)
token 穷举爆破(服务端只存 SHA-256 摘要 + 常量时间比较)动态签发 / 吊销(tokens 文件是静态的)—— 升级路径:签名短时 token + 吊销列表(v1)
管理面暴露(HTTP 只绑 127.0.0.1;非回环绑定与非回环 peer 一律拒绝)按 topic 的 authz ACL(任何已认证客户端可操作任何 topic)—— 升级路径:按 topic 的 authz ACL(v2)
保留名滥用($ 前缀)恶意客户端除耗尽资源以外的逻辑攻击 —— 升级路径:请求形状校验 + 按主体配额(v2 线)
持密钥 peer 的冒充与旧 leader 复活(共享密钥握手绑定节点身份、静态成员表把关准入、leader_epoch 围栏挡住集群已离开的 epoch)合法持有共享密钥但行为恶意的 peer:可推高 leader_epoch(破坏活性),可凭单成员声称驱动 Install/Append 采纳(所声称的 commit 点无 quorum 见证)—— 升级路径:epoch 上界 + quorum 见证(复制加固线)

失败路径成本与过载联动 ​

统一的 100 ms 认证失败延时是有意冻结的、对常见 broker 实践(Kafka、RabbitMQ 认证失败不设固定延时)的偏离,因此其固定成本显式量化:

  • 成功路径:+0 ms。失败路径:恰好一次 100 ms 暂停(异步计时器投递,不会两次、不会更多),外加微秒级计算(一遍 SHA-256 + 一次 32 字节累加)与每在途失败 O(1) 状态。
  • 过载联动(接线契约):准入与过载拒绝(0x4xxx 背压码)先于认证执行,失败风暴不会把暂停堆到已接纳工作之后排队。单连接至多产出一次暂停(通用判决随即关闭连接),认证段受认证超时与半帧超时双上限约束。
  • F 个并发失败连接的风暴成本 = F 个计时器、F 份微秒级计算、O(F) 连接态:暂停不放大任何共享资源,放大的只有攻击者自身的驻留时间。

Token 握手规范(已冻结) ​

  • CONNECT 帧携带 token;服务端以常量时间比较 SHA-256(token) 摘要。
  • 失败时:返回通用的 AUTH_FAILED(0x0006)并延迟 100 ms,不泄露任何内部信息。
  • 复制对端通道使用独立的共享密钥(复制 RPC 绝不复用客户端 token)。