zkSNARK-密码学基础本节主要讲解zkSNARK涉及到的密码学知识。因为上一部分介绍的,证明者知道一些值,可能会恶意伪造证明。所以我们需要考虑在不破坏协议的前提下,对某些值能够进行模糊计算操作。同态加密同态加密的目的允许对一个值进行加密,并能够对这种加密进行算术运算。实现加密同态性的方法有很多种,我们将简要介绍一种简单的方法。这里我们选一个基数去加密我们设计的明文,例如,我们设基数为5,去加密一个数字5:53=1255^3=12553=125,因此,125就是明文3加密的结果。模运算:amodb:设a,b∈Za,b\in\mathbb{Z}a,b∈Z且b>0b>0b>0,如果q,r∈Zq,
zkSNARK-密码学基础本节接着上一节继续讲零知识因为验证者可能从证明者发送的信息抽取关于多项式p(x)p(x)p(x)的更多信息,让我们考虑证明者提供的信息:gp,gp′,ghg^p,g^{p'},g^hgp,gp′,gh。主要做的验证:gp=(gh)t(s),(gp)α=gp′g^p=(g^h)^{t(s)},(g^p)^{\alpha}=g^{p'}gp=(gh)t(s),(gp)α=gp′。这个问题是我们怎么进行有效的验证,信息还不被抽取呢?一个问答是:我们使用一个随机数δ\deltaδ偏移这些值,例如:(gp)δ(g^p)^{\delta}(gp)δ。现在,为了抽取这个知识,需要找
第十章文章目录第十章一、区块链的隐私问题1、化名和匿名2、去匿名攻击:交易表分析二、零钞:基于zkSNARK的完美混币池1、零知识证明2、零钞的运行原理三、Hawk:保护合约数据私密性四、Coco框架1、TEE环境简介五、以太坊隐私保护技术路线:BabyZoe一、区块链的隐私问题1、化名和匿名所谓化名就是我们在网络中使用的一个与真实身份无关的身份,在比特币或者以太坊紫彤的交易中,使用者使用公钥散列值作为交易地址。因此区块链中的交易具有化名性。匿名:指的是具备无关联性(unlinkability)。由于用户反复使用公钥散列值作为交易标识,交易之间显然能建立关联。所以不具有匿名性。2、去匿名攻击:
非交互式零知识证明本节主要介绍一种新的零知识证明-zkSNARKzkSNARKzkSNARK,zkSNARK:zero−knowledgeSuccinctNon−InteractiveArgumentsofKnowledgezkSNARK:zero-knowledgeSuccinctNon-InteractiveArgumentsofKnowledgezkSNARK:zero−knowledgeSuccinctNon−InteractiveArgumentsofKnowledge。背景zkSNARKzkSNARKzkSNARK是零知识证明中最经典的加密算法体系。目前已经被应用在很多地方,特别是