【密码学】一文读懂零知识证明

简介: 本文来聊一聊零知识证明的一点知识, 本文的例子纯属虚构,故事素材来源于网络和论文,以及我的瞎编, 如有雷同, 纯属巧合。

一文读懂零知识证明


3J9{[NMT[{}IDBD$7]`GUNY.jpg零知识证明

本文来聊一聊零知识证明的一点知识, 本文的例子纯属虚构,故事素材来源于网络和论文,以及我的瞎编, 如有雷同, 纯属巧合。


话说,从前有一组人打算去探险, 然后由于他们的水平有限, 因此他们到达目的地之后找了一个导游, 假设这个导游名字叫张三吧, 然后他们担心这个导游不够专业, 而且要价比较高, 然后这一组人呢就想让导游证明一下他的实力, 于是导游带他们到了4个门前, 门的入口有一个机关,只有破开这个机关,才能够进去, 故事便从这里开始。


巧分葫芦

第一扇门前面有两个葫芦, 相传在西游记当中,混沌初分,天地开辟,一位太上老祖,解化女娲之名,炼石补天,普救阎浮世界。补到乾宫触地,见一座昆仑山脚下,有一缕仙藤,上结着这个紫金红葫芦, 其中一个是雌的,一个是雄的, 这一关要求区分这两个葫芦哪一个是雌的,哪一个是雄的, 张三心理想,这我不能直接给他们说,把这个门打开,万一我分出来了,这帮人不给我钱了,这怎么办,那我不就亏了,这时候,一道灵光闪现,张三有了主意。

于是张三对这一帮人说,我能够分出来这两个葫芦,但是我不直接给你们分出来把门打开,你们看这样,现在这两个葫芦在这。

G}Z~20[IF9D7P]Z[O]Q%QBW.jpg

image.gif葫芦

然后你们等我转过身去,你们可以选择交换这两个葫芦的位置或者不交换这个葫芦的位置,等你们操作完成,我再转过身来,然后我说出你们是否交换了这两个葫芦的位置,如果我能说对,这证明我确实能分出来。

这一队人说,这样万一你是蒙的呢,交换和不交换就这两种可能,你随便猜一下,这都有一半的概率能猜中。

张三说,这样,我们重复进行这个操作,如果我连续10次都能说对,这样我是猜的概率就是, 这样你们总不能说我这是蒙的了吧,要是这样,那我可就有欧皇附体的体质了,哈哈。

于是这一组人合计了一下,这样可以,于是相信了向导张三,他们走向了第二扇门。


洞穴谜题

这有一个奇怪的洞穴,这洞穴有一扇门,这一扇门需要一个咒语才能够打开,如下图所示:

image.gif洞穴谜题

忽略一下我的灵魂画图,意会一下这一个洞穴蛤,这时候张三有不想直接把这个咒语告诉他们把这个门打开,然后张三灵感再次出现,想到了一个主意,他和这一对人说,你们在门口看到我进去了,然后你们到门口喊一下,我从A或者B出来。

{H3XRH40Z3QN7V36{]MS1%0.png张三选择A

假设张三选择了A, 然后他们要求张三从A口出来的话,那么正好张三可以直接从A口出来,不需要开门就可以了,但是如果他们要求从B口出来,这就需要张三默念咒语,然后把门打开,才能从B口出去。

GL$PY7TO1$ZTPOQ1FC)BUWT.pngA默念咒语,从B出去

和上面的葫芦一样,如果张三每次都能从所说的口出去,这一队人就可以相信张三是真的知道这个咒语了,紧接着,这一队人便跟着张三到了下一扇门前。

7A}%4`%IJ89SS{4ZVPCRBH1.png


数独谜题

先来介绍一下什么是数独,「数独」 是一种数学逻辑游戏,游戏由9×9个格子组成,玩家需要根据格子提供的数字推理出其他格子的数字。游戏设计者会提供最少17个数字使得解答谜题只有一个答案(这段话来自于维基百科),具体规则如下(图片来自于维基百科):

ZLM7X0GRV96V$)%I5WEJJIF.png

image.gif数独图片

  • 每一列的数字均须包含 1~9,不能缺少,也不能重复。
  • 每一宫(粗黑线围起来的区域,通常是 3*3 的九宫格)的数字均须包含 1~9,不能缺少,也不能重复。

具体关于数独的介绍,我也就不啰嗦了,来看具体的故事吧,这里的张三简单化身一下数独高手,就当这一队人都不会玩数独,技术是非常的菜。那么张三有没有办法在不告诉这一队人数独答案的情况下让他们相信张三可以解开这个数独呢?

这时候张三绞尽脑汁思考了一下,这时候仿佛神仙附体,张三一下有了方案。

张三先把数独上面的答案写在小卡片上面,然后可以让他们去选择按行,按列或者按块把小卡片放到一个袋子里面,然后豁楞豁楞,豁楞均匀了,如果打开每个袋子都是1-9的话,那么表示张三确实是有能力解开这个数独的。

}NC0X%5J6F8GF)2A7P2LUG1.png

按行分割

}(EYJ%4SV$%7SN]`()3U]O0.png

卡片

同样,忽略一下我这拙劣的绘图,理解一下什么意思就好了,不接受对画图的吐槽。紧接着,他们到了最后一个门前面,这同样是一个数学问题。


地图三染色问题

先来简单解释一下什么是地图三染色,如何用三种颜色染色一个地图,并且保证任意两个相邻的地区都是不同的颜色,这显然并不是所有的地图都可以三染色的。

B8G9NOHARH~~{R}[{0)Y9~U.pngimage.gif

地图三染色

这个时候,考验张三的时候又来了,张三怎么向这一队探险者证明他真的可以给这个图用三种颜色染色,又不想告诉这一队人具体的结果呢?

这其实也不难,聪明的张三再次的想到了方法,张三吧上色的结果放到信封里面,然后让这一队人随机选择两个相邻的信封打开,这样如果发现这两种颜色不同,然后张三销毁掉之前的信封,打乱顺序,就是对这三种颜色做个轮换,再次放到信封里面,再让这一队人选两个相邻的打开,重复多次操作。

2{IQK1H1Y~C1]AMTJ6}T)IQ.png

image.gif选择相邻的信封打开

经过这一系列的验证,这一队人终于相信了张三的能力,于是愉快的付钱了,故事到此结束了,后面的事情就由读者自行想象一下吧。


总结

本文简单介绍了几个零知识证明中的例子,故事纯属虚构,如有雷同纯属巧合, 实际上零知识证明的思想早在16世纪文艺复兴时期就出现了,当时的两位数学家塔尔塔利亚和奥菲都宣称掌握了一元三次方程的求根公式,于是他们两个为了向众人证明他们确实掌握了解决这个问题的方法,这他们不能直接公布这个公式,如果第一个人先公布了,第二个说我也是用的这个方法,这就不好去判断是不是这两个人都发现了这个问题的解法,于是他们采用擂台对决的方式来证明,由双方互相出30个一元三次方程的题让对方求解,最终,塔尔塔利亚解出来了奥菲提出的所有的题,但是奥菲一道也没解出来塔尔塔利亚的题,所以大家相信塔尔塔利亚是真的掌握了一元三次方程的求根公式,这便是一个比较简单的零知识证明的例子了,好了本文到这里结束了,个人能力有限,可能会有我理解的不到位的地方,请各位读者大佬指正。


相关文章
|
Rust 算法 Go
【密码学】一文读懂MurMurHash3
本文应该是MurMurHash算法介绍的最后一篇,来一起看一下最新的MurMurHash算法的具体过程,对于最新的算法来说,整个流程和之前的其实也比较相似,这里从维基百科当中找到了伪代码,也就不贴出来Google官方给出的推荐代码了,先来看一下维基百科给出的伪代码,这里只有32位的伪代码。
1913 0
【密码学】一文读懂MurMurHash3
|
Rust 算法 安全
【密码学】一文读懂MurMurHash2
上次我们聊过了一代的MurMurHash算法,是的,我又来水文章了,今天呢,接着来聊一下二代的MurMurHash算法,二代算法的整体结构实际上和一代算法差不太多,只是对于每一轮数据的处理过程当中的运算有一些差异,算法的来源依然是来自于Google官网给提供的源码,对着源码看的结构,对于这个算法呢,有两个版本,一个是32位的,一个是64位的,对于32位的算法和64位的算法,区别在于两个初始的魔数不同,整体运算过程还是十分相似的。
2058 0
【密码学】一文读懂MurMurHash2
|
算法 数据安全/隐私保护
【密码学】一文读懂Whirlpool
首先呢,祝大家今晚节日快乐,Whirlpool是由Vincent Rijmen(高级加密标准的联合创始人)和Paulo S.L.M.Barreto设计的,后者于2000年首次提出了它。
1047 0
【密码学】一文读懂Whirlpool
|
Web App开发 Rust 算法
【密码学】一文读懂ChaCha20
好久没写新的加密算法的原理了, 这次所选取的加密算法结构比较简单, 一起来看一下吧。
7040 0
【密码学】一文读懂ChaCha20
|
Rust 算法 网络安全
【密码学】一文读懂CMAC
介于上一篇文章比较水,然后这个和上一篇也比较相似,CMAC是为了解决DAA当中安全性不足的问题而出现的,这个算法一共有三个密钥,K, K1, K2, 其中K1和K2可以由K导出,接下来就来一起看一下CMAC的具体过程吧,这一篇文章其实也不长。
3461 0
【密码学】一文读懂CMAC
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂XTEA加密
本篇文章,我们来看一下上一次讲过的TEA加密算法的一个升级版XTEA, 相比于TEA, XTEA的安全性显然是更高的,其中的过程要比TEA稍微复杂一点点。
1188 0
【密码学】一文读懂XTEA加密
|
算法 安全 Go
【密码学】一文读懂HKDF
我这又来水一篇文章,来聊一下HKDF(基于HMAC的密钥导出函数)。密钥派生函数是密钥管理的组成部分,他的目标是通过一些初始的数据派生出来密码学安全的随机密钥。
2992 1
【密码学】一文读懂HKDF
|
11月前
|
存储 安全 算法
为什么人人都要懂点密码学
人类进入二十一世纪以来,随着计算机和移动设备的普及高速发展,我们的社会已经高度信息化,为了防止信息被窃取、修改,就需要对信息的存储、传递进行加密处理,而加密就需要使用到加密算法,解密需要使用密码才可以看到原文。
210 1
|
10月前
|
存储 算法 安全
【11.10】现代密码学1——密码学发展史:密码学概述、安全服务、香农理论、现代密码学
【11.10】现代密码学1——密码学发展史:密码学概述、安全服务、香农理论、现代密码学
161 0
|
算法 安全 数据安全/隐私保护
【密码学】 一篇文章讲透数字签名
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。数字签名可以识别消息是否被篡改, 并验证消息的可靠性, 也可以防止否认。
654 0
【密码学】 一篇文章讲透数字签名