Skip to main content
QUICK REVIEW

[论文解读] A Monadic Framework for Relational Verification (Functional Pearl).

Niklas Grimm, Kenji Maillard|arXiv (Cornell University)|Feb 28, 2017
Security and Verification in Computing被引用 1
一句话总结

本文提出了一种在 F* 中的单子框架,通过将计算建模为单子,并利用 SMT 自动化、用户自定义效应和单子重语义化,实现了对带有副作用程序的关联性质的形式化验证。结果表明,验证关联性质——如信息流控制、程序等价性和密码学安全——与单重验证相比,所需额外工作量极小。

ABSTRACT

Relational properties describe multiple runs of one or more programs. They characterize many useful notions of security, program refinement, and equivalence for programs with diverse computational effects, and they have received much attention in the recent literature. Rather than developing separate tools for special classes of effects and relational properties, we advocate using a general purpose proof assistant as a unifying framework for the relational verification of effectful programs. The essence of our approach is to model effectful computations using monads and to prove relational properties on their monadic representations, making the most of existing support for reasoning about pure programs. We apply this method in F* and evaluate it by encoding a variety of relational program analyses, including information flow control, program equivalence and refinement at higher order, correctness of program optimizations and game-based cryptographic security. By relying on SMT-based automation, unary weakest preconditions, user-defined effects, and monadic reification, we show that, compared to unary properties, verifying relational properties requires little additional effort from the F* programmer.

研究动机与目标

  • 统一带有计算效应的程序中各类关联性质的验证。
  • 减少为每类关联性质和效应专门构建工具的工程负担。
  • 利用证明助手中已有的纯程序推理支持,验证带有副作用的关联程序。
  • 在一系列实际分析(包括信息流、程序等价性和密码学安全)上评估该框架。
  • 证明:当使用单子抽象和 SMT 自动化时,关联验证的开销可与单重验证相媲美。

提出的方法

  • 使用单子对带有副作用的计算进行建模,以结构化方式封装计算效应。
  • 将关联性质表示为成对计算上的单子谓词。
  • 利用基于 SMT 的自动化机制,处理关联推理所产生的证明义务。
  • 利用 F* 中的用户自定义效应,精确捕捉并推理特定的计算行为。
  • 应用单子重语义化,将关联规格直接嵌入类型系统,以提升工具支持。
  • 将关联分析(如程序等价性、规约、安全性)编码为 F* 中的单子证明。

实验结果

研究问题

  • RQ1通用型证明助手(如 F*)能否被有效用于验证带有副作用程序中的广泛关联性质?
  • RQ2通过单子建模效应在多大程度上降低了验证关联性质的复杂度?
  • RQ3SMT 自动化与用户自定义效应的集成在多大程度上提升了关联验证的实用性?
  • RQ4能否通过单子抽象使关联验证的开销与单重验证相当?
  • RQ5该框架在信息流、程序等价性和密码学安全等多样化分析中的可扩展性如何?

主要发现

  • 得益于 SMT 自动化和单子抽象,该单子框架使得关联性质的验证工作量与单重验证相当。
  • F* 中的用户自定义效应使得计算行为的建模更加精确,提升了关联证明中的模块化与表达能力。
  • 单子重语义化支持将关联规格直接嵌入类型系统,增强了工具支持与验证能力。
  • 该框架成功编码了复杂分析,包括高阶程序等价性与基于游戏的密码学安全性。
  • 使用该方法进行关联验证,与验证纯的单重性质相比,程序员所需额外工作量极小。
  • 该方法在多样化领域中具有良好的可扩展性,包括信息流控制与程序优化正确性。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。