一台主机接入你的网络,跑着你熟悉的软件,响应也正常。但没人能证明它这几个月里没被人动过手脚。多数基础设施的默认逻辑是:主机provision的那一刻信一次,之后就一直信下去,不管中间发生了什么。这不是疏忽,是行业惰性——重新验证一台"看起来没问题"的主机,成本比继续信它高得多。
远程认证(remote attestation)要打破的就是这个惰性。思路很直接:每次重启,用TPM把硬件、固件、内核、根文件系统的状态测量成一串哈希,签好名发出去,验证方拿这份"体检报告"决定要不要继续信这台主机。听起来像给每次开机发一张体检合格证,但这张证真正管用的范围,比大多数人以为的要窄。
开机那一刻,靠什么证明没被动过
measured boot和secure boot是两套不同逻辑。secure boot靠签名验证挡未授权代码,过不了就不让启动。measured boot不挡,它只是如实把启动链每一步的哈希记进TPM的PCR寄存器——这些寄存器只能"往前叠"(新值=哈希(旧值+新测量)),没法回滚,天然是一本防篡改的日志。
真正的信任链条靠三把钥匙串起来:EK(硬件出厂时烧录的解密密钥,证明这块TPM是真芯片)、AK(由EK派生、只能给测量结果签名的受限密钥)、LDevID(代表这台主机身份、可以签任何东西的密钥,通常被锁死在"干净的PCR值"上)。三者一环套一环,任何一环断了,主机就拿不到合法证书。
把root-fs解密密钥或TLS证书直接绑在TPM上,这套认证才有牙齿:测量不通过,主机就是一块砖,没有含糊空间。
少了一个nonce,体检报告能被"复用"
原文没细说的一个坑:验证方发给主机的挑战必须带一个随机数(nonce),主机把这个nonce连同测量值一起签名回传。少了这一步,攻击者可以截获一份曾经合法的quote,在别的场合原样重放,冒充"刚干净启动"。nonce的作用就是让每次quote只在这一次对话里有效,过期即废。
更关键的一点是,PCR匹配只证明主机处于"已知的被测量状态",不等于这个状态本身没有漏洞。measured boot不挡恶意组件启动,它只是如实记下来。如果你放行的固件本身有后门,认证照样通过——它只对"是不是我预期的那一份"负责,不对"我预期的那一份是不是安全"负责。
认证证明的是"这就是原来那个我",不是"原来那个我没问题"。
云厂商给出了三种不同答案
自建TPM+RA只是这条路的一种走法。云上的机密计算给出了三种不同的信任锚点:Intel SGX把度量做到enclave级别,粒度最细但依赖芯片厂商证书链;AMD SEV-SNP把整台VM作为度量单位,粒度粗一些但覆盖面更完整;AWS Nitro Enclaves的认证锚点不是芯片厂商,而是AWS自建的attestation服务和PKI——信的不是硬件本身,是亚马逊说这块硬件没问题。
三条路的可信计算基(TCB)大小本质不同——粒度越细,暴露面越小,但也意味着信任链条更依赖单一厂商的证书体系。选哪一条,本质是在选"到底信谁"。
认证锁死的是开机那一刻,不是全程
行业里对attestation有个直白的批评:它常被过度宣传。PCR匹配、quote验证通过,只能证明平台身份和初始状态没问题,证明不了代码没有漏洞、没有侧信道泄露、运行时行为没被劫持。哪怕是SGX、Nitro、SEV-SNP这类工业级方案,缓存计时、内存访问模式这类侧信道问题也只是被削弱,没有被解决。
- 风险.真实的TCB往往比宣传的更大,固件、微码、attestation服务、证书链、镜像构建工具全都算在信任范围里,但很少有人把这条链完整摆出来给你审。
这也是为什么"度量值→源码→构建流程→预期策略"这条链路能不能复现,比认证机制本身更决定实际保证力度。构建过程不可复现,认证再严密也只是在验证一份说不清来源的哈希。全机队铺开TPM认证是一项重做固件、内核、镜像分发链路的系统工程——代价不小,但顺带会把这些藏在供应链里的旧账翻出来,这大概是它最被低估的副作用。
远程认证把"主机层"的信任问题解决得很干净,却把它原样挪到了"厂商PKI层"和"构建可复现层"。房子的地基确实打好了,但往上盖到几层,还得看EDR、LSM、可复现构建这些活儿跟不跟得上。地基结实,不代表楼已经封顶。
