引言#
这是一本面向程序员的差分隐私书籍。本书旨在向您介绍数据隐私保护领域所面临的挑战,描述为解决这些挑战而提出的技术,并帮助您理解如何实现其中一部分技术。
本书包含了很多示例,也包含了很多概念的具体实现,这些示例和实现都是用可以实际运行的程序撰写的。每一章都由一个独立的Jupyter笔记本(Jupyter Notebook)文件生成。您可以单击相应章节右上角的“下载”图标并选择“.ipynb”,从而下载此章的Jupyter笔记本文件,并亲手执行这些示例。章节中的很多示例都是用代码生成的。为了便于阅读,我们将这些代码隐藏了起来。您可以通过单击示例单元格下方的”点击显示”(Click to show)按钮显示隐藏在背后的代码。
本书假定您可以使用Python语言编写和运行程序,并掌握Pandas和NumPy的一些基本概念。如果您具有离散数学和概率论的相关背景知识,那您会更加轻松地理解本书的内容。不必担心,本科课程上的离散数学和概率论知识对学习本书来说已经绰绰有余了。
本书的源代码已开源,可以从这里在线获取本书的最新(英文)版本。您可以在GitHub上获取本书(英文版)的源代码。如果您找到一处笔误、提出一处改进建议或报告一个程序错误,请在GitHub上提交问题。
本书描述的技术是从数据隐私(Data Privacy)领域的研究中发展得来的。以本书的撰写目的出发,我们将按照下述方式定义数据隐私:
定义
数据隐私技术的目标是,允许数据分析方获取隐私数据中蕴含的趋势,但不会泄露特定个体的信息。
这是一个宽泛的数据隐私定义,很多不同的技术都是围绕这个定义而提出的。但要特别注意的是,这一定义不包括保证安全性的技术,如加密技术。加密数据不会泄露任何信息,因此加密技术不能满足我们定义的前半部分要求。我们需要特别注意安全与隐私之间的差异:隐私技术涉及到故意发布信息,并试图控制从发布信息中学到什么。安全技术通常会阻止信息的泄露,并控制数据可以被谁访问。本书主要涵盖的是隐私技术。只有当安全对隐私有重要影响时,我们才会讨论相应的安全技术。
本书主要聚焦于差分隐私(Differential Privacy)。我们将在前几章概述本书聚焦差分隐私的部分原因:差分隐私(及其变体)是我们已知的唯一能从数学角度提供可证明隐私保护能力的方法。去标识化、聚合等技术是人们这十几年来常用的隐私技术。这些技术近期已被证明无法抵御复杂的隐私攻击。如\(k\)-匿名性等更先进的一些隐私技术也无法抵御特定的攻击。因此,差分隐私正迅速成为隐私保护的黄金标准,也是本书重点介绍的隐私技术。