
开篇故事去年帮一家金融科技公司做安全审计,遇到了一个典型的“认证了但没完全认证”的案例。他们的TEE应用在远程认证阶段表现完美——EPID签名验证通过,飞地哈希值匹配,一切看起来无懈可击。但当我抓包分析通信数据时,发现了一个致命问题:认证完成后,客户端和飞地之间传输的敏感数据竟然是用同一个静态密钥加密的。“我们不是已经认证过了吗?”开发负责人一脸困惑。我指着抓包里的IV(初始化向量)说:“你们认证过了飞地,但没认证过这条通信链路。攻击者只要在认证完成后监听网络,拿到这个静态密钥,就能解密所有历史流量。”更糟的是,这个静态密钥硬编码在客户端代码里,通过逆向工程就能提取。那天下午,我们花了6小时重构了整个密钥协商流程。今天这篇文章,就是那次重构的精华。痛点拆解常见错误实现很多开发者以为远程认证成功后,就可以直接用认证阶段传输的公钥加密数据。看看这个典型的反例:# 反例:错误的密钥协商实现importhashlibfromcryptography.