一种基于区块链的合同认证方法、装置、电子设备与流程

文档序号:24622507发布日期:2021-04-09 20:28阅读:72来源:国知局
一种基于区块链的合同认证方法、装置、电子设备与流程
本发明涉及区块链
技术领域
,具体涉及一种基于区块链的合同认证方法、装置、电子设备。
背景技术
:区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。目前,合同认证领域使用区块链技术的不多,如果将区块链技术引入合同认证领域,可以保证其可靠性和不可篡改性。因此,如何提供一种可靠性高和不可篡改性的应用于区块链的合同认证方案,成为业界亟待解决的问题。技术实现要素:为了解决现有技术中存在的上述问题,本发明提供了一种基于区块链的合同认证方法、装置、电子设备。本发明要解决的技术问题通过以下技术方案实现:第一方面,本发明实施例提供的一种基于区块链的合同认证方法,包括:发送方对合同进行哈希运算,得到第一摘要值;所述发送方使用私钥对所述第一摘要值进行加密,得到数字签名;所述发送方将所述合同、公钥发送给接收方,并将所述数字签名发送到区块链网络进行处理;所述接收方从所述区块链网络获取所述数字签名,利用公钥进行解密,得到第二摘要值;所述接收方对接收到的合同进行哈希运算,得到第三摘要值;所述接收方对所述第二摘要值和所述第三摘要值进行比较,若两者相同,则证明所述合同没有被篡改。在本发明的一个实施例中,所述在所述发送方使用私钥对所述第一摘要值进行加密,得到数字签名之前,所述方法还包括:构造一基于有限域的grs码;根据所述grs码生成所述公钥以及所述私钥。在本发明的一个实施例中,所述构造一基于有限域的grs码,包括:构造一有限域,并根据所述有限域构造一个码长为n、维数为k且纠错能力为t的grs码,其中,n、k和t均为任意正整数,且满足在本发明的一个实施例中,所述根据所述grs码生成所述公钥以及所述私钥,包括:在所述有限域内选取(n-k)×(n-k)的非奇异矩阵、n×n的稠密矩阵以及n×n的稀疏矩阵,且所述稠密矩阵的秩为z,所述稀疏矩阵的平均行重和列重为x,其中,z、x为自然数,且z小于n,x小于n。将所述稠密矩阵以及所述稀疏矩阵进行矩阵的加法运算,得到变换矩阵;将所述非奇异矩阵的逆矩阵、所述校验矩阵以及所述变换矩阵的转置矩阵进行矩阵的乘法运算得到所述公钥;其中,所述校验矩阵为所述grs码(n-k)×n的矩阵;将所述非奇异矩阵、所述校验矩阵、所述变换矩阵与译码算法作为所述私钥。在本发明的一个实施例中,所述发送方对合同进行哈希运算,得到第一摘要值,包括:对所述合同进行初次哈希运算;对初次哈希运算得到的结果再次进行哈希运算,得到第一摘要值。在本发明的一个实施例中,所述发送方使用私钥对所述第一摘要值进行加密,得到数字签名,包括:将所述非奇异矩阵与所述摘要值进行乘法运算,得到待译校正子;结合所述私钥的校验矩阵使用所述译码算法对所述待译校正子进行译码,得到第一错误向量;将所述第一错误向量与所述私钥的变换矩阵的逆矩阵进行矩阵的乘法运算,得到第二错误向量,所述第二错误向量的权重小于等于所述grs码的纠错能力值;将所述第二错误向量作为所述数字签名。在本发明的一个实施例中,在得到所述第二错误向量之后,还包括:对所述第二错误向量构建索引对,得到第二错误向量的索引对;相应的,将所述索引对作为所述数字签名。在本发明的一个实施例中,所述将所述数字签名发送到区块链网络进行处理,包括:将数字签名发送到区块链网络节点;区块链网络使用共识算法选出合适的节点,该节点负责更新上链的所述数字签名数据,并将该数据广播给其他节点。第二方面,本发明实施例提供了一种基于区块链的合同认证装置,包括:第一运算单元,用于对合同进行哈希运算,得到第一摘要值;加密单元,用于使用私钥对所述第一摘要值进行加密,得到数字签名;传输单元,用于将所述合同发给接收方,并将所述数字签名发送到区块链网络进行处理;解密单元,用于从所述区块链网络获取所述数字签名,利用公钥进行解密,得到第二摘要值;第二运算单元,用于对接收到的合同进行哈希运算,得到第三摘要值;比较单元,用于对所述第二摘要值和所述第三摘要值进行比较,若两者相同,则证明所述合同没有被篡改。第三方面,本实施例还提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现前述方法步骤。本发明实施例的方案,将区块链技术引入到合同认证领域,可以通过区块链的特性来保证合同的真实性、不可篡改性;同时使用共识算法选取节点来处理数据,可以有效缩减区块链的交易时间,提高数据吞吐量;再者本申请通过采用了基有限域的grs码数字签名方法对合同进行加密解密,有效提高合同的认证效率,进一步保证合同在认证过程中的安全性。以下将结合附图及实施例对本发明做进一步详细说明。附图说明图1是本发明实施例提供的一种基于区块链的合同认证方法的流程示意图;图2是本发明实施例提供的一种基于区块链的合同认证装置的结构示意图;图3是本发明实施例提供的一种电子设备的结构示意图。具体实施方式下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。实施例一请参见图1,图1是本发明实施例提供的一种基于区块链的合同认证方法的流程示意图,如图所示,本实施例提供的一种基于区块链的合同认证方法,包括:s1,发送方对合同进行哈希运算,得到第一摘要值。哈希运算能够把任意长度的输入向量通过散列算法变成固定长度的输出。需要注意的是,哈希运算是单向、不可逆的。本发明实施的哈希运算可以采用md4、md5或者sha256中的任意一种。可选的一种实施方式中,以使用sha256哈希函数为例,步骤可以包括:(1)消息填充,主要用于为了让整个消息满足一定得结构。在报文的末尾填充,使其长度在512取模后余数是448,填充具体内容为第一比特是1,后面的都是0,。然后在消息后附加64位表示报文的长度。(2)初始化链接变量。对算法中用到的8个哈希初值和64个哈希常量进行初始化。其中,哈希初值是自然数中前8个质数的平方根的小数部分取前32比特,哈希常量是自然数前64个质数的立方根的小数部分取前32比特。(3)计算哈希值。将消息分解成512比特大小的块,假设消息可以一共有n块,则报文进行n次迭代就是最终结果。可选的一种实施方式中,s1可以包括s11~s12。s11,对合同进行初次哈希运算。本实施例中,对合同m进行初次哈希运算得到h(m)。s12,对初次哈希运算得到的结果再次进行哈希运算,得到摘要值。本实施例中,对初次哈希运算得到的结果h(m)再次进行哈希运算,得到摘要值sx,即计算sx=h(h(m)|i),其中,i=0,1,2……。本发明实施例中取i=0,使摘要值sx为一个长度为n-k的向量。在其他实施例中,也可以使用一次或多次哈希运算得到摘要值,满足固定长度的输出即可。在一种实现方式中,本发明的合同认证方法,还可以包括如下步骤:a,构造一基于有限域的grs码。示例性地,步骤a可以包括:构造一有限域,并根据有限域构造一个码长为n、维数为k且纠错能力为t的grs码(广义reed-solomon码),其中,n、k和t均为任意正整数,且满足其中,有限域可以选择包括q个元素的有限域fq,且选取一正整数m,使q满足q=2m。需要说明的是,本发明实施例之所以选择基于有限域fq而不是选择基于通常的二进制,是因为在面对isd译码攻击时,对于安全级别相同的码(比如:goppa码),基于有限域fq的goppa码相比基于二进制goppa码具有更小的公钥量。举例来说,具有128的安全级别的基于有限域的goppa码,公钥量为725740bits;而具有128的安全级别的基于二进制goppa码,公钥量为1537536bits。相比来说,基于有限域fq的goppa码的公钥量要比基于二进制goppa码的公钥量小近一个数量级。此外,本发明之所以选择grs码而不是别的码(比如goppa码),是因为grs码是极大距离可分(mds)码,码的性能好;且grs码现有编译码器在各领域应用多,实用性好;此外,grs码比goppa码更灵活;以及grs码具有可发展性更强的优势。b,根据所述grs码生成所述公钥以及所述私钥。本实施例中,基于有限域的grs码生成公钥以及私钥,可以保证公钥以及私钥具有的安全性能更高且占空间更小。可选的一种实施方式中,步骤b可以包括步骤b1~b4。b1,在有限域内选取(n-k)×(n-k)的非奇异矩阵、n×n的稠密矩阵以及n×n的稀疏矩阵,且稠密矩阵的秩为z,稀疏矩阵的平均行重和列重为x,其中,z为自然数,且z小于n,x小于n。作为本发明的一种实施方式,可以采用稠密矩阵的秩z远小于n,且稀疏矩阵的平均行重和列重x远小于n。具体的,稠密矩阵可以用矩阵的转置矩阵与矩阵的乘积表示,即其中为有限域fq上定义的两个z×n的矩阵,且矩阵的秩为z。可选的,本实施例中,对参数m、n、k、t以及x的选取有以下几种选择可供参考,参见表1,有且不限于这几种,但考虑到方案的正确性、可行性与安全性,以及公钥量和签名长度,本发明的方案优选采用表1列出的三组参数值。表1参数选取mnktx1240944074101~1.116655346551691~1.11010221002101~1.1b2,将稠密矩阵以及稀疏矩阵进行矩阵的加法运算,得到变换矩阵。具体的,加法运算采用公式(1):其中,表示变换矩阵,表示稠密矩阵,表示稀疏矩阵。b3,将非奇异矩阵的逆矩阵、校验矩阵以及变换矩阵的转置矩阵进行矩阵的乘法运算得到公钥;其中,校验矩阵为grs码的(n-k)×n矩阵。具体的,乘法运算采用公式(2):其中,表示公钥,表示非奇异矩阵的逆矩阵,表示校验矩阵,表示变换矩阵的转置矩阵。b4,将非奇异矩阵、校验矩阵、变换矩阵与译码算法作为私钥。可以理解的是,公钥用于对外公开,私钥用于存储。公钥和私钥是一个算法中不同的两个参数集合,但内在又相关联的参数集合,公钥和私钥是同时生成,但可以独立使用的。s2,所述发送方使用私钥对所述第一摘要值进行加密,得到数字签名。可选的一种实施方式中,步骤s2可以包括步骤s21~s24。步骤s21,将非奇异矩阵与摘要值进行乘法运算,得到待译校正子。具体的,乘法运算采用公式(3):其中,s'x表示待译校正子,表示非奇异矩阵,sx表示摘要值。s22,结合私钥的校验矩阵使用译码算法对待译校正子进行译码,得到第一错误向量。译码算法可以选用现有的任一译码算法,本实施例中,译码算法优选为时域上的迭代译码算法,即:bm迭代译码算法(berlekamp-massey)、钱式搜索算法(chien)以及forney算法的组合。该译码算法速度快,实现简单,易于用计算机实现,因此是一种快速译码算法。可选的,译码算法可以包括以下几个步骤:步骤一:计算校正子;步骤二:确定错误位置多项式;步骤三:确定错误估值函数;步骤四:求解错误位置数和错误数值,并进行纠错。完成上述四步即可完成一次译码,若译码成功,则直接译出错误向量;否则,将视为译码失败。结合本发明实施例的方案,若译码失败,则使i'=i+1,从s11重新开始,直到译码成功。s23,将第一错误向量与私钥的变换矩阵的逆矩阵进行矩阵的乘法运算,得到第二错误向量,第二错误向量的权重小于等于grs码的纠错能力t。具体的,参见公式(4):其中,表示第二错误向量,表示第一错误向量,表示私钥的变换矩阵的逆矩阵。s24,将第二错误向量作为数字签名。至此,已经得到基于错误向量纠错码的数字签名,但该错误向量中由于存在多个0元素,占用较多的比特位。为减小比特位数,本发明提供的方案在上述实施例的基础上,可以进一步优化。优选的,在得到第二错误向量之后,还包括以下步骤:对第二错误向量构建索引对,得到第二错误向量的索引对。具体的,第二错误向量的索引对可以根据公式(5)得到。其中,ie表示索引对。即提取第二错误向量中的非零元素标记为错误值,用错误位置α以及错误位置c构建第二错误向量的索引对ie。相应的,将索引对作为数字签名。需要说明的是,签名通常对应的还有验签的过程,作为只生成数字签名的步骤,将得到的索引对ie作为数字签名;而在验签过程中,由于验签者需要用到索引对ie和摘要值h(h(m)|i)一起验签,因此在验签成功后,最终是将[ie|i]作为合同m的数字签名。在优选的方案里,通过进一步对生成的第二错误向量建立索引对,并将索引作为数字签名,可以减少比特位数,从而减小签名长度。本实施例所述的数字签名方法,因采用了基于有限域fq的grs码生成公钥以及私钥,从而具有较高的可行性,并且能够减小公钥量,提高数字签名效率,进一步提高安全性。s3,所述发送方将所述合同、公钥发送给接收方,并将所述数字签名发送到区块链网络进行处理。可选的一种实施方式中,步骤s3还可以包括:s31,所述发送方将所述合同、公钥发送给接收方。s32,将数字签名发送到区块链网络节点。s33,区块链网络使用共识算法选出合适的节点,该节点负责更新上链的所述数字签名数据,并将该数据广播给其他节点。区块链是一种去中心化的分布式账本系统,与传统中心化系统相比,具有公开透明、不可篡改、防止多重支付等优点,并且不依赖于任何的可信第三方;但是由于区块链是采用点对点网络,所以会存在较高的网络延迟,各个节点所观察到的事务先后顺序不可能完全一致,因此,为了保障整个系统的安全性和适应性,共识算法应运而生。本实施例的方案通过使用共识算法选取节点来处理数据,可以有效缩减区块链的交易时间,提高数据吞吐量。目前常用的共识算法有pow(proofofwork,工作量证明)、pos(proofofstake,权益证明)、dpos(delegatedproofofstake,授权权益证明)、pbft(practicalbyzantinefaulttolerance,实用拜占庭容错)、raft(一致性共识算法),本实施例不做限定。s4,所述接收方从所述区块链网络获取所述数字签名,利用公钥进行解密,得到第二摘要值。对应于上述签名方法中将得到的第二错误向量作为数字签名的方案,本步骤是利用公钥直接对第二错误向量进行解密,得到第二摘要值。对应于上述签名方法中将得到的索引对作为数字签名的方案,本步骤需要先根据索引对恢复出第二错误向量,然后再利用公钥对第二错误向量进行解密,得到第二摘要值。具体的,需要根据索引对恢复出第二错误向量,即在索引对ie中αj索引的位置用cj填充,在αj索引之外的位置用0填充,直到向量的长度达到(n-k)。利用公钥对第二错误向量进行解密,即根据公式(6)得到第二摘要值:其中,y表示第二摘要值。计算公钥中的每一列根据αj索引的对应行的值与cj的乘积,并将该乘积作为第二摘要值。s5,所述接收方对接收到的合同进行哈希运算,得到第三摘要值。同样的,接收方需要对合同进行两次哈希运算,具体步骤与s1相同,在此不再赘述。通过两次哈希运算,得到摘要值y'=h(h(m)|i)。s6,所述接收方对所述第二摘要值和所述第三摘要值进行比较,若两者相同,则证明所述合同没有被篡改。本步骤中,比较第二摘要值y与第三摘要值y',若y=y',即第二摘要值与第三摘要值相等,验证签名成功,则证明合同没有被篡改;否则,验证签名失败,证明合同有可能被篡改。本发明实施例将区块链技术引入到合同认证领域,因此可以通过区块链的特性来保证合同的真实性、不可篡改性;同时使用共识算法选取节点来处理数据,可以有效缩减区块链的交易时间,提高数据吞吐量;再者本申请通过采用了基有限域的grs码数字签名方法对合同进行加密解密,有效提高合同的认证效率,进一步保证合同在认证过程中的安全性。实施例二本发明实施例还提供一种基于区块链的合同认证装置,参考图2,图2是本发明实施例提供的一种基于区块链的合同认证装置20的结构示意图,包括:第一运算单元201,用于对合同进行哈希运算,得到第一摘要值;加密单元202,用于使用私钥对所述第一摘要值进行加密,得到数字签名;传输单元203,用于将所述合同发给接收方,并将所述数字签名发送到区块链网络进行处理;解密单元204,用于从所述区块链网络获取所述数字签名,利用公钥进行解密,得到第二摘要值;第二运算单元205,用于对接收到的合同进行哈希运算,得到第三摘要值;比较单元206,用于对所述第二摘要值和所述第三摘要值进行比较,若两者相同,则证明所述合同没有被篡改。实施例三本发明实施例还提供一种电子设备,参考图3,图3是本发明实施例提供的一种电子设备的结构示意图,包括:处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信;存储器303,用于存放计算机程序;处理器301,用于执行存储器303上所存放的程序时,实现前述方法步骤。需要说明的是,本发明实施例的装置、电子设备分别是应用上述基于区块链的合同认证方法的装置、电子设备,则上述基于区块链的合同认证方法的所有实施例均适用于该装置、电子设备及存储介质,且均能达到相同或相似的有益效果。以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属
技术领域
的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1