2026/10/18 15:01:36

车联网与海量 IoT 边缘设备的凭据动态供给:零硬编码烧录与远程吊销实践(安当SMS)

车联网与海量 IoT 边缘设备的凭据动态供给:零硬编码烧录与远程吊销实践(安当SMS) 一、为什么设备侧的凭据供给是 IoT 安全的命门做后端的人习惯把凭据理解成数据库密码、API Key 这类服务端资源。一旦视角切换到设备侧问题规模立刻变了。一台车机的固件镜像一旦被逆向里面写死的 MQTT 接入密码就被一千万人共享一个充电桩的出厂固件里埋了一段统一预共享密钥PSK攻击者买一台拆机就能拿到全网设备的通关文牒一批智能水表的 OTA 升级令牌是同一串硬编码值一个泄露等于全部泄露。车联网和工业 IoT 的场景有三个特点决定了它和云端凭据管理不是一回事规模不对称。一台车机背后可能是百万级同型号设备任何一个凭据被提取攻击面是按设备数量线性放大的。固件不可控。设备一旦交付固件就离开了你的物理掌控。你无法像重启云服务器一样重烧一台已经卖给用户的车机。生命周期长到反常。消费电子三年翻新车规级设备要求十年以上的安全可维护性期间的密钥轮换、吊销、补发必须远程完成。传统做法是出厂烧一个通用的令牌或 PSK这本质上是把安全边界建立在攻击者拿不到固件这个脆弱假设上。一旦假设被打破没有任何止损手段——你既不能改已经发出去的固件也不能让那一串密钥单独失效。二、核心思路把凭据从固件里拿掉换成设备身份解决方向不是把密钥藏得更深而是重新定义什么叫凭据。我们要区分两个容易混淆的概念设备身份Device Identity这台设备是谁。表现为一个不可伪造的设备标识Device ID加上一对绑定在硬件安全单元SE/TEE/TPM里的非对称密钥。身份私钥原则上不出硬件攻击者即使 dump 了应用区 Flash也拿不到它。运行期凭据Runtime Credential这台设备此刻能访问什么。表现为 MQTT 接入凭据、云端 API Token、下游微服务的临时访问令牌等这些都是短生命周期、可被吊销的。关键转变是固件里只烧身份不烧任何业务凭据。设备上线后拿着自己的身份私钥去凭据管理系统证明我是我由系统按身份动态生成并下发这台设备专属的、限时有效的凭据。这样做带来三个直接收益固件镜像里不再含有任何有价值的长期密钥逆向固件无利可图。每台设备的凭据互不相同、互不影响单台泄露不会波及全网。凭据是服务端发出来的服务端自然也能收回。三、整体架构四段式生命周期一个完整的设备侧凭据供给链路可以拆成四个阶段。下面用一张表先给出传统预共享方案和动态供给方案的差异再展开每一段。维度传统预共享/硬编码方案动态供给与远程吊销方案固件内含物通用 PSK 或长期 Token仅设备身份私钥SE 内凭据唯一性同型号共享每台设备独立泄露影响面全网仅单台密钥轮换需召回固件几乎不可行运行期自动轮换异常处置无解按设备/批次远程吊销审计粒度无或仅网关级每台设备每次取凭据留痕合规支撑弱国密算法 HSM 根密钥 全链路审计四个阶段分别是阶段一·安全烧录产线离线环境为每台设备注入唯一身份私钥根密钥由 HSM 保护。阶段二·身份绑定与凭据下发设备首次联网完成身份挑战应答凭据管理系统据此生成并下发专属凭据。阶段三·运行期轮换凭据到期前由设备主动刷新全程零硬编码、无人工介入。阶段四·退役与远程吊销设备丢失、异常或固件被 dump 时在服务端吊销其身份凭据即刻失效。四、阶段一安全烧录——只烧身份不烧凭据烧录环节的目标只有一句话往每台设备里写一份世界上仅此一份的设备身份且这份身份的私钥永远不离开安全硬件。具体落地时产线通常这样组织设备身份由产线主机调用 HSM 生成 SM2 密钥对公钥与 Device ID 登记进凭据管理系统的设备身份库。私钥通过安全信道如产线加密通道或本地签名机写入芯片的安全单元SE、可信执行环境TEE或 TPM应用处理器只能发起用私钥签名的请求无法直接读取私钥明文。烧录完成即擦除产线主机侧的临时私钥副本确保连产线运维人员都无法还原。下面是一段设备侧读取身份并对外签名的伪代码体现私钥不可导出这一约束/* 设备侧身份私钥存于安全单元应用层只调用签名接口 */intdevice_attest(uint8_t*challenge,size_tclen,uint8_t*sig_out,size_t*slen){/* se_sign 在 SE 内部用私钥完成签名私钥不下发到 RAM */returnse_sign(SE_KEY_SLOT_DEVICE_ID,challenge,clen,sig_out,slen);}/* 应用层永远拿不到私钥明文只能拿到签名结果 */烧录环境的另一个要点是离线。根密钥生成、设备身份签发都应发生在与生产网络隔离的产线安全区避免批量身份私钥在流动网络中扩散。五、阶段二设备身份绑定与凭据按设备下发设备出厂后第一次联网是整套机制真正生效的节点。它的本质是一次挑战-应答式的身份认证认证通过后凭据管理系统按这台设备的身份下发专属凭据。典型流程如下设备向凭据服务请求一个随机挑战nonce。设备用身份私钥对挑战签名连同 Device ID 一并回传。服务端用预登记的设备公钥验签确认此刻发起请求的就是这台具名设备。校验通过服务端按该设备的授权范围scope动态生成限时凭据并返回。设备本地缓存凭据及过期时间用于后续访问 MQTT 代理、云端接口或下游服务。下面是设备侧申请凭据的示意以嵌入式 Rust 风格表达// 设备侧用身份私钥向凭据服务申请本机专属凭据fnprovision_credentials()-ResultCredential{letdev_idread_device_id();// 来自芯片唯一 IDletchallengefetch_nonce()?;// 服务端下发的随机挑战letsignaturese_sign(challenge.as_bytes());// SE 内 SM2 签名私钥不出硬件letreqCredRequest{device_id:dev_id,challenge,signature,scope:mqtt:telemetry,cloud:metrics,};request_credential(req).map(|r|r.credential)}服务端视角的凭据下发接口可以抽象成这样# 设备身份校验 凭据按设备下发服务端伪代码POST /v1/devices/{deviceId}/credentials Header: X-Device-Signature:sm2(challenge)Body:{scope:mqtt:telemetry,ttl:3600}# 返回{credential:****,expires_at:2026-05-27T10:00:00Z,kid:sm4:device-telemetry-2026Q2}这里有两个值得强调的工程点凭据是按设备 按 scope生成的。Telemetry 上报用的凭据和远程诊断用的凭据可以完全分离即便上报凭据泄露也不会拿到诊断权限。返回凭据本身建议再用国密 SM4 在传输层加密避免凭据在链路中被中间人截获复用。根密钥与传输密钥由密钥安全平台托管设备侧用预置的封装公钥解密。把按 scope 供给再具体化车联网与 IoT 场景常见的凭据类型可以归纳成下表每一类都应该独立下发、独立轮换、独立可吊销凭据类别典型用途建议生命周期泄露影响遥测接入凭据上报车辆状态、传感器数据到 MQTT/消息总线1–4 小时仅能伪造本设备上报不波及控制面远程诊断凭据研发/售后拉取日志、读取故障码15–30 分钟仅暴露本车诊断数据OTA 拉取凭据从镜像仓库下载固件升级包升级窗口期仅能下载本设备授权包云端 API 凭据调用业务平台接口、下发指令回执数小时限于本设备业务权限边缘网关凭据设备与本地边缘节点互信通信数小时限于本局域网通信这种分类的意义在于权限最小化。一台车机正常行驶只需要遥测凭据和云端 API 凭据远程诊断和 OTA 凭据只在售后或升级窗口才被下发。未被下发的凭据对这台设备而言根本不存在攻击者即便控制设备也拿不到它从未申请过的权限。对批量设备还可以按车型、区域、固件版本做 scope 模板避免每台设备的授权策略都手工配置既保证一致性也便于后续统一调整。六、阶段三运行期凭据轮换与零硬编码动态供给真正的价值要在长期运行里才显现。凭据必须有短生命周期并在到期前自动轮换这样即便某次凭据在链路或内存里被窃取攻击者可用的时间窗口也极短。轮换逻辑放在设备侧一个独立的、与业务解耦的凭据管家任务里最稳妥// 凭据管家到期前主动刷新业务代码无感知asyncfncredential_renewal_loop(store:mutCredStore){loop{letcredstore.current();// 提前 10% 生命周期触发刷新避免临界抖动letrenew_atcred.issued_atcred.ttl*9/10;sleep_until(renew_at).await;matchprovision_credentials().await{Ok(new_cred)store.replace(new_cred),Err(e)log::warn!(凭据刷新失败沿用旧凭据至过期: {:?},e),}}}零硬编码在这里有两层含义固件编译产物里搜不到任何凭据明文运行期内存里也只在凭据管家持有当前有效凭据业务模块通过句柄取用不直接接触凭据字符串。七、阶段四远程吊销——一台设备被攻破全网凭据即刻失效这是动态供给相对硬编码最致命的优势凭据是服务端发的所以服务端也能收。当一个设备出现以下任一信号时运营方应在凭据管理系统侧将其身份标记为吊销设备物理丢失或被盗存在被拆机提取风险云端行为分析发现该设备上报频率、访问范围异常同批次固件被确认存在可被 dump 的漏洞召回或退役流程触发。吊销粒度可以灵活到单台、一个批次或某一个型号。服务端吊销后该设备身份对应的所有未过期凭据立即进入黑名单后续任何取凭据、用凭据的请求都会被拒绝。# 远程吊销单台设备身份POST /v1/devices/{deviceId}/revoke Body:{reason:firmware_dump_suspected,scope:all}# 返回{revoked:true,effect:immediate,invalidated_credentials:3}需要特别注意的是吊销的生效路径必须闭环吊销动作不仅要让下次取凭据失败还要让已经下发的、尚未到期的凭据立刻不可用。这就要求下游的 MQTT 代理、网关、鉴权中间件在每次校验凭据时都实时回查凭据管理系统的吊销列表CRL/OCSP 风格的点查而不是只在本地缓存一份长期有效的白名单。否则就会出现凭据管理系统说已吊销但网关还认旧令牌的窗口期漏洞。八、以安当SMS为例——落地一个车联网凭据供给链路前面都是抽象设计这里用一套具体链路把四阶段串起来说明工程上怎么落地。以安当SMS凭据管理系统为例车联网平台可以这样组织第一步设备身份登记。产线调用安当SMS 的设备身份接口为每一台车机生成或登记 SM2 身份公钥并将其与车架号、硬件批次绑定。根密钥与设备身份签发密钥统一托管在密钥安全平台由 HSM 提供物理保护杜绝根密钥停留在应用服务器内存。第二步安全烧录只写身份。车机出厂固件只写入设备身份私钥所在的 SE 槽位引用与设备证书不包含任何 MQTT 密码、云平台 Token 或 OTA 密钥。固件仓库里即便被内部人员拷走也得不到任何可用的长期凭据。第三步上线即下发。车机首次联网走挑战-应答安当SMS 校验设备身份后按遥测上报/远程诊断/OTA 拉取三个 scope 分别下发限时凭据。三类凭据互不相同诊断凭据的泄露不影响遥测通道。第四步自动轮换。安当SMS 支持为设备凭据配置生存周期策略到期前由车机凭据管家主动刷新全程无需人工介入也无需召回车辆。第五步异常即吊销。当 SOC安全运营中心发现某台车机的诊断凭据访问频率异常可直接在安当SMS 侧按 Device ID 远程吊销该车的三个 scope 凭据立刻失效且已下发未过期的凭据经下游网关实时点查后被拒。第六步全程审计。安当SMS 记录每一次设备身份校验、凭据下发、轮换与吊销操作形成哪台设备、在何时、取了什么凭据、是否被吊销的完整证据链便于事后追溯与合规审查。再以安当SMS 为例说明和密钥安全平台的配合关系根密钥与传输封装密钥不下放到业务系统由密钥安全平台统一托管设备侧用预置封装公钥解密下发的凭据凭据管理系统只持有经加密的凭据密文与元数据。这种凭据归凭据管理、密钥归密钥平台的分工使得即便凭据管理系统的数据库被拖库攻击者也拿不到可用的明文根密钥。九、审计与可追溯每台设备每次取凭据都留痕海量设备场景下审计不是合规的附加题而是安全运营的眼睛。一个凭据供给系统至少要能回答下面几个问题某台设备今天取了几次凭据分别在什么时间某个被吊销的设备在吊销前最后拿到的凭据是什么、用于哪个 scope是否存在某台设备频繁申请凭据、疑似在被遍历某一批次设备是否使用了同一份可疑身份这就要求凭据管理系统把设备身份校验、凭据下发、轮换、吊销四类事件全部结构化落库并带齐设备标识、时间戳、scope、结果、来源 IP或网关 ID等字段。审计数据本身也要防篡改建议写入只追加append-only的存储并定期归档满足车规与等保对日志留存周期的要求。以安当SMS 为例审计视图可以按 Device ID 聚合出一台设备完整的凭据生命周期从首次身份绑定、历次凭据下发与轮换到某次吊销动作及失效凭据数量全部带毫秒级时间戳与操作来源。安全运营人员无需在多个系统间拼凑日志就能还原这台设备到底拿过什么、现在还能不能拿的全貌这对车规场景下的事件追溯与责任认定尤为关键。十、常见工程坑与落地建议在真实车联网与工业 IoT 项目里下面这些坑出现频率很高提前规避能省掉大量救火时间。坑一时钟不同步导致凭据一上线就过期。设备端 RTC 漂移、首次联网还没校时凭据的expires_at是按服务端时间算的设备本地时间若偏差大刚拿到的凭据就被自己判为过期。对策是设备侧一律用服务端返回的绝对过期时间戳并在联网后尽快通过 NTP/安全校时对齐。坑二断网兜底与安全的平衡。隧道、地下车库等弱网环境设备可能拿不到新凭据。若完全无凭据就停摆会影响基本功能若允许用旧凭据无限期兜底又留下长期有效凭据的隐患。折中做法是给关键功能配置一个稍长的保底凭据同时把非关键功能如增强诊断的凭据严格限时弱网下自动降级。坑三吊销点查成为性能瓶颈。每台设备每次发消息都回查吊销列表网关压力会随设备数线性增长。可行方案是服务端把吊销列表做增量推送delta CRL网关本地缓存并在秒级内失效既保证吊销时效性又避免每次全量点查。坑四身份私钥泄露的止损边界。即便私钥在 SE 里物理侧信道攻击仍可能extract。要承认身份私钥终有被攻破的可能因此身份私钥的授权范围要受到约束——它只能用来申请凭据不能直接当业务凭据用。这样即使身份私钥泄露攻击者也只是能冒充这台设备去申请凭据而凭据本身仍受 scope、频控、异常检测等多重约束止损面被限制在一台设备之内。坑五固件升级通道本身也要走凭据供给。OTA 拉取镜像的凭据常被当作特殊通道单独硬编码结果它成了最值钱也最容易被忽略的硬编码点。正确做法是 OTA 凭据同样按设备身份下发且只在升级窗口期内有效。方案参考对于准备建设或改造设备侧凭据供给的团队给出几条可落地的参考路径先做资产盘点。梳理清楚有哪些设备类型、各自需要访问哪些后端资源、当前凭据是如何写入和分发的再决定哪些通道先纳入动态供给。身份先行。优先把设备身份 安全硬件这一底座打牢身份私钥的不可导出性是后面一切安全属性的前提没有这一层凭据再怎么动态都是空中楼阁。凭据短生命周期化。新建设备凭据默认带 TTL并配套自动轮换把硬编码长期凭据逐步清零。吊销闭环。确保下游所有校验点都能实时感知吊销而不是只依赖本地白名单否则远程吊销会留下窗口期。根密钥与凭据分离托管。根密钥、封装密钥放在受 HSM 保护的密钥安全平台凭据管理系统只管凭据生命周期降低单点被拖库的风险。审计默认开启。把设备身份校验、凭据下发、轮换、吊销四类事件的结构化审计作为系统标配而不是事后补做。国密合规前置。在算法选型上直接采用国密体系避免后期为满足合规要求再做大规模改造。面向车联网与海量边缘设备凭据动态供给的本质不是把密钥藏好而是让密钥可以被按需发放、被限时约束、被随时收回。把身份和凭据解耦、把硬编码清零、把吊销做成闭环设备侧的安全才真正从假设固件安全走向即便固件不安全也能止损。