信任根的核心属性:不可伪造性、持久性、隔离性、防篡改性
好,咱们接着聊。上一章我解释了信任根是什么——说白了,就是整个安全体系的“第一块基石”。但光知道定义还不够,你得明白这块基石凭什么能撑起整个安全大厦。
我个人习惯把信任根的属性拆成四个维度来看:不可伪造性、持久性、隔离性、防篡改性。这四个属性缺一个,信任根就不叫信任根了。
核心观点:信任根的四个属性不是可选项,而是必选项。任何一个属性的缺失,都会导致整个信任链崩塌。
不可伪造性:你是谁,得由硬件说了算
不可伪造性,说白了就是——信任根的身份不能被假冒。你想想看,如果攻击者能伪造一个假的信任根,那整个系统就完蛋了。所有基于信任根建立的安全机制,都会变成笑话。
我在项目中遇到过一件事:某款物联网芯片,设计时把信任根的密钥对存在了Flash里。结果呢?攻击者通过电压故障注入,让芯片跳过了密钥校验流程,直接加载了伪造的信任根固件。嗯,那次事故之后,整个团队花了三个月重新设计信任根的存储方案。
实战建议:不可伪造性通常通过以下方式实现:
- 硬件唯一密钥:每个芯片在制造时烧录唯一的密钥对,私钥永远不离开芯片
- 物理不可克隆函数(PUF):利用芯片制造过程中的工艺偏差,生成不可复制的“芯片指纹”
- 一次性可编程存储器(OTP):密钥写入后无法修改,物理上杜绝伪造
持久性:信任根不能“断电失忆”
持久性这个属性,很多人容易忽略。我刚开始做安全设计时也觉得——持久性不就是不掉电吗?后来才发现,没那么简单。
持久性要求信任根的状态和身份信息在芯片的整个生命周期内保持不变。注意,是整个生命周期——从芯片出厂,到设备部署,再到最终退役。这期间可能经历无数次断电、重启、休眠唤醒。
| 存储介质 | 持久性 | 典型应用 |
|---|---|---|
| OTP(一次性可编程) | 极高,写入即永久 | 信任根公钥哈希、芯片唯一ID |
| eFuse(电子熔丝) | 高,不可逆编程 | 安全配置位、密钥存储 |
| Flash(闪存) | 中等,可擦写 | 信任根固件(需配合签名校验) |
| SRAM(静态随机存取) | 低,掉电丢失 | 运行时密钥缓存(需电池备份) |
避坑提醒:我曾经见过一个设计,把信任根的根证书存在了Flash里,但没有做写保护。结果设备在OTA升级时,一个bug把Flash整片擦除了。信任根没了,整批设备变砖。所以,持久性不只是“不掉电”,还要“不被误操作破坏”。
隔离性:信任根要有自己的“安全屋”
隔离性,我习惯叫它“安全屋原则”。信任根必须运行在一个与主系统隔离的环境中,不能随便被应用程序访问,更不能被操作系统干扰。
你想想看,如果信任根和普通程序跑在同一个CPU上、共享同一片内存,那攻击者随便一个缓冲区溢出就能把信任根拿下。这还谈什么安全?
常见的隔离实现方式有几种:
- 独立安全芯片:比如TPM(可信平台模块),信任根跑在单独的芯片上,物理隔离
- 安全飞地(Secure Enclave):在主SoC内划分一个独立的硬件安全区域,比如ARM的TrustZone
- 硬件安全模块(HSM):专用硬件,提供密钥管理和密码运算服务
关键点:隔离性不只是物理隔离,还包括:
- 内存隔离:信任根的代码和数据不能被外部访问
- 总线隔离:信任根与外部通信的通道受硬件保护
- 时序隔离:防止通过侧信道攻击推断信任根内部状态
防篡改性:信任根不能被“动手脚”
防篡改性和不可伪造性有点像,但侧重点不同。不可伪造性防的是“假货”,防篡改性防的是“改货”。
什么意思呢?信任根在运行过程中,它的代码、数据、状态都不能被非法修改。哪怕攻击者物理接触到了芯片,也不能通过探针、激光、电压注入等手段篡改信任根的内容。
我记得有一次帮客户做安全评估,他们的信任根固件存储在Mask ROM里——这本身是防篡改的。但问题出在信任根的启动加载器上:加载器从外部Flash读取固件时,没有做完整性校验。攻击者只需要替换外部Flash的内容,就能加载恶意固件。嗯,这就是典型的“信任根本身没被篡改,但信任链被断了”。
防篡改的常见手段:
- 物理防护层:芯片顶层覆盖金属屏蔽层,防止探针攻击
- 主动检测电路:监测电压、温度、时钟频率异常,检测到攻击立即擦除敏感数据
- 数字签名校验:信任根在加载任何外部代码前,必须验证其签名
- 写保护寄存器:关键配置位一旦设置,就不能再修改,直到下次复位
四个属性的关系:缺一不可
这四个属性不是孤立的,它们相互支撑。我画个简单的逻辑链给你看:
- 不可伪造性保证信任根的身份是真实的
- 持久性保证这个身份在整个生命周期内有效
- 隔离性保证信任根在运行时不被干扰
- 防篡改性保证信任根的内容不被破坏
任何一个属性出问题,信任根就不再可信。我在做安全架构评审时,会拿这四个属性逐条对照检查。缺一个,直接打回重做。
总结一下:
- 不可伪造性 → 身份可信
- 持久性 → 生命周期可信
- 隔离性 → 运行环境可信
- 防篡改性 → 存储内容可信
这四个属性,是衡量一个信任根是否合格的“金标准”。