首页 / 专利库 / 银行与财务事项 / 加密货币地址 / 一种具有隐私保护功能的区块链模型

一种具有隐私保护功能的链模型

阅读:115发布:2020-06-05

专利汇可以提供一种具有隐私保护功能的链模型专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种具有隐私保护功能的 区 块 链 模型,由最小信任度管理员、私人部分、公共部分组成;最小信任度管理员用于协助交易的进行;私人部分用于定义参与交易的各方的输入信息以及对这些信息的发送和接收,定义交易过程中的相关计算以及交易过程中相关数据的验证;公共部分用于保证交易的公平进行;在 加密 货币 基础 上,采用分布式匿名机制、零知识证明、超时惩罚和封装方法,构建区块链。这种具有隐私保护功能的货币的生成、使用以及转换成基础货币都依靠zk‑SNARK实现对相关密文形式的数据进行验证,这样用户可以保证在不泄露用户信息的情况下实现数据的验证。,下面是一种具有隐私保护功能的链模型专利的具体信息内容。

1.一种具有隐私保护功能的链模型,其特征在于:由最小信任度管理员、私人部分、公共部分组成;
所述最小信任度管理员用于协助交易的进行;所述私人部分用于定义参与交易的各方的输入信息以及对这些信息的发送和接收,定义交易过程中的相关计算以及交易过程中相关数据的验证;所述公共部分用于保证交易的公平进行;
加密货币基础上,采用分布式匿名机制、零知识证明、超时惩罚和封装方法,构建区块链。
2.根据权利要求1所述的具有隐私保护功能的区块链模型,其特征在于:所述最小信任度管理员用于协助交易的进行,在每次交易中,最小信任度管理员均保持以下原则:
原则1:所有参与交易的用户把自己参与此次交易要使用的货币都冻结到这个交易程序中,由最小信任度管理员进行相关计算来决定这些货币该如何重新分配,分配前后货币的总价值量保持一致;
原则2:最小信任度管理员能够看到所有交易参与者的输入,并且不会泄露这些用户的输入数据;
原则2:最小信任度管理员由区块链网络中的其他节点担任,这些节点“竞争上岗”,最后担任最小信任度管理员的节点要支付一定的保证金,若在交易进行过程中由于该最小信任度管理员的问题使交易提前终止,这个保证金不予退还,若是交易圆满完成,该最小信任度管理员不仅可以拿回他的保证金,同时还会得到一定的奖励。
3.根据权利要求1所述的具有隐私保护功能的区块链模型,其特征在于:所述私人部分用于定义参与交易的各方的输入信息以及对这些信息的发送和接收,以及交易过程中的相关计算以及交易过程中相关数据的验证;包括冻结操作、计算操作、结束操作,这三种操作都是针对用户的私人账本中的货币;
所述冻结操作允许用户像提交数据那样提交自己所拥有的货币,当交易开始时,参与此次交易的用户调用冻结操作提交货币,提交的货币从用户的私人账户中扣除并被冻结到交易程序中;
所述计算操作赋予最小信任度管理员查看相关数据及进行计算的权利,当某个用户调用计算操作后,这个用户的输入数据和提交的货币量就会对这个最小信任度管理员公开,这个最小信任度管理员根据这些数据进行交易中的计算从而得出这些货币应该如何重新分配;
所述结束操作允许最小信任度管理员向区块链网络中的其他节点提交自己的计算结果,最小信任度管理员完成计算后调用结束操作向区块链提交计算结果,经过验证之后,根据计算结果对冻结货币进行重新分配,将其重新存入各个用户的私人账户中。
4.根据权利要求1所述的具有隐私保护功能的区块链模型,其特征在于:所述公共部分用于保证交易的公平进行,不能访问私人部分的数据,并且这一部分的内容是全网可见的;
通过自定义超时惩罚措施对“违法”用户进行经济制裁,剥夺其部分资产,将其分配给其他参与交易的诚实用户。
5.根据权利要求4所述的具有隐私保护功能的区块链模型,其特征在于:所述自定义超时惩罚措施,首先定义三个超时的时间节点:T1、T2和T3,所述T1表示用户向最小信任度管理员M提交数据的截止时间,T2表示用户冻结自己交易货币的截止时间;T3表示最小信任度管理M完成计算以及货币的重新分配的时间,T16.根据权利要求1-5任意一项所述的具有隐私保护功能的区块链模型,其特征在于:所述分布式匿名机制,就是每个用户自己为自己提供匿名保护,包括新型的货币表示方式、货币所属者的地址表示方法、两种交易形式以及一种零知识证明;
所述新型的货币表示方式c:=(cm(c),v(c),p(c),addrpk(c),r,s),其中,cm表示货币在公共账本中对应的记录值;v表示货币的价值量;p表示货币的所属者的假名,用来生成货币的序列号sn;addrpk表示货币所属者地址的公钥;r和s表示陷参数;
所述货币所属者的地址表示方法,采用密钥对的形式表示用户的地址:(addrpk,addrsk),其中addrpk:=(apk,pkenc),apk和ask是用来对用户假名进行保护的一对密钥对,pkenc和skenc是用来完成零知识证明的一对密钥对,addrpk是公开的,其他用户可以使用这个密钥向用户进行直接的支付,addrsk:=(ask,skenc),addrsk由用户自己保存,它允许它的所有者接收发送到addrpk上的资金;用户可以生成任意的地址密钥对,且一个用户可持有一个或多个地址密钥对;
所述两种交易形式包括“挖掘”交易和“倾倒”交易,其中“挖掘”交易允许用户生成一个新的货币c:=(cm(c),v(c),p(c),addrpk(c),r,s);“倾倒”交易允许用户对货币进行转移、拆分以及合并;
所述一种零知识证明,首先构建算法回路CPOUR;接着生成密钥对(pk,vk)其中证明密钥pk允许任何证明者生成一个零知识证明π,其他人用验证密钥vk来验证这个证明π。
7.根据权利要求6所述的具有隐私保护功能的区块链模型,其特征在于:所述“挖掘”交易,记为txmint:=(cm,v,*),其中,cm表示交易所涉及的货币在公共账本中的记录值;v表示货币的价值量;*表示可选项,用来备注其他执行依赖信息。
8.根据权利要求6所述的具有隐私保护功能的区块链模型,其特征在于:所述“倾倒”交易,记为txpour:=(rt,sn1old,sn2old,cm1new,cm1new,vpub,info,*),其中rt是货币记录值表CMList构成的Merkle树的根节点在交易开始之前的值;sn1old、sn2old是两种原始货币的序列号;cm1new、cm1new是生成的两种货币在公共账本中的记录值;vpub表示要转换成基础货币的价值;info是任意的字符串,用来表示vpub的目标;*表示其他执行依赖信息。

说明书全文

一种具有隐私保护功能的链模型

技术领域

[0001] 本发明属于计算机信息安全技术领域,涉及一种具有隐私保护功能的区块链模型,具体涉及隐私保护功能的实现以及区块验证的问题。

背景技术

[0002] 随着互联网技术的发展,信息的去中心化已经得到普及,于是人们便将目光投向了价值的去中心化,所谓价值的去中心化,是指在价值流通(主要是金融交易)的过程中,交易双方直接进行价值的交换,而不需要第三方的介入,这样就可以免去由于引入第三方而带来的昂贵的法律费用和交易成本。而区块链技术的出现则为实现价值的去中心化提供了可能。
[0003] 区块链是由区块链网络中所有节点共同参与维持一个去中心化的分布式数据库系统,它是由一系列基于密码学方法产生的数据块组成,每个数据块被称作一个区块,这些区块按照产生的先后被有序地链接在一条链上,这个链就是区块链。区块链技术解决了价值的去中心中两个重要的问题,即双重支付问题和拜占庭将军问题。双重支付问题是指利用货币的数字特性两次或多次使用同一笔钱完成交易,在传统的金融交易中,由于有可信的第三方中心机构来保证,可以很好地避免这个问题,区块链技术通过分布式节点的验证和共识机制解决了去中心化系统中的双重支付问题。拜占庭将军问题是指在缺少可信任的中心节点的情况下,分布式节点如何达成共识和建立互信。区块链通过分布式共识算法和数字加密技术实现了在无需信任单个节点的情况下构建一个去中心化的可信系统。区块链技术的核心优势就是去中心化,能够运用数据加密、时间戳、分布式共识和经济激励等手段,在节点无需相互信任的分布式系统中实现可信的点对点交易,从而实现价值的去中心化。
[0004] 如今,基于区块链的应用大多依靠区块链来保证安全性和可行性,但是由于区块链本身的验证机制和共识机制,很多信息不得不以明文的形式暴露在区块链上,这与用户对于信息隐私保护的希望相违背,同时也为攻击者窃取用户信息,攻击用户提供了可能。尽管有些应用提供了假名机制来为用户提供隐私性的保护,但是研究已经证明,攻击者能够通过暴露在区块链上的信息追踪到用户的真实身份。除了假名机制外,有些应用还通过提供一种混淆机制来增加假名的不可区分性,这种混淆机制依靠一个可信的第三方来实现,这个可信的第三方被称作“混淆者”。这个“混淆者”每隔一段时间会对这段时间内出现在区块链网络中的大量交易记录的打乱重排以实现假名的不可区分性,从而保证用户在很长一段时间后从矿池中收取的货币不会被其他人追踪到。但是这个混淆机制是针对一个区块中交易记录打乱重排,有研究已经证明,攻击者可以通过对交易图谱的分析来还原出原有的交易记录排序从而实现对用户真实身份的追踪,而且这种混淆机制还有很多方面的缺陷:(1)从货币存入账户到确认货币不会被其他人追踪到的这个时间间隔必须足够长以保证交易历史被充分地混淆;(2)“混淆者”仍然可以追踪到用户的货币或者将自己知道的信息透露给攻击者;(3)“混淆者”有可能私吞货币。

发明内容

[0005] 为了解决上述的技术问题,本发明提出了一种建立在现有的加密货币(基础货币)的基础之上通过分布式匿名机制来保证用户隐私并采用零知识证明进行数据校验的区块链模型。
[0006] 本发明所采用的技术方案是:一种具有隐私保护功能的区块链模型,其特征在于:由最小信任度管理员、私人部分、公共部分组成;
[0007] 所述最小信任度管理员用于协助交易的进行;所述私人部分用于定义参与交易的各方的输入信息以及对这些信息的发送和接收,定义交易过程中的相关计算以及交易过程中相关数据的验证;所述公共部分用于保证交易的公平进行;
[0008] 在加密货币基础上,采用分布式匿名机制、零知识证明、超时惩罚和封装方法,构建区块链。
[0009] 本发明的有益效果为:可以为用户提供隐私性的保护,在之前的基于区块链的加密货币中,尽管提供假名机制为用户提供隐私性保护,但是有研究已经证明可以通过分析用户的交易图谱(这一部分包含交易量和交易时间等信息且全网可见)逆向解码出用户的真实身份,而本发明采用了一种全新的加密机制可以有效地抵抗这种攻击方式从而为用户提供隐私性的保护。

具体实施方式

[0010] 为了便于本领域普通技术人员理解和实施本发明,下面结合实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
[0011] 本发明提供的一种建立在现有的加密货币(基础货币)的基础之上通过分布式匿名机制来保证用户隐私并采用零知识证明进行数据校验的区块链模型,这个模型分为三个部分——最小信任度管理员、私人部分、公共部分,其核心为分布式匿名机制。
[0012] 最小信任度管理员用来协助交易的进行。在每次交易中,所有参与交易的用户把自己参与此次交易要使用的货币都冻结到这个交易程序中,由这个最小信任度管理员进行相关计算来决定这些货币该如何重新分配,当然,分配前后货币的总价值量保持一致。这个最小信任度管理员能够看到所有交易参与者的输入,并且不会泄露这些用户的输入数据。这个最小信任度管理员由区块链网络中的其他节点担任,这些节点采用类似工作量证明的方法来“竞争上岗”,最后担任最小信任度管理员的节点要支付一定的保证金,若在交易进行过程中由于该最小信任度管理员的问题使交易提前终止,这个保证金不予退还,若是交易圆满完成,该最小信任度管理员不仅可以拿回他的保证金,同时还会得到一定的奖励。也就是说,对于每次交易的进行,都会产生一个最小信任度管理员,而这个最小信任度管理员不等同于一个可信的第三方,因为他可能与某个交易参与者合谋进行资产盗窃,或者是提前终止交易,所以为了保证交易的公平性,要对这个最小信任度管理员收取一定的保证金之后才能确认他不会妨害交易的进行,尽管如此,这个最小信任度管理员也不需要提供或者维持交易的安全性和隐私性,他只是一个推进交易进行的“催化剂”。
[0013] 私人部分用来定义参与交易的各方的输入信息以及对这些信息的发送和接收,以及交易过程中的相关计算以及交易过程中相关数据的验证。这一部分主要涉及三种操作——冻结操作(freeze),计算操作(compute),结束操作(finalize),这三种操作都是针对用户的私人账本中的货币。冻结操作允许用户像提交数据那样提交自己所拥有的货币,当交易开始时,参与此次交易的用户调用冻结操作提交货币,提交的货币从用户的私人账户中扣除并被冻结到交易程序中。计算操作赋予最小信任度管理员查看相关数据及进行计算的权利,当某个用户调用计算操作后,这个用户的输入数据和提交的货币量就会对这个最小信任度管理员公开,这个最小信任度管理员就可以根据这些数据进行交易中的计算从而得出这些货币应该如何重新分配。结束操作允许最小信任度管理员向区块链网络中的其他节点提交自己的计算结果,最小信任度管理员完成计算后调用结束操作向区块链提交计算结果,经过验证之后,根据计算结果对冻结货币进行重新分配,将其重新存入各个用户的私人账户中。
[0014] 公共部分用于保证交易的公平进行。假设交易的每个参与者都是自私的,他们会尽可能地去为自己谋求最大利益,有时甚至会进行一些“违法”的操作,如提前终止交易进行以免除付款操作等。为此,必须要有相应的措施对这些非法操作进行制裁。本实施例通过对“违法”用户进行经济制裁,剥夺其部分资产,将其分配给其他参与交易的诚实用户。在这个模型中,还有一个最小信任度管理员,本实施例通过让其缴纳保证金的形式“参与”到此次交易中,并在其做出“违法”行为时没收其保证金分配给其他诚实的交易参与者。
[0015] 分布式匿名机制,包括新型的货币表示方式、货币所属者的地址表示方法、两种新的交易形式以及一种零知识证明;其不同于现有的区块链技术依靠一个可信方通过对交易记录的打乱重排来实现匿名,所谓分布式匿名就是每个用户自己为自己提供匿名保护。这种机制是建立在基础货币(如比特币)的基础上的一种隐私保护机制。由于执行这种机制的时空开销相对于基础货币来说较大,所以日常交易还是要通过基础货币来进行,但一些涉及隐私的操作就要先采用分布式匿名机制以保证隐私,再通过其他方法将货币转换成基础货币。该机制中涉及如下数据结构和算法:
[0016] 1.数据结构;
[0017] 公共账本(public ledger)。用L表示。区块链维持一个公共账本,记录了当前时间下全网发生的所有交易的信息,这些信息包括交易类型、参与交易的用户的地址、交易中涉及到的钱币的序列号以及记录值。对于给定时间T,所有用户都可以获取到发生在时间T之前的交易记录LT。这个公共账本只能添加,即对于T’>T,则有LT是LT’的子集。
[0018] 私人账本。记为coins。每个用户维持一个私人账本用来记录通过分布式匿名机制生成的具有隐私保护功能的货币。
[0019] 公共参数(public parameters)。记为pp。包括用来进行零知识证明的密钥对(pkPOUR,vkPOUR)以及用来进行数字签名的密钥对(ppenc,ppsig)。所有用户均可访问
[0020] 地址(address)。每个用户至少生成一对地址密钥对(addrpk,addrsk),其中addrpk:=(apk,pkenc),它是公开的,其他用户可以使用这个密钥向它的所有者进行直接的支付;
addrsk:=(ask,skenc)由用户自己保存,它允许它的所有者接收发送到addrpk上的资金。另外,用户可以生成任意的地址密钥对;其中apk和ask是用来对用户假名进行保护的一对密钥对,pkenc和skenc是用来完成零知识证明的一对密钥对。
[0021] 钱币(coins),记为c:=(cm(c),v(c),p(c),addrpk(c),other)。这是一个结构体,用来表示通过DAT生成的具有隐私保护功能的钱币,其中包含了如下一些数据:钱币在公共账本L中对应的记录值cm;钱币的价值量v;钱币的所属者的假名(用来生成钱币的序列号sn);钱币所属者地址的公钥addrpk;other表示一些陷参数。每个用户所有的c的集合构成了用户的私人账本coins。
[0022] 两种新的交易形式:(1)“挖掘”交易(mint),记为txmint:=(cm,v,*)。这也是一个结构体类型的数据,包含如下数据:交易所涉及的钱币在公共账本中的记录值cm;钱币的价值量v。除此之外还有一个可选项*,用来备注其他执行依赖信息,比如一些数据或者是陷门old old new new参数等;(2)“倾倒”交易(pour),记为txpour:=(rt,sn1 ,sn2 ,cm1 ,cm1 ,vpub,info,*)。
同样的,它也是一个结构体,包括如下数据:rt是货币记录值表(CMList)构成的Merkle树的根节点在交易开始之前的值;sn1old,sn2old是两种原始货币的序列号;cm1new,cm1new是生成的两种货币在公共账本中的记录值;vpub表示要转换成基础货币的价值;info是任意的字符串,用来指示一些信息,一般用来表示vpub的目标;*表示其他一些执行依赖信息,如数字签名、零知识证明信息等。
[0023] 两种记录信息。对于给定的时间T,可以获取到如下两种记录信息:(1)CMListT表示在时间T时,公共账本中所有的与“挖掘”交易和“倾倒”交易有关的钱币的记录值cm。也就是说,货币记录值表是通过“挖掘”交易和“倾倒”交易生成的钱币的记录值的集合;(2)货币序列号表(SNListT)表示在时间T时,LT中所有出现在“倾倒”交易中的钱币的序列号sn。也就是说,货币序列号表是通过“倾倒”交易花费的钱币的序列号的集合。
[0024] 2.算法;
[0025] 初始化(Setup)。Setup用来生成一系列公共参数以实现一次交易中某些参数的初始化。输入包括一个安全参数λ;输出包括一系列公共参数pp。在分布式匿名机制启动时,一个可信方执行Setup算法用来生成一系列可以被所用用户访问的公共参数。这个操作只在分布式匿名机制启动时被执行一次,之后不再执行。
[0026] 创建交易地址。CreatAddress用来生成一对密钥对,用来代表一个地址。输入包括公共参数pp;输出包括表示地址的密钥对(addrpk,addrsk)。每个用户至少可以生成一个地址对用来完成支付和收款。addrpk:=(apk,pkenc)是公开的,其他用户可以使用它来完成对改地址所属用户的支付,addrsk:=(ask,skenc)是保密的,由用户自己保存,用来接收其他用户支付到addrpk的货款。另外,这个地址对可以是任意的,不需要同其他用户进行协商。
[0027] 发掘新钱币(Mint)。用户通过“挖矿”发现一个新的货币(coin)后,调用“挖掘”交易生成这个货币并产生一个“挖掘”交易记录。输入包括公共参数pp、货币的价值量v∈{0,1,2,…,vmax}、coin所属用户的公钥addrpk;输出包括价值为v的钱币c:=(cm(c),v(c),p(c),addrpk(c),other)和一条“挖掘”交易记录txmint:=(cm(c),v(c),*)。当用户发现一个新的钱币时,不是直接生成基础货币,而是先生成一种能够保证用户匿名性的货币,在通过验证之后将其存放在用户的私人账本中,然后在适当的时候在转换成基础货币。vmax表示系统设定的一个钱币允许的最大价值。
[0028] 消费钱币(Pour)。“倾倒”交易将输入钱币转换成新的输出钱币,输入钱币就可以作为开销。同时“倾倒”交易操作可以实现钱币的合并、拆分以及转换成基础货币。输入包括公共参数pp、基于货币记录值表的Merkle树的根节点值rt、原始钱币c1old,c2old、原始钱币所属用户的地址的私钥addrsk,1old,addrsk,2old、从cm(c1old)和cm(c2old)到根节点的路径P1,P2、新的钱币的价值量v1new,v2new、新钱币所属的地址的公钥addrpk,1new,addrpk,2new、要转换成基础货币的值vpub、交易备注信息info(可选);
[0029] 输出包括新的钱币c1new,c2new;pour交易记录txpour。Pour算法将两个不同的钱币c1old,c2old作为输入,并输入一个基于货币记录值表的Merkle树的根节点来验证这两个值的正确性和可用性,同时为了提高验证效率,输入c1old和c2old到根节点的可信路径P1,P2。v1new和v2new用来指定输出钱币的价值量,vpub表示要转换成基础货币的价值,也就是说v1new+v2new+vpub=v1old+v2old,而addrpk,1new,addrpk,2new分别表示接收这两个钱币的地址,info用来指定vpub的目标。通过对这些变量赋予一些特殊值(如0)可以实现货币的组合,拆分,转移等。
[0030] 交易验证。VerityTransaction用来验证交易的有效性。输入包括公共参数pp、一个“挖掘”或“倾倒”交易记录tx、当前的公共账本L;输出包括一个比特信息,为1表示验证结果为有效,否则验证结果为无效。“挖掘”交易或“倾倒”交易必须在被记录之前进行验证,确认这个交易过程是正确的。验证操作可以被区块链网络中的所有节点执行。
[0031] 收款。Receive允许用户扫描公共账本,接收与自己私钥相匹配的钱币。输入包括调用者的地址密钥对(addrpk,addrsk)、当前时间下的公共账本L;输出包括可接收钱币的集合。Receive操作只用来接收那些通过“倾倒”交易的方式发送到用户addrpk上的钱币,而对于用户自己通过Mint方式生成的钱币则不予理会。当一个地址为(addrpk,addrsk)的用户想接收支付到该地址的货款时,调用Receive遍历L中的“倾倒”交易,输出那些地址为addrpk并且还没有被使用的钱币,换句话说,就是扫描L中的“倾倒”交易,记录其中出现钱币的记录值并筛选出序列号没有出现在L中的钱币予以输出。
[0032] 以下是本实施例的算法具体流程:
[0033] Freeze:
[0034] 交易的参与者u想要使用c∈coins进行交易,设u的地址为(addrpku,addrsku),最小信任度的管理员的地址为(addrpkM,addrskM),具体操作如下:
[0035] (1)SetC:=Eenc(pkencM,(v,p,r,s))
[0036] (2)生成(pksig,sksig):=Ksig(ppsig)
[0037] (3)hsig:=HASH(pksig)
[0038] (4)h:=PRFsk(u)(hsig)
[0039] (5)Setx:=(rt,snu,hsig,h)
[0040] (6)Set a:=(path,c,addrsku)
[0041] (7)π:=Prove(pkPOUR,x,a)
[0042] (8)Set m:=(x,π,C)
[0043] (9)ρ:=Ssig(sksig,m)
[0044] (10)发送(x,π,m,ρ,pksig)给最小信任度的管理员M
[0045] (11)对c进行冻结
[0046] 参与交易的所有用户共同维持一个交易池,每个用户使用pour操作将钱转移到这个交易池中。每个交易池对用户提交coin的sn进行记录。
[0047] Compute:
[0048] 最小信任度的管理员M维持一个字典(key,value),其中key:=addrpku,value表示用户u提交的钱币的价值量。M收到u发来的消息后首先进行校验:
[0049] (1)如果rt在公共账本L中没有记录,在字典中加入(addrpku,0)
[0050] (2)M检查交易池,如果交易池中找不到匹配的sn,在字典中加入(addrpku,0)[0051] (3)计算hsig:=HASH(pksig)
[0052] (4)计算b:=Vsig(pksig,m,ρ)
[0053] (5)计算b’:=Verify(vkPOUR,x,π)
[0054] (6)如果b&b’==1,则在字典中加入(addrpku,v);否则加入(addrpku,0)
[0055] 然后M安装合约中约定好的方法计算,对价值进行重新分配,并更新字典。
[0056] Finalize:
[0057] M将计算结果的零知识证明发送给区块链让全网节点进行验证,验证成功后M按照计算结果使用pour操作对交易池中的货币进行重新分配。
[0058] Setup
[0059] ·INPUT:安全参数λ
[0060] ·OUTPUT:公共参数pp
[0061] 1)在安全参数λ的参与下为POUR构建CPOUR
[0062] 2)(pkPOUR,vkPOUR):=KeyGen(1λ,CPOUR)
[0063] 3)ppenc:=Genc(1λ)
[0064] 4)ppsig:=Gsig(1λ)
[0065] 5)pp:=(pkPOUR,vkPOUR,ppenc,ppsig)
[0066] 6)输出pp
[0067] CreatAddress
[0068] ·INPUT:公共参数pp
[0069] ·OUTPUT:地址密钥对(addrpk,addrsk)
[0070] 1)(pkenc,skenc):=Kenc(ppenc)
[0071] 2)随机采样一个PRF的种子ask
[0072] 3)apk:=PRFask(0)
[0073] 4)addrpk:=(apk,pkenc)
[0074] 5)addrsk:=(ask,skenc)
[0075] 6)输出(addrpk,addrsk)
[0076] Mint
[0077] ·INPUT:
[0078] -公共参数pp
[0079] -coin的价值量v∈{0,1,2,…,vmax}
[0080] -coin所属用户的公钥addrpk
[0081] ·OUTPUT:价值为v的钱币c和一条mint记录txmint
[0082] 1)解析addrpk,还原出(apk,pkenc)
[0083] 2)随机采样一个PRF种子p作为假名
[0084] 3)随机选取两个COMM陷门r,s
[0085] 4)k:=COMMr(apk||p)
[0086] 5)cm:=COMMs(v||k)
[0087] 6)Set c:=(cm,p,v,addrpk,r,s)
[0088] 7)Set txmint:=(cm,v,*),其中*:=(k,s)
[0089] 8)输出c和txmint
[0090] Pour
[0091] ·INPUT:
[0092] -公共数据pp
[0093] -基于CMList的Merkle树的根节点值rt
[0094] -原始钱币c1old,c2old
[0095] -原始钱币所属用户的地址的私钥addrsk,1old,addrsk,2old
[0096] -从cm(c1old)和cm(c2old)到根节点的路径Path1,Path2
[0097] -新的钱币的价值量v1new,v2new
[0098] -新钱币所属的地址的公钥addrpk,1new,addrpk,2new
[0099] -交易备注信息info(可选)
[0100] ·OUTPUT:新的钱币c1new,c2new和一条pour记录txpour
[0101] 1)for i in{1,2}
[0102] a)解析ciold,还原出(addrpk,iold,viold,piold,riold,siold,cmiold)
[0103] b)解析addrsk,iold,还原出(ask,iold,skenc,iold)
[0104] c)sniold:=PRFask,I(piold)
[0105] d)解析addrpk,iold,还原出(apk,iold,pkenc,iold)
[0106] e)随机选取一个PRF种子pinew
[0107] f)随机选取两个COMM陷门rinew,sinew
[0108] g)kinew:=COMMr(addrpk,inew||pinew),r:=rinew
[0109] h)cminew:=COMMs(vinew||kinew),s:=sinew
[0110] i)Set cinew:=(cminew,pinew,vinew,addrpk,inew,rinew,sinew)
[0111] j)Set Ci:=Eenc(pkenc,inew,(pinew,vinew,rinew,sinew))
[0112] 2)生成(pksig,sksig):=Ksig(ppsig)
[0113] 3)hsig:=HASH(pksig)
[0114] 4)h1:=PRFask,1(hsig),h2:=PRFask,2(hsig)
[0115] 5)Setx:=(rt,sn1old,sn2old,cm1new,cm2new,hsig,h1,h2)
[0116] 6)Set a:=(path1,path2,c1old,c2old,addrsk,1old,addrsk,2old,c1new,c2new)[0117] 7)πPOUR:=Prove(pkPOUR,x,a)
[0118] 8)Set m:=(x,πPOUR,info,C1,C2)
[0119] 9)ρ:=Ssig(sksig,m)
[0120] 10)Set txpour:=(rt,sn1old,sn2old,cm1new,cm2new,info,*),其中*:=(pksig,h1,h2,πPOUR,C1,C2,ρ)
[0121] 11)输出c1new,c2new和txpour
[0122] VerifyTransaction
[0123] ·INPUT:
[0124] -公共参数pp
[0125] -一个mint或pour交易记录tx
[0126] -当前的公共账本L
[0127] ·OUTPUT:一个比特信息,为1表示有效,否则无效
[0128] 1)如果tx==txmint
[0129] a)解析txmint,还原出(cm,v,*),其中*:=(k,s)
[0130] b)Set cm’:=COMMS(v||k)
[0131] c)如果cm’==cm,输出b:=1;否则输出:=0
[0132] 2)如果tx==txpour
[0133] a)解析txpour,还原出(rt,sn1old,sn2old,cm1new,cm2new,info,*),其中*:=(pksig,h1,h2,πPOUR,C1,C2,ρ)
[0134] b)如果sn1old或者sn2old在L中有记录,或者sn1old==sn2old,则输出b:=0[0135] c)如果rt在L中没有记录,则输出b:=0
[0136] d)hsig:=HASH(pksig)
[0137] e)Set x:=(rt,sn1old,sn2old,cm1new,cm2new,hsig,h1,h2)
[0138] f)Set m:=(x,πPOUR,info,C1,C2)
[0139] g)b:=Vsig(pksig,m,ρ)
[0140] h)b’:=Verify(vkPOUR,x,πPOUR)
[0141] i)输出b&b’
[0142] Receive
[0143] ·INPUT:
[0144] -公共参数pp
[0145] -调用者的地址密钥对(addrpk,addrsk)
[0146] -当前时间下的公共账本L
[0147] ·OUTPUT:可接收钱币的集合
[0148] 1)解析addrpk,还原出(apk,pkenc)
[0149] 2)解析addrsk,还原出(ask,skenc)
[0150] 3)对公共账本上的每一条pour交易:
[0151] a)解析txpour,还原出(rt,sn1old,sn2old,cm1new,cm2new,info,*),其中*:=(pksig,h1,h2,πPOUR,C1,C2,ρ)
[0152] b)for i in{1,2}
[0153] I)(vi,pi,ri,si):=Denc(skenc,Ci)
[0154] II)如果Denc的输出不为空,验证:sni在公共账本中没有记录以及cminew==COMMs(vi||COMMr(apk||pi))
[0155] 如果上一步的校验通过,则输出ci:=(addrpk,vi,pi,ri,si,cminew)。
[0156] 本发明具有以下有益效果:
[0157] 1.钱币所有者的匿名性;
[0158] COMM表示一种统计隐藏的非交互式提交方法,具体来说就是对于给定的随机数r以及消息m,c:=COMMr(m)表示要记录的信息。
[0159] 简单来说,当一个新的钱币产出时(通过“倾倒”操作),它的所有者u采样一个随机序列号sn以及一个陷门r,计算出要记录在公共账本上的信息cm:=COMMr(sn)并令c:=(cm(c),r(c),sn(c))。同时,一个对应的“倾倒”交易记录txmint(包含cm,但不包含sn或r)被记录在公共账本L中。
[0160] 当u想要使用c时,发送一个消息到区块链,这个消息中包含c的序列号sn以及一个关于“我知道cm:=COMMr(sn)中的r”的零知识证明π,这样其他节点在不知道u的身份的情况下就可以确认u确实拥有c。
[0161] 2.直接匿名支付;
[0162] 当一个用户uA把一个钱币c:=(cm(c),r(c),sn(c))转移给用户uB后,uA仍然知道c的序列号以及cm(c)的陷门,换句话说,uA仍然可以使用c,而且当uB使用c时,uA就知道是uB在进行交易,这样就无法保证uB的匿名性,因此对原有的数据形式进行了改进。PRFx(·)表示以x为种子的匿名随机函数。
[0163] 为了确定付款目标,每个账户(一个用户可以有多个账户)都要有一个唯一标识,本实施例用密钥对的形式来表示这个唯一标识,称作该账户的地址。用户u按如下方式产生地址密钥对:随机生成ask,然后生成apk:=PRFask(0)。于是对c:=(cm(c),r(c),sn(c))做如下扩展:当用户u发现一个新的钱币时,随机生成p(可以作为交易时的假名使用),计算sn:=PRFask(p),然后计算k:=COMMr(apk||p)以及cm:=COMMs(v||k),因此c:=(cm,p,v,apk,r,s)、txmint:=(cm,v,k,s)。很显然,任何人都可以验证txmint中的cm所表示的c的价值确实为v,但是无法获取apk以及sn。
[0164] “倾倒”交易是用来实现钱币支付的操作,它以某些钱币作为输入,以另外一些具有相同价值的新的钱币作为输出,这样就保证了当uA把一个钱币c转移给用户uB后,uA不知道新的钱币c’的sn,他也无法使用c’。具体来说,其实现过程如下:假设用户u有地址密钥对(askold,apkold),他想要使用cold:=(apkold,vold,pold,rold,sold,cmold),u调用“倾倒”操作之后生成两个新的钱币c1new和c2new,它们的地址公钥分别为apk,1new,apk,2new(apk,1new,apk,2new可能属于u或者属于其他用户)。c1new和c2new的生成方法与Mint操作中生成新钱币的方法一样。假设u不知道与apk,1new相匹配的ask,1new,u就无法使用c1new,因为他无法证明他是c1new的拥有者;同样,当另外一个用户u’(他知道ask,1new)试图使用c1new进行消费时,u也无法对其进行追中,因为u不知道任何关于c1new的序列号sn1new的信息。
[0165] 3.钱币转移;
[0166] u通过调用“倾倒”操作产生了两新的钱币c1new和c2new,假设apk,1new是u1的地址公钥,为了使u1能够真正使用c1new,u1必须知道c1new中的一些秘密参数(如一些陷门参数)。一种方法是u直接给u1发送一条私密信息,这就需要u和u1之间有一条直接的可信的私密通道,由于u和u1的任意性,全网中任意两个节点之间都要有这种通道,很显然,这样会带来大量成本开销,是不太现实的,于是本实施例采用公共账本来完成这个过程:
[0167] 之前定义的地址密钥对(ask,apk:=PRFask(0)),对其结构进行修改以实现地址密钥的隐私保护:addrsk:=(ask,skenc),addrpk:=(apk,pkenc)。然后u使用
[0168] pkenc,1new对(v1new,p1new,r1new,s1new)进行加密得到密文C1,u将C1嵌入到txpour与其一同记录在L中。u1查找L获得u记录的交易信息txpour并从中提取出C1,然后验证者使用skenc,1new对C1解密即可得到(v1new,p1new,r1new,s1new)。同样,使用pkenc,2new对(v2new,p2new,r2new,s2new)进行加密得到C2并嵌入到txpour中,然后由验证者进行解密。
[0169] 4.基础货币的转换;
[0170] “倾倒”操作允许用户对钱币进行转移,拆分,合并。除此之外,本实施例对“倾倒”交易进行修改允许用户将通过DAT机制生成的钱币c:=(apk,v,p,r,s,cm)转换成基础货币,为此在“倾倒”交易中添加两个值,vpub和info,其中vpub用来指定要转换成基础货币的价值量(若不希望进行基础货币的转换,则将该值设为0),info用来指定vpub的目的地址,这两个值是全局可见的。
[0171] 5.防扩展性攻击;
[0172] 攻击者可以通过更改txpour中的info值重新定位vpub所指代的基础货币的交付对象。为此,本实施例采用数字签名的方法抵抗这种攻击,具体实施过程如下:
[0173] 当用户u进行pour操作时,(1)选取一个密钥对(pksig,sksig)用来进行一次签名;(2)计算hsig:=HASH(pksig);(3)计算两个值:h1:=PRFsk,1(hsig)和h2:=PRFsk,2(hsig),这就相当于将hsig附着在两个原始钱币所有者的地址私钥上;(4)将hsig,h1,h2添加到POUR中,并校验后两者的正确性;(5)用sksig对POUR操作相关的每个值进行签名,获得ρ。由于ask,iold是保密的,hsig在每次交易中也是不一样的,所以h1和h2的值是不可预测的。
[0174] 6.货币记录值表(CMList)的组织方式;
[0175] 货币记录值表是所有与“挖掘”操作和“倾倒”操作相关的钱币在公共账本L中的记录值cm的集合,按照Merkle的方式进行组织以加快验证效率。假设要验证cmi,只需给出cmi到rt路径上所有节点的HASH值,就可以快速验证cmi的存在性和正确性,这也就是说一个节点不用维持整个货币记录值表就可以完成校验工作,大大减少了校验过程的时空开销。
[0176] 应当理解的是,本说明书未详细阐述的部分均属于现有技术
[0177] 应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈