2. TPM标准与规范:TCG规范族,TPM 1.2 vs TPM 2.0 核心差异,FIPS 140-2/3认证要求
聊TPM,绕不开标准。很多工程师拿到芯片手册就开始调驱动,结果发现不同厂家的TPM行为不一样,甚至同一个厂家不同批次都有差异。为什么?因为TPM背后有一套完整的规范族,你理解了这个体系,选型才不会踩坑。
我个人习惯,先看芯片支持哪个版本的TCG规范,再看它有没有FIPS认证。这两个信息基本决定了这颗芯片能不能用在你的产品里。
2.1 TCG规范族:谁在管TPM的事?
TCG(Trusted Computing Group)是一个产业联盟,成员包括Intel、AMD、Microsoft、IBM这些大厂。他们不生产芯片,但定义了TPM该怎么做。
整个规范族分三层:
- 核心规范:定义TPM的架构、命令集、数据结构。这是TPM的“宪法”。
- 平台特定规范:针对PC、移动设备、IoT等不同平台,规定TPM怎么集成。比如PC客户端平台规范,就规定了TPM必须支持哪些PCR、怎么和BIOS交互。
- 保护配置文件:定义安全等级。比如你要过FIPS认证,就得按对应的保护配置文件来设计。
关键点:选型时,不要只看“支持TPM”,要问清楚支持的是哪个版本的TCG规范。TPM 1.2和2.0的命令集完全不同,驱动不能混用。
我记得有一次帮客户做选型评估,对方说“我们用的TPM是1.2的,没问题”。结果一查,他们用的芯片是2015年停产的,TCG规范版本已经落后了三个大版本。嗯,这种坑我见过不少。
2.2 TPM 1.2 vs TPM 2.0:核心差异
这是选型时最常遇到的问题。我直接说结论:新项目别用TPM 1.2了,除非你有特殊理由。
为什么?看这张对比图就明白了。
说几个我实际项目中遇到的差异点:
2.2.1 算法支持
TPM 1.2只支持RSA和SHA-1。SHA-1现在已经被证明不安全了,很多安全审计直接不通过。TPM 2.0支持ECC、SM2(国密)、SHA-256/384。你想想看,如果你的产品要过等保2.0,没有国密支持怎么行?
避坑指南:我曾经帮一个金融客户做方案,他们选了TPM 1.2芯片,结果等保测评时发现SHA-1不被认可,整个方案推倒重来。多花了三个月时间。
2.2.2 授权机制
TPM 1.2的授权只有一种:HMAC会话。说白了就是每次操作都要算一个HMAC,流程固定,不够灵活。
TPM 2.0引入了策略授权(Policy Authorization)。你可以定义复杂的访问策略,比如“只有同时满足PCR值正确且管理员签名有效时,才能使用这把密钥”。这在安全启动场景下特别有用。
2.2.3 PCR数量
TPM 1.2最少16个PCR,TPM 2.0最少24个。别小看这个数字。在安全启动中,PCR 0-7用于固件和BIOS,PCR 8-15用于操作系统,PCR 16-23留给厂商自定义。如果你要做多级启动验证,PCR不够用会很尴尬。
2.3 FIPS 140-2/3认证要求
FIPS 140是美国联邦信息处理标准,专门针对密码模块。140-2是旧版,140-3是2020年发布的新版。如果你的产品要卖到美国政府或金融机构,FIPS认证几乎是硬门槛。
这里有个常见的误解:很多人以为“芯片支持FIPS算法”就等于“芯片通过了FIPS认证”。不对。FIPS认证是对整个密码模块的评估,包括硬件、固件、接口、物理安全。
| 对比项 | FIPS 140-2 | FIPS 140-3 |
|---|---|---|
| 发布年份 | 2001年 | 2020年 |
| 安全等级 | Level 1-4 | Level 1-4 |
| 算法要求 | FIPS 186-2 (RSA/DSA) | FIPS 186-4 (RSA/ECC/DSA) |
| 物理安全 | 基本要求 | 增加非入侵式攻击防护 |
| 生命周期 | 2026年9月退役 | 当前标准 |
选型建议:新项目直接选FIPS 140-3认证的芯片。140-2的认证有效期到2026年,但很多客户已经开始要求140-3了。别为了省一点成本,给自己埋雷。
我个人经验,选FIPS认证芯片时要注意三点:
- 认证级别:Level 2是常见选择,要求有防篡改封条和角色认证。Level 3要求更高,需要物理防篡改电路。
- 认证范围:有些芯片只认证了RSA算法,ECC没认证。你要确认你用的算法都在认证范围内。
- 认证有效期:FIPS认证不是永久的,通常每5年需要重新认证。选芯片时看看认证到期时间。
嗯,说到这里,我想起一个案例。有次一个客户选了某款TPM芯片,芯片手册上写着“FIPS 140-2 Level 2 certified”。结果产品送测时,测试机构发现芯片的RNG(随机数发生器)没有通过FIPS的统计测试。为什么?因为芯片厂商只认证了密码算法模块,RNG模块没在认证范围内。这就是典型的“认证范围陷阱”。
2.4 小结:选型决策树
最后,我整理了一个简单的决策逻辑,帮你快速判断该选什么芯片: