论文标题

用于安全协议实现模块化验证(扩展版本)的通用方法

A Generic Methodology for the Modular Verification of Security Protocol Implementations (extended version)

论文作者

Arquint, Linard, Schwerhoff, Malte, Mehta, Vaibhav, Müller, Peter

论文摘要

安全协议是现代IT系统的重要组成部分。其设计或实施中的细微缺陷可能会损害整个系统的安全性。因此,重要的是要通过正式验证证明存在这种缺陷。现有的许多工作集中在协议 *模型 *的验证上,这不足以证明其 *实现 *实际上是安全的。协议实现的验证技术(例如,通过代码生成或模型提取)通常对使用的编程语言和代码设计施加严重限制,这可能会导致次优实现。在本文中,我们提出了一种直接在协议实现级别上对强安全属性模块化验证的方法。我们的方法论利用最新的验证逻辑和工具来支持广泛的实施和编程语言。我们通过验证Needham-Schroeder-Lowe,Diffie-Hellman密钥交换和WineGuard协议的GO实施的记忆安全和安全性,包括其有效性。我们还表明,我们的方法论对特定语言或程序验证者不可知。

Security protocols are essential building blocks of modern IT systems. Subtle flaws in their design or implementation may compromise the security of entire systems. It is, thus, important to prove the absence of such flaws through formal verification. Much existing work focuses on the verification of protocol *models*, which is not sufficient to show that their *implementations* are actually secure. Verification techniques for protocol implementations (e.g., via code generation or model extraction) typically impose severe restrictions on the used programming language and code design, which may lead to sub-optimal implementations. In this paper, we present a methodology for the modular verification of strong security properties directly on the level of the protocol implementations. Our methodology leverages state-of-the-art verification logics and tools to support a wide range of implementations and programming languages. We demonstrate its effectiveness by verifying memory safety and security of Go implementations of the Needham-Schroeder-Lowe, Diffie-Hellman key exchange, and WireGuard protocols, including forward secrecy and injective agreement for WireGuard. We also show that our methodology is agnostic to a particular language or program verifier with a prototype implementation for C.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源