Hostname: page-component-89b8bd64d-nlwjb Total loading time: 0 Render date: 2026-05-11T12:42:39.683Z Has data issue: false hasContentIssue false

Testing noninterference, quickly

Published online by Cambridge University Press:  05 April 2016

CĂTĂLIN HRIŢCU
Affiliation:
Inria Paris, Prosecco team, Paris, France (e-mail: catalin.hritcu@inria.fr)
LEONIDAS LAMPROPOULOS
Affiliation:
Department of Computer and Information Science, University of Pennsylvania, Philadelphia, USA
ANTAL SPECTOR-ZABUSKY
Affiliation:
Department of Computer and Information Science, University of Pennsylvania, Philadelphia, USA
ARTHUR AZEVEDO DE AMORIM
Affiliation:
Department of Computer and Information Science, University of Pennsylvania, Philadelphia, USA
MAXIME DÉNÈS
Affiliation:
Inria Paris, Gallium team, Paris, France
JOHN HUGHES
Affiliation:
Computer Science and Engineering, Chalmers University, Gothenburg, Sweden
BENJAMIN C. PIERCE
Affiliation:
Department of Computer and Information Science, University of Pennsylvania, Philadelphia, USA
DIMITRIOS VYTINIOTIS
Affiliation:
Programming Principles and Tools group, Microsoft Research, Cambridge, UK
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the 'Save PDF' action button.

Information-flow control mechanisms are difficult both to design and to prove correct. To reduce the time wasted on doomed proof attempts due to broken definitions, we advocate modern random-testing techniques for finding counterexamples during the design process. We show how to use QuickCheck, a property-based random-testing tool, to guide the design of increasingly complex information-flow abstract machines, leading up to a sophisticated register machine with a novel and highly permissive flow-sensitive dynamic enforcement mechanism that is sound in the presence of first-class public labels. We find that both sophisticated strategies for generating well-distributed random programs and readily falsifiable formulations of noninterference properties are critically important for efficient testing. We propose several approaches and evaluate their effectiveness on a collection of injected bugs of varying subtlety. We also present an effective technique for shrinking large counterexamples to minimal, easily comprehensible ones. Taken together, our best methods enable us to quickly and automatically generate simple counterexamples for more than 45 bugs. Moreover, we show how testing guides the discovery of the sophisticated invariants needed for the noninterference proof of our most complex machine.

Information

Type
Articles
Copyright
Copyright © Cambridge University Press 2016 
Submit a response

Discussions

No Discussions have been published for this article.