2. 密码学基础

在嵌入式密钥生命周期管理中,密码学算法不是孤立存在的“工具箱”,而是一条由密钥贯穿始终的信任链。对称加密负责高效保护数据机密性,非对称加密解决密钥分发与身份绑定问题,哈希函数提供数据完整性度量,消息认证码(MAC)同时验证完整性与来源,数字签名则把不可否认性引入系统。理解这些原语的分工与密钥角色,是后续密钥生成、注入、轮换、销毁等工程决策的基础。

一、核心原理:五类原语的分工

对称加密使用同一把密钥完成加密与解密,典型算法包括 AES-128/256、SM4。其优势是速度快、资源占用低,适合嵌入式设备对固件、配置、通信载荷做批量加密。但对称密钥一旦泄露,攻击者既能解密也能伪造,因此密钥分发与存储成为最大风险点。

非对称加密使用公钥与私钥配对。公钥可公开,用于加密或验签;私钥必须严格保护,用于解密或签名。RSA、ECC、SM2 是常见方案。非对称算法计算开销大,通常不直接加密大量数据,而是用于协商对称会话密钥或保护对称密钥本身。

哈希函数把任意长度输入映射为固定长度摘要,如 SHA-256、SM3。它具备单向性、抗碰撞性,用于校验固件完整性、生成密钥指纹、构造签名摘要。哈希本身不提供机密性,也不带密钥,因此不能单独用于身份认证。

消息认证码(MAC)是带密钥的哈希,常见 HMAC-SHA256、CMAC-AES。发送方与接收方共享同一密钥,接收方重新计算 MAC 并比对,从而确认消息未被篡改且来自持有密钥的一方。MAC 不提供不可否认性,因为双方都能生成相同 MAC。

数字签名用私钥对消息摘要签名,公钥验签。它同时提供完整性、来源认证和不可否认性,适合固件发布、许可证授权、安全启动等场景。签名不加密消息本身,若需机密性仍需配合加密。

密码学原语与密钥角色关系图 对称加密 AES / SM4 同一密钥加解密 机密性 · 高效率 非对称加密 RSA / ECC / SM2 公钥加密 · 私钥解密 密钥分发 · 身份绑定 哈希函数 SHA-256 / SM3 单向 · 抗碰撞 完整性 · 指纹 消息认证码 HMAC / CMAC 带密钥哈希 完整性 + 来源 数字签名 私钥签名 · 公钥验签 完整性 + 来源认证 + 不可否认性 密钥在其中的角色 对称密钥:机密性核心 公私钥对:信任锚点 MAC 密钥:共享认证 签名私钥:身份凭证

二、方法流程:从数据到信任的典型链路

在嵌入式安全启动场景中,一条典型链路如下:厂商用哈希函数计算固件摘要,再用签名私钥对摘要签名,把固件与签名一起发布。设备端用预置的公钥验签,验签通过后才允许执行。若固件还需保密,可先用对称密钥加密固件,再用非对称算法保护该对称密钥。设备启动时先解密会话密钥,再解密固件,最后验签。整个过程中,哈希保证“内容没变”,签名保证“来源可信”,对称加密保证“内容不可见”。

固件发布端:
  digest = SHA256(firmware)
  signature = Sign(priv_key, digest)
  session_key = Random(16)
  cipher_fw = AES_GCM(session_key, firmware)
  enc_key = RSA_Encrypt(pub_key, session_key)

设备端:
  session_key = RSA_Decrypt(priv_key, enc_key)
  firmware = AES_GCM_Decrypt(session_key, cipher_fw)
  digest = SHA256(firmware)
  Verify(pub_key, digest, signature) → 通过则启动

三、案例/场景:安全通信与固件升级

在 LoRa 或 BLE 传感节点中,设备与网关之间常用“非对称协商 + 对称加密 + MAC”组合。设备首次入网时,用预置公钥验证网关证书,协商出会话密钥;之后每条数据用 AES-GCM 加密,GCM 内部同时完成加密与认证,等价于“加密 + MAC”一体。这样既避免非对称算法频繁运算,又保证每条报文的完整性与来源。

固件空中升级(OTA)则更强调签名与版本控制。设备端保存厂商公钥,升级包必须携带有效签名;同时用单调递增版本号防止回滚攻击。若只做哈希校验而不验签,攻击者可替换固件并重新计算哈希,完整性保护形同虚设。

原语 典型算法 密钥角色 提供能力 嵌入式注意点
对称加密 AES-128/256、SM4 同一密钥 机密性 密钥存储与防侧信道
非对称加密 RSA、ECC、SM2 公钥/私钥 密钥分发、身份绑定 运算慢,需硬件加速
哈希函数 SHA-256、SM3 无密钥 完整性、指纹 不能单独认证来源
消息认证码 HMAC-SHA256、CMAC 共享密钥 完整性 + 来源 双方共享,无不可否认
数字签名 ECDSA、RSA-PSS、SM2 私钥签名/公钥验签 完整性 + 认证 + 不可否认 私钥必须安全存储

四、误区与复盘

误区一:用哈希代替签名。哈希不带密钥,任何人都能重新计算。只校验哈希无法防止恶意替换,必须配合签名或 MAC。

误区二:MAC 能提供不可否认性。MAC 使用共享密钥,通信双方都能生成,因此无法向第三方证明“一定是对方发的”。需要不可否认时应用数字签名。

误区三:非对称加密直接加密大固件。RSA/ECC 运算慢且长度受限,正确做法是“非对称保护对称密钥,对称加密保护数据”。

误区四:密钥与算法混为一谈。算法公开并不可怕,真正需要保护的是密钥。嵌入式系统中,密钥应存放在安全存储区、TEE 或安全元件中,避免明文出现在 Flash 或日志里。

工程复盘时可用三个问题快速定位:数据要不要保密?要保密就用对称加密。来源要不要可信?要可信就用签名或 MAC。双方是否共享同一密钥?共享则 MAC,不共享则签名。把这三个判断与密钥生命周期中的生成、存储、使用、轮换、销毁对应起来,才能让密码学原语真正服务于嵌入式安全目标。