基于P2P公钥池的抗量子计算区块链保密交易方法和系统与流程

文档序号:17996224发布日期:2019-06-22 01:14阅读:223来源:国知局
基于P2P公钥池的抗量子计算区块链保密交易方法和系统与流程

本发明涉及区块链领域,尤其涉及区块链的交易方法。



背景技术:

区块链是一种全新的分布式基础架构与计算范式,利用有序的链式数据结构存储数据,利用共识算法更新数据,利用密码学技术保障数据安全。在基于区块链的交易中,确保交易的数据安全和客户的隐私是区块链能够进一步发展的必要条件。为此,密码学技术尤其是公钥密钥学在区块链中得到了广泛的应用。

正如大多数人所了解的,量子计算机在密码破解上有着巨大潜力。当今主流的非对称(公钥)加密算法,如rsa加密算法,大多数都是基于大整数的因式分解或者有限域上的离散对数的计算这两个数学难题。他们的破解难度也就依赖于解决这些问题的效率。传统计算机上,要求解这两个数学难题,花费时间为指数时间(即破解时间随着公钥长度的增长以指数级增长),这在实际应用中是无法接受的。而为量子计算机量身定做的秀尔算法可以在多项式时间内(即破解时间随着公钥长度的增长以k次方的速度增长,其中k为与公钥长度无关的常数)进行整数因式分解或者离散对数计算,从而为rsa、离散对数加密算法的破解提供可能。

现有技术存在的问题:

(1)现有技术中,区块链的传输和存储均未加密。

(2)由于量子计算机能快速通过公钥得到对应的私钥,因此现有的区块链交易方法容易被量子计算机破解。

(3)现有技术中,基于公私钥的数字签名的输入和输出均可被敌方所知,在量子计算机存在的情况下,可能被推导出私钥,导致区块链系统被量子计算机破解。

(4)现有技术中,区块链交易中的转入钱包地址和转入金额的公开可能会暴露用户隐私信息。



技术实现要素:

基于此,有必要针对上述问题,提供一种基于p2p公钥池的抗量子计算区块链保密交易方法和系统。

本发明基于p2p公钥池的抗量子计算区块链保密交易方法,包括多个用户端以及与各个所述用户端通过网络连接的p2p存储网络,各用户端配有密钥卡,密钥卡中存有私钥、公钥池编号和公钥指针随机数;

所述p2p存储网络配置有多个公钥池,用户端可依据公钥池编号和公钥指针随机数从相应的公钥池中获取与私钥相应的公钥;

交易发起时包括:

对未签名交易进行运算生成函数值;

通过私钥对所述函数值签名生成交易签名;

生成第一随机数并利用该第一随机数与所述函数值生成第一密钥;

通过所述第一密钥加密所述交易签名得到密文签名;

通过所述私钥加密所述第一随机数得到密文第一随机数;

将所述密文签名、所述密文第一随机数、以及与私钥相应的公钥池编号和公钥指针随机数均存入交易中并在区块链网络中广播。

可选的,公钥池中的公钥采用密钥加密,所述密钥以密文形式存储在所述p2p存储网络中。

可选的,所述密钥分别采用各用户的公钥加密。

可选的,交易验证时包括:

利用来自发起用户端的公钥池编号和公钥指针随机数,从p2p存储网络中请求并获得相应的密文形式的密钥,以及该密钥加密的发起用户端的公钥;

利用己方私钥解密获得所述密钥,再利用所述密钥解密获得发起用户端的公钥;

利用所述第一用户端的公钥解密所述密文第一随机数得到所述第一随机数;

生成未签名交易并对未签名交易进行运算生成函数值,该函数值与所述第一随机数相结合生成第一密钥;

利用生成的第一密钥解密所述密文签名得到所述交易签名,并利用发起用户端的公钥验证所述交易签名。

可选的,对未签名交易进行运算生成函数值包括:将未签名交易的内部数据进行调整,对调整后的未签名交易进行哈希运算得到所述函数值。

可选的,验证通过后的交易为验证交易,该验证交易加入区块时包括:

生成第二随机数,并利用该第二随机数与交易的哈希值生成第二密钥;

利用所述第二密钥对验证交易中的钱包地址和资金数额分别进行加密得到加密的钱包地址和资金数额;

用私钥加密第二随机数得到密文第二随机数;

将第二密钥加密的钱包地址和资金数额、所述密文第二随机数以及与私钥相应的公钥池编号和公钥指针随机数存入验证交易并加入区块中。

可选的,还包括:

生成挖矿交易;

生成第三随机数,并利用该第三随机数与挖矿交易的哈希值生成第三密钥;

利用所述第三密钥对挖矿交易中的钱包地址和资金数额分别进行加密得到加密加密的钱包地址和资金数额;

用私钥加密第三随机数得到密文第三随机数;

将第三密钥加密的钱包地址和资金数额、所述密文第三随机数以及与私钥相应的公钥池编号和公钥指针随机数加入挖矿交易并在存放区块中;

对存放区块链中的挖矿交易经验证后接收该区块。

本发明还提供一种基于p2p公钥池的抗量子计算区块链保密交易系统,包括多个用户端以及与各个所述用户端通过网络连接的p2p存储网络,各用户端配有密钥卡,密钥卡中存有私钥、公钥池编号和公钥指针随机数;

所述p2p存储网络配置有多个公钥池,用户端可依据公钥池编号和公钥指针随机数从相应的公钥池中获取与私钥相应的公钥;

用户端包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现所述的基于p2p公钥池的抗量子计算区块链保密交易方法。

本实施例中使用公钥指针随机数,存储在密钥卡中。密钥卡是独立的硬件隔离设备,被恶意软件或恶意操作窃取密钥的可能性大大降低。由于量子计算机无法得到用户公钥,于是也无法得到对应的私钥。另外,本发明中,基于公私钥的数字签名也被密钥进一步加密。即使在量子计算机存在的情况下,也难以被推导出私钥。因此该方案不容易被量子计算机破解。本发明中对区块链交易中的转入钱包地址和转入金额也进行了加密,防止其公开导致暴露用户隐私信息。

附图说明

图1为本发明实施例提供的通信系统结构图;

图2为p2p存储网络结构图;

图3为获取公钥池中公钥的流程示意图;

图4为未签名交易的结构示意图;

图5为第m次签名过程中交易结构示意图;

图6为加密的已签名交易的结构示意图;

图7为区块与交易的关系;

图8为存储入区块的交易结构示意图;

图9为原始挖矿交易;

图10为加密后挖矿交易。

具体实施方式

本实施例在处理区块链中的交易过程,总体思路是对区块链交易中的数字签名、公钥、转入钱包地址以及转入金额进行加密,同时将公钥池存储在p2p存储网络中。

本系统结构如图1所示,每个用户作为区块链的一个节点,都有相应的区块链应用,并配有密钥卡,共有u个密钥卡,每个密钥卡中存有私钥sk、公钥池编号kid以及公钥指针随机数rpk;密钥卡被区块链应用调用,密钥不出密钥卡。

p2p存储网络结构如图2所示,存有z个公钥池,其id为kid=ki(i=1~z)。公钥池分别使用z个对称密钥kki(i=1~z)加密,均为真随机数,优选为量子随机数。

每个kki(i=1~z)都由u个pki(i=1~u)加密。u为用户或密钥卡索引号,pk为相应用户的公钥。

p2p存储网络中的所有数据均由公钥池颁发者上传,p2p存储网络无法解密。

公钥的存储方式具体步骤如下:对某个用户随机取公钥指针随机数rpk,结合指定的公钥指针函数fppk得到公钥指针ppk并从相应的公钥池中的对应位置存入使用对应的kki加密后的公钥pk。

通过公钥池编号kid以及公钥指针随机数rpk即可从p2p存储网络中得到公钥pk,具体步骤如图3所示,文字描述如下:

公钥指针随机数rpk结合指定的公钥指针函数fppk得到公钥指针ppk并从相应的公钥池中的对应位置取出加密的pk,根据kid使用相应的sk解密得到kk,再使用kk解密得到公钥pk。

本实施例提供一种基于p2p公钥池的抗量子计算区块链保密交易方法,包括多个用户端以及与各个所述用户端通过网络连接的p2p存储网络,各用户端配有密钥卡,密钥卡中存有私钥、公钥池编号和公钥指针随机数;

所述p2p存储网络配置有多个公钥池,用户端可依据公钥池编号和公钥指针随机数从相应的公钥池中获取与私钥相应的公钥。

交易的具体步骤如下(在没有特殊说明情况下,提及使用私钥时,均理解为当前用户的己方私钥):

步骤1.1生成未签名交易rtx;

发起交易前,交易发起人即发起用户端a需生成一个未签名交易rtx,结构如图4所示。图4中,inn表示某笔输入资金在本tx中的序号;txid表示某笔输入资金在其来源所在的tx的id。一般可取txid=hash(tx);n表示某笔输入资金在其来源所在的tx中作为输出资金的序号;outn表示某笔输出资金在本tx中的序号;dest表示某笔输出资金的转入地址,一般是钱包的形式;value表示某笔输出资金的数额。

步骤1.2生成交易签名txs;

以第m次签名为例,对rtx作如图5所示改动得到rtxm。第m次签名时,获取第m笔输入金额在其来源所在的tx中对应的dest值。

获取方式见步骤1.7。

例如将该dest值作为predestm加入rtx得到rtxm。对rtxm进行hash,得到hash值txhm;使用私钥skm对txhm进行签名,得到第m个签名txsm。用相同的方法得到所有txs,即生成交易签名。

当然根据设计需要,发起用户端对已生成的未签名交易进行指定运算生成函数值,该函数值与已方私钥结合生成交易签名,其中所述发起用户端生成所述函数值的方法包括:将未签名交易内部数据调整后进行指定函数运算得到所述函数值,所述指定运算不限于此,只要能够生成所述交易签名即可。

步骤1.3对取用某笔输入资金的数字签名txs进行加密,同时存入公钥池编号kid和公钥指针随机数rpk;

对于每笔输入资金,其数字签名txs分别用各自的第一密钥sk加密,sk的获取方式如下:

由该用户端匹配的密钥卡中的随机数发生器生成第一随机数rs,对txh(为txs的hash值)以及rs通过fsk算法计算得到sk,即sk=fsk(txh,rs)。

然后使用与公钥指针随机数rpk相应的私钥sk对rs进行加密得到密文第一随机数,一并存入tx中。此时交易如图6所示。

步骤1.4发送tx;

将已签名并且已将签名加密的交易tx广播至区块链网络的所有节点。

步骤1.5验证tx:区块链网络中的每个节点对该交易进行验证。

交易验证时,利用所述验证用户端生成未签名交易并对所述未签名交易进行指定运算生成函数值,根据交易中公钥密钥随机数找到相应公钥,由公钥解密出所述随机数,该函数值与所述随机数相结合生成密钥(例如步骤1.3中以及下文中的sk),该密钥用于解密所述加密交易签名,经所述公钥解密所述加密的交易签名后与所示函数值相比较,实现交易验证。当然根据设计需要,验证用户端对验证用户端生成未签名交易并对所述未签名交易进行指定运算生成函数值,其中所述验证用户端生成所述函数值的方法包括:将未签名交易内部数据调整后进行指定函数运算得到所述函数值,在本实施例中所述指定运算为哈希算法,当然所述算法不限于此,只要能够完成交易验证即可。

交易验证过程中,区块链网络中的每个节点均可作为验证节点。验证节点用与上文相同的方式形成一个验证方的rtx,对rtx进行hash得到hash值txh。根据kid和rpk在p2p存储网络找到pk(pk即与上文中sk相对应的公钥),过程如图3所示,文字描述与上文相同:

使用pk解密得到rs,再根据rs、kid和txh计算出sk。使用sk解密txs。使用公钥pk解密签名,将得到的txh’与txh对比,完成验证。如果转出金额信息包含多笔不同的转出金额来源,则使用相同方法对多笔转出金额分别对应的的加密转出签名进行验证。

对各签名进行验证后,验证节点根据各个输入金额的txid在区块链的历史记录中找到转出金额,从而证明本次交易各输入金额的存在性。验证节点取出输入金额后得到输入金额总额,与本次输出金额总额进行对比,查看是否相等;如果相等则验证通过;如果不相等则验证失败。

步骤1.6将该交易加入区块:区块与交易的关系如图7所示。

步骤1.6.1矿工加密dest和value;

在将tx加入区块前,先将钱包地址dest和资金数额value用第二密钥tk加密得到加密的钱包地址和资金数额。tk的获取方式如下:

取本次tx输入部分的hash作为th,由该用户端匹配的密钥卡中的随机数发生器生成第二随机数rt,对th以及rt通过ftk算法计算得到tk,即tk=ftk(th,rt)。

使用各自的tk加密dest和value后得到tx’,rt用出块方的sk即skminer加密得到{rt}skminer。

将tx”={kid+rpkminer+{rt}skminer+tx’}放入交易后的结构如图8所示,并作为交易的最终形式加入区块,并且得到本次交易的txid=hash(tx”)。

步骤1.6.2矿工形成挖矿交易并加密;

矿工形成一个如图9所示的挖矿交易,输入部分填充一些矿工所属矿池或者其他必要信息,输出部分与普通交易相同,输出金额总量与生成区块的奖励金额相同。生成挖矿交易后,随机生成的各个第三随机数rt并通过与上文相同的方式得到各个第三密钥tk,使用tk加密dest和value,同时使用skminer加密各个rt,以及与skminer相应的公钥池编号和rpkminer均加入挖矿交易,得到如图10所示的加密后的挖矿交易。

步骤1.6.3矿工计算挖矿随机数;

矿工计算出一个满足规则的随机数,即获得本次记账权,将自己生成并加密的挖矿交易加入到区块中。

步骤1.6.4矿工广播成功挖矿区块:矿工获取成功挖矿区块后,将该区块广播,其余节点对区块进行验证。主要是验证挖矿随机数是否满足规则,各笔交易的正确性,以及merkle根的正确性。如验证成功,则接受该区块为新区块。

步骤1.7解密dest和value:根据txid找到tx”,并用rpk得到加密的pk,根据kid找到对应的加密kk并使用私钥sk解密,然后使用kk解密得到pk。使用pk解密tk,再使用tk解密dest和value。其中dest用于构造新的tx,并且dest和value用于步骤1.5中txs的验证。

在一个实施例中,提供了一种计算机设备,即一种基于p2p公钥池的抗量子计算区块链保密交易系统,该计算机设备可以是终端,其内部结构可以包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述基于公钥池的抗量子计算区块链保密交易方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

其中一实施例中,提供一种基于p2p公钥池的抗量子计算区块链保密交易系统,包括多个用户端以及与各个所述用户端通过网络连接的p2p存储网络,各用户端配有密钥卡,密钥卡中存有私钥、公钥池编号和公钥指针随机数;

所述p2p存储网络配置有多个公钥池,用户端可依据公钥池编号和公钥指针随机数从相应的公钥池中获取与私钥相应的公钥;

用户端包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现所述的基于p2p公钥池的抗量子计算区块链保密交易方法。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1