Privacy-sensitive information flow with JML

  • Authors:
  • Guillaume Dufay;Amy Felty;Stan Matwin

  • Affiliations:
  • SITE, University of Ottawa., Ottawa, Ontario, Canada;SITE, University of Ottawa., Ottawa, Ontario, Canada;SITE, University of Ottawa., Ottawa, Ontario, Canada

  • Venue:
  • CADE' 20 Proceedings of the 20th international conference on Automated Deduction
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

In today's society, people have very little control over what kinds of personal data are collected and stored by various agencies in both the private and public sectors. We describe an approach to addressing this problem that allows individuals to specify constraints on the way their own data is used. Our solution uses formal methods to allow developers of software that processes personal data to provide assurances that the software meets the specified privacy constraints. In the domain of privacy, it is often not sufficient to express properties of interest as a relation between the input and output of a program as is done for general program correctness. Here we consider a stronger class of properties that allows us to express constraints on information flow. In particular, we can express that an algorithm does not leak any information from particular “sensitive” values. We describe a general methodology for expressing this kind of information flow property as Hoare-style program verification judgments. We begin with the Java Modelling Language (JML), which is a behavioral interface specification language designed for Java, and we extend the language to include new concepts and keywords for expressing such properties. We use the Krakatoa tool which starts from JML-annotated Java programs, generates proof obligations in the Coq Proof Assistant, and helps to automate their proofs. We extend the Krakatoa tool to understand our extensions to JML and to generate the new form of required proof obligations. We illustrate our method on several data mining algorithms implemented in Java.