“攻击者偷走了代理的私钥”这句话漏掉了决定损害的关键细节:哪个私钥?

执行检查的代理可能在自身内存或日志中保存证书颁发机构的签名密钥、生成的服务器证书密钥、实时 TLS 流量密钥、会话恢复材料和明文。这些是不同的资产。

CA 密钥带来的是冒充能力

被配置为信任检查 CA 的客户端可以接受在该 CA 之下签发的证书,但受证书链约束和客户端检查的限制。偷到相应签名密钥的人或许能在这些限制内创建其他可被接受的证书。

这很严重,但仅凭密钥并不能改变用户的连接走向。攻击者还需要可用的拦截位置,或者另一种让客户端连接到被冒充端点的方法。带有额外证书检查的应用程序可能会拒绝它。

签名密钥不是记录解密密钥

在使用临时 Diffie–Hellman 的、由证书认证的 TLS 1.3 握手中,证书认证的是这次交换。流量密钥由单独的握手秘密派生。事后获得 CA 签名密钥,本身并不能从录音中重建那些过去的临时秘密。

就连偷走服务器证书的私钥也不等于获得那类已录制会话的流量密钥。不要把它推广到所有历史上的 TLS 模式或所有会话恢复配置;起决定作用的是协商的密钥交换和被泄露的材料。

运行中的检查设备被攻陷,范围可能远比其 CA 密钥被盗更广。设备在检查流量时处理明文,可能持有会话秘密或保留已解密的内容。这些暴露需要单独调查,不能用前向保密来搪塞。

准确描述事件

记录丢失的材料究竟是签名密钥、端点密钥、实时秘密、已存储的明文,还是对设备本身的控制权。更换检查 CA 并更新客户端信任只解决一种能力;它既不会抹掉被复制的日志,也不能判定实时流量是否被读取。准确的密钥名称会带来远比把每个秘密都叫作“SSL 密钥”更有用的应对。

相关文章