4. 安全会话建立:CASE 与 PASE 协议详解

好,咱们进入 Matter 安全架构里最核心的一环——会话建立。说白了,就是两个设备第一次见面,怎么互相确认身份,然后安全地聊天。

Matter 提供了两种方式:CASE(证书认证会话建立)和 PASE(密码认证会话建立)。我习惯把 CASE 理解为“正式工入职”,PASE 则是“临时访客登记”。两者用的核心算法都是 Sigma 协议族,但应用场景完全不同。

4.1 PASE:临时密码,快速配对

PASE 用在设备初次入网阶段。比如你买了一个智能灯泡,用手机 App 扫描二维码,输入配对码——这个过程中,手机和灯泡之间建立的就是 PASE 会话。

它的核心逻辑是:双方共享一个短密码(Passcode),基于这个密码衍生出对称密钥,然后完成身份验证和会话密钥协商。

PASE 的关键参数:

  • Passcode:通常 6-10 位数字,由设备二维码或 PIN 码提供
  • PBKDF 参数:用于从 Passcode 派生密钥,防止暴力破解
  • Session ID:每个会话唯一,防止重放攻击

我在项目中遇到过一个问题:某厂商的 Passcode 生成逻辑太简单,导致暴力破解时间缩短到几小时。嗯,这里要注意——Passcode 的熵值必须足够,Matter 规范要求至少 6 位数字,但我建议用 8 位以上。

4.2 CASE:证书认证,长期信任

CASE 用在设备已经入网后的通信中。比如灯泡和开关之间、开关和网关之间。它们都有 Matter 颁发的数字证书,通过证书链互相验证身份。

你想想看,CASE 和 PASE 最大的区别是什么?CASE 不需要预先共享密码,而是依赖公钥基础设施(PKI)。每个设备出厂时烧录了 DAC(设备认证证书),入网时从 Commissioner 获取 NOC(节点操作证书)。

特性 PASE CASE
认证方式 共享密码(Passcode) 数字证书(X.509)
使用场景 初次入网、临时配对 已入网设备间通信
密钥派生 PBKDF + 对称密钥 ECDH + Sigma 协议
抗量子攻击 弱(依赖密码强度) 中等(依赖 ECC 强度)
会话生命周期 短(配对完成后可销毁) 长(可复用,支持更新)

我的经验: 在量产项目中,CASE 的证书管理是最大的坑。我曾经见过一批设备因为 NOC 过期时间设置不合理,导致设备在运行半年后全部断连。建议 NOC 有效期设为 5 年,并预留 OTA 更新证书的通道。

4.3 Sigma 协议:Matter 安全会话的基石

Sigma(SIGn-and-MAc)协议是 Matter 安全会话建立的核心算法。它结合了数字签名和消息认证码,实现了双向身份认证 + 会话密钥协商。

为什么会选择 Sigma 而不是传统的 TLS 1.3?我个人理解是:Sigma 更轻量,适合 IoT 设备的资源限制。它只需要 3 次握手就能完成认证和密钥协商,而 TLS 1.3 需要 2 次往返(1-RTT)加上证书验证,总开销更大。

4.3.1 Sigma 协议在 Matter 中的具体流程

Matter 使用的是 Sigma-r(Sigma 的响应者变体)。我画了一张流程图,方便你理解整个交互过程:

Sigma-r 协议在 Matter CASE 中的交互流程 发起者 (Initiator) 响应者 (Responder) 步骤 1 生成 ECDH 临时密钥对 Msg1: 发起者公钥 + 随机数 步骤 2 验证签名 + 生成会话密钥 Msg2: 响应者证书 + 签名 + MAC 步骤 3 验证响应者证书 + 计算会话密钥 Msg3: 发起者证书 + 签名 + MAC ✅ 安全会话建立完成 说明:ECDH 用于密钥协商,数字签名用于身份认证,MAC 用于消息完整性保护

4.3.2 Sigma 协议的关键安全属性

  • 前向安全性(Perfect Forward Secrecy):每次会话使用临时 ECDH 密钥对,即使长期私钥泄露,历史会话也无法被解密。
  • 身份保护:发起者的身份(证书)在收到响应者的签名后才发送,防止被动攻击者窃听身份。
  • 抗重放攻击:每次握手包含随机数(Nonce),确保会话唯一性。

⚠️ 我曾经踩过的坑: 在实现 Sigma 协议时,ECDH 临时密钥对的随机数生成器如果不够随机,会导致前向安全性失效。有一次测试发现,设备重启后生成的临时密钥竟然和之前一样——因为随机数种子没有正确初始化。解决方案是:每次生成密钥对前,务必调用硬件 TRNG(真随机数生成器)刷新种子。

4.4 CASE 与 PASE 的 Sigma 协议差异

虽然两者都基于 Sigma,但具体实现有细微差别:

参数 PASE 中的 Sigma CASE 中的 Sigma
预共享密钥 Passcode 派生出的对称密钥 无(依赖证书链)
证书交换 可选(可仅用 MAC 验证) 必须(双方都需要验证证书)
握手轮次 2 轮(发起者 + 响应者) 3 轮(发起者 → 响应者 → 发起者)
密钥派生函数 PBKDF2 + HKDF HKDF(基于 ECDH 共享秘密)
会话恢复 不支持 支持(通过 Session ID 复用)

4.5 实战建议:如何选择 CASE 还是 PASE

在实际项目中,我一般遵循这个原则:

  • 设备首次入网:用 PASE。因为此时设备没有 NOC,只能靠 Passcode 建立信任。
  • 设备间日常通信:用 CASE。证书认证更安全,且支持会话复用,减少握手开销。
  • 固件升级场景:优先用 CASE。如果 CASE 会话已过期,可以回退到 PASE 重新配对。

我的个人习惯: 在代码中为 CASE 和 PASE 分别维护独立的会话管理器。CASE 会话用 LRU 缓存,最多保留 32 个活跃会话;PASE 会话用完后立即销毁,避免密钥残留。这样做的好处是——即使 PASE 会话被攻击者获取,也无法影响已有的 CASE 会话。

4.6 小结

嗯,这一章的内容就到这里。CASE 和 PASE 是 Matter 安全架构的两大支柱,Sigma 协议则是它们的共同引擎。理解了三者的关系,你就能明白 Matter 设备之间是如何安全地“握手”的。

记住一句话:PASE 解决“第一次见面”的问题,CASE 解决“长期信任”的问题,Sigma 保证“每次见面都安全”。