证明TLS握手安全性的全面解析
1. 代码验证实现
在TLS的记录层,对于协商 r 的客户端和服务器,我们验证了有状态的LHAE的使用。不过,要求在验证Finished消息之前不发送任何应用数据。对于违反这一要求的实现,更强的灵活假设似乎不可避免。
我们将握手的参考实现集成到了miTLS中,并根据安全定义对其进行验证。该验证基于相同的模块化证明结构,但细节更丰富,依靠基于类型的验证来实现可扩展性。代码支持标准且常用的扩展,我们使用从SSL3到TLS 1.2的4个版本、12种密码套件以及各种扩展子集,对其在各种主流TLS客户端和服务器上进行了测试。与原始的miTLS代码相比,它改进了功能,原始代码支持的功能较少,其安全性依赖于针对RSA和DH密码套件的整体、特定于TLS的假设。
为了实现自动化验证,代码被构建为小的、独立的模块(即程序库),由算法描述符进行参数化。例如,TLS中基于HMAC的PRF库代码在调用选定的核心算法(如SHA1)之前实现了灵活性。而实现SHA1的代码不在验证范围内,我们记录了对其的灵活加密假设,并调用标准库。握手过程中使用的每个加密构造在代码中都对应一个单独的库。我们定义了多密钥和多算法库的安全性,相关定义和向单个算法单密钥安全性的简化在完整论文中给出。
2. 灵活签名
灵活签名方案由三个算法组成:KeyGen是标准的密钥生成算法,而Sign和Verify则带有一个额外的灵活性参数。例如,给定一个核心签名方案 s = (keygen, sign, verify),TLS的先哈希后签名方案 Ss = (KeyGen, Sign, Verify) 定义如下:
- KeyGen △= keygen 为算法 s
超级会员免费看
订阅专栏 解锁全文
4057

被折叠的 条评论
为什么被折叠?



