Testing Noninterference, Quickly

Abstract : 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 supports public first-class 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 a potential noninterference proof of our most complex machine.
Type de document :
[Research Report] arXiv:1409.0393, arXiv. 2014, pp.50
Liste complète des métadonnées

Contributeur : Bruno Blanchet <>
Soumis le : lundi 12 janvier 2015 - 12:07:59
Dernière modification le : vendredi 25 mai 2018 - 12:02:06

Lien texte intégral


  • HAL Id : hal-01102224, version 1
  • ARXIV : 1409.0393



Cătălin Hriţcu, Leonidas Lampropoulos, Antal Spector-Zabusky, Arthur Azevedo De Amorim, Maxime Dénès, et al.. Testing Noninterference, Quickly. [Research Report] arXiv:1409.0393, arXiv. 2014, pp.50. 〈hal-01102224〉



Consultations de la notice