IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 神奇的零知识证明,既能保守秘密,又能让别人信你! -> 正文阅读

[区块链]神奇的零知识证明,既能保守秘密,又能让别人信你!

某人声称他解决了哥德巴赫猜想,但是怕别人抄袭,不能暴露细节,怎么在不公布细节的情况下让大家相信他确实证明了哥德巴赫猜想?

看起来似乎不可能,但是确实有一种方法,叫做“零知识证明”,来解决信任的问题。

零知识证明的定义是:证明者(prover)能够在不向验证者(verifier)提供任何有用的信息的情况下,使验证者(verifier)相信某个论断是正确的。

定义干巴巴的,太无趣了,举两个例子来消化一下(例子的来源参见文末链接)。

1

假如你手里有这么一幅图,里边是成百上千只企鹅:

1f8fcaf7002977b4a6a2189cfa025d27.png

但是,其中藏着一只和企鹅有点儿像的海鹦鹉

23cceebf66913cc7197a04e0ed660167.png

你知道这个海鹦鹉藏在别的地方,但是你不想告诉别人具体的位置。

那么问题来了:你如何在不透漏具体位置的情况下,向别人证明你的确知道海鹦鹉的位置呢?

一个非常简单的办法是,你拿一个板子,上面留个孔,把图片放到板子后面,并且让海鹦鹉对准那个孔。

8ab001fd16450b014a55e04165840df8.png

这样当别人通过洞往里边看的时候,他就会看到海鹦鹉。

a57bf47eb57e92d748225567759c6233.png

但重点是:你没有泄露海鹦鹉的位置,别人就知道图片中确实有一只海鹦鹉。

这就是零知识证明。

2

上面的例子有点简单,再来看个复杂一点儿的数独游戏。

数独规则非常简单,玩家需要根据9×9盘面上已知的提示数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(3*3)内的数字均含1~9,不重复。

20b0270187a9dbed0a1e4044d293ff6e.png

假设张大胖和何小痩都喜欢玩数独游戏,他们经常互相出数独难题考对方。

有一天,张大胖给何小痩出了一个数独难题,何小痩怎么都做不出来,于是他找到了张大胖。

何小痩:胖哥,你是不是作弊了,出了一道无解的数独?

张大胖:哈哈,是你的水平不行吧,这个数独是有解决方案的。

何小痩:我不信,你把答案告诉我。

张大胖:我不告诉你答案,但是我会用零知识证明我确实知道答案。

张大胖怎么用零知识证明呢?

他让何小痩转过身去,然后做了九九八十一张卡片,卡片上写上1~9,按照正确答案的方式摆到了桌子上。

对于那些提示数字,他把卡片数字朝上,对于需要填数的地方,他把卡片数字朝下,让何小痩看不到正确答案。

4a6d51847114088a5efa985d4ba3f478.png

何小痩转过身来,他失望地发现,张大胖并没有给他答案。

张大胖:答案就在桌子上,你可以检查一下是不是正确,可以以行的方式、以列的方式,或者以3*3方块的方式。

何小痩选择用行的方式。

张大胖把每一行的卡片都装到了一个不透明的袋子中,摇了摇,确保完全混合,然后交给何小痩。

ef16c4c99b9eeb1e6e730b386ac01e22.png

何小痩打开了每个袋子进行检查,果然,每个袋子中的卡片都是1~9 ,完全符合数独的规定。

795d1cadb5aca89496b70d0279f71dde.png

何小痩:这能证明啥?我也可以把1~9放入这些行,也会出现这种结果。

张大胖:可是,我不会读心术,事先并不知道你要选择以行的方式来验证啊

何小痩要求重新测试,这次他选择了列验证,依然是正确的。

用3*3方格验证,依然挑不出毛病。

何小痩心想:难道这小子运气极好,每次都能猜对我的验证方式,从而摆上合适的数字?这不可能!那张大胖确实有非常大概率(这点很重要)知道正确答案!

在验证的过程中,何小痩没有获得关于答案的任何知识,张大胖成功地实施了零知识证明。

3

零知识证明还有很多例子,如阿里巴巴和四十大盗、地图涂色验证、色盲游戏等等,感兴趣的可以到网上搜一下。

零知识证明是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初提出的,距今有30多年了,具体有什么用处呢?我们可以畅想一下:

我想贷款,银行要求月收入5000以上,但我不想透露我的工资具体是多少,这时候零知识证明就排上用场。

为了核控制、防核扩散以及核裁军,国际检查机构需要一种方法,既能确认某个国家提交的核武器信息的真实性,又不用暴露核设施的敏感信息,正好是零知识证明的用武之地。

在安全领域和区块链中,零知识证明已经有了应用:

比我(刘欣)有一个公钥和私钥,你安全地拿到了我的公钥,但是从来没见过我,有一天我们两个见面了。

我说:我就是刘欣

你可能不相信,万一有人冒充呢?

我可以生成一个随机的字符串,用我的私钥加密,然后发给你。

你用公钥解密,如果得到的字符串相同,你就知道我肯定是刘欣了。

比特币上每一笔交易都是透明的,谁给谁转了多少钱都是公开可查的。但是,通过零知识证明技术实现的隐私币,例如 Zcash 就可以达成隐藏交易信息,但是同时能让全网验证交易合法性的效果。

总之,零知识证明第一次把证明的正确性和证明的知识解耦开来,这种思想范式的转变是一个巨大的创新,拓展了人类的智力边界。

参考资料:

1. Computer Scientist Explains One Concept in 5 Levels of Difficulty

https://www.youtube.com/watch?v=fOGdb1CTu5c

里边讲述了企鹅图片的例子。更有趣的是他分别对小学生、中学生、大学生、研究生、专家等五个级别的人讲述零知识证明,非常有趣,强烈推荐。

2. The Incredible Machine

https://medium.com/qed-it/the-incredible-machine-4d1270d7363a

其中不但讲述了数独的例子,还构造了一个证明的机器,感兴趣的可以深入了解一下。

(完)

点击下方图片,查看更多精彩

cd9e24f2d04687378837425abe567dfd.png

db53e5d3ae2fa37f245e039e4dbac719.png

7aba39a0cbb1be150cd08431d459a98e.png

71abf9f240788d3b7c7445d63af5a44b.png

d0ffd9c137b195fd3624e9df99e8c2d5.png

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2022-02-16 13:08:56  更:2022-02-16 13:09:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:39:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计