使用 hax 进行密码协议验证

主要观点:介绍使用hax 工具链在 Rust 中验证加密协议实现安全性的示例,包括实现正确性验证和安全验证,还介绍了一种新的协议分析方式,通过 hax 从 Rust 实现中提取安全分析模型,并用 hax 和 PV 验证 TLS 1.3,同时指出当前存在的一些问题及未来的改进方向。
关键信息:

  • hax 适用于实现正确性验证,如验证 ML-KEM (Kyber)的实现,还可进行安全验证,如对 Signal 的 PQXDH 协议分析。
  • ProVerif 是协议验证工具,用 Applied Pi-Calculus 语言指定协议模型,能分析多种攻击者,Rust 代码可通过cargo hax into proverif转换为 ProVerif 模型。
  • 用 hax 从 Cryspen 的最小 TLS 1.3 实现 Bertie 中提取并验证模型,可证明服务器认证和会话密钥保密性。
    重要细节:
  • Rust 中定义消息结构和函数,如PingPong结构体及相关函数。
  • hax 将 Rust 代码转换为 ProVerif 模型的过程,包括数据结构和函数的转换。
  • 手动定义协议参与者的顶级进程,如InitiatorResponder进程。
  • 验证 TLS 1.3 时抽象掉握手数据结构的编码和解码及记录加密。
  • 当前存在的问题及改进方向,如提供更多核心类型模型、自动提取顶级进程和安全查询、提高提取模型的可读性等。
阅读 17
0 条评论