欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 具有可逆承诺的零知识范围证明独创技术23667字

具有可逆承诺的零知识范围证明

2021-02-19 19:03:42

具有可逆承诺的零知识范围证明

  技术领域

  本发明大体上涉及一种密码记录系统以及用于具有可逆承诺的零知识范围证明的方法和系统。

  背景技术

  比特币是加密货币和支付系统的一个示例,它允许用户之间直接进行对等交易,而无需依赖中心机构。具体地,交易由支付系统的对端网络节点使用各种加密技术进行验证,然后以明文形式记录在公共分布式账本中,诸如区块链中。对于希望将与交易相关的某些细节保密的用户来说,将所有交易以明文形式记录在公共分布式账本中可能会产生问题。

  发明内容

  本发明实施例通过描述具有可逆承诺的零知识范围证明的系统和方法,可以实现技术上的优势。

  根据一个实施例,一种在对等网络中进行加密货币交易的方法包括:所述对等网络的对端网络节点接收零知识范围证明可逆承诺(zero knowledge range proofreversible commitment,ZKRPRC)算法的密码系统参数值;所述对端网络节点根据选定的密码系统参数值使用所述ZKRRC算法对交易金额进行加密,以生成可逆承诺和ZKRP范围证明;以及所述对端网络节点经由所述对等网络的未确认交易池(unconfirmedtransactions pool,UTP)从第一用户向第二用户发送交易,其中,所述交易包括所述可逆承诺和所述ZKRP范围证明。

  根据一个实施例,一种在对等网络中进行加密货币交易的方法包括:第三方从交易的发送方接收所述交易以及从所述交易的接收方接收加密后的初始账户余额,所述交易包括加密后的交易金额和可逆承诺以及零知识范围证明(zero knowledge range proof,ZKRP);所述第三方使用并基于所述SKRP范围证明验证所述加密后的交易金额在指定范围内;以及所述第三方将所述加密后的交易金额加入所述加密后的初始账户余额,以获得加密后的最终账户余额,并且将所述交易与所述加密后的最终账户余额一起记录到数字化的公共账本中。

  附图说明

  为了更完整地理解本发明及其优点,现结合附图做出以下参考说明,其中:

  图1是一种公钥基础设施(public key infrastructure,PKI)支付系统的示意图;

  图2是一种用于在密码记录系统中执行交易的实施例方法的流程图;

  图3是一种在包括对等网络的密码记录系统中执行交易的实施例方法的流程图;

  图4是一种用于在包括对等网络的密码记录系统中发送交易的实施例方法的流程图;

  图5是一种用于在包括对等网络的密码记录系统中校验交易的实施例方法的流程图;

  图6是一种实施例处理系统的示意图;以及

  图7是一种实施例收发器的示意图。

  除非另有指示,否则不同图中的对应标号和符号通常是指对应部分。绘制各图是为了清楚地说明实施例的相关方面,因此未必是按比例绘制的。

  具体实施方式

  一种用于在使用密码记录系统时进行数据保密的技术依赖于零知识范围证明(zero-knowledge range proof,ZKRP)密码算法。具体地,当使用密码记录系统进行数字金融交易时,将交易金额作为ZKRP密码算法的输入键入,以输出不可逆承诺和ZKRP范围证明。然后将不可逆承诺和ZKRP范围证明作为交易内容发送。不可逆承诺是所述交易金额的密文,并且用于供第三方根据由ZKRP算法生成的ZKRP范围证明进行处理,以验证所述交易金额在对应于所述ZKRP范围证明的范围内。第三方在验证交易时,能够基于不可逆承诺和ZKRP范围证明确认所述交易金额在指定范围内。然而,第三方无法确认实际交易金额值。ZKRP算法的一个缺点是,无法对交易金额的密文进行解密,以校验交易金额是否为正确的值。

  另一种交易金额保密的技术依赖于Paillier密码系统。Paillier密码系统具有加法同态加密(additive homomorphic encryption,AHE)属性,使得两个交易值的加密和等于两个加密值的密码求和运算。应该理解的是,“密码求和运算”不同于算术求和运算。举例来说,如果Alice向Bob汇款$10,而Bob的账户的初始余额为$100,则在对交易进行验证之后,Bob的最终账户余额的值将为$110。在使用Paillier密码系统时,使用Paillier加密算法对交易金额(即$10)和Bob的账户余额(即$100)进行单独加密,以分别获得加密后的交易金额(例如,enc($10))和加密后账户余额(例如,enc($100)),则加密后的交易金额和加密后的账户余额之和将等于未加密的交易金额和未加密的账户余额的加密和:enc($10)“+”enc($100)=enc($10+$100)(应该理解的是,“+”运算是“密码求和运算”,它不同于算术求和运算)。然后接收方使用接收方的私钥对加密后的交易金额和加密后的账户余额之和(即sum[enc($10)+enc($100)])进行解密。

  Paillier密码系统的一个缺点是:一些循环群阶信息可能会泄露给第三方,从而使第三方执行Paillier解密。过去,由于Paillier密码系统泄露循环群阶信息违反了ZKRP算法的安全假设,因此禁止ZKRP算法和Paillier密码系统相互结合使用。本发明的实施例通过以下方式克服了这种限制:以避免在Paillier解码期间将循环群阶信息泄露给第三方的方式选择Paillier密码系统参数值,同时仍然允许具有正确信息的第三方对端网络节点成功地校验交易。

  图1是使用公钥基础设施(public key infrastructure,PKI)验证交易的示例性支付系统100的示图。该支付系统100包括对等网络,该对等网络包括对端网络节点,在图1中称为Alice 110、Bob 120和银行130。银行130是验证Alice 110与Bob 120之间的交易的第三方。在一些实现方式中,Alice 110可能希望交易金额保密,使得只有Bob知道实际交易金额。支付系统100允许Alice 110向Bob 120发送交易112。交易112可以是数字支票、密码货币转账(例如,“X”比特币转账)或任何其他数字交换介质。在此示例中,银行130验证交易112中的金额未超过Alice 110的每日提款限额,即$1000。在一些示例中,Alice 110可能希望交易金额(即$10)保密,使得除了Bob 120之外没有人知道转账的金额。实现此目的的一种标准方法是使用公钥基础设施(public key infrastructure,PKI),其中证书颁发中心(certificate authority,CA)190验证Alice 110和Bob 120的身份,并且向Alice 110和Bob 120颁发数字证书,以对它们的公钥进行认证。此后,Alice 110可以发送她对Bob 120的公钥(PubB)来对交易112中的金额进行加密,而Bob 120可以使用其对应的私钥(PriB)来对加密后的交易进行解密,以获得交易112中的金额。在一些实现方式中,可以使用ZKRP算法验证Alice 110与Bob 120之间的交易,以允许Alice 110和Bob 120安全且私密地进行任何金额转账,只要金额在允许的范围内(不超出)即可。可以将加密后的值直接附加到接收方的其他加密后的值,而无需使用AHE属性进行解密,并且一个或多个第三方可以对加密后的值的范围进行验证,而不会泄漏有关交易内部金额的信息。该验证可由第三方诸如银行130执行。

  图2是一种根据本发明的实施例用于在密码记录系统中执行交易的实施例方法200的流程图。方法200可由实现为对等网络的密码记录系统中的对端网络节点执行。在步骤210处,系统管理员在设置阶段选择由密码记录系统生成的Paillier系统参数。在步骤220处,Alice加入网络并生成公私钥对。在步骤230处,Bob加入网络并生成公私钥对。在步骤250处,Alice决定向Bob汇款,并且在步骤250处,将金额($10)输入到本发明的零知识范围证明可逆承诺(zero-knowledge range proof reversible commitment,ZKRPRRC)算法中。ZKRPRC算法输出可逆承诺(例如,交易金额的密文)和可逆承诺的ZKRP证明。可逆承诺可以是密文,即交易金额明文的加密版本。在步骤260处,第三方基于可逆承诺和ZKRP证明验证交易金额。应当理解的是,在步骤270之前,可逆承诺和ZKRP证明可以包括在发送给第三方用于验证目的的交易消息中。在步骤270处,第三方计算可逆承诺的密码求和并更新Bob的加密后的初始余额,然后将最终金额记录为Bob的加密后的最终余额。在步骤280处,Bob对加密后的最终余额进行解密,以确定其最终余额的金额。

  实施例可以使用ZKRRPC来保护用于数字金融交易的密码记录系统中的隐私。当对端网络节点进行交易时,对端网络节点使用ZKRPRC算法来对交易金额(例如,待转账金额)进行加密,并针对加密后的交易金额生成范围证明。对端网络节点可以对确切的交易金额进行加密,可以包括交易中加密后的交易金额(例如,密文),并且可以使用对应的解密算法检索交易中的交易金额。范围证明校验包括在交易中的交易金额,而不对密文(例如,加密后的交易金额)进行解密,并且不会将确切的交易金额透露给其他对端网络节点。所有其他对端网络节点可以验证范围证明,而无需与发起交易的对端网络节点进行交互。

  本公开的实施例可以接收在步骤210期间由密码记录系统通过执行算法1生成的以下参数中的一个或多个:

  ·n:用于生成随机数和N

  ·N:循环群的大小

  ·g1:大小为N的循环群的第一生成元

  ·g2:大小为N的循环群的第二生成元

  ·μ:用于解密

  ·l:用于解密

  ·T:用于加密。

  

  发布密文、证明、范围和公钥允许第三方验证对应于密文的数字明文实际上在发布的范围内。在一个示例中,Alice想要向Bob发送一张$10的数字支票。银行必须验证这张支票上的金额是否超过Alice每日的提款限额,即$1000。

  本公开的实施例可能要求p、q、p`和q`均为素数,并且要求g1是具有l-秘密阶的元素。从数学上来说,已知g1的阶能整除2pqp`q`。如果p`和q`不是素数,则g1的阶可能具有较小因子,这将会影响ZKRP的安全性。此外,为了使承诺可逆,n必须能整除g1的阶。为了对g1的阶进行保密,实施例可能需要g1的阶呈l-秘密的形式。本公开的实施例可能需要分离g1和g2,以保护ZKRPRC算法的加密算法中使用的随机数。本公开的实施例还可能要求λ被l和T隐藏。以此方式,如果λ泄露了g1的阶信息,但是需要解密,则我们创新地将λ隐藏在l中,并且使用T作为辅助变量进行解密。

  一旦这些参数生成,Alice和Bob的对端网络节点就会生成各自的公私钥对。每个对端网络节点创建的钥对包括以下两个密钥:h(公钥,传递到所有对端以对交易金额进行加密)和x(私钥,对端网络节点必须保密,并且用于对由公钥加密的可逆承诺进行解密)。每个对端网络节点可以使用算法2来生成各自的公钥和私钥。

  

  加密算法还创建范围R和范围证明proof,以供第三方的对端网络节点使用,以使用例如算法3校验密文内部的范围。

  

  加密算法将交易金额提高到生成元的幂次方。通常,解密是不可能的,因为这是一个离散对数难题。由于谨慎地选择了系统参数(例如,p、q、p`和q`),生成元的这个幂成为可解密的Paillier密文。在系统参数生成算法中,使用g1和g2,代替仅使用g1,以保护加密算法中随机数的机密性。在无g2的情况下,对端网络节点可以对加密的随机数进行解密并破解加密(例如,对无私钥的密文进行解密)。由于g2是g1的某一随机幂,因此自然问题是:在知道所有的信息的情况下,是否可能得到随机幂。此外,在给定所有系统参数和公钥的情况下,可以用数学方法证明随机幂和λ是安全的。在加密期间创建的密文可以给出四个值中的一个值:用于解密;用于解密;解密时返回消息m;和用于隐藏g的阶。为了进行解密,用户将使用私钥对密文进行解密,以获得交易金额。可以使用算法4进行解密。

  

  图3是一种用于在包括区块链(例如,根据本发明的加密货币交易的数字化、去中心化的公开账本)的另一密码记录系统中进行交易的实施例方法300的流程图。方法300可以由支付系统的对等网络中的对端网络节点执行。在步骤310处,对端网络节点在设置阶段接收由密码记录系统生成的Paillier系统参数。在步骤320处,Alice加入网络并生成公私钥对。在步骤330处,Bob加入网络并生成公私钥对。在步骤340处,Alice决定向Bob汇款,并且在步骤350处,将金额($10)输入ZKRPRRC算法中。ZKRPRC算法输出可逆承诺和可逆承诺的ZKRP证明。可逆承诺为密文。在步骤360中,Alice生成包括可逆承诺和ZKRP的交易,并且将交易370发送到未确认交易池(unconfirmed transaction pool,UTP)。在步骤380处,矿工对端网络节点从未确认池中检索交易,并且开始挖掘步骤。在步骤382处,矿工对端网络节点基于可逆承诺和ZKRP验证交易,并在步骤384处确定交易的验证是否成功。如果交易的验证不成功,则在步骤388处,对端网络节点从本地未确认池中删除交易,并且方法300返回到步骤382。如果交易的验证成功,则在步骤390处,矿工对端网络节点挖掘区块链以记录交易,并使用可逆承诺(例如,交易金额的密文)和加密操作来更新Bob的加密后的余额,因为加密后的余额和可逆承诺均包括AHE属性。在步骤394处,Bob使用其私钥对他的余额进行解密。

  为了建立ZKRPRC算法,密码记录系统可以首先使用数学公式初始化系统参数。这些系统参数用于加密、解密、生成范围证明和校验范围证明。网络可能是一组连接的计算机,我们称之为对端,它们知道彼此的存在,并且知道所有的通信和所有区块链内容。用于网络的参数可以是对端之间供对端进行加密、解密、范围证明生成和验证的共享值。Alice和Bob是作为示例的两个对端。Alice具有她自己的公私钥对,所述公私钥对允许任何人向她加密消息,但只有她具有对密文进行解密的密钥。交易金额是指从一个对端向另一对端的转账。实施例ZKRPRC算法获取金额,并输出密文和零知识范围证明。密文只能由Bob解密,并且网络上的任何对端可以使用ZKRP来校验交易密文中的金额在指定范围内。交易可以包含密文和ZKRP,以及发送方和接收方的地址和发送方在交易上的签名,以保护交易的完整性。网络未确认交易池(unconfirmed transactions pool,UTP)保存了所有可由对端挖掘的交易。在挖掘交易之前,对端可以使用交易内部的ZKRP验证交易金额是否有效。对端可以计算哈希作为挖掘方法。计算正确哈希的第一对端接收区块链的货币。通过使用AHE属性,对端可以将有效的加密交易添加到Bob的余额中。当Bob想要取回他的余额时,他可以使用他的私钥进行解密。

  与需要用户管理所有受保护交易的一组秘密数据的AHE和zk-SNARK技术相比,可逆承诺降低了管理开销。尽管ZCash想出了一种方法可以减少用户的管理工作,但是这些秘密信息还是要被管理和储存在某个地方。随着交易次数的增加,需要管理的信息量呈线性增长。相反,实施例ZKRPRC算法仅需要用户管理一个私钥,从而保持开销恒定且可忽略。AHE与范围证明。与普通加法同态加密相比,实施例AHE具有范围证明,所述范围证明可以证明加密数字消息的范围。作为附带收获,还有证据证明两个密文是从同一明文加密而来,并且证明密文的明文是平方数。

  图4是一种用于发送ZKRPRC交易的实施例方法400的流程图,该实施例方法400可由用于数字金融交易的密码记录系统中的对端网络节点执行。在步骤410处,用户接收零知识范围证明可逆承诺(zero knowledge range proof reversible commitment,ZKRPRRC)算法的密码系统参数值。在一个实施例中,密码系统参数值可以在步骤410期间根据算法1(如上所述)生成。在步骤420处,用户根据接收到的密码系统参数值使用ZKRPRC算法对交易金额进行加密,以生成可逆承诺和ZKRP范围证明。在步骤430处,与用户相关联的对端网络节点经由所述密码系统的未确认交易池(unconfirmed transactions pool,UTP)向与另一用途相关联的对端网络节点发送包括可逆承诺和ZKRP范围证明的交易。

  图5是一种用于校验ZKRPRC交易的实施例方法500的流程图,该实施例方法500可由用于数字金融交易的密码系统中的对等网络的第三方网络节点执行。在步骤510处,第三方网络节点从数字化、去中心化的公开账本(诸如区块链)接收加密后的初始账户余额,以及从发送方对端网络节点接收包括可逆承诺和ZKRP范围证明的交易。在步骤520处,第三方网络节点使用ZKRP范围证明验证交易内部的加密后的交易金额在指定范围内。在步骤530处,第三方网络节点执行加密操作以将加密后的交易金额添加到加密后的初始账户余额,以获得加密后的最终账户余额。在步骤540处,第三方网络节点将交易与加密后的所述最终账户余额一起记录到数字化、去中心化的公开账本中。

  图6是一种用于执行本文所述方法的实施例处理系统600的框图,所述处理系统600可以安装在对等节点中,诸如对应于Alice 110、Bob 120或如图1所示的第三方的对等节点中。如图所示,处理系统600包括处理器604、存储器606和接口610-614,它们可以(或可以不)如图6中所示进行布置。处理器604可以是用于执行计算和/或其他处理相关任务的任何部件或部件的集合,并且存储器606可以是用于存储处理器604执行的编程和/或指令的任何部件或部件的集合。在一个实施例中,存储器606包括非瞬时性计算机可读介质。接口610、612、614可以是允许处理系统600与其他设备/部件和/或用户通信的任何部件或部件的集合。例如,接口610、612、614中的一个或多个接口可以用于将数据、控制或管理消息从处理器604传送给安装在主机设备和/或远程设备上的应用程序。又例如,接口610、612、614中的一个或多个接口可以用于允许用户或用户设备(例如,个人计算机(personalcomputer,PC)等)与处理系统600交互/通信。处理系统600可以包括图6中未示出的附加部件,诸如长期存储器(例如,非易失性存储器等)。

  在一个示例性实施例中,处理系统600位于接入无线或有线电信网络的用户侧设备中,所述用户侧设备诸如移动台、用户设备(user equipment,UE)、个人计算机(personalcomputer,PC)、平板电脑、可穿戴通信设备(例如,智能手表等),或用于接入电信网络的任何其他设备。

  在一些实施例中,接口610、612、614中的一个或多个接口将处理系统600连接到用于通过电信网络发射和接收信令的收发器。图7是一种用于通过电信网络发射和接收信令的收发器700的框图。收发器700可以安装在对等节点中,诸如对应于Alice 110、Bob 120或如图1所示的第三方的对等节点中。如图所示,收发器700包括网络侧接口702、耦合器704、发射器706、接收器708、信号处理器710和设备侧接口712。网络侧接口702可以包括用于通过无线或有线电信网络发射或接收信令的任何部件或部件的集合。耦合器704可以包括用于便于通过网络侧接口702进行双向通信的任何部件或部件的集合。发射器706可以包括用于将基带信号转换为适于通过网络侧接口702发射的调制载波信号的任何部件或部件的集合(例如,上变频器、功率放大器等)。接收器708可以包括用于将通过网络侧接口702接收到的载波信号转换为基带信号的任何部件或部件的集合(例如,下变频器、低噪声放大器等)。信号处理器710可以包括用于将基带信号转换为适于通过设备侧接口712通信的数据信号或者进行反向转换的任何部件或部件的集合。设备侧接口712可以包括用于在信号处理器710与主机设备(例如,处理系统600、局域网(local area network,LAN)端口等)内的部件之间传送数据信号的任何部件或部件的集合。

  收发器700可以通过任何类型的通信介质发射和接收信令。在一些实施例中,收发器700通过无线介质发射和接收信令。例如,收发器700可以是用于根据无线电信协议进行通信的无线收发器,所述无线电信协议诸如蜂窝协议(例如,长期演进(long-termevolution,LTE)等)、无线局域网(wireless local area network,WLAN)协议(例如,Wi-Fi等),或任何其他类型的无线协议(例如,蓝牙、近场通信(near field communication,NFC)等)。在这些实施例中,网络侧接口702包括一个或多个天线/辐射单元。例如,网络侧接口702可以包括单天线、多个独立天线或用于多层通信的多天线阵列,例如,单收多发(singleinput multiple output,SIMO)、多收单发(multiple input single output,MISO)、多收多发(multiple input multiple output,MIMO)等。在其他实施例中,收发器700通过有线介质(例如,双绞线电缆、同轴电缆、光纤等)发射和接收信令。特定的处理系统和/或收发器可以利用所示的所有部件,或者仅利用这些部件的子集,并且集成的水平可能因设备而异。

  应理解的是,本文所提供的实施例方法的一个或多个步骤可以由对应的单元或模块执行。例如,信号可以由发送单元或发送模块发送。信号可以由接收单元或接收模块接收。信号可以由处理单元或处理模块处理。其他步骤可以由识别单元/模块和/或判断单元/模块执行。相应单元/模块可以是硬件、软件或其组合。例如,一个或多个单元/模块可以是集成电路,诸如现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application-specific integrated circuit,ASIC)。

  虽然已参考说明性实施例描述了本发明,但此描述并不意图限制本发明。所属领域的技术人员在参考该描述后,将会明白说明性实施例的各种修改和组合,以及本发明其他实施例。因此,所附权利要求书意图涵盖任何此类修改或实施例。

《具有可逆承诺的零知识范围证明.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)