1. 设备身份基础:从“你是谁”到“我信你”

大家好,我是老周。做物联网安全这些年,我见过太多设备被仿冒、被篡改的案例。说白了,很多问题的根源就一个——设备没有一张合格的“身份证”。

今天咱们就从最基础聊起。设备身份到底是什么?它包含哪些核心要素?怎么管好它的整个生命周期?

嗯,这部分内容虽然基础,但它是后面所有远程证明、联动防御的根基。你想想看,如果连设备是谁都搞不清楚,那后面谈什么信任、谈什么安全,都是空中楼阁。

1.1 什么是设备身份?

设备身份,简单说就是物联网世界里,一台设备用来证明“我是我”的那套信息集合。就像我们人类有身份证号、指纹、人脸,设备也有它自己的数字身份。

但这里有个关键区别:人的身份是生物属性,设备的身份是密码学属性。它不依赖物理外观,而是依赖一组只有设备自己知道的秘密。

核心观点:设备身份 = 唯一标识 + 可信凭证 + 验证机制。三者缺一不可。

我在一个智能门锁项目里遇到过这样的问题:厂商给每把锁写了个序列号,觉得这就是身份了。结果呢?攻击者抓包发现序列号是明文传输的,直接伪造了一个序列号,就能冒充合法锁具开锁。这就是典型的“有标识、无凭证”——光有个名字,没有能证明名字真实性的东西。

1.2 设备身份的核心三要素

我个人习惯把设备身份拆成三个核心要素:设备ID、密钥、证书。它们各自承担不同角色,又互相配合。

要素 作用 类比 安全级别
设备ID 唯一标识,公开信息 身份证号码 低(可公开)
密钥 签名/加密,秘密信息 指纹/私章 高(必须保密)
证书 绑定ID与公钥,经CA背书 带钢印的身份证 高(防篡改)

1.2.1 设备ID

设备ID是设备的“名字”。它可以是MAC地址、IMEI、芯片序列号,也可以是自定义的UUID。但要注意——ID本身不提供安全。

我曾经见过一个项目,直接用MAC地址做设备身份认证。结果呢?MAC地址是可以伪造的,攻击者改一下网卡配置就能冒充。所以ID只能用来索引,不能用来验证。

我的建议:设备ID最好用硬件绑定的唯一标识,比如安全芯片的序列号。如果实在没有,至少用Hash(硬件特征+随机数)生成,别用纯递增数字或MAC。

1.2.2 密钥

密钥才是设备身份的“灵魂”。它是一段秘密数据,只有设备自己知道。通常我们使用非对称密钥对:私钥留在设备里,公钥可以公开。

为什么用非对称?因为对称密钥有个麻烦——你得把同一个密钥分发给设备和服务器,分发过程本身就是风险点。非对称的话,私钥不出设备,服务器只存公钥,安全性高很多。

// 设备端生成密钥对(伪代码示例)
KeyPair keyPair = KeyPairGenerator.generate(ALGORITHM_ECDSA, CURVE_SECP256R1);
PrivateKey privateKey = keyPair.getPrivateKey();  // 私钥,必须安全存储
PublicKey publicKey = keyPair.getPublicKey();      // 公钥,可导出给CA或服务器

// 私钥通常写入安全元件(SE)或TEE,禁止导出
secureElement.write(privateKey, ACCESS_DENIED_EXPORT);

避坑指南:我曾经在一个项目中,开发人员为了方便调试,把私钥以明文形式存在文件系统里。结果产品出厂后,攻击者通过固件提取拿到了所有设备的私钥……嗯,那次事故直接导致整批设备召回。记住:私钥必须存储在安全硬件(SE/TPM/TEE)里,软件层面只能使用,不能读取。

1.2.3 证书

证书解决的是“信任传递”问题。你有公钥,但你怎么证明这个公钥确实属于某台设备?证书就是干这个的——由可信的CA(证书颁发机构)对“设备ID + 公钥”做数字签名,形成一份不可篡改的凭证。

证书的结构遵循X.509标准,核心字段包括:

  • Subject:设备ID或设备DN(Distinguished Name)
  • Subject Public Key Info:设备的公钥
  • Issuer:签发该证书的CA
  • Validity:有效期
  • Signature:CA对上述内容的签名

验证流程很简单:服务器信任CA根证书 → 设备出示设备证书 → 服务器用CA公钥验证设备证书签名 → 签名通过则信任设备身份。

1.3 设备身份的生命周期管理

设备身份不是一成不变的。从生产到报废,它经历多个阶段。每个阶段都有不同的安全要求。我把它分成四个阶段:注册、激活、运营、注销。

下面这张图可以帮你快速理解整个流程:

设备身份生命周期管理流程图 设备身份生命周期管理 ① 注册 生成密钥对 ② 激活 CA签发证书 ③ 运营 身份验证/更新 ④ 注销 吊销证书 各阶段关键动作: ① 注册:在安全环境中生成设备密钥对,私钥写入安全元件,公钥导出。 ② 激活:设备向CA提交CSR(证书签名请求),CA验证后签发设备证书。 ③ 运营:设备使用证书进行身份验证;证书到期前需更新(续签)。 ④ 注销:设备报废或失窃后,CA吊销证书,加入CRL或OCSP响应。 ⚠️ 常见问题: • 注册阶段私钥泄露 → 所有后续信任崩塌 • 运营阶段证书过期未更新 → 设备离线,无法通信 • 注销阶段未吊销证书 → 被攻击者利用旧证书冒充

1.3.1 注册阶段

注册发生在设备生产环节。我个人强烈建议在安全工厂环境或HSM(硬件安全模块)内完成密钥生成。为什么?因为这时候设备还没出厂,物理访问可控,是注入身份的最佳时机。

注册的核心产出物:

  • 设备私钥(写入安全元件,永不出设备)
  • 设备公钥(导出用于证书签发)
  • 设备ID(与公钥绑定记录在工厂数据库)

1.3.2 激活阶段

设备第一次联网时,会向CA发起证书签名请求(CSR)。CA验证设备身份后,签发设备证书。这里有个细节:CA怎么验证设备身份?通常靠预置的注册凭证,比如工厂预置的注册密钥或一次性密码。

我的经验:激活阶段最容易出问题的是“中间人攻击”。如果设备与CA之间的通信没有加密,攻击者可以截获CSR并替换公钥。所以CSR传输必须走TLS,或者至少用预置密钥做签名保护。

1.3.3 运营阶段

这是设备生命周期最长的阶段。设备每次通信都要用证书证明身份。同时,证书有有效期(通常1-3年),到期前需要更新。

证书更新有两种方式:

  • 在线更新:设备通过安全通道向CA发起续签请求,CA验证设备仍持有对应私钥后签发新证书。
  • 离线更新:通过OTA固件包携带新证书,设备在安全环境中加载。

1.3.4 注销阶段

设备报废、丢失或退役时,必须吊销其证书。CA会将证书序列号加入CRL(证书吊销列表)或通过OCSP(在线证书状态协议)提供实时查询。

避坑指南:我曾经遇到一个客户,设备丢了但没及时吊销证书。结果攻击者拿着那个设备的证书,成功接入了后端平台,窃取了大量敏感数据。记住:注销不是“关掉设备电源”,而是从信任体系中移除。只要证书没吊销,设备身份就仍然有效。

1.4 小结

设备身份是物联网安全的基石。它由设备ID、密钥、证书三要素构成,缺一不可。而生命周期管理则确保身份从生到死都在可控范围内。

嗯,这一章的内容就到这里。记住一句话:没有身份的设备,就像没有锁的门——谁都能进。后面我们会在这个基础上,聊怎么用远程证明让设备身份真正“活”起来。