PASE 是 Matter 在 commissioning 早期使用的密码认证安全会话建立协议。它的作用不是把设备永久加入 Fabric,而是在设备还没有节点操作证书(NOC)、还不能建立 CASE 会话之前,先让 Commissioner 和 Commissionee 基于 setup passcode 建立一个临时的加密会话。后续的设备证明、CSR、NOC 安装、网络配置等配网命令,都会在这个 PASE 会话上进行保护,直到设备完成入网并切换到 CASE。
PASE 的使用场景
PASE 主要用于以下阶段:
- 设备处于 Commissioning Mode,正在通过 BLE、Soft-AP 或 IP 网络被发现。
- Commissioner 通过二维码、手动配网码或其他 onboarding payload 获得设备的 discriminator、setup passcode 和发现能力。
- Commissionee 尚未加入目标 Fabric,或者尚未具备可用于目标 Fabric 的操作证书,因此不能使用 CASE。
- Commissioner 需要在未建立长期信任关系之前,先建立一个能抵抗被动窃听和常见主动攻击的临时安全信道。
PASE 建立成功后,Commissioner 通常会发送ArmFailSafe启用 Fail-safe 计时器,然后继续执行读取设备信息、设置监管配置、设备证明、CSR、安装 NOC 和网络配置等步骤。
PASE 的输入信息
PASE 依赖 onboarding payload 和 Commissionee 端预置的配网参数。关键输入包括:
setup passcode:27-bit 配网密码,是 PASE 的低熵共享秘密。它不会直接在网络上传输。discriminator:用于在发现阶段帮助 Commissioner 从多个可配网设备中选中目标设备。它不是认证秘密。PBKDF salt和iteration count:由 Commissionee 提供,用于从 setup passcode 派生 SPAKE2+ 所需的密码相关材料。SPAKE2+ verifier:Commissionee 端保存的验证材料,用于在不保存明文 setup passcode 的情况下参与 PASE。- 会话参数:包括 session id、加密算法套件、随机数和后续消息保护所需的上下文信息。
setup passcode 的有效范围应限于 commissioning。设备完成配网后,后续正常控制通信应使用 CASE,而不是继续依赖 PASE。
PASE 消息流程
Matter PASE 基于 SPAKE2+,典型流程如下:
PBKDFParamRequestCommissioner 发起 PASE,请求 Commissionee 提供 PBKDF 参数,并携带自己的随机数、会话参数等信息。
PBKDFParamResponseCommissionee 返回 PBKDF salt、iteration count、自己的随机数和会话参数。Commissioner 使用这些参数和 setup passcode 计算 SPAKE2+ 所需的密码材料。
PASE_Pake1Commissioner 发送 SPAKE2+ 第一阶段公开值。该值用于密钥协商,但不能单独泄露 setup passcode。
PASE_Pake2Commissionee 使用本地 verifier 和收到的公开值完成对应计算,返回自己的 SPAKE2+ 公开值以及确认数据。
PASE_Pake3Commissioner 验证 Commissionee 的确认数据后,发送最终确认数据。Commissionee 验证通过后,双方确认对方持有同一个 setup passcode 对应的秘密材料。
会话密钥派生
双方基于 SPAKE2+ 共享结果、随机数和会话上下文派生出后续消息加密与完整性保护使用的密钥。此后 commissioning 命令通过该安全会话传输。
PASE 的安全性质
PASE 提供以下安全保证:
- setup passcode 不以明文形式传输。
- 被动监听者无法仅通过抓包获得 PASE 会话密钥。
- 双方能够验证对方是否持有同一个 setup passcode 对应的秘密材料。
- PASE 成功后,后续配网命令具备机密性、完整性和重放保护。
- 即使 commissioning 使用 BLE 或 Soft-AP 等临时传输方式,应用层配网消息仍由 PASE 会话保护。
PASE 也有明确边界:
- PASE 只证明对方知道 setup passcode,不能证明设备是正品 Matter 设备。正品性需要通过 Device Attestation 验证 DAC、PAI、PAA 证书链来完成。
- PASE 不是长期运行凭证。设备加入 Fabric 后,正常业务通信应使用基于 NOC 的 CASE。
- discriminator 只用于发现和筛选目标设备,不提供认证能力。
- setup passcode 是低熵秘密,Commissionee 应限制 PASE 尝试频率,并在 commissioning 窗口关闭后拒绝新的 PASE 建立请求。
PASE 最后派生出哪些密钥?
PASE 不只是“认证成功”这么简单,它会产出后续 Matter Secure Channel 用的密钥材料:
Matter PASE 规定从Ke通过 KDF 派生I2RKey || R2IKey || AttestationChallenge;Initiator 用I2RKey加密并保护发往 Responder 的消息,用R2IKey解密和验证 Responder 的消息,Responder 方向相反;AttestationChallenge只用于后续设备认证挑战。
PASE 与 CASE 的关系
| 对比项 | PASE | CASE |
|---|---|---|
| 使用阶段 | 初次配网 / commissioning | 入网后的正常通信 |
| 认证材料 | setup passcode / verifier | NOC 等 operational credentials |
| 密码学基础 | SPAKE2+ | 类 SIGMA 的证书认证密钥交换 |
| 生命周期 | 临时 | 长期/运行期 |
| 目标 | 安全地下发初始配置 | Fabric 内节点间安全通信 |
PASE 和 CASE 都用于建立安全会话,但信任基础不同:
- PASE 基于 setup passcode,适用于设备尚未加入 Fabric 的初始配网阶段。
- CASE 基于节点操作证书(NOC)和 Fabric 信任根,适用于设备完成配网后的正常运行阶段。
因此,完整 commissioning 流程通常是先通过 PASE 建立临时安全信道,在该信道中安装操作凭证和网络配置;设备进入运营网络后,Commissioner 通过 Operational Discovery 找到设备,再基于 NOC 建立 CASE 会话,最后发送CommissioningComplete完成配网。