1. PKI 基础概念与设备身份
各位好,我是老张。做 PKI 这行十几年了,踩过的坑比走过的路还多。今天咱们先聊聊最基础的东西——PKI 到底是什么,以及设备身份这个容易被忽视的概念。
很多人一听到 PKI,就觉得是「证书」「CA」「SSL」这些词。其实没那么复杂。PKI 说白了就是一套管理公钥的规则和工具。它解决的核心问题就三个:你是谁、谁能信你、你做的事能不能赖账。
什么是 PKI
PKI,全称 Public Key Infrastructure,公钥基础设施。它不是单一的技术,而是一套体系。包括证书颁发机构(CA)、注册机构(RA)、证书库、密钥管理系统等等。
我习惯把 PKI 比作「数字世界的身份证系统」。你想想看,现实里我们靠身份证、护照来证明身份。数字世界里,靠的就是数字证书。
PKI 的核心能力:
- 身份认证——确认对方是不是它声称的那个实体
- 数据加密——保证只有目标接收者能看懂内容
- 完整性校验——数据在传输过程中没被篡改
- 不可否认性——做过的事不能事后抵赖
我记得刚入行时,有个客户问我:「我直接用对称密钥加密不行吗?干嘛非要搞 PKI 这么复杂?」我当时就反问了一句:「你和一万个设备通信,每个设备用不同的对称密钥,你怎么管理这些密钥?」他沉默了。这就是 PKI 存在的意义——规模化地解决信任问题。
数字证书的核心要素
数字证书,就是 PKI 体系里的「身份证」。最常见的标准是 X.509 v3。我每次排查证书问题时,都会先看这几个字段:
| 字段 | 含义 | 排查要点 |
|---|---|---|
| Subject | 证书持有者身份 | 设备证书的 Subject 必须和设备唯一标识对应 |
| Issuer | 颁发者(CA) | 检查是否由受信任的 CA 签发 |
| Validity | 有效期(notBefore / notAfter) | 设备证书过期是最常见的故障原因 |
| Subject Public Key Info | 公钥算法和公钥值 | 算法强度是否满足安全策略 |
| Signature Algorithm | 签名算法 | 避免使用 SHA-1 等弱算法 |
| Extensions | 扩展字段 | Key Usage、Extended Key Usage 决定证书用途 |
举个例子,我曾经排查过一个 IoT 设备无法接入平台的故障。折腾了半天,最后发现是证书的 Extended Key Usage 里没有配 clientAuth。设备拿着证书去认证,服务器一看用途不对,直接拒了。这种坑,你光看证书能不能解析是看不出来的。
我的小习惯:拿到一张证书,先用 openssl 命令把扩展字段全部 dump 出来看一遍。别只看 Subject 和有效期。
openssl x509 -in device.crt -text -noout
设备身份 vs 人的身份
这里有个关键区别,很多人容易搞混。人的身份和设备身份,虽然都靠证书,但管理逻辑完全不同。
- 人的身份:张三就是张三,换了手机还是张三。身份和人本身绑定。
- 设备身份:这台传感器就是这台传感器。它被销毁了,身份就没了。
人的证书可以存在 USB Key 里,随身携带。设备证书呢?存在芯片里、文件系统里、HSM 里。设备一旦被物理入侵,私钥就可能泄露。
我记得有一次帮一家车厂做 T-Box 的 PKI 方案。他们一开始想用人的证书管理方式——证书统一签发,统一吊销。我说不行。车机设备生命周期里,证书的轮换、吊销、更新必须自动化。你不能让车主开着车去 4S 店更新证书吧?
避坑指南:我曾经见过一个项目,把设备证书的有效期设了 10 年。理由是「省事」。结果第三年发现私钥算法被破解了,所有设备都得召回重刷。设备证书的生命周期管理,一定要考虑密钥更新和算法升级的窗口。
设备指纹技术
说到设备身份,就绕不开设备指纹。什么是设备指纹?就是通过设备的硬件特征、软件配置、行为模式,生成一个唯一标识。
设备指纹和数字证书是互补关系:
- 证书解决的是「这个设备有没有合法的身份凭证」
- 指纹解决的是「这个设备是不是它声称的那台设备」
常见的设备指纹采集点:
| 类型 | 采集内容 | 稳定性 |
|---|---|---|
| 硬件指纹 | MAC 地址、芯片序列号、TPM 标识 | 高(除非换硬件) |
| 软件指纹 | 操作系统版本、内核参数、已安装软件列表 | 中(升级会变) |
| 行为指纹 | 启动时间、网络流量模式、传感器数据特征 | 低(环境变化影响大) |
我个人的经验是:不要只依赖单一指纹。硬件指纹可以被伪造(MAC 地址随便改),软件指纹会随升级变化。最好是证书 + 多维度指纹组合验证。
曾经有个客户,他们的 IoT 平台只校验设备证书。结果有人把合法设备的证书导出来,放到另一台设备上,平台完全没发现。后来我们加了设备指纹校验——每次 TLS 握手后,服务端再要求设备上报硬件指纹,和证书绑定的指纹做比对。从此再没出过这种问题。
嗯,这一章的内容就这些。PKI 基础概念、数字证书要素、设备身份和人的身份的区别、设备指纹技术——这四个点搞清楚了,后面讲证书生命周期管理时你才不会晕。我见过太多人一上来就折腾 OCSP、CRL,结果连 Subject 和 Issuer 都分不清,那排查问题就是瞎猫碰死耗子。