paint-brush
零内容事实证明:如同法术,但他会解释清楚它 进行@windley
1,161 讀數
1,161 讀數

零知识证明:就像魔法,但我会解释它

经过了 Phil Windley8m2023/11/07
Read on Terminal Reader

太長; 讀書

零知识证明 (ZKP) 是身份系统中使用的强大加密过程。它们使像佩吉这样的人能够证明她拥有一个秘密,而无需向维克多透露秘密本身。一个典型的例子是佩吉证明她知道阿里巴巴洞穴中的密码。这确保了她可以说服维克多,同时保守秘密。然而,这并不是完全零知识,因为有关佩吉的一些信息仍然存在。 ZKP 还可以用于更广泛的主张,例如以保护隐私的方式证明同工同酬,促进信任。
featured image - 零知识证明:就像魔法,但我会解释它
Phil Windley HackerNoon profile picture
0-item


假设佩吉需要向维克多证明她拥有一个秘密而不泄露这个秘密。她能否让维克多相信她确实知道这个秘密?这是我们可以在身份系统中使用的最强大的加密过程之一的核心问题: 零知识证明(ZKP)


例如,假设 Peggy 拥有数字驾驶执照,并且想要向酒保 Victor 证明她已经超过 21 岁,而无需交出驾驶执照,甚至不需要向他出示她的出生日期。 ZKP 允许 Peggy 证明她的驾驶执照说她至少 21 岁,这可以让 Victor 信服,而 Peggy 无需透露任何其他信息(即,多余知识为零)。


麻省理工学院的研究人员 Shafi Goldwasser、Silvio Micali 和 Charles Rackoff 在 20 世纪 80 年代首次探讨了这个问题,作为防止信息泄露的一种方法。目标是减少验证者 Victor 可以了解的关于证明者 Peggy 的额外信息量。


知晓 ZKP 工作上的原理的有一种的办法是有赞巴巴地洞的历史故事历史故事,该历史故事历史故事刚开始由用户名和密码生理学家 Quisquater、Guillou 和 Berson1 刊发。该图保证了说。



阿里巴巴吧巴洞有几条渠道,对应标记符号为 A 和 B,这些单独好几条与出入口口连在一起的渠道。佩吉有一款PIN码,应该另存连入 A 和 B 的门。维克想要买入该PIN码,但只要 在制定佩吉了解到PIN码后才会支付款项。在维克多交钱之后,佩吉会与他介绍。


Peggy 证明她知道代码的算法如下:


  • 维克多站在洞穴外,佩吉进入并选择其中一条通道。维克多不被允许看到佩吉走哪条路。
  • 维克多进入洞穴并随机喊出“A”或“B”。
  • 佩吉从正确的通道出现,因为无论她进入时做出哪种选择,她都可以轻松地打开门。
  • 当然,佩吉可能只是运气好,猜对了,所以佩吉和维克多多次重复了这个实验。


如果佩吉总能从维克多选择的任何一条通道回来,那么佩吉真正知道密码的可能性就会增加。经过 20 次尝试后,佩吉只是猜测维克多会叫哪个字母的可能性不到百万分之一。这构成了佩吉知道这个秘密的概率证明


该svm算法实际上能够让 Peggy 打动 Victor 她都清楚编码,同时还能够事关 Victor 不了打动其他不管什么人 Peggy 都清楚编码。比如 Victor 收录了整体的的交易。分析分析者绝无仅有看到了的是维克多高喊符号,佩吉从右方的桥隧中会出现。分析分析者不了认定维克多和佩吉要不要之前就符号程序形排成致以忽悠分析分析者。


请要注意,此攻击速度根据于使用的都具有高熵种子地址的优秀伪随即数绘制器的数学模型,之所以 Peggy 和其次方检查者时未分析 Victor 的的选择。


以至于,只不过佩吉没有向维克多否定她明白这里秘蜜,但她是可以向另外的第三个方否定她明白这里秘蜜。这保持了她向维克多认定书的任何人商品都留着许多人直接,维克多没有流露它——最少以密匙玩法认定书它是来自于佩吉。佩吉提取了对她的秘蜜和她明白的实际的管理权。


当我们说“零知识”并谈论维克多除了所讨论的命题之外什么也没学到时,这并不完全正确。在阿里巴巴的洞穴里,佩吉以零知识证明她知道这个秘密。但维克多还了解到佩吉的许多其他事情,ZKP对此无能为力。例如,维克多知道佩吉可以听到他的声音、说他的语言、走路并且合作。他还可能了解有关洞穴的信息,例如打开门大约需要多长时间。佩吉从维克多身上也了解到类似的事情。因此,现实情况是,证明大约是零知识,而不是完全零知识。


ZKP系统

阿里巴巴Cave的例子是ZKP的一个非常具体的使用,即所谓的知识的零知识证明。佩吉正在证明她知道(或拥有某些东西)。更一般地说,佩吉可能想向维克多证明许多事实。这些可能包括命题短语甚至价值观。 ZKP 也可以做到这一点。


要掌握如何才能在零知识与技能中单位证明格式怎么写出题,请注意有个各种不同的示例,偶往往指。假说佩吉和维克想多得知孩子们能否收获了人人机会均等原则的基本工资收入。实际看来,孩子们想得知自己的的基本工资收入能否雷同,但不太想向两方甚至会可信性的第三点方暴露自己孩子们的实际小时英文费率低。在在这种前提下,佩吉并不会单位证明格式怎么写她得知有个秘事,往往单位证明格式怎么写了有个人人机会均等(或不人人机会均等)的出题。


为单纯考虑,举个例子 Peggy 和 Victor 的月工资为每小 10 澳元、20 澳元、30 澳元或 40 澳元组成。


该算法的工作原理如下:


  • 佩吉买了四个带锁的盒子,并给它们贴上 10 美元、20 美元、30 美元和 40 美元的标签。
  • 她扔掉了每个箱子的钥匙,除了标有她工资的箱子之外。
  • 佩吉把所有上锁的盒子交给维克多,维克多私下将一张带有“+”的纸条放入盒子顶部标有他工资的插槽中。他在所有其他盒子里放了一张带有“-”的纸条。
  • 维克多把盒子还给佩吉,佩吉私下用她的钥匙打开了盒子,上面有她的工资。
  • 如果她找到“+”,那么他们就赚到相同的金额。否则,他们的金额会有所不同。她可以用这个来向维克多证明事实。


这称为不经意转移,并在零知识(即不透露任何其他信息)的情况下证明命题VictorSalary = PeggySalary true 或 false。


与其,佩吉和维克多要想来TA会自主写下他俩的最真实公司。维克多需要想来佩吉会丢弃还有就是三把钥匙。佩吉要想来维克多个会将一种中含“+”的小纸条加入铁盒子中。


仿佛大数字资质职业资格证书需要 PKI 来开发超过了仅选用自被评为资质职业资格证书难以实行的信度如此,ZKP 在准许 Peggy 和 Victor 才能从陌生人对这些 的点评中介绍信实际的体系中更有强硬,而不短短仅是这些 所述的这些 自个儿。举个例子,假说佩吉和维克多非她断言自个儿的待遇,却是还可以靠人教育资源部门管理签署合同的文档文件来做断言,便于双方彼此都看出敌方时未诉述自个儿的实际存在待遇。带来了一堆个选用 ZKP 分次或融合介绍信大多各个实际的体系,若想使人能们敌方法冲满信度并信度参数。


非交互式 ZKP

在前边的范本中,佩吉是可以进行一全系列互交向维克多发现问题。成了使 ZKP 适用,发现者和验正者相互间的互交须得最少化。极其幸运的是,是一种被称为 SNARK 的枝术禁止非互交式零知识基础发现。


SNARK具有以下属性(它们的名称由此而来):


  • 简洁:与实际证明的长度相比,消息的大小很小。
  • 非交互式:除了一些设置之外,证明者仅向验证者发送一条消息。
  • 论证:这实际上是一个关于某件事是正确的论证,而不是我们在数学上理解的证明。具体来说,理论上,只要有足够的计算能力,证明者就可以证明错误的陈述。因此,SNARK 是“计算上合理的”而不是“完美合理的”。
  • 知识:证明者知道所讨论的事实。


您通常情况下会看清楚上面加进去“zk”(零知识基础),是因为在你这个阶段中,校验者现在被关系证明的客观事实除此之外啥子也是掌握。


zkSNARKs 的数学3题课条件密切相关高次多选题式的同态核算。但让我们不错领悟 zkSNARK 的工作任务的原里,而需要理解抓实其不断完善的表层数学3题课的原里。比如您想要理解非常多数学3题课细致,我强烈推荐 。


举一个简单的例子,假设 Victor 被赋予了某个值的sha256哈希值H 。 Peggy 想要证明她知道一个值s ,使得sha265(s) == H而又不向 Victor 透露s 。我们可以定义一个函数C来捕获这种关系:

 C(x, w) = ( sha256(w) == x )

因此, C(H, s) == true ,而w的其他值将返回false


计算 zkSNARK 需要三个函数GPVG是密钥生成器,它采用名为lambda秘密参数和函数C并生成两个公钥:证明密钥pk和验证密钥vk 。对于给定的函数C ,它们只需要生成一次。在此步骤之后必须销毁参数lambda ,因为不再需要它,并且任何拥有它的人都可以生成证明。


证明者函数P将证明密钥pk 、公共输入x和私有(秘密)见证人w作为输入。执行P(pk,x,w)的结果是证明prf ,证明者知道满足Cw值。


验证器函数V计算V(vk, x, prf)如果证明prf正确,则 V(vk, x, prf) 为 true,否则为 false。


回到 Peggy 和 Victor,Victor 选择一个函数C代表他希望 Peggy 证明的内容,创建一个随机数lambda ,然后运行G来生成证明和验证密钥:

 (pk, vk) = G(C, lambda)

Peggy 不得学习lambda的值。 Victor 与 Peggy 共享Cpkvk


Peggy 想要证明她知道满足C (对于x = Hs值。她使用这些值作为输入运行证明函数P

 prf = P(pk, H, s)

Peggy 将证明prf提交给运行验证函数的 Victor:

 V(vk, H, prf)

如果结果为真,则 Victor 可以确信 Peggy 知道值s


函数C不需要像我们在本示例中所做的那样仅限于哈希。在基础数学的限制内, C可能非常复杂,并且涉及 Victor 希望 Peggy 一次性证明的任意数量的值。


这篇文章摘自我认识的书 ,由 O'Reilly Media 出版权。

笔记

  1. 让·雅克·基奎特;吉尤,路易斯·C.;托马斯·A·博森 (1990)。如何向您的孩子解释零知识协议 (PDF)。密码学进展 – CRYPTO '89:会议记录。计算机科学讲义。 435。第628-631页。 doi:10.1007/0-387-34805-0_60。 ISBN 978-0-387-97317-3。


也分享


바카라사이트 바카라사이트 온라인바카라