基于Paillier和博弈论的区块链交易方法
文献发布时间:2023-06-19 11:57:35
技术领域
本发明涉及信息安全技术领域,具体涉及一种基于Paillier和博 弈论的区块链交易方法。
背景技术
区块链技术来自于比特币,具有去中心化、集体维护、公开透明、 不可篡改、准匿名性等突出特点而受到广泛关注,是价值互联网的基 础,是信任产生的机器,是新的协作机制,能够为自治组织提供支撑。
当前区块链技术平台中,无论公有链还是联盟链,因为账本的公 开透明或者一定范围内的公开透明,以及准匿名性,导致明文的交易 金额易造成用户隐私的泄露。为此出现了多种隐藏交易金额的项目, 如zerocash协议、monero(门罗币)、RingCT(环签交易)、Zether 协议等。
区块链的token交易是加减法运算。加法同态算法有很多,其中 Paillier同态加密算法综合性能最好,然而Paillier同态加密算法无法 直接支持密文的范围证明,也不具有承诺的形式。因此,当前均在讨 论如何改造Paillier以支持密文的范围证明,但存在的问题是同态性 质只保留在一个用户的范围内,而不是全网用户的密文同态。
为了克服上述缺点,当前有的是对Elgmal算法进行改进,使得 改进后的Elgmal算法支持全网同态,但密文的解密却需要经过类似 穷举的方法进行,而且由于无法获得随机数导致无法直接支持余额的 范围证明,需要经过其它间接的方式来实现,导致方案的解决流程复 杂,不够简洁。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种基于 Paillier和博弈论的区块链交易方法,能够使得密文可以直接解密,直 接支持余额的范围证明,使得密文可监督,无需再进行解密再加密等 繁杂流程。
为达到以上目的,本发明提供的一种基于Paillier和博弈论的区 块链交易方法,包括以下步骤:
基于预设算法生成系统参数、承诺参数以及交易发送方和交易接 受方的公私钥;
基于生成的系统参数和公私钥,并结合预设Paillier加密算法, 计算得到交易发送方交易金额密文、交易发送方账户原始金额密文、 交易发送方交易后账户余额密文和交易接受方交易金额密文;
给交易金额构造Pedersen承诺,并调用sigma协议为该承诺和交 易发送方交易金额密文中的承诺构造相等性证据;
给交易发送方交易后账户余额和交易发送方交易后账户余额明 文随机数构造Pedersen承诺,并调用sigma协议为该承诺和交易发送 方交易后账户余额密文中的承诺构造相等性证据;
基于产生零知识范围证明的函数,给交易发送方交易金额密文构 造一个交易金额处于特定范围的证据,给交易发送方交易后账户余额 密文构造一个交易金额处于特定范围的证据;
将计算得到的密文、构造的证据和构造的承诺发送至区块链节 点,区块链节点的智能合约基于密文、证据和承诺对交易的合法性进 行验证;
交易接受方构造证据并发起申诉,区块链节点的智能合约对申述 是否属实进行验证。
在上述方案的基础上,所述基于预设算法生成系统参数、承诺参 数以及交易发送方和交易接受方的公私钥,其中:
生成的系统参数
sysPrm=(h,k,n,n
生成的Pedersen承诺参数
pedPrm=(G,p,g
其中,pedPrm表示Pedersen承诺参数,g
在上述方案的基础上,所述基于预设算法生成系统参数以及交易 发送方和交易接受方的公私钥,其中:
生成交易发送方私钥的过程为:选择随机数x
生成的交易发送方公钥
在上述方案的基础上,,所述基于预设算法生成系统参数以及交 易发送方和交易接受方的公私钥,其中:
生成交易接受方私钥的过程为:选择随机数x
生成的交易接受方公钥
在上述方案的基础上,所述基于生成的系统参数和公私钥,并结 合预设Paillier加密算法,计算得到交易发送方交易金额密文、交易 发送方账户原始金额密文、交易发送方交易后账户余额密文和交易接 受方交易金额密文,其中:
计算得到的交易发送方交易金额密文
计算得到的交易接受方交易金额密文
计算得到的交易发送方账户原始金额密文
计算得到的交易发送方交易后账户余额密文
其中,T表示交易金额,A表示交易发送方账户原始金额,r
在上述方案的基础上,
所述给交易金额构造Pedersen承诺,并调用sigma协议为该承诺 和交易发送方交易金额密文中的承诺构造相等性证据,具体为:
给交易金额构造Pedersen承诺,该承诺记为PedersenC1;
调用sigma协议,为PedersenC1和E
所述给交易发送方交易后账户余额和交易发送方交易后账户余 额明文随机数构造Pedersen承诺,并调用sigma协议为该承诺和交易 发送方交易后账户余额密文中的承诺构造相等性证据,具体为:
给交易发送方交易后账户余额和交易发送方交易后账户余额明 文随机数构造Pedersen承诺,该承诺记为PedersenC2;
调用sigma协议,为PedersenC2和E
在上述方案的基础上,所述基于产生零知识范围证明的函数,给 交易发送方交易金额密文构造一个交易金额处于特定范围的证据,给 交易发送方交易后账户余额密文构造一个交易金额处于特定范围的 证据,其中,构造的两个证据聚合产生:
其中,表示ZRPBT给交易发送方交易金额密文和交易发送方交 易后账户余额密文构造的范围证据,ZRPG表示产生零知识范围证明 的函数,m
在上述方案的基础上,所述将计算得到的密文、构造的证据和构 造的承诺发送至区块链节点,具体为:
将交易发送方交易金额密文C_ta、交易接受方交易金额密文 C_tb、PedersenC1、PedersenC2、EquaProofT、EquaProofB和 ZRPBT发送至区块链节点。
在上述方案的基础上,所述区块链节点的智能合约基于密文、证 据和承诺对交易的合法性进行验证,具体步骤包括:
获取sysPrm、y
基于EquaProofT、PedersenC1、E
计算C_td=C_ts/C_ta,并基于EquaProofB、PedersenC2、 E
基于ZRPBT、PedersenC1、PedersenC2和pedPrm,进行第三 次验证,所述第三次验证为调用bulletproof协议的验证功能验证交易 发送方交易金额密文、交易接受方交易金额密文和交易发送方交易后 账户余额密文的范围证据;
进行交易是否合法的判断,当且仅当第一次验证、第二次验证和 第三次验证均成立时,则交易合法,则获取交易接受方账户原始金额 密文和交易金额,得到交易接受方交易后账户余额密文,并将交易发 送方交易后账户余额、交易接受方交易后账户余额密文和其它交易数 据写入账本,反之,则交易不合法,交易失败。
在上述方案的基础上,所述交易接受方构造证据并发起申诉,区 块链节点的智能合约对申述是否属实进行验证,具体步骤包括:
交易接受方构造证据,构造的证据为:
InvalidCipherProof=ICPG(C_ta,C_tb,(m,r
mL(k)=L(E
其中,m表示明文,r
将TXID、InvalidCipherProof、m和r
智能合约根据TXID读取交易发送方交易金额密文和交易接受 方交易金额密文,验证m、r
与现有技术相比,本发明的优点在于:通过以Paillier算法为基 础,并对Paillier算法进行改造以支持全网用户密文数据的同态,且 密文可以直接解密,直接支持余额的范围证明,使得密文可监督,无 需再进行解密再加密等繁杂流程,且由于交易明文和随机数都可以解 密,使得交易接收方可以用明文和随机数直接校验密文的正确性,无需对密文构成的合法性进行检查,从而减少链上数据以及计算量,提 高效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例 描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的 附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在 不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种基于Paillier和博弈论的区块链交易 方法的流程图。
具体实施方式
本发明实施例提供一种基于Paillier和博弈论的区块链交易方法, 通过以Paillier算法为基础,并对Paillier算法进行改造以支持全网用 户密文数据的同态,且密文可以直接解密,直接支持余额的范围证明, 使得密文可监督,无需再进行解密再加密等繁杂流程,且由于交易明 文和随机数都可以解密,使得交易接收方可以用明文和随机数直接校 验密文的正确性,无需对密文构成的合法性进行检查,从而减少链上 数据以及计算量,提高效率。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结 合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、 完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不 是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没 有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请 保护的范围。
为了将Paillier算法与基于FO承诺的零知识范围证明相结合, 本发明对Paillier算法进行改造,改造后的Paillier算法为:
1、对于系统参数的产生
g的生成方式:随机选取两个安全素数p和q,计算n=pq和 λ=lcm(p-1,q-1),lcm表示最小公倍数计算,选取随机数g,
h的生成方式:选择随机数r<n
k的生成方式:k=g
则系统参数sysPrm=(h,k,n,n
2、公私钥的产生
选择随机数x作为私钥,其中
公钥y=h
3、明文的加密过程
对于明文m,m∈Z
则对明文m加密,得到的密文为(E
4、明文的解密过程
对于密文(E
c
其中,L(c
5、随机数的解密过程
对于(E
明文随机数
其中,L(c
6、加法同态属性
设有明文m
定义Encrpt(m
解密过程为:
上述改进后的Paillier同态加密算法,支持零知识证明,支持全 网用户密文承诺的同态运算,该特性可以简化链上交易的内容,从而 本发明不但可以用于账户模型的交易金额加密与范围证明,也可以用 于UTXO模型(UnspentTransaction Output,未花费过的交易输出) 的交易金额加密与范围证明。
对于账户模型,本发明实施例的同态加密方法用于区块链的交易 的加密及范围证明时,密文(E
对于一个正确的交易,需要证明如下三个声明成立:(1)转出金 额和接受金额相等;(2)交易的金额处于某个合适的范围;(3)账户 余额处于某个合适的范围。
对于第一个声明,由于E
对于第二个声明,只需证明承诺E
对于第三个声明,假设转出账户原始金额为m
需要说明的是,对于Fujisaki-Okamoto承诺(简称FO承诺)。 假设交易发送方和交易接受方不知n的分解,
零知识证明是指证明者能够在不向验证者提供任何有用信息的 情况下,使验证者相信某个论断是正确的,分为交互和非交互两类。 零知识证明可用于解决区块链隐私保护,交易合法性验证等问题。
当前效率、证据大小比较优的范围证明协议是bulletproof。由于 本发明中用于范围证明的交易金额密文E
需要说明的是,对于本发明实施例中的Pedersen承诺。设g
参见图1所示,本发明实施例提供的一种基于Paillier的同态加 密方法,具体包括以下步骤:
S1:基于预设算法生成系统参数、承诺参数以及交易发送方和交 易接受方的公私钥;
S2:基于生成的系统参数和公私钥,并结合预设Paillier加密算 法,计算得到交易发送方交易金额密文、交易发送方账户原始金额密 文、交易发送方交易后账户余额密文和交易接受方交易金额密文。当 用户加入本发明实施例的应用系统时,铸币方根据情况给用户初始化 密文形式的余额,并写到链上,由用户读取到本地,且交易发送方交 易前账户余额密文在本地存放或者从链上读取。
S3:给交易金额构造Pedersen承诺,并调用sigma协议为该承诺 和交易发送方交易金额密文中的承诺构造相等性证据;
S4:给交易发送方交易后账户余额和交易发送方交易后账户余额 明文随机数构造Pedersen承诺,并调用sigma协议为该承诺和交易发 送方交易后账户余额密文中的承诺构造相等性证据;
S5:基于产生零知识范围证明的函数,给交易发送方交易金额密 文构造一个交易金额处于特定范围的证据,给交易发送方交易后账户 余额密文构造一个交易金额处于特定范围的证据。
S6:将计算得到的密文、构造的证据和构造的承诺发送至区块链 节点,区块链节点的智能合约基于密文、证据和承诺对交易的合法性 进行验证;
S7:交易接受方构造证据并发起申诉,区块链节点的智能合约对 申述是否属实进行验证。
本发明实施例中,基于预设算法生成系统参数、承诺参数以及交 易发送方和交易接受方的公私钥,其中:
生成的系统参数
sysPrm=(h,k,n,n
生成的Pedersen承诺参数
pedPrm=(G,p,g
其中,pedPrm表示Pedersen承诺参数,g
本发明实施例中,基于预设算法生成系统参数以及交易发送方和 交易接受方的公私钥,其中:
生成交易发送方私钥的过程为:选择随机数x
生成的交易发送方公钥
本发明实施例中,基于预设算法生成系统参数以及交易发送方和 交易接受方的公私钥,其中:
生成交易接受方私钥的过程为:选择随机数x
生成的交易接受方公钥
本发明实施例中,基于生成的系统参数和公私钥,并结合预设 Paillier加密算法,计算得到交易发送方交易金额密文、交易发送方账 户原始金额密文、交易发送方交易后账户余额密文和交易接受方交易 金额密文,其中:
计算得到的交易发送方交易金额密文
计算得到的交易接受方交易金额密文
计算得到的交易发送方账户原始金额密文
计算得到的交易发送方交易后账户余额密文
其中,T表示交易金额,A表示交易发送方账户原始金额,r
本发明实施例中,给交易金额构造Pedersen承诺,并调用sigma 协议为该承诺和交易发送方交易金额密文中的承诺构造相等性证据, 具体为:
给交易金额构造Pedersen承诺,该承诺记为PedersenC1;
调用sigma协议,为PedersenC1和E
给交易发送方交易后账户余额和交易发送方交易后账户余额明 文随机数构造Pedersen承诺,并调用sigma协议为该承诺和交易发送 方交易后账户余额密文中的承诺构造相等性证据,具体为:
给交易发送方交易后账户余额和交易发送方交易后账户余额明 文随机数构造Pedersen承诺,该承诺记为PedersenC2;
调用sigma协议,为PedersenC2和E
本发明实施例中,基于产生零知识范围证明的函数,给交易发送 方交易金额密文构造一个交易金额处于特定范围的证据,给交易发送 方交易后账户余额密文构造一个交易金额处于特定范围的证据,其 中,构造的两个证据聚合产生:
其中,表示ZRPBT给交易发送方交易金额密文和交易发送方交 易后账户余额密文构造的范围证据,ZRPG表示产生零知识范围证明 的函数,m
本发明实施例中,将计算得到的密文、构造的证据和构造的承诺 发送至区块链节点,具体为:将交易发送方交易金额密文C_ta、交 易接受方交易金额密文C_tb、PedersenC1、PedersenC2、 EquaProofT、EquaProofB和ZRPBT发送至区块链节点。
本发明实施例中,区块链节点的智能合约基于密文、证据和承诺 对交易的合法性进行验证,具体步骤包括:
S601:获取sysPrm、y
S602:基于EquaProofT、PedersenC1、E
S603:计算C_td=C_ts/C_ta,并基于EquaProofB、 PedersenC2、E
S604:基于ZRPBT、PedersenC1、PedersenC2和pedPrm,进 行第三次验证,所述第三次验证为调用bulletproof协议的验证功能验 证交易发送方交易金额密文、交易接受方交易金额密文和交易发送方 交易后账户余额密文的范围证据;
S605:进行交易是否合法的判断,当且仅当第一次验证、第二次 验证和第三次验证均成立时,则交易合法,则获取交易接受方账户原 始金额密文和交易金额,得到交易接受方交易后账户余额密文,并将 交易发送方交易后账户余额、交易接受方交易后账户余额密文和其它 交易数据写入账本,反之,则交易不合法,交易失败。
交易接受方读取账本,获得发给自己的交易,解密获得交易金额 和随机数,然后用这两个数据重新计算一遍交易的密文,如果所计算 密文和链上的交易密文有任何不吻合,则说明交易非法,则与该笔交 易关联的后续事宜(比如线下发货)不进行。由于交易金额大于0的 断言已经得到证明,这样交易发起方已经转出了大于0的金额,由于 交易非法是不能获得交易所带来的期望结果,故交易发起方构造不合 法的密文只会给自己造成损失。
进一步的,本发明实施例中,交易接受方构造证据并发起申诉, 区块链节点的智能合约对申述是否属实进行验证,具体步骤包括:
S701:交易接受方构造证据,构造的证据为:
InvalidCipherProof=ICPG(C_ta,C_tb,(m,r
mL(k)=L(E
其中,m表示明文,r
S702:将TXID、InvalidCipherProof、m和r
S703:智能合约根据TXID读取交易发送方交易金额密文和交易 接受方交易金额密文,验证m、r
从博弈论角度分析,交易发起方不应该主动作恶构造非法的交易 密文,所以本发明实施例不对交易密文成分的合法性进行证明,这进 一步减少链上数据量以及计算量。
本发明的基于Paillier的同态加密方法,通过以Paillier算法为基 础,并对Paillier算法进行改造以支持全网用户密文数据的同态,且 密文可以直接解密,直接支持余额的范围证明,使得密文可监督,无 需再进行解密再加密等繁杂流程;进一步的,由于交易明文和随机数 都可以解密,交易接受方可以用明文和随机数直接校验密文的正确 性,即交易发起方作恶会被检测出来,而且有代价。根据博弈论理论, 证明者不会作恶,这样就可以不对密文构成的合法性进行检查,从而 进一步减少链上数据和计算量,提高系统的效率。且即使出现了非法 密文,交易接受方提交交易号、金额明文和随机数,智能合约验证确实有问题,则恢复交易接受方的交易余额密文即可,不影响交易接受 方的后续交易操作。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理 解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说 将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精 神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限 制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖 特点相一致的最宽的范围。
本发明是参照根据本发明实施例的方法、设备(系统)和计算机 程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指 令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/ 或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到 通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备 的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设 备的处理器执行的指令产生用于实现在流程图一个流程或多个流程 和/或方框图一个方框或多个方框中指定的功能的装置。
- 基于Paillier和博弈论的区块链交易方法
- 基于区块链的交易方法及基于区块链的交易系统