2. 嵌入式安全基础
各位同学,咱们今天聊点硬核的。密码学、随机数、物理指纹——这些是HSM(硬件安全模块)的三大基石。我做了十几年硬件安全,见过太多产品因为这几块没打牢,最后被攻破的案例。说白了,没有这些基础,你的HSM就是个空壳子。
1. 对称密码:一把钥匙开一把锁
对称加密,顾名思义,加密和解密用同一把密钥。速度快,适合大量数据。但问题也很明显——密钥怎么安全地传给对方?
核心算法:
- AES(高级加密标准):目前最主流,密钥长度128/192/256位。我个人习惯用AES-256,虽然慢一点,但安全余量足。
- SM4:国密标准,128位密钥,国内HSM项目基本必用。
- 3DES:老古董了,别用了。我在一个遗留系统里见过,破解只需要几分钟。
对称加密在HSM里主要用来加密存储的数据、保护会话密钥。举个例子,你车里的T-Box(远程通信终端)和云端通信,数据包就是用AES加密的。
避坑指南:我曾经遇到一个项目,工程师把AES密钥硬编码在固件里。结果固件被dump出来,密钥直接暴露。记住:密钥永远不能明文存储,必须用HSM的密钥派生功能或安全存储区保护。
2. 非对称密码:公钥私钥,各司其职
非对称加密用一对密钥:公钥公开,私钥保密。公钥加密的数据只有私钥能解,私钥签名的数据公钥能验。你想想看,这解决了密钥分发的问题——公钥随便传,私钥自己藏好。
| 算法 | 密钥长度 | 典型用途 | 我的建议 |
|---|---|---|---|
| RSA | 2048/4096位 | 数字签名、密钥交换 | 2048位起步,别用1024了 |
| ECC(椭圆曲线) | 256位(相当于RSA 3072) | 签名、密钥协商 | HSM首选,性能好、密钥短 |
| SM2 | 256位 | 国密签名/加密 | 国内项目必选 |
非对称加密在HSM里最常见的场景是:数字签名。比如固件升级时,HSM用私钥对固件哈希签名,设备端用公钥验签。这样能确保固件没被篡改。
注意:非对称加密很慢,千万别用它加密大文件。我见过有人用RSA加密几MB的数据,结果HSM卡死。正确做法是:用对称密钥加密数据,再用非对称加密保护这个对称密钥。
3. 哈希函数:数据的指纹
哈希函数把任意长度的数据,映射成固定长度的摘要。它是单向的——从摘要反推原始数据,理论上不可能。嗯,这里要注意:哈希不是加密,它不保护数据机密性,只保证完整性。
- SHA-256:目前最安全,256位输出。HSM里做固件校验、密码存储都用它。
- SM3:国密哈希,256位,国内项目标配。
- MD5/SHA-1:已经不安全了。别用,真的别用。
哈希在HSM里的经典用法:密码存储。用户密码不能明文存,存哈希值。登录时比对哈希。但光哈希还不够,要加盐(salt)。我见过一个系统没加盐,结果彩虹表一跑,密码全暴露。
哈希+盐的伪代码示例:
// 注册时
salt = HSM_TRNG_Generate(16字节) // 真随机数
hash = SHA256(password + salt)
存储: salt || hash
// 登录时
读取 salt
计算 hash' = SHA256(input + salt)
比对 hash' == hash
4. 真随机数发生器(TRNG):安全的基石
随机数在密码学里太重要了。密钥生成、挑战值、盐值、初始化向量……全都依赖随机数。但伪随机数发生器(PRNG)是软件算法,有规律可循。TRNG不一样,它从物理噪声中提取随机性——比如热噪声、时钟抖动、环形振荡器。
HSM里的TRNG必须通过熵源健康测试。我参与过一个项目,TRNG输出有偏(偏向0或1),结果密钥空间缩小了一半。后来加了在线自检,每生成一次随机数都做统计测试。
TRNG关键指标:
- 熵率:每比特包含多少随机性。理想是1。
- 吞吐率:每秒能生成多少随机比特。HSM里一般需要Mbps级别。
- 自检机制:上电自检、在线自检。我建议至少做NIST SP 800-90B的重复计数测试。
5. 物理不可克隆函数(PUF):芯片的DNA
PUF利用芯片制造过程中的工艺偏差——每颗芯片的物理特性都独一无二,就像人的指纹。你给它一个挑战(输入),它返回一个响应(输出)。这个响应就是芯片的“身份”。
PUF在HSM里的典型应用:密钥生成。不需要把密钥存进非易失存储器,每次上电从PUF提取。攻击者即使物理剖片,也读不到密钥——因为密钥只在运行时存在。
| PUF类型 | 原理 | 优缺点 |
|---|---|---|
| SRAM PUF | 利用SRAM上电时的随机初始值 | 实现简单,但受温度影响大 |
| 环形振荡器PUF | 利用振荡器频率偏差 | 稳定性好,但面积大 |
| 仲裁器PUF | 利用信号路径延迟差异 | 速度快,但易受建模攻击 |
PUF的坑:PUF响应不是100%稳定的。温度、电压变化会导致比特翻转。所以必须配合纠错码(ECC)和模糊提取器(Fuzzy Extractor)。我曾经在一个项目里没加纠错,结果芯片在高温下密钥恢复失败,整批设备报废。
知识体系总览
下面这张图把本章的核心逻辑串起来了。你看,密码学算法提供数学安全,TRNG提供随机性,PUF提供物理身份。三者结合,才构成HSM的信任根。