如何将交互式证明改造为非交互式?-ODAILY_BLU:SEA

原文作者:康水跃,FoxTechCEO;孟铉济,FoxTech首席科学家

前言

密码学当中的零知识证明技术在web3世界有着广泛的应用,包括进行隐私计算、zkRollup等等。其中Layer2项目FOX所使用的FOAKS就是一个零知识证明算法。在上述的一系列应用当中,对于零知识证明算法而言,有两方面属性极为重要,那就是算法的效率以及交互性。

算法效率的重要性不言而喻,高效的算法可以明显的降低系统运行时间,从而降低客户端延迟,显著的提高用户体验和效率,这也是FOAKS致力于实现线性证明时间的一个重要原因。

另一方面,从密码学的角度来讲,零知识证明系统的设计往往依赖证明者和验证者的多轮交互。例如在许多介绍零知识证明的科普文章当中都会使用的“零知识洞穴”的故事当中,证明的实现就依赖于阿里巴巴和记者多轮的信息传递交互才能实现。但是事实上,在许多应用场景当中,依赖交互会使得系统不再可用,或者极高的增加延迟。就像在zkRollup系统当中,我们期望证明者能够在本地,不依赖于和验证者交互的情况下就计算出正确的证明值。

从这个角度说,如何将交互式的零知识证明协议改造为非交互式,就是一个很有意义的问题。在这篇文章当中,我们将介绍FOX使用经典的Fiat-Shamir启发式来生成Brakedown中的挑战从而实现非交互式协议的过程。

密钥管理数字基础设施Hushmesh完成520万美元融资:8月3日消息,密钥管理数字基础设施Hushmesh宣布完成520万美元融资,Paladin Capital Group领投,Akamai Technologies参投。Hushmesh将利用这笔资金开发Mesh,这是一个内置自动化安全功能的全球信息空间,允许人们和组织在线操作,而不必担心恶意攻击或数据泄露。Hushmesh支持为个人和组织实体进行密钥管理服务并以加密方式统一标识符、别名、密钥和加密数据,可以解决Web3和区块链领域失去密钥访问权就丢失所有数据的问题,并降低数据泄露、身份盗用、以及假冒欺诈等风险。[2023/8/3 16:17:04]

零知识证明中的Challenge

零知识证明算法随着应用的铺开而变得异常火爆,近些年也诞生了包括FOAKS、Orion、zk-stark等在内的各种算法。这些算法,以及密码学界早期的sigma协议等的核心证明逻辑都是证明者先将某个值发送给验证者,验证者通过本地随机数产生一个挑战,将这个随机产生的挑战值发给证明者,证明者需要真的有知识才能以大概率做出通过验证者的响应。例如在零知识洞穴当中,记者抛一个硬币,告诉阿里巴巴从左侧出来还是从右侧出来,这里的“左和右”就是对阿里巴巴的挑战,他如果真的知道咒语,就一定可以从要求的方向走出来,否则就有一半的概率失败。

NEAR基金会与Kakao Games旗下Web3游戏METABORA SG达成合作:3月6日消息,NEAR基金会和Kakao Games旗下Web3游戏项目METABORA SINGAPORE(简称METABORA SG)签署了一份战略谅解备忘录。

根据协议条款,NEAR和METABORA SG将相互合作以发掘一个基于IP的全球Web3联合业务,通过跨链提高区块链生态系统的整体流动性,提高品牌知名度,通过赛事推动全球营销,建立一个积极的支持系统以加强核心网络。(PR Newswire)[2023/3/7 12:45:41]

这里我们注意到,Challenge的生成是一个很关键的步骤,它有两个要求,随机和不可被证明者预测。第一点,随机性保证了它的概率属性。第二点,如果证明者可以预测挑战值那就意味着协议的安全性被破坏了,证明者没有知识也可以通过验证,可以继续类比,阿里巴巴如果能预测记者要求他从哪边出来,他即使没有咒语也可以提前进入那一边,结果表现出来一样可以通过协议。

所以我们需要一种办法,能够让证明者自己本地生成这样一个不可预测的随机数,同时还能够被验证者验证,这样就可以实现非交互式的协议。

哈希函数

哈希函数的名字对我们来说或许并不陌生,无论是在比特币的共识协议POW当中担任挖矿的数学难题,还是压缩数据量,构造消息验证码等等,都有哈希函数的身影。而在上述不同的协议当中,其实是运用了哈希函数的各种不同性质。

Web3虚拟宠物游戏Tiny Rebel Games完成700万美元融资:3月3日消息,Web3 虚拟宠物游戏 Tiny Rebel Games 宣布完成 700 万美元融资,本轮融资由 Fabric Ventures 领投,Animoca Brands、Dapper Labs、SkyVision Capital、CMT Digital、Sfermion、Spin Master、分布式资本、a41 Ventures、Fourth Revolution Capital、6th Man Ventures、ReadyPlayerDAO、Double Peak Group、Pirata Capital Management、Triangle Capital 等参投,天使投资人包括 EA 执行副总裁 kristian segerstrale 等。

Web3 虚拟宠物游戏 Tiny Rebel Games 由 Petaverse Network 制作,本轮融资资金将用于加速其宠物元宇宙「Petaverse」计划,支持更多种类的数字宠物、建立更多品牌合作伙伴关系,并打造更好的游戏体验。[2022/3/4 13:36:00]

具体来讲,安全的哈希函数的性质包括以下几点:

压缩性:确定的哈希函数可以将任意长度的消息压缩成为固定长度。

Messari研究员:在第1.5阶段后,ETH的年通胀率将远远低于比特币:Messari研究员Ryan Watkins在推特上发文表示,以太坊经常因其“宽松”的货币政策而受到批评。然而,在第1.5阶段(以太坊1.x合并为以太坊2)之后,ETH的年通胀率很可能会降至1%以下,通货膨胀率将远远低于比特币。[2020/12/3 22:57:20]

有效性:给定输入x,计算输出h是容易的。

抗碰撞性:给定一个输入x1,希望找到另一个输入x2,x1x2,h=h,是困难的。

注意,如果哈希函数满足抗碰撞性,那么必然满足单向性,也就是说给定一个输出y,要找出x满足h=y是困难的。在密码学当中,还不能构造出理论上绝对满足单向性的函数,但是哈希函数在实际应用当中可以基本视作单向函数。

这样一来,可以发现上述的几种应用分别对应于哈希函数的几点不同的性质,同时我们说,哈希函数还有一个很重要的作用是提供随机性,虽然密码学理论当中要求的完美的随机数生成器目前也无法构造,但是哈希函数在实际当中同样可以充当这个角色,这就为我们后文介绍的Fiat-Shamir启发式的技巧提供了基础。

Fiat-Shamir启发式

事实上,Fiat-Shamir启发式就是利用哈希函数来对前面生成的脚本进行哈希运算,从而得到一个值,用这个值来充当挑战值。

ETC主网预计10月10日激活MESS方案:10月2日,Ethereum Classic Labs官方发文称,正在实施51%的攻击解决方案MESS(修正指数主观评分)。核心开发人员和社区成员已经接受MESS方案,且该方案已于9月28日在Mordor测试网上被成功激活,并通过了严格的压力测试和模拟攻击。与此同时,MESS方案在ETC主网的激活计划将在区块高度11380000处进行,预计时间为10月10日。该方案将作为一个核心geth配置,默认将在ETC主网v1.11.15及以上版本中设置。此外,官方提醒称,此次方案激活不是硬分叉,但未升级节点不会受到该方案的保护;MESS安全功能仅在Core-Geth客户端中可用。Hyperledger Besu及Multi-geth客户端暂未设置MESS安全功能,Besu团队正努力在未来添加这一特性。官方表示,不推荐使用Parity Ethereum、OpenEthereum和Geth-Classic客户端。注:ECIP-1100 MESS方案为网络安全提升了额外的指数难度,可帮助提升ETC网络安全性,抵御51%攻击。[2020/10/2]

因为将哈希函数H视作一个随机函数,挑战是均匀随机的被选择,独立于证明者的公开信息和承诺的。安全分析认为Alice不能预测H的输出,只能将其当作一个oracle。在这种情况下,Alice在不遵循协议的情况下做出正确响应的概率(特别是当她不知道必要的秘密时)与H的值域的大小成反比。

图1:利用Fiat-ShamirHeuristic实现非交互式证明

非交互式FOAKS

在本节,我们具体展示Fiat-Shamir启发式在FOAKS协议当中的应用,主要是用来产生Brakedown部分的挑战,从而实现非交互式的FOAKS。

首先我们看到,在Brakedown生成证明的步骤当中,需要挑战的步骤是“近似性检验”以及MerkleTree的证明部分。对于第一点原本的过程是证明者在这里需要验证者产生的一个随机向量,计算过程如下图所示:

图2:非交互证明FOAKS中的BrakedownChecks

现在我们使用哈希函数,让证明者自己产生这个随机向量。

令γ0=H(C1,R,r0,r1),对应的,在验证者的验证计算当中,也需要增加这个计算出γ0的步骤。根据这样的构造,可以发现,在生成承诺之前,证明者并不能提前预测挑战值,于是不能提前根据挑战值来对应的“作弊”,也就是对应的生成假的承诺值,同时,根据哈希函数输出的随机性,这个挑战值也满足随机性。

对于第二点,令?=H(C1,R,r0,r1,c1,y1,cγ0,yγ0)。

我们使用伪代码给出改造后非交互式的Brakedown多项式承诺当中的证明和验证函数,这也是FOAKS系统当中使用的函数。

functionPC.Commit(?):

Parsewasak×kmatrix.TheproverlocallycomputesthetensorcodeencodingC1,C2,C1isak×nmatrix,C2isan×nmatrix.

fori∈do

ComputetheMerkletreerootRoott=Merkle.Commit(C2)

ComputeaMerkletreerootR=Merkle.Commit(),andoutputRasthecommitment.

functionPC.Prover(?,X,R)

Theprovergeneratesarandomvectorγ0∈Fkbycomputing:γ0=H(C1,R,r0,r1)

Proximity:

Consistency:

Proversendsc1,y1,cγ0,yγ0totheverifier.

Provercomputesavector?aschallenge,inwhich?=H(C1,R,r0,r1,c1,y1,cγ0,yγ0)

foridx∈?do

ProversendsC1andtheMerkletreeproofofRootidxforC2underRtoverifier

functionPC.VERIFY_EVAL(ΠX,X,y=?(X),R)

Proximity:?idx∈?,Cγ0==<γ0,C1>andEc(yγ0)==Cγ0

Consistency:?idx∈?,C1==<γ0,C1>andEc(y1)==C1

y==<r1,y1>

?idx∈?,Ec(C1)isconsistentwithROOTidx,andROOTidx’sMerkletreeproofisvalid.

Outputacceptifallconditionsaboveholds.Otherwiseoutputreject.

结语

许多的零知识证明算法在设计之初都依赖证明者和验证者双方的交互,但是这种交互式证明协议不适合用在追求高效,网络通讯开销大的应用场景下,比如链上数据隐私保护和zkRollup等等。通过Fiat-Shamir启发式,可以在不破坏协议安全性的条件下让证明者本地生成随机数“挑战”,并且可以被证明者验证。根据这种方法,FOAKS同样实现了非交互式的证明,并应用在系统当中。

参考文献

1.Fiat,Amos;Shamir,Adi(1987)."HowToProveYourself:PracticalSolutionstoIdentificationandSignatureProblems".AdvancesinCryptology—CRYPTO'86.LectureNotesinComputerScience.SpringerBerlinHeidelberg.263:186–194.doi:10.1007/3-540-47721-7_12.ISBN978-3-540-18047-0.

2.https://www.cnblogs.com/zhuowangy2k/p/12246575.html

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:62ms0-4:240ms