这篇文章是我们的“隐私保护数据科学”系列的一部分。
随着人工智能领域的发展,我们的经济越来越以数据为驱动力。组织可以大量收集我们的数据,以便利用数据点之间保存的信息。因此,随着组织参与技术生态系统的发展,组织在存储您的数字足迹方面存在着不断增长的经济动力。监视资本家可能会使用此数据来了解使我们打勾的原因,并通过有针对性的在线广告产生收入。尽管这是相对无害的,但是自从那时以来,该技术已被应用到比零售更阴险的领域。在过去的十年中,使用了这些可扩展的大众说服工具,以破坏民主,甚至煽动暴力。
随着这些工具监视的使用日益增加,技术消费者发现自己陷入了困境。消费者可以继续使用极为有用的在线服务,放弃对其数据的控制,并且在许多情况下,他们的代理商受到操纵。另一方面,他们可以选择不参与数字经济,而与诸如社交媒体,地图软件和搜索引擎之类的许多高实用性服务隔绝。
考虑到这一点,人们越来越需要工具来帮助管理隐私和参与之间的权衡。此预期转换中的一种工具原型是零知识证明(ZKP)。
什么是零知识证明?
零知识证明的概念由Shafi Goldwasser,Silvio Micali和Charles Rackoff在其论文“交互式证明系统的知识复杂性”中首次提出于1989年。本文介绍了涉及知识复杂性的交互式证明系统的概念,知识复杂性是对从证明者转移到验证者的关于证明的知识量的度量。
简而言之,ZKP可以被描述为一种数学方法,用于向一方证明您拥有一些知识,而无需实际揭示基础信息。
例如,假设您去了一家酒吧。酒保要求您的驾驶执照,以便他们可以核实您的年龄。您希望调酒师知道您已年满18岁,这样他们才能向您卖酒。但是,您并不想让调酒师知道您的住处,甚至您实际的年龄。但是,您需要将所有这些信息提供给酒保,因为这些信息都包含在您的驾驶执照中。在诸如CL Signatures之类的ZKP方法下,您可以证明您的年龄值超过了给定的阈值,而无需透露年龄的实际值。
零知识证明的属性:
ZKP作为一种类型表示smorgasbord方法,所有方法都必须具有以下三个属性;
1)完整性:如果陈述为真,并且证明者和验证者遵循的协议为真,则验证者将接受证明。
2)健全性:如果陈述为假,即使验证者遵循了协议,验证者也不会相信证明
。3)零知识:如果证明者遵循了协议,并且陈述为真。然后验证者将确信,证明者的证明是正确的,而无需从他们的交互中学习任何信息
考虑以下非常基本的ZKP协议。
想象一下,您的朋友爱丽丝是色盲的。您的朋友鲍勃有两个相同的球,但是,一个是红色,另一个是蓝色。爱丽丝(Alice)无法感知这种颜色差异,也不会拒绝相信鲍勃(Bobs)的说法,即它们是不同的。爱丽丝对球的颜色为零知识,鲍勃必须证明两个球与爱丽丝是不同的颜色。以下ZKP方法解决了此特定问题;
1)爱丽丝拿起球,将球传到背后的双手之间。
2)然后,爱丽丝将两个球都交给鲍勃,并挑战他以识别“蓝色”球。
3)当Bob看到蓝色球的颜色时,他们正确地识别了它。
4)这些步骤重复多次。最终,鲍勃每次预测正确球的可能性都非常低,以至于毫无道理的怀疑是鲍勃说了实话。
从第一次交换
中选择的可能性= 50%从第二次交换
中选择的可能性= 25%从第三次交换中选择的可能性= 12.5%
在多次重复该实验时,每次的可能性都会降低50%。当选择的可能性降低到零时,爱丽丝将能够判断球是否具有不同的颜色。
将此实验与前面提到的属性相关联,我们发现
属性1(完整性):您的朋友必须确信这些球是不同的
属性2(健全性):所有开关/非开关的概率接近零,这表明这些球是不同颜色的
属性3(零知识):您的朋友不了解球的颜色
。ZKP有许多这样的抽象示例和实现,可以在下面提到的链接中进行查看。
零知识证明的应用:
1)在加密协议中用于维护隐私。借助ZKP的属性,我们确保用户的隐私不受到损害
2)用于比特币或以太坊交易之类的区块链中,在抽象发送方/收件人详细信息的同时保持交易透明
3)2016年,普林斯顿等离子体实验室展示了核分歧谈判的一种技术,但不透露有关其工作的信息。
4)用于身份验证系统,其中一方希望向另一方证明自己的身份而不泄露密码之类的秘密。
ZKP的进一步阅读/实现:
- PyZKP-OpenMined https://github.com/OpenMined/PyZPK的开源ZKP库的python包装器
- 在ZKP播客- https://www.zeroknowledge.fm
- 很棒的ZKP- https://github.com/matter-labs/awesome-zero-knowledge-proofs
参考文献: