设备认证与配网安全:DAC、PAI 与 CASE 协议
这一章,我们聊聊 Matter 设备在入网前最关键的一道关卡——设备认证。说白了,就是怎么证明你手里这个设备是“真”的,而不是被篡改过的冒牌货。我刚开始接触 Matter 时,觉得这不就是个证书嘛,后来踩过坑才发现,这里面的门道比想象中深得多。
DAC:设备的“身份证”
DAC,全称 Device Attestation Certificate,设备认证证书。你可以把它理解成设备的“出厂身份证”。每台 Matter 设备在产线上都会烧录一个唯一的 DAC,这个证书里包含了设备的公钥、厂商信息、产品型号等关键数据。
核心要点:DAC 必须由设备制造商向 CSA(连接标准联盟)申请的 PAA(产品认证机构)签发,形成一条可追溯的信任链。
我在项目中遇到过一件事:某厂商为了省成本,所有设备共用同一个 DAC。结果呢?一旦某个设备被破解,整个产品线的设备全部失效。嗯,这里要注意——DAC 必须做到一机一证,这是底线。
DAC 的生成流程
- 生成密钥对:设备在产线上生成 ECDSA 公私钥对(推荐使用 P-256 曲线)。
- 创建 CSR:用私钥签名生成证书签名请求,包含公钥和设备信息。
- 提交给 PAA:将 CSR 发送给厂商的 PAA 进行签名。
- 签发 DAC:PAA 验证信息后,签发 DAC 并返回给产线。
- 烧录到设备:将 DAC 和私钥安全写入设备的防篡改存储区。
⚠️ 避坑指南:我曾经见过一条产线,DAC 烧录完成后没有做回读校验,结果 5% 的设备证书损坏,导致售后大规模返工。所以,烧录后一定要做完整性校验。
DAC 的存储安全
私钥的存储是重中之重。我个人习惯把私钥放在安全元件(SE)或 TEE 中,而不是普通的 Flash。你想想看,如果私钥能被读出来,那证书还有什么意义?
| 存储方式 | 安全等级 | 成本 | 推荐场景 |
|---|---|---|---|
| 安全元件(SE) | 高 | 高 | 网关、智能锁等高安全设备 |
| TEE(可信执行环境) | 中高 | 中 | 主流智能家居设备 |
| 普通 Flash + 加密 | 低 | 低 | 低成本传感器(不推荐) |
PAI:产品认证中间件
PAI(Product Attestation Intermediate)是连接 DAC 和 PAA 的桥梁。它本身也是一个证书,由 PAA 签发,用于证明 DAC 的签发者是合法的。
为什么需要 PAI?直接让 PAA 签 DAC 不行吗?理论上可以,但实际中,一个厂商可能有几十条产品线,每条产线都需要独立的签名权限。PAI 的作用就是做权限分级——PAA 只签 PAI,PAI 再签 DAC。这样即使某个 PAI 泄露,也不会影响整个厂商的信任体系。
💡 我的经验:PAI 的私钥建议离线存储,只在需要签发 DAC 时才接入产线。我曾经见过 PAI 私钥直接放在产线服务器上,结果被黑客拖库,整个产品线的证书全部作废。
配网安全:CASE 协议
CASE(Certificate Authenticated Session Establishment)是 Matter 配网过程中的安全握手协议。它的目标是在设备和配网器(如手机 App)之间建立一个安全的通信通道。
说白了,CASE 就是一套“互相验明正身”的流程。我刚开始看协议文档时,觉得步骤太多,后来自己动手实现了一遍才发现,每一步都有它的道理。
CASE 握手流程
- 设备发现:配网器通过 BLE 或 Wi-Fi 发现设备,获取设备的 DAC。
- 证书验证:配网器验证 DAC 的签名链(DAC → PAI → PAA),确认设备合法。
- 密钥协商:双方使用 ECDH 交换临时密钥,生成会话密钥。
- 身份确认:用会话密钥加密一条随机数,双方互相验证对方持有正确的私钥。
- 会话建立:握手完成,后续通信使用 AES-CCM 加密。
关键点:CASE 协议要求配网器也必须提供自己的 DAC,实现双向认证。这能有效防止“中间人攻击”。
CASE 协议的安全机制
- 前向安全性:每次握手使用临时密钥,即使长期私钥泄露,历史会话也不会被破解。
- 抗重放攻击:握手消息中包含随机数,防止攻击者截获并重放旧消息。
- 证书吊销:配网器可以携带 CRL(证书吊销列表),拒绝已泄露的设备入网。
⚠️ 避坑指南:我曾经在实现 CASE 时,忘记检查证书的有效期,结果一批过期证书的设备成功入网。后来被审计发现,补丁打了整整一周。所以,证书有效期检查一定要写在最前面。
整体架构图
下面这张图展示了 DAC、PAI、PAA 之间的信任链关系,以及 CASE 协议在配网中的位置:
常见问题与避坑
- 证书链不完整:设备只烧录 DAC,没有附带 PAI 和 PAA 证书。配网时验证失败。解决方案:烧录时务必包含完整的证书链。
- 私钥生成随机性不足:产线使用伪随机数生成器,导致密钥可预测。我建议使用硬件真随机数发生器(TRNG)。
- CASE 超时设置:握手过程有严格的时间限制。我曾经把超时设得太短,导致信号弱的设备频繁掉线。后来调整为 30 秒,问题解决。
💡 实用建议:在产线测试阶段,建议用 Wireshark 抓包分析 CASE 握手过程。你能直观地看到每一步的证书交换和密钥协商,排查问题效率极高。
好了,这一章的内容就到这里。DAC、PAI 和 CASE 协议是 Matter 设备安全的基础,理解透彻了,后面的章节会轻松很多。