Information-Flow Types for Homomorphic Encryptions
We develop a flexible information-flow type system for a range of encryption primitives, precisely reflecting their diverse functional and security features. We obtain a uniform framework for understanding their properties and for automatically checking their usage in cryptographic protocols and programs. Our rules enable encryption, blinding, homomorphic computation, and decryption, with selective key re-use for different types of payloads. We show that, under standard cryptographic assumptions, any well-typed probabilistic program using encryptions is secure (that is, computationally non-interferent) against active adversaries, both for confidentiality and integrity. We illustrate our approach using ElGamal and Paillier encryption. We present two applications of cryptographic verification by typing: (1) private search on data streams; and (2) the bootstrapping part of Gentry's fully homomorphic encryption.