4. 产品认证中间证书(PAI)工程解析

在Matter的设备身份体系中,DAC(Device Attestation Certificate,设备认证证书)并不是由根证书直接签发的,中间隔着一层产品认证中间证书(PAI,Product Attestation Intermediate)。理解PAI的签发策略、有效期管理、多产品线共用与隔离设计,以及它与DAC的绑定关系,是设备身份工程中最容易出错、也最需要提前规划的部分。

PAI在证书链中的位置与职责

Matter的认证证书链是三级结构:根证书(RCAC)→ 产品认证中间证书(PAI)→ 设备认证证书(DAC)。RCAC由认证机构(CA)持有并离线保护,PAI由CA签发给具体厂商,DAC则由厂商使用PAI对应的私钥签发到每一台设备。PAI的核心职责有两个:一是把根证书的信任向下传递到厂商侧,使厂商可以自主签发DAC而不必每次请求CA;二是作为厂商产品线的隔离边界,让不同产品线、不同代际、不同安全等级的DAC在证书链上可区分、可撤销。

PAI本身是一张X.509证书,其基本约束(Basic Constraints)中CA标志必须为TRUE,Key Usage需包含keyCertSign,这是它能签发DAC的前提。PAI的私钥是厂商侧最敏感的资产之一,一旦泄露,攻击者可以伪造任意DAC,因此PAI私钥通常存放在HSM或安全模块中,签发DAC时通过受控接口调用,而不是明文导出。

PAI的签发策略

PAI的签发策略决定了“一张PAI覆盖多大范围”。常见策略有三种:

  • 单产品线单PAI:每条产品线(如智能灯、门锁、传感器)使用独立的PAI。隔离性最好,某条产品线的PAI泄露或吊销不影响其他产品线,但管理成本高,证书数量多。
  • 多产品线共用PAI:同一厂商的多个产品线共用一张PAI。管理简单,签发DAC时只需一套密钥,但隔离性差,一旦PAI私钥泄露,所有共用产品线的设备都面临伪造风险。
  • 按安全等级或代际划分PAI:例如将高安全等级产品(门锁、支付类)与普通产品(灯、插座)分开,或按产品代际(Gen1、Gen2)分开。这是在隔离性与管理成本之间的折中方案,也是实际工程中最常见的做法。

选择策略时,需要评估几个因素:产品线的数量与生命周期、PAI私钥的保护能力(是否有HSM)、吊销的影响范围、以及认证机构对PAI数量的限制。如果厂商只有一条产品线且产量不大,单PAI即可;如果有多条产品线且安全等级差异明显,建议至少按安全等级拆分。

有效期管理

PAI的有效期管理有一个关键约束:PAI的有效期必须覆盖其签发的所有DAC的有效期。因为DAC的验证路径是DAC→PAI→RCAC,如果PAI在DAC之前过期,那么即使DAC本身还在有效期内,整条链也会验证失败。Matter规范对DAC的有效期有明确要求,通常DAC的有效期不超过PAI的剩余有效期。

实际工程中,PAI的有效期通常设置为10年或更长,而DAC的有效期可能只有几年。这样做的目的是让PAI有足够的“寿命”覆盖多代DAC。但要注意,PAI过期后不能续期,只能重新签发一张新的PAI,并用新PAI签发新的DAC。因此,PAI的过期时间应该与产品线的规划生命周期对齐,避免在产品仍在出货时PAI即将过期。

另一个容易被忽略的点是:PAI的Not Before时间。如果PAI的生效时间晚于DAC的签发时间,那么DAC在PAI生效前无法通过验证。因此,PAI的Not Before应早于或等于第一张DAC的签发时间,通常建议提前设置,留出缓冲。

PAI与DAC的绑定关系

PAI与DAC的绑定关系体现在两个层面:签名绑定和身份绑定。

签名绑定是密码学层面的:DAC的签名由PAI的私钥生成,验证时用PAI的公钥验证。这意味着DAC的Issuer字段必须与PAI的Subject字段一致,且DAC的Authority Key Identifier(AKI)应指向PAI的Subject Key Identifier(SKI)。如果AKI缺失或不匹配,验证方可能无法正确构建证书链。

身份绑定是语义层面的:DAC中的Vendor ID(VID)和Product ID(PID)必须与PAI中声明的厂商信息一致。Matter规范要求PAI的Subject中包含VID,DAC的Subject中也包含VID和PID,验证方会检查DAC的VID是否与PAI的VID匹配。如果不匹配,即使签名正确,设备也会被拒绝加入网络。

此外,PAI的扩展字段中通常包含Matter特定的OID,用于标识该PAI属于哪个认证体系。DAC中也会包含对应的扩展字段,验证方通过比对PAI和DAC的扩展字段来确认绑定关系。

Matter 认证证书链与 PAI 绑定关系 RCAC(根证书) CA 持有 · 离线保护 · 自签名 签发 PAI(产品认证中间证书) CA 签发给厂商 · CA=TRUE · keyCertSign Subject 含 VID · 有效期覆盖所有 DAC 私钥存于 HSM / 安全模块 签发 DAC(设备认证证书) 每台设备唯一 · 含 VID + PID AKI 指向 PAI 的 SKI 签名绑定 DAC.Issuer = PAI.Subject DAC.AKI = PAI.SKI PAI 私钥签名 DAC 身份绑定 DAC.VID = PAI.VID 扩展字段 OID 匹配 PAI 签发策略 • 单产品线单 PAI • 多产品线共用 PAI • 按安全等级拆分 • 按产品代际拆分 隔离性 vs 管理成本 泄露影响范围评估 HSM 保护能力 有效期约束 PAI 有效期 ≥ 所有 DAC 有效期 PAI 过期 → 整条链验证失败

多产品线共用与隔离的工程权衡

在实际项目中,PAI的共用与隔离往往不是非此即彼的选择,而是需要根据产品矩阵做分层设计。一个典型的做法是:为每个安全域(Security Domain)分配一张PAI,安全域内可以包含多条产品线。例如,将“家庭普通设备”(灯、插座、传感器)划为一个安全域,共用一张PAI;将“安全关键设备”(门锁、摄像头、网关)划为另一个安全域,使用另一张PAI。这样既控制了PAI数量,又在关键边界上保留了隔离能力。

如果选择共用PAI,需要额外注意DAC的PID分配。因为同一张PAI下可能签发多种产品的DAC,PID必须唯一标识产品型号,避免验证方在设备类型识别时产生歧义。建议在PAI签发前就规划好PID的分配规则,例如按产品线分配PID段,或使用厂商自定义的编码方案。

如果选择隔离PAI,则需要考虑证书链的验证性能。每增加一张PAI,验证方在构建证书链时就需要多一次查找和验证。对于资源受限的设备(如Thread终端设备),过多的PAI层级可能增加验证开销。因此,隔离粒度不宜过细,通常建议一个厂商的PAI数量控制在个位数以内。

实操中的检查要点

在PAI工程实施中,有几个检查点值得在签发前确认:

  • PAI的Basic Constraints中CA=TRUE,Key Usage包含keyCertSign和cRLSign。
  • PAI的Subject中VID与厂商在CSA联盟注册的VID一致。
  • PAI的Not Before早于第一张DAC的签发时间,Not After晚于最后一张DAC的过期时间。
  • PAI的SKI已正确生成,且DAC的AKI指向该SKI。
  • PAI私钥已导入HSM,且签发DAC的接口有访问控制和审计日志。
  • 如果共用PAI,确认所有共用产品线的DAC的VID与PAI一致,PID无冲突。

这些检查点可以在签发流程中固化为脚本或清单,每次签发PAI时自动校验,减少人为失误。PAI作为证书链的中间层,一旦出错,影响的是整条产品线的设备入网,因此值得在工程流程中给予足够的重视。