

零知识证明技术另一方面很难驾驭。使用零知识证明技术好比是在开喷气机,有不少案例,使用零知识证明技术的应用出现严重的安全漏洞。
魔笛手主题分享 | 郭宇: 解读黑科技——零知识证明
https://m.huoxing24.com/newsdetail/20190820213234335334.html?from=groupmessage
郭宇@SECBIT安比实验室:
后面还有一些时间,不知道大家有没有什么疑问,大家一起讨论。
Stomer Wong:
“zkPoD 采用类 Sigma 协议实现零知识证明,保证数据在交易之前,数据源是可靠的。”数据在交易之前数据源如何保证可靠?
郭宇@SECBIT安比实验室:
@Stomer 👍👍👍一上来就问这么尖锐的问题哈哈。
Stomer Wong:
一直很关心这个难题。
郭宇@SECBIT安比实验室:
数据源的真实性是一个核心问题,我认为不是单靠技术就能解决的。有些数据的真实性可以客观地去判定,比如一个数独答案的解。这种情况是完全可以用零知识证明的方式去保证这个数据的真实性。还有一类情况是比如说你把你的手机号给我,在我没有打电话给你核实之前,我是没有办法确认这个手机号字符串是否是对的。
对于这种情况,可以有两种方案:
第一种是,如果有大批量的手机号,需要允许用户来抽样验货,抽样几个试试看,需要允许任意的抽样。
第二种方案是,手机号数据需要运营商进行第三方核实,核实完毕后进行数字签名。
现在的零知识证明技术,完全可以做到在数据加密的情况下检查数据的数字签名是否合法。在现实生活中,大部分数据都是这种找不到客观判断的数据类型,所以这个需要结合别的技术一起来解决。这是我的一点看法。😄
Stomer Wong:
是否可以通过智能合约对交易的虚拟货币进行锁仓来解决?
郭宇@SECBIT安比实验室:
完全可以的,感谢提问。
魏洪贵:
对于普通消费者,他如何判断一个应用是零知识证明,自己信息没有泄露?
郭宇@SECBIT安比实验室:
这个问题非常好!零知识证明技术很神奇,但是另一方面是很难驾驭。我经常比喻,使用零知识证明技术好比是在开喷气机,有不少案例,使用零知识证明技术的应用出现严重的安全漏洞。要么是导致「零知识」失效, 这就是泄露了信息;要么是违背了「可靠性」,一个虚假数据也能构造合法的零知识证明。我的观点是,这类应用必须开源,设计公开,接受广泛的审计和审查。期待未来会出现大量成熟的,开源的零知识证明武器库。这样应用开发者还有用户就不必担心底层零知识证明代码有缺陷。当然这类缺陷、或者说安全漏洞要比传统的软件bug 更难发现。这是个人的一点看法。
Connie:
问题1:Zcash使用的匿名方案是什么,是如何实现匿名的,有什么特点?有什么缺点?
郭宇@SECBIT安比实验室:
ZCash方案就是采用的zkSNARK,准确地说就是groth16方案作为零知识证明技术。特点就是交易地址和交易金额直接全部隐藏,缺点目前是zcash默认是t地址,也就是默认不匿名,如果匿名需要用z地址,这个性能差不少,还需要时间继续优化。
Connie:
问题2.请对比Zcash和Zcoin两个项目。
郭宇@SECBIT安比实验室:Zcoin是Matthew Green最早提出来的匿名币方案,Zcash其实是升级版,在Zcoin早期出现过严重安全漏洞后,基本处于废弃状态,但是现在又有团队在Zcoin基础上实现了新的匿名方案。现在这两个匿名币已经差别很大了。
Connie:
问题3.什么是Zcash的预信任机制?它的问题是什么?有没有解决这个问题的计划?
郭宇@SECBIT安比实验室:
所谓的预信任机制就是我讲过 TrustedSetup过程,这个过程必须是在一个完全可信的环境下进行,并且在这个过程中产生的随机数必须销毁,一旦有人知道这些随机数,就能在没任何人知道的情况下铸币,理论上可以无限增发。但是后来Zcash团队提出了采用安全多方计算的方式来进行Trusted-Setup,已经把这个过程变得相当可信了。任何对这个过程心存疑虑的人都可以申请参与这个过程,只要参与的团体里面有一个人诚实,那么整个过程就可以保证可信。所以说,这个问题对于zcash而言,我认为已经不再是一个严重问题了。
Claire:
今晚非常感谢郭宇大神百忙之中抽时间来【魔笛手社区】和大家探讨黑科技零知识证明,非常精彩!👍👍👍时间很快,又到尾声了,再次感谢郭宇大神和各位参与讨论的群友们!✌✌🎉🎉👍👍🙏🙏
郭宇@SECBIT安比实验室:感谢大家,感谢@Claire 的邀请,很荣幸有机会和大家一起探讨,请关注我们的工作。
Claire:
大家如果有其他问题来不及向郭总大神发问,欢迎在社区内留言,我会转给他,在他有空的时候为大家答疑!Claire:
@郭宇@SECBIT安比实验室 今天加入【魔笛手社区】的粉丝相当多!👍👍郭宇@SECBIT安比实验室:是热爱学习的小伙伴们比较多。😄星星之🔥:@郭宇@SECBIT安比实验室 👍👍👍
延伸讨论:
闫守孟 :
零知识证明的性能如何呢?
焦木 :
@闫守孟 生成證明好像耗時很長,之前@星星之🔥 做過測試,pc上生成一次證明好像要10m,所以無法在智能合約裡做。
闫守孟 :
嗯,这跟我的认知相符。
星星之🔥 :
证明的生成时间和电路的大小成正比。
焦木 :
@星星之🔥 你上次貼的結果是多大電路的?128還是256位?
星星之🔥 :
@闫守孟 你问的是 哪个场景下的生成时间? 我之前说的10分钟,是EYBlockchain的转账电路。
郭宇@SECBIT安比实验室 :
需要看下场景,性能一直在优化。
星星之🔥 :
@焦木 我上次说的电路大概在230万个门电路左右。
焦木 :
@郭宇@SECBIT安比实验室 轉帳這個基本都是分鐘量級?
@星星之🔥 其實就是跟邏輯複雜度相關對吧?
星星之🔥 :
@涓水濯纓 可以简单的这么理解。因为要用groth16证明,需要用R1CS描述问题。需要优化R1CS的描述。 比如说,不同的hash算法,R1CS差上百倍。
郭宇@SECBIT安比实验室 :
zkp方案有比较多种 groth16就是和电路正比关系 绝大部分计算是计算ecc倍乘,也就是multiexp,之前星星做过gpu优化,感觉这块值得探索下。如果不是区块链场景,不一定要用groth16,可以换换别的。
转账是指的哪个转账? 哈哈
星星之🔥 :
@郭宇@SECBIT安比实验室 说的好啊!现在groth16比较热门,在区块链场景用的比较多。其实零知识证明的算法比较多。
郭宇@SECBIT安比实验室 :
感觉gpu优化应该会提升不少 。
@星星之🔥 可以总结总结这部分。 哈哈
星星之🔥 :
@郭宇@SECBIT安比实验室 目前mnt4/6的话,和同档次的cpu比,性能在3倍左右。 bn256可能更好些。
郭宇@SECBIT安比实验室 :
之前优化的主要是mnt46曲线?
星星之🔥 :
是啊, coda的挑战就是针对mnt46.
郭宇@SECBIT安比实验室 :
bn254会更容易优化?
星星之🔥 :
因为位数少了,更容易提高并行度。
郭宇@SECBIT安比实验室 :
@星星之🔥 有意思!我再仔细学习下😄
全文完