Abstract

AbstractMost existing program verifiers check trace properties such as functional correctness, but do not support the verification of hyperproperties, in particular, information flow security. In principle, product programs allow one to reduce the verification of hyperproperties to trace properties and, thus, apply standard verifiers to check them; in practice, product constructions are usually defined only for simple programming languages without features like dynamic method binding or concurrency and, consequently, cannot be directly applied to verify information flow security in a full-fledged language. However, many existing verifiers encode programs from source languages into simple intermediate verification languages, which opens up the possibility of constructing a product program on the intermediate language level, reusing the existing encoding and drastically reducing the effort required to develop new verification tools for information flow security. In this paper, we explore the potential of this approach along three dimensions: (1) Soundness: We show that the combination of an encoding and a product construction that are individually sound can still be unsound, and identify a novel condition on the encoding that ensures overall soundness. (2) Concurrency: We show how sequential product programs on the intermediate language level can be used to verify information flow security of concurrent source programs. (3) Performance: We implement a product construction in Nagini, a Python verifier built upon the Viper intermediate language, and evaluate it on a number of challenging examples. We show that the resulting tool offers acceptable performance, while matching or surpassing existing tools in its combination of language feature support and expressiveness.

Highlights

  • IntroductionSince computer programs increasingly handle sensitive user data and communicate using encryption, it is vital that programs do not leak secret data such as private keys to attackers, that is, that they are information flow secure

  • (2) Concurrency: We show how sequential product programs on the intermediate language level can be used to verify information flow security of concurrent source programs

  • – We show that the combination of sound intermediate verification language (IVL) encodings and sound product constructions can be unsound in practically-relevant cases

Read more

Summary

Introduction

Since computer programs increasingly handle sensitive user data and communicate using encryption, it is vital that programs do not leak secret data such as private keys to attackers, that is, that they are information flow secure. Boogie [3], Viper [35], and Why3 [21] are examples of such IVLs, which power a large number of program verifiers; for instance Boogie is used by Dafny [29], VCC [13], Spec# [30], and GPUVerify [8], Why3 [21] by Frama-C [14] and Krakatoa [20], and Viper [35] by Vercors [10], Prusti [2], and Nagini [17] The ubiquitiy of this architecture offers a chance to retrofit existing verifiers to check noninterference by performing the product construction on the level of the IVL (an approach that is already used by SymDiff [27] for the related problem of program equivalence). (3) The product construction can be reused across all verifiers built on the same IVL Overall, this architecture has the potential to make existing verifiers information flow aware with substantially less effort than building a new tool from scratch. The product construction needs to support only the (relatively small) IVL and can be reused across different verifiers

Performance
Noninterference
Modular Product Programs
Sound Products of IVL Encodings
Proposed Architecture
Soundness Issue
Soundness Criterion
Practical Relevance
Example
Product Programs and Concurrency
Concurrent IVL Encodings
Possibilistic Noninterference
Discussion
Probabilistic Noninterference
Implementation and Evaluation
Nagini Nagini is an automated verifier for statically-typed Python 3 programs
Performance Overhead of the Product Construction
Expressiveness and Comparison with SecC
Related Work
Findings
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call