一句话:提出模块化乘积程序,将超属性验证模块化,并在 Viper 中验证信息流安全等性质。
论文关注超属性(如确定性、信息流安全)的验证。这类性质关联同一程序的多次执行,传统 relational logic 难以自动化,而 self-composition 等乘积程序构造不支持过程规格,无法模块化地由被调方性质推导调用方性质。作者提出模块化乘积程序:在过程规格中允许超属性,并给出乘积构造的一般形式化,证明其可靠且完备。该方法可表达 declassification、终止敏感等信息流安全特性,并基于 Viper 验证基础设施实现。实验表明,它能在合理时间内验证多个有挑战性的超属性示例。
Many interesting program properties like determinism or information flow security are hyperproperties, that is, they relate multiple executions of the same program. Hyperproperties can be verified using relational logics, but these logics require dedicated tool support and are difficult to automate. Alternatively, constructions such as self-composition represent multiple executions of a program by one product program, thereby reducing hyperproperties of the original program to trace properties of the product. However, existing constructions do not fully support procedure specifications, for instance, to derive the determinism of a caller from the determinism of a callee, making verification non-modular. We present modular product programs, a novel kind of product program that permits hyperproperties in procedure specifications and, thus, can reason about calls modularly. We provide a general formalization of our product construction and prove it sound and complete. We demonstrate its expressiveness by applying it to information flow security with advanced features such as declassification and termination-sensitivity. Modular product programs can be verified using off-the-shelf verifiers; we have implemented our approach for both secure information flow and general hyperproperties using the Viper verification infrastructure. Our evaluation demonstrates that modular product programs can be used to prove hyperproperties for challenging examples in reasonable time.