Telegram Channel
Laisky's Notes
TPM 是一个硬件加密芯片,这个只有几厘米大小的小芯片内内置了 24 个寄存器,称为 PCRs(Platform Configuration Registers),每个寄存器都可以保存一个 SHA256/384 的哈希值。这些 PCRs 寄存器保存的值在断电后会被清空,但是在工作状态时,仅允许被写入一次,一旦写入就变成只读。 这一系列的 PCRs 被用来记录系统启动时不同阶段的度量值。机器启动的每一个重要阶段,都会度量(measure)当前的状态(你可以把度量理解为对系统当前状态计算一个 hash value),传给…
前文介绍了 TPM 的 PCRs 会度量和记录系统的状态链。

然后介绍一点点密码学基础,密码学上有一个函数叫做 KDF(Key derivation function)。一般在一个比较完善的密码管理系统里,比如 KMS(Key Management Service)只会持有一个或少量的 Root Key,或者叫 Master Key。然后在运行时,根据收到的请求,进行实时的密钥派生,派生的方法就是 new key = KDF(master key, new key info)。或者你就简单地记住:用一个根密钥,加上一段任意信息,就可以派生(derive)出一个新的密钥。而且派生过程是确定性的,相同的 master key 和 key info 永远能派生出相同的新密钥。

再补充一点 TPM 的知识,像 TPM 这样的加密芯片(Secure Processor),类似的还有 Apple T2、Intel PTT、AMD fTPM 等,其核心都是一个 tamper-proof 的 NVRam(Non-Volatile Memory)。用普通人都能理解的话来说就是,其内部有一个外面的人绝对不可能窥探的存储器,可以保存一个绝对不会外泄的设备根密钥。这个根密钥没有任何人知道,连制造商都不知道,只有这个加密芯片它自己才知道。

好了,现在我们把 TPM 的设备根密钥当作 master key,把 TPM PCRs 当作 key info,再调用一个 KDF 函数,就可以派生出一个密钥来。如果拿这个密钥来加密你的磁盘,那么就可以保证只有这块 TPM 在一个未篡改的操作系统(OS)上才能解密你的磁盘啦。

Ps. 实际上的密钥体系远比这复杂,但基础原理就是这样的。
Ps2. 我有维护一个术语表,你可以查询提到的术语的含义 https://wiki.laisky.com/terms/

next: https://t.me/laiskynotes/73
 
 
Telegram Channel