TECHNICAL GUIDE

物联网设备身份认证方案_ 一机一密实现原理与安全芯片落地路径 | 上海耀罡电子

所有物联网设备共用一个密钥,是最常见也最危险的做法。本文讲清「一机一密」到底怎么实现,以及安全芯片在这条链路上不可替代的作用。

更新于 2026-10-26 约 10 分钟读完 上海耀罡电子科技有限公司

为什么共用密钥等于没有安全

一个真实的攻击路径

设想一个智能网关厂家的常见做法:所有出厂设备刷入同一份固件,固件里内置一个 AES 密钥,设备用它向云端建立 TLS 连接。

这个方案在设备出厂时是安全的。问题出现在第一台设备被破解之后:

攻击者从一台设备里读出了这个共享密钥,于是他可以:

批量伪造设备接入云平台,让平台以为有几万台真实设备在线;解密其他所有设备的通信,包括传感数据和控制指令;冒充合法设备下发固件升级,把恶意固件推给全网设备。

这就是为什么「一机一密」不是过度设计,而是规模越大越必须——你有 1 万台设备时,一台被破就等于全部被破。

身份认证与数据加密是两件事

很多人会把这两件事混在一起。

身份认证解决的是「连接的这一端是不是它声称的那台设备」;数据加密解决的是「传输的内容会不会被看到或篡改」。

TLS 双向认证(mTLS)同时做了两件事:客户端用证书证明身份,服务器校验证书;双方协商出会话密钥,之后的数据用会话密钥加密。

所以「我们的通信是加密的」不代表安全——如果所有设备共用一张证书,攻击者拿到任意一台的证书就能冒充所有设备。身份这一层没做扎实,后面的加密都是空中楼阁。

设备身份的三层构成

三个要素缺一不可

一个可用的设备身份体系由三部分组成:

层级 内容 作用
唯一标识 每颗安全芯片出厂即烧死的唯一 SN 设备在世界上唯一的身份
身份凭证 由唯一标识派生或绑定的密钥/证书 证明「我确实是这个 SN 对应的设备」
信任链 根证书 → 厂商 CA → 设备证书 让云端能验证这个身份是可信的

唯一 SN 为什么必须是硬件级的

如果唯一 ID 存在 Flash 里,攻击者拿到读写权限就能改写它,复制一台设备出来。只有存在芯片内部、无法通过外部接口读取修改的 SN,才具备身份锚点的资格。

DX 系列的每颗芯片都具备全球唯一 SN,这个 SN 在出厂时由安全芯片内部机制保证唯一性,应用程序读得到但改不了。

这就是硬件根信任(Hardware Root of Trust)的最基础形态:「有一个值,我保证它从我出生起就没变过」。

信任链怎么建

典型流程是标准的 PKI 体系:

根证书(Root CA,厂商自持,离线保管)
  └─ 中间 CA(生产环境使用)
       └─ 设备证书(每台设备一张,含唯一 SN 与公钥)

关键设计点在于:设备证书在产线烧录环节签发,签发过程必须使用中间 CA 的私钥,而中间 CA 的私钥只在产线环境存在。

这样即使产线被物理接触,攻击者拿到的也只是已签发的设备证书,无法伪造出新的合法设备。

一机一密的核心:唯一 SN 派生

三种实现路径

「一机一密」的落地方式主要有三种:

方案 做法 优点 局限
出厂预置唯一密钥 生产时把随机密钥写进每颗芯片的 OTP/EEPROM 实现简单、性能好 密钥需逐颗注入,成本高
由 SN 派生 密钥 = KDF(根密钥, SN) 无需逐颗注入,产线快 SN 泄露则密钥可复现
在线申请 设备首次上电向 CA 申请证书 密钥不出芯片,最安全 依赖网络,首次启动有复杂度

派生方案的关键前提

用 SN 派生密钥,前提是 SN 本身不可预测且不可枚举。

如果 SN 是连续递增的(比如 000001、000002),攻击者可以批量尝试:拿到一台设备的 SN,就能推算出下一台的密钥。

所以使用派生方案时,必须确保 SN 是真正随机的、不可枚举的,并且派生时引入了设备专属的秘密因子(比如芯片内一次性生成的设备密钥参与 KDF)。

DX 系列同时支持唯一 SN 与芯片内不可读写的存储区,可以把「SN + 设备密钥」作为派生的双输入,这是派生方案能安全使用的必要条件。

派生算法的一个实用建议

派生不要用简单的哈希拼接,要用正规 KDF:HKDF(HMAC-based Extract-and-Expand Key Derivation Function)或 PBKDF2。

原因是需要满足两个性质:不同 SN 派生出完全独立的密钥(即使 SN 只差一位,派生结果也要毫无关联);派生过程可加入上下文信息(把用途、设备型号、协议版本一起作为 info 参数,这样同一台设备用于「设备认证」和「固件加密」的密钥也不同)。

分层密钥体系:不同环节用不同密钥

一个典型的五层结构

单一密钥无法同时满足所有需求。成熟的做法是按用途分层,每层独立管理:

层级 密钥 用途 生命周期
L1 根密钥(Root Key) 派生下层密钥 出厂注入,永不导出
L2 设备唯一密钥(Device Key) 设备身份认证、派生会话密钥 每台设备唯一,出厂写入
L3 固件加密密钥(Firmware Key) 加密固件镜像,防止被读出 每型号或每台
L4 会话密钥(Session Key) TLS 握手协商生成,一次一密 单次会话,用完即弃
L5 业务数据密钥(Data Key) 加密传感数据、配置参数 可轮换

为什么必须分层

如果所有环节共用一把密钥,那么任何一个环节的密钥泄露都会导致全线失守。

分层之后:

L4 会话密钥每台设备每次连接都不同,即便被截获也只影响这一次连接,这直接消除了「长期密钥被复用」这个最致命的风险;L3 固件密钥泄露只影响固件保密性,不影响身份认证体系;L1 根密钥永不出芯片,它只是派生的种子,即便攻击者拿到部分设备密钥也无法反推根密钥。

DX 系列的分层密钥体系正是基于这个思路设计的。

会话密钥是分层的核心价值

在 mTLS 握手中,设备证书里的公钥用于身份验证,而真正加密通道数据的是双方临时协商出的会话密钥。

这意味着:每次连接的加密密钥都是全新的。攻击者即使抓取了全部历史流量,也无法解密未来的通信。

这一点是很多客户在评估方案时最容易忽略的——「我们的数据是加密的」和「我们的数据每次都用新密钥加密」在抗分析能力上差着一个量级。

安全芯片在其中的不可替代性

软件加密为什么不够

理论上所有加密算法都能用软件实现,那为什么还需要一颗专用芯片?因为软件加密的密钥必须存在于内存里,而内存是可以被读出来的。

攻击者的路径通常是:找到漏洞拿 shell → 内存 dump 或 DMA 读取 → 搜出密钥 → 解密或伪造。

安全芯片改变的正是这一点:

密钥永远不进主控内存。主控只能通过标准协议发起「用这把密钥做这个运算」的请求,运算在芯片内部完成,密钥本身不被读出。

这就是安全芯片提供的核心保证:密钥的机密性由硬件保证,而不是由软件的保密性保证。

硬件算法协处理器的价值

DX 系列内置 ECC / SHA1 / 3DES / TRNG 硬件算法协处理器。

这里的关键是 TRNG(真随机数发生器)。加密强度依赖随机数质量——而软件伪随机数(rand())的输出是可预测的,用可预测的随机数生成密钥,等于没有加密。

硬件 TRNG 基于热噪声或振荡器抖动,输出不可预测。

另一个现实考量是性能与功耗:硬件做一次 ECC 运算可能几十毫秒,软件实现要占用主控算力并推高功耗。在电池供电的设备上,这个差别直接决定续航。

对应到 DX 各系列的分工

DX 系列的五大系列针对不同的攻击面各有侧重:

系列 形态 典型场景
DX81C04 I²C / SPI 接口加密 EEPROM 存储少量密钥、参数与校准数据
DX82C04 动态数据加密 需要动态加解密、会话管理的场合
DX88F01 USB 安全认证 MCU 外设直连,做设备身份认证与安全启动
DX88SC64 智能卡安全芯片 最高安全等级,适合支付与强认证场景
DX81C01 安全存储类 密钥与凭据的集中存储

落地流程:从产线烧写到云端校验

六个环节

① 产线注入    根密钥 / 设备密钥写入芯片,锁定为不可读
        ↓
② 出厂标定    读取唯一 SN,与产线数据库绑定
        ↓
③ 证书签发    用中间 CA 为该 SN 签发设备证书
        ↓
④ 写入设备    证书 + 公钥 + 端点地址写入 Flash
        ↓
⑤ 云端登记    SN 与证书指纹登记入库,作为白名单
        ↓
⑥ 运行时验证  mTLS 握手,链上校验证书与白名单

第 ⑤ 步最容易被忽略

很多项目只做了前四步就上线,结果云端「谁都能连」——因为没有 SN 白名单做二次过滤。

正确的做法是:云端维护一份已登记设备的 SN 列表,收到连接请求时,除了校验证书链,还要检查证书里的 SN 是否在登记列表内。

这一层是防证书泄露的关键——即便某张设备证书被复制,没有对应的 SN 登记记录也无法接入。

证书轮换与吊销

设备证书有有效期,也会有泄露风险。需要规划:

场景 处理方式
正常到期 设备定期向 CA 续签,云端更新指纹
设备丢失/失窃 CA 签发吊销列表(CRL),云端定期拉取
批量更换 CA 双证书过渡期,新旧证书并行有效一段时间

存量设备的过渡方案

如果现场已有大量设备在跑、固件无法立刻更新,可以采用网关侧统一认证:由网关完成设备身份校验,网关自身使用安全芯片与云端建立 mTLS。

这个方案的安全强度低于一机一密,但能以较低改造成本覆盖存量设备。理想路径仍然是逐步把认证能力下沉到每台设备——这也是安全芯片方案的核心价值所在。

常见问题

一机一密和一机一证有什么区别?

一机一密指每台设备有独立的加密密钥;一机一证指每台设备有独立的数字证书。两者常配合使用:密钥用于数据加密与会话协商,证书用于身份认证。在 DX 系列的方案里,硬件唯一 SN + 分层密钥体系 + 证书签发链,共同构成了完整的一机一密能力。

设备唯一 SN 必须用安全芯片吗?

不必须,但用 Flash 或外部 EEPROM 存唯一 ID 存在被改写的风险——攻击者拿到读写权限就能复制设备身份。只有存在芯片内部、无法通过外部接口读取修改的 SN 才具备身份锚点资格。DX 系列每颗芯片具备全球唯一 SN,正是为此设计。

软件加密真的不安全吗?

不是绝对不安全,而是安全强度依赖执行环境。软件加密的密钥必须存在于内存中,一旦攻击者获得代码执行能力或能读取内存,密钥就会暴露。安全芯片把密钥封在芯片内部、只暴露运算接口,把「保密性」的保证从软件转移到硬件,这是本质区别。

已经有一批设备在跑了,怎么引入一机一密?

分两步走:先用网关侧统一认证覆盖存量设备,把网关的 mTLS 密钥放入安全芯片,让每个网关成为独立的认证主体;再逐步把认证能力下沉到终端设备。不要指望一次性替换,通常按设备生命周期分批推进更现实。

安全芯片会增加多少成本和功耗?

相比整个方案的开发与维护成本,安全芯片的单颗成本占比很低,并且因为内置硬件算法协处理器,运算性能更高、主控负载更低、整机功耗反而可能下降。真正的成本在产线环节——需要增加密钥注入与证书签发工序。

相关产品方案