一句话:提出面向差分隐私的三层逻辑 Fuzzi,打通敏感度类型逻辑与 apRHL,实现自动且灵活的隐私验证。
敏感数据查询常需判断是否满足差分隐私。已有方法分两类:类型系统等静态分析能全自动处理程序敏感度与隐私损失,但灵活性有限;apRHL 等概率关系 Hoare 逻辑支持精细推理,却几乎不自动化。本文在命令式场景下提出三层逻辑并实现原型 Fuzzi:底层为通用逻辑,中层为 apRHL,顶层是受 Fuzz 类型系统启发的新敏感度逻辑。关键创新是三层高度集成:敏感度逻辑的判断与证明可译入 apRHL;底层对算法构建块的隐私证明可封装为类型规则,供检查器自动构造复合程序的隐私证明。作者实现四个私有机器学习算法,验证 Fuzzi 能自动导出紧的敏感度界。
Curators of sensitive datasets sometimes need to know whether queries against the data are differentially private . Two sorts of logics have been proposed for checking this property: (1) type systems and other static analyses, which fully automate straightforward reasoning with concepts like “program sensitivity” and “privacy loss,” and (2) full-blown program logics such as apRHL (an approximate, probabilistic, relational Hoare logic), which support more flexible reasoning about subtle privacy-preserving algorithmic techniques but offer only minimal automation. We propose a three-level logic for differential privacy in an imperative setting and present a prototype implementation called Fuzzi. Fuzzi’s lowest level is a general-purpose logic; its middle level is apRHL; and its top level is a novel sensitivity logic adapted from the linear-logic-inspired type system of Fuzz, a differentially private functional language. The key novelty is a high degree of integration between the sensitivity logic and the two lower-level logics: the judgments and proofs of the sensitivity logic can be easily translated into apRHL; conversely, privacy properties of key algorithmic building blocks can be proved manually in apRHL and the base logic, then packaged up as typing rules that can be applied by a checker for the sensitivity logic to automatically construct privacy proofs for composite programs of arbitrary size. We demonstrate Fuzzi’s utility by implementing four different private machine-learning algorithms and showing that Fuzzi’s checker is able to derive tight sensitivity bounds.
@article{paperbot585,
title = {Fuzzi: a three-level logic for differential privacy},
author = {Hengchu Zhang and Edo Roth and Andreas Haeberlen and Benjamin C. Pierce and Aaron Roth},
journal = {Proceedings of the ACM on Programming Languages},
volume = {3},
number = {ICFP},
year = {2019},
doi = {10.1145/3341697}
}