Page 233 - 《软件学报》2021年第9期
P. 233
陆思奇 等:强安全模型下 TLS1.3 协议的形式化分析与优化 2857
(1) 客户端 C 与服务器 S 正常通信,C 使用自己的私钥和 S 中的长期公钥计算出密钥 eadk,用 eadk 加密在
第 1 条消息中发送的 Early Data.此外,C 还需要向 S 发送自己的公钥;
(2) 攻击者 A 截获 C 向 S 发送的 C 的公钥以及加密后的 Early Data 密文;
(3) A 使用 C 的公钥和通过腐化参与者获取的 S 的长期私钥计算出密钥 eadk;
(4) A 使用 eadk 解密 Early Data,获得明文.
图 7 中的攻击路径描述的是 1-RTT semi-static 模式下 KCI 攻击的流程.攻击者在扮演客户端的角色 Bob(C)
向扮演服务器的角色 Alice(S)发送消息 M7(即 Bob 的公钥)时将其截获,再通过 CK 模型腐化 Alice 获得 Alice
的长期私钥,从而计算出密钥 eadk.此时,攻击者可以自己伪造一个新的 Early Data,用 eadk 加密发送给 Alice,则
Alice 会将这条伪造的消息当作是 Bob 发送的 Early Data,并继续进行之后正常的协议流程.这样,攻击者就能够
成功冒充 Bob 向 Alice 发送消息.
具体攻击描述如下.
(1) 客户端 C 与服务器 S 正常通信,C 使用自己的私钥和 S 中的长期公钥计算出密钥 eadk,用 eadk 加密在
第 1 条消息中发送的 Early Data.此外,C 还需要向 S 发送自己的公钥;
(2) 攻击者 A 截获 C 向 S 发送的 C 的公钥;
(3) A 使用 C 的公钥和通过通过腐化参与者获取的 S 的长期私钥计算出密钥 eadk;
(4) A 可以任意伪造 Early Data,使用 eadk 加密发送给 S,S 则会认为这条消息来自于 C.
综上所述,根据 Scyther 分析的结果,1-RTT semi-static 模式下的 0-RTT 数据存在如下漏洞.
(1) 0-RTT 数据没有 PFS 安全;
(2) 无法抵抗 KCI 攻击,即:如果服务器的长期私钥被攻击者窃取了,则攻击者可以伪装成任意客户端向
服务器发送任意伪造的 Early Data.当然,攻击者拥有服务器的长期私钥,模拟服务器与客户端通信也
是平凡的;
(3) 0-RTT 中的数据能够被跨连接重放.
2.3.2 PSK 模式
如表 2 所示,在 PSK 模式中,所有的密钥都由一个预共享密钥 psk 导出.因此,在用 SPDL 语言描述时,将 psk
定义为 const 常量,表示敌手有获取它的能力.点击“Verify automatic claims”进行自动验证,得到如图 8 所示结果.
Fig.8 Attack paths of PSK mode
图 8 PSK 模式的攻击路径