原文地址:10 Privacy-enhancing Technologies Every Engineer Should Know About
原文作者:Sean Falconer
翻译 & 整理:开放隐私计算 & PrimiHub
作为工程师我们需要保护敏感数据防止其被滥用,并遵守各种数据保护法律,同时这些数据仍要支持机器学习、分析或数据共享等数据驱动的工作流。幸运的是隐私计算领域的最新进展可以帮助我们不仅保护数据隐私,还可以高效利用。
本文将讨论 10 种不同的隐私增强技术(Privacy-enhancing Technologies,PETs),所有工程师都应该了解这些 PETs,他们正在向实用和商业化可用飞速发展。
一、什么是隐私增强技术?
隐私增强技术包括任何增加敏感数据隐私和安全性的技术,这些关键信息包括客户姓名、电话号码、电子邮件地址等。无论是要确保符合数据隐私保护法的相关法律法规,还是要加固系统以防止下一次数据泄漏,这些技术都是全栈开发人员工具包中不可或缺的一部分。
尽管形式各异,隐私增强技术往往强调一些共同的主题:
-
去标识化
-
混淆(标记化、加密、伪匿名化)
-
隔离或集中敏感数据
-
零信任/分布式信任(包括多方计算)
二、为什么隐私增强技术重要?
隐私增强技术之所以重要,是因为个人有权保护其敏感个人数据的隐私。近年来不断增加的数据泄漏事件引发用户隐私意识增强,用户希望使用的应用程序和网站保护这些数据。监管机构已经采取措施制定了新的数据隐私法规,如国内的《数据安全法》、《个人隐私保护法》等。国外的 CCPA(加利福尼亚州)、CPA(科罗拉多州)、GDPR(欧盟)和DCIA(加拿大)等等。
三、隐私增强技术的示例
3.1 安全多方计算
安全多方计算(Secure Multiparty Compute,MPC)是一种将计算分布在多个参与方之间的密码学分支,没有个别参与方可以看到其他参与方的数据。核心思想是为不同的参与方提供一种在不向其他参与方泄露其私有数据的情况下计算数据并得出共同期望结果的方法。
经典的用例是平均薪资问题:如何让一组工人在不向其他人透露自己的工资的情况下计算其平均工资?
MPC 可以通过以下一系列操作来解决这个问题:
按任意顺序对工人进行编号
- 第一个工人选择一个非常大的随机数,将其工资加到该数值上,然后将结果转发给第二个工人(见下图)
- 第二个工人将其工资添加到共享值上,然后将该结果转发给第三个工人,依此类推,直到所有工人都贡献了他们的工资
- 最后一个工人添加他们的工资并将最终结果发送给第一个工人
- 由于第一个工人选择了随机数,现在他们可以从总数中减去该数,从而得到所有工资的总和。然后,他们可以通过将这个结果除以工人的总数来计算平均值。
MPC 示例说明:工人A 选择一个随机数 W,将其添加到其工资中,然后将总和传递给 工人B,工人B 将其工资添加到该总和中,然后将其传递给 工人C,依此类推。工人A 得到最终总和,并可以计算平均工资。
MPC 于 20 世纪 70 年代初首次引入,然后在 20 世纪 80 年代末首次形式化,但直到最近才从学术研究变为解决商业产品的实际问题。MPC 现在被用于广泛的应用,包括欺诈检测、心脏疾病分析和跨私人数据集的特征聚合。
这是一种极其强大的隐私方法,但也有一些局限性。使用 MPC 会为现有系统增加计算开销,并在不同参与方之间增加高通信成本。这使得在许多问题上使用 MPC 变得不切实际。
3.2 去标识化技术
去标识化是从数据集中删除个人信息的过程。有多种去标识化方法,例如标记化和 k-匿名化。
标记化
标记化是一种非算法方法的数据混淆,它将敏感数据替换为标记。例如,客户的姓名“约翰·史密斯”可以替换为标记化的字符串 “7afd3186-369f-4898-ac93-3a4e732ebf7c”。由于“约翰·史密斯”和字符串 “7afd3186-369f-4898-ac93-3a4e732ebf7c” 之间没有数学关系,没有办法从标记化的数据中获取原始数据,除非有权访问标记化过程。
姓名和电子邮件地址的简单标记化系统
有各种各样的标记化技术和样式,包括保持长度的标记化、保持格式的标记化以及随机与一致的标记化。不同的方法有不同的权衡,可以支持不同的用例。
k-匿名化
k-匿名化 最早是由研究人员 Latanya Sweeney 和 Pierangela Samarati 于 20 世纪 90 年代末提出的。数据集具有 k-匿名性 属性,如果数据集中的每个人的信息不能与至少 k-1 个个体区分开。
这是一种“人多力量大”的方法。实质上,如果每个人都属于一个组,那么组内的任何记录都可能对应于单个个体。k-匿名化 的缺点是没有随机化,因此攻击者仍然可以推断出有关数据的信息。此外,如果攻击者了解某个人的某些信息,他们可以使用这些群体来了解该人的其他信息。例如,如果数据集中的所有年龄在 60 岁以上的女性都患有乳腺癌,而攻击者知道朱莉年龄在 60 岁以上且在数据集中,那么攻击者现在知道朱莉患有乳腺癌。
像这个列表中的许多 PET 一样,如果将 k-匿名化 与其他技术相结合,并在适当的位置加入适当的保护措施,那么 k-匿名化 将是一个强大的工具。
3.3 伪匿名化
伪匿名化是一种通过用伪名替换字段值来隐藏个人的身份的混淆形式。通过伪匿名化,仅删除了识别数据的一部分,足以使数据值无法与其引用的个人或事物(数据主体)关联起来。
伪匿名化有多种方法,包括混淆,其中原始值与混淆的字母混合在一起,以及数据屏蔽,其中原始数据的某部分被隐藏。
在使用伪匿名化时,总会存在再识别的风险。不同的方法带来不同的风险,并且某些方法不符合某些法规。虽然伪匿名化具有许多用途,但仅仅依靠这一方法不足以成为完整的数据隐私解决方案。
3.4 同态加密
基本的加密形式早在公元前 1900 年就已经存在,现代技术如 RSA、AES 和 DES 广泛用于安全数据传输和存储。然而,所有这些技术的缺点在于,为了对数据进行操作,我们需要首先对其进行解密。这会打开一个潜在的攻击面,因为解密数据会缓存在内存中,或者由于小的编码错误可能导致敏感的未加密数据出现在日志文件或其他地方。这增加了安全和合规性问题的范围。
同态加密被广泛认为是加密的“黄金标准”。它是一种加密形式,允许对加密数据执行计算,而无需先解密数据。从表面上看,这听起来很神奇。完整的数据效用,同时最大限度地提高安全性。
然而,在实际中,完全同态加密面临性能挑战,无法提供合理的性能,而且它需要过多的计算资源才能供企业使用。
同态加密面临性能挑战,因为它非常复杂,需要支持对加密数据的几乎任何操作。从理论上讲,这是一种理想的能力,但对于大多数软件工程师来说,他们不需要对数据执行任何任意操作。他们通常只需要执行一些非常特定的操作。
特别是在涉及敏感客户数据时,这一点特别正确。没有必要对两个电话号码进行乘法或除法,甚至没有必要取一个任意的子字符串。电话号码、出生日期、社会安全号码以及许多其他形式的敏感客户数据都具有非常特定的格式和组件。
于是,多态加密登场。与同态加密类似,多态加密支持对加密数据执行操作,但专门设计用于支持工程师在敏感数据上通常需要执行的类型和操作。例如,索引和解密社会安全号码的最后四位数字,或者确定客户的信用分数是否高于或低于给定的阈值,而实际上不看客户的信用分数。多态加密是一种非常强大的PET,今天已经可以供企业使用。
3.5 联邦学习
联邦学习是一种分散的机器学习形式。在机器学习中,通常会从多个来源(手机、笔记本电脑、物联网设备等)聚合训练数据,并将其传送到中央服务器进行训练。然而,从隐私的角度来看,这显然存在问题。
联邦学习模型中,训练在本地进行,结果报告给中央服务器,而不是原始输入。例如,中央机器学习应用程序可以直接在所有设备上使用。本地模型基于用户的输入和设备使用情况进行学习和训练。然后,设备仅将来自本地副本的训练结果传输回到中央服务器。
所有分散设备的结果被汇总在一起,但不会看到任何用户数据。然后,用户的设备可以使用新训练的中央模型进行更新。我们可以通过 Google 的 Federated Learning for Image Classification codelab 自行尝试此操作。尽管联邦学习具有一些限制,但它需要设备和中央服务器之间的频繁通信,因此需要大量的网络带宽。此外,本地训练需要足够的本地计算能力和内存,以便在设备上实际进行模型训练。然而,Google 和 Amazon 等公司都在大力投资这种 PET,已经取得了多个降低计算成本和提高通信效率的突破。
3.6 零知识证明
零知识证明是一种让一方向另一方证明给定的陈述是真实的,而不透露除该陈述为真以外的任何信息的方法。
零知识证明的一个经典示例是阿里巴巴洞穴,有两个角色,佩吉(证明者)和维克多(验证者)。佩吉和维克多都在洞穴的入口,洞穴有两个不同的入口通往两条不同的路径(A和B)。洞穴内有一扇连接两条路径的门,但只能用秘密代码打开。佩吉拥有该代码,维克多想要拥有它,但维克多首先想确保佩吉没有骗人。
佩吉如何向维克多展示她拥有秘密代码(钥匙)且不透露它?
为此,佩吉可以通过任一门(A或B)进入洞穴。一旦在洞穴内,维克多会走近洞穴,并大声对佩吉喊,要求她沿着两个路径之一返回,选择是随机的。如果维克多喊佩吉返回 A 路径,但佩吉实际上在 B 路径上,那么只有在她确实拥有秘密代码(钥匙)的情况下,她才能通过 A 路径返回。当然,如果佩吉撒谎并且已经在 A 路径上了,她可能会幸运,但只要这个过程重复足够多次,只有当她拥有秘密代码(钥匙)时,她才能始终准确地返回。这是零知识证明的基本概念,即证明者可以在不透露陈述外的任何信息的情况下证明给定陈述的真实性。
关于零知识证明的挑战在于其答案并非百分之百保证,而且计算密集。为了将误差表现降低到可接受的水平,证明者和验证者之间需要多次交互。这使得这种方法对于缓慢或低功率设备来说并不实用。
3.7 差分隐私
差分隐私是一种正在得到越来越多商业兴趣的隐私增强技术。差分隐私的思想是,通过在数据集中引入少量噪音,查询结果无法推断出关于单个个体的太多信息。差分隐私并不是像去识别化那样的特定过程,而是算法或过程可以具备的属性。
通过向原始数据添加噪音,差分隐私在数据上添加了一层隐私保护。因此,使用得出的数据进行建模或分析会降低准确性。巧妙地使用差分隐私的关键是要在保护个体隐私的同时,平衡获取准确结果的需求。
3.8 合成数据
合成数据(或“虚假数据”)是人工生成的数据,它模拟了原始数据集的模式和组成,是一种数据匿名化的形式。合成数据在某些用例中是一个很好的解决方案,比如为工程师提供与生产数据类似的东西,用于测试目的,而不暴露实际客户个人信息。合成数据还广泛用于训练欺诈检测系统中使用的机器学习模型。
合成生成足够真实以用于测试或其他应用的数据,是一个复杂的过程。例如,如果一个企业有多个数据库,其中包含独立的表,其中的客户姓名相同,那么在这两个数据库中相同的客户将具有相同的姓名。理想情况下,为该企业生成的合成数据能够捕捉到这种模式。
虽然这是一个复杂的问题,但现在有许多公司提供商业解决方案。
3.9 可信执行环境
可信执行环境(TEE)是一种基于硬件的隐私保护方法。使用 TEE,CPU 具有与主计算机进程和内存分区的硬件分区。TEE 内的数据无法从主处理器访问,TEE 与 CPU 的其余部分之间的通信是加密的。对加密数据的操作只能在 TEE 内部进行。
英特尔、AMD 等芯片制造商现在提供 TEE 芯片。AWS Nitro Enclaves 使用这项技术创建了适用于处理高度敏感数据(如个人识别信息)的隔离计算环境,同时保持其安全性和隐私性。
3.10 安全多方计算数据隐私保险库
数据隐私保险库隔离、安全地控制访问以管理、监视和使用敏感数据。它既是一种技术,也是一种架构设计模式。数据隐私保险库结合了多种 PET,如加密、令牌化和数据遮蔽,以及零信任、日志记录和审计等数据安全技术,以及隔离的原则。
例子:使用数据隐私保险库,敏感数据在采集时被发送到保险库,之后下游存储令牌化数据。
将客户个人识别信息从现有的数据存储和基础架构移入数据隐私保险库,如上图所示。数据隐私保险库成为所有客户个人识别信息的唯一真实来源,从而有效地将现有应用基础架构从数据安全和合规性的责任中解放出来。这种数据隐私的架构设计方法还有一个好处:大大减少了数据驻留或本地化的复杂性。
这项技术最初是由苹果和 Netflix 等公司首创的。尽管在数据隐私方面被广泛认为是最佳实践方法,但除了一些主要技术公司外,数据隐私保险库在其他地方并没有得到广泛采用。这是由于构建保险库系统涉及到的复杂性。Shopify 花费了三年时间,由 94 名工程师共同贡献,构建了他们自己版本的数据隐私保险库。
四、隐私的未来
数据隐私不仅仅是合规问题,也是对用户的负责。在这个领域,有大量的增长和势头,将帮助工程师构建更好、更安全的系统,同时仍然允许企业使用他们收集的关于客户的数据来改进他们的产品。
随着这些技术的商业化以及 API 和 SDK 等抽象层的开发,利用这些技术来进行日常工程任务将变得像编程式地拨打电话或发出信用卡交易一样简单和常见。
数据隐私不仅仅是 CISO(首席信息安全官)的工作,也不仅仅是隐私官的工作,它是每个人的工作。作为常常被赋予保护敏感数据技术方面任务的工程师,我们必须理解隐私增强工具和技术的领域。同时,在用户分享他们的敏感个人数据时,我们使用这种理解遵循隐私最佳实践并尊重用户对我们的信任是至关重要的。
PrimiHub 一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。