LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 零知识证明

零知识证明

2019-10-30 启力仔 来源:区块链网络

今天主要聊聊一个被区块链应用起来得一个论证 ——零知识证明

零知识证明(Zero—Knowledge Proof),是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初提出的。它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。

通俗易懂的举例:

A 作为验证者,捡到了一个钱包,此时B作为证明者,想要向A证明,这个钱包属于它的,即证明钱包属于B。要符合零知识的证明,那么要满足下面的证明要求:

A此时不能能让B看到钱包,更不能让他看到钱包里有什么东西。

B必须提供足够多的准确无误的信息,证明钱包就是自己的。

B 此时可以提供:

1.钱包的颜色、大小、品牌分别是什么,等信息。

2.钱包里有什么东西?比如多少钱?什么证件?证件信息是什么?

A 在B回答完后,进行验证,如果 B 全部说对了,则确认B就是钱包主人。这种信息验证的手段就是零知识证明。B 没有向 A 直接提供钱包的情况下,证明了钱包是自己的,它也无法提供钱包,因为钱包在验证者A手上。实体的钱包就代表着有用的信息。

此外还有一个数独的例子,感兴趣的读者可自行去搜索,这里就不讲的太复杂

零知识证明对于保护数据隐私是个非常重要的手段

数据隐私是当今社会最重要的课题之一。保护与个人身份有关的个人资料 (出生日期、银行月结单、交易记录、学历) 极为重要,并会不断增加其重要性。在科技时代,我们正在生成前所未有的海量数据,而我们不断创造的关于我们自己的数据也在不断被获取。

然而,最近密码学的突破和区块链兴起的零知识,则是证明如何保护数据隐私的答案。

其实主要让零知识证明火起来的是区块链的zk-SNARK,这章暂且不讨论两者之间的关系。

由于小编是一个币的爱好着,所以当然也会把目光放在币上面,但纵观全局却发现,没有一个成熟的币身上是用零知识证明来构建的,这简直让我难以置信。

因为对我来讲,只要不管任何项目或产品,零知识证明的都是必须要的!我对于数据隐私保护是有绝对的偏执与疯狂。

成熟的没有发现,却在一个新的项目上发现了这个重要的特性,并且该项目把零知识证明作为核心的突破口,不止在原有的基础上实现,还进行了突破。这足以让我无脑吹这个项目。

AMC - 新零知识证明

AMC的核心技术是零知识证明,零知识证明可以证明一个交易的合法性却又不需要暴露交易的金额以及交易参与方的信息。

AMC提供两种地址,一种叫做transparent address,简称t-address,这种地址以t开头. 另外一种地址叫做shielded address。两种地址类型,于是便有了4中转账方式:z->t, z->z, t->z, t->t,其中z->z的转账匿名性,这种类型转账称之为Private transactions,从z-toz交易中只能得知交易费,但交易地址、地址数量以及交易的ZEC数目都是未知的。

下图是一个典型的z->z的转账,右下角蓝色方块内文字表示确认数目,黄色方块内文字表示交易费,红色方块内文字表示交易数额。JoinSplits中的内容完成零知识证明。除了参与交易的双方外,外界无法得知交易地址和转账费用等信息。

sCU5HdwfbcpXOitvXbORqJ0C7GqbuYCEHnDdjYdv.png

AMC还对零知识证明做了如下突破性创新。

当前我们采用zk-SNARKs框架生成NIZK,采用其中的ALT_BN128曲线和Groth16预处理过程,这个过程比PGHR13预处理方案减少1/3的运算时间。虽然zk-SNARKs框架需要信用安装过程,但AMC的实现方式中不会动态构造计算电路,因此,在当前所有场景下,zk-SNARKs 框架能满足AMC的需求。我们创新性的开发出一种Twisted Edwards曲线,以取代SHA256来生成公钥,采用ECC Hash进行Merkle树的生成,这样可以提升4倍以上交易生成速度。

另外,AMC采用单路输入和输出结构,每个描述之间采用资产通道进行链接,这样的电路构造更加模块化,在多核CPU情况下,并行执行效率获得3倍的提升。综合以上优化,在交易证明生成速度上,AMC相比于直接使用zk-SNARKs的其他区块链系统,有一个数量级的速度提高,极大的提高了AMC系统的适用性。

在零知识验证的基础上再加上环状签名。

Ring Signature: AMC为了保护发送方的隐私,使用了环形签名,Alice 在给 Bob发送XMR的时候,除了给出花费的UTXO 的真实地址P之外,还会将Monero区块链中其他与P地址中余额相同的UTXO也添加到交易的inputs中,形成一个集合。

eoLkUPIjqDKgtQOj1xEJSMZCaCbN9jD4Fc4P6PnF.png

Alice会将这个集合S作为交易中的inputs一起发布出去,这样对于外界来说(尤其是矿工和Bob),他们无从知晓Alice具体花费了S集合中的哪一个UTXO,这样就保护了Alice的隐私。其他被Alice添加进来用于迷惑其他人的UTXO称之为mixins,又叫chaff output或者 decoy output,Alice添加mixins的时候,并不需要得到其他用户的同意,Alice自行决定添加的mixins的数目。Monero中使用Ring Signature的主要目的就是实现发送方的untraceabity。

Stealth Public Address:如果 Alice 要给 Bob 发送门罗币,除了 Alice,应该没人任何人知道 Bob 就是这笔钱的接收者。为了做到不可追踪性,Alice利用Bob的public view key 和public send key来随机生成一个一次性的公钥地址,叫做Stealth public Address。假设Bob的view key的公私钥对是(A,a)(A, a)(A,a), spend key的公私钥对是(B,b)(B,b)(B,b),其中A=aG,B=bGA = aG, B = bGA=aG,B=bG, G是一个密码学常数,的生成过程如下:

随机产一个r,r∈[1,l],lr,r∈[1, l], lr,r∈[1,l],l是G的一个素数阶。令下面的算法为AMC中使用的Keccak哈希算法。

OfuYPo4HdkwHwcfC7lOtqqMQE3HPehqCyNUmSLvz.png

生成的Stealth public Address 即为P。

spacer.gif现在对P进行如下的推导:

r6evc7kIG15ZngaI3Frm14BK7y8u4kqHctRMeYvR.png

Alice告诉Bob这笔转账所在的区块号和交易号,Bob利用R、private view key a 和 private spend key b计算

yiA5tuPyoozYCHIKEQ1EP7sKyWcY7QPSdlX73rQh.png

找到交易中的所有output,然后寻找相应的output中是否存在某个输出地址为P,如果存在,则可以证明Alice确实给Bob转账了.

注意: 对于其他人来说,由于不知道Bob的private view key 和private spend key,其他人无法知晓Alice给Bob转账的地址是哪里。

Ring Confidential Transactions: 2017年1月10日Monero中正式使用了RingCTs。而在此之前,Monero中假如Alice需要向Bob转12.5个XMR,则需要将自己的UTXO分别发送至三个地址,分别转账10XMR、2XMR和0.5XMR,这是因为Monero中要求转账的XMR格式为A×10BA ×10^{B}A×10B的格式。但是公开转账金额的做法无法隐藏交易本身的信息,为了解决这个问题,Gregory Maxwell提出了RingCT,RingCT可以做到隐藏交易额,这时候Alice挑选mixins的时候,可以选择RingCT中的output作为mix-in。

对AMC的匿名性分析:

Unlinkability:对于不可关联性来说,AMC中的z地址之间的转账,地址完全不可见,因此很好的实现了不可关联性。

UnTraceabiltiy:对于不可追踪性来说,与Monero相同,AMC中的z地址之间的交易可以同时保护发送方的隐私,接收方的隐私,同时也隐藏了交易数额,这也追踪某个人的交易记录变得几乎不可能。

Convencience:目前的AMC钱包,如果需要实现Z地址之间的转账,需要使用桌面电脑才能完成,其他的钱包只能完成t地址和t地址以及t地址和z地址之间的转账,这使得其便利性大打折扣,此外,涉及到z地址的转账,都需要用到零知识证明,需要更多的计算时间。

具体的公式,是找到负责人提供的,虽然我没能太深入这个环节。但是对我来讲,有项目对于数据隐私保护这么上心,是我觉得非常开心的。

现在的互联网时代,时时刻刻在侵犯我们个人隐私、数据,甚至行为地下产业链。这对我来讲,是很恐慌的。

也欢迎大家来挑毛病,如果这个零知识证明的技术逻辑是成立的,那么我认为这一定是个必火的项目。

—-

编译者/作者:启力仔

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...