文章摘要
文章探讨了Linux内核中的TCGTPM2HMAC功能,该功能通过HMAC和加密通信来防止TPM总线上的窃听和中间人攻击,主要涉及驱动程序和加密方案实现。
文章总结
装饰性密码学:关于TCGTPM2HMAC安全特性的反思
核心问题
Linux内核的TCGTPM2HMAC特性声称能防范TPM总线上的主动/被动中间人攻击,但实际存在严重设计缺陷。该特性通过ECDH密钥封装建立会话密钥,使用"空主密钥"保护TPM命令,却无法验证该密钥的真实性。
威胁模型分析
攻击者可通过硬件入侵或BMC控制等方式访问TPM总线,实施: - 被动攻击:窃取未加密的敏感数据(如磁盘加密密钥) - 主动攻击: 1. 篡改内核发送给TPM的度量值 2. 伪造TPM连接突破加密会话
设计缺陷
- 信任链倒置:内核将空主密钥的验证责任推给用户空间,而用户空间本身需要被内核度量
- 无效防护:攻击者只需:
- 替换验证空主密钥的用户空间组件
- 伪造TPM响应
- 篡改PCR扩展命令
- 性能代价:每次PCR扩展都需非对称加密操作,带来显著开销
经验教训
- 密码学本质:密码学只能将安全问题转化为密钥管理问题,若密钥管理未解决,密码学仅是"装饰性"的
- 信任链方向:不可逆的信任传递关系
- 安全特性透明度:无法清晰解释的安全机制等同于营销话术
解决方案建议
需要真正的硬件信任根(如Caliptra项目),在SoC内部实现TCG DICE架构,而非依赖外置TPM。
(注:该特性已在2025年8月的Linux 6.18版本中恢复默认禁用状态)
评论总结
评论总结:
- 对文章标题的误解
- 有评论者期待看到类似《指环王》摩瑞亚之门式的加密密钥隐藏方式 "I expected something about cryptography keys hidden in a decoration somewhere (kinda like LoTR Gate of Moria style)" "article was not quite what I expected. Although it is in a sense"
- 对"威胁模型操纵"术语的赞赏
- 有用户高度评价这个新术语并表示会经常使用 "The phrase 'threat model gerrymandering' is fantastic" "I will be using that a lot I think"
- 关于端到端加密的讨论
- 引用苹果iMessage的例子质疑真正的端到端加密 "Apple iMessage is E2E encrypted, but Apple runs on-device content detection" "you can't possibly even think of disabling"
- 有用户欣赏关于加密终点的幽默说法 "All encryption is end-to-end, if you're not picky about the ends" "This is a great quote"
- CPU安全功能的讨论
- 对IBM POWER9 2017年就有的密钥印记功能未被广泛采用表示惊讶 "IBM POWER9 had key imprints in 2017 and it's still nowhere to be found" "does anyone know why Intel/ARM/AMD have not picked up this IBM feature?"
- 强调TPM应内置于CPU的必要性 "stop using discrete TPMs over the bus, they are impossible to secure" "we need the TPM embedded in the CPU itself"
- 对软件加密的质疑
- 认为除一次性密码本外,所有软件加密都像"装饰" "all software encryption short of a one-time pad are decorative"