一种区块链网络中的数据处理方法、系统及相关设备
技术领域
本发明涉区块链数据处理领域,尤其涉及一种区块链网络中的数据处理方法、系统及相关设备。
背景技术
区块链网络中,当有新的交易信息时,往往需要目标用户采用私钥对该新的交易信息进行数字签名生成签名数据,进而在区块链网络数据同步过程中,往往需要采用该目标用户的公钥对签名数据进行验证。
例如,区块链网络节点A使用私钥对自己的信息签名以后,会把信息原文及对应的签名发送给节点B,节点B使用节点A的公钥验证签名。现有的区块链网络中,第三方节点C(数以百万计的节点)在进行数据同步时需要获得验证过的签名及节点A的公钥,那么用户B就需要发送验证过的签名及节点A公钥给节点C。例如,实际运用中的公钥长度约为256位,签名长度512位,如果全部传输需要768位数据,公钥长度占据了33%的带宽。
随着区块链节点数量的快速增长,区块链网络传输过程中占用的网络带宽越来越多,如何减少区块链网络中的带宽占用,节约网络资源,成了不可逃避的问题。
发明内容
本发明的主要目的在于提供一种区块链网络中的数据处理方法、系统及相关设备,用于在区块链网络数据传输过程中节约网络带宽。
为实现上述目的,本发明实施例第一方面提供了一种区块链网络中的数据处理方法,其运用于区块链节点设备,该方法包括:
接收验证通过的目标签名数据并获取所述目标签名数据对应的消息原文参数,所述目标签名数据是采用目标用户的公钥对消息原文进行加密运算之后得到的数据;
获取所述目标用户的公钥对应的算法参数,所述算法参数用于指示所述目标用户的公钥计算过程中所采用的非对称加密算法及实现对应非对称加密算法所需的计算参数;
根据所述目标签名数据、算法参数及所述消息原文参数计算所述目标用户的公钥,并保存计算得到的所述目标用户的公钥在本地区块链节点设备。
可选的,作为一种可能的实时方式,本发明实施例中,若所述目标签名数据为(r〞,s〞),所述算法参数中包含SM2算法中使用的椭圆曲线的基点G及所述基点的阶数为n,所述消息原文参数为密码杂凑函数作用于所述消息原文的输出值e或消息原文M,所述根据所述目标签名数据、算法参数及所述消息原文参数计算所述目标用户的公钥包括:
将所述r〞与s〞转换为整数之后,根据公式计算参数t,其中t=(r〞+s〞)mod n;
采用有限域逆运算算法计算参数t的逆元素t-1;
计算所述基点G在椭圆曲线的s〞倍点[s〞]G;
计算椭圆曲线上横坐标为(r〞-e)的点U;
根据公式计算所述目标用户的公钥PA'=[t-1](U-[s〞]G)。
可选的,作为一种可能的实时方式,本发明实施例中,所述获取所述目标签名数据对应的消息原文参数包括:
接收目标签名数据对应的消息原文M;
若所述消息原文M符合密码杂凑函数的输出格式,则将所述消息原文作为所述输出值e,否则利用密码杂凑函数和消息原文M计算得到所述输出值e。
可选的,作为一种可能的实时方式,本发明实施例中,在计算所述目标用户的公钥PA'之前,该方法还可以进一步包括:
校验所述目标签名数据(r〞,s〞)是否符合第一预设条件,若符合第一预设条件,则进行计算所述目标用户的公钥PA'的步骤;
所述第一预设条件包括下列条件中的至少一种:
r〞∈[1,n-1]成立,s〞∈[1,n-1]成立,(r〞+s〞)mod n=t的值不为零,[t-1]mod n的值不为零,(r〞-e)mod n的值不为零。
可选的,作为一种可能的实时方式,本发明实施例中,在保存计算得到的所述目标用户的公钥在本地区块链节点设备之前,该方法还可以进一步包括:
校验所述目标用户的公钥PA'是否符合第二预设条件,若符合,则执行保存计算得到的所述目标用户的公钥在本地区块链节点设备的步骤;
所述第二预设条件包括:等式([t-1]PA'+[s〞]G).x+e=r〞mod n成立。
本发明实施例第二方面提供了一种区块链网络中的数据处理系统,其包括:
接收单元,用于接收验证通过的目标签名数据并获取所述目标签名数据对应的消息原文参数,所述目标签名数据是采用目标用户的公钥对消息原文进行加密运算之后得到的数据;
获取单元,用于获取所述目标用户的公钥对应的算法参数,所述算法参数用于指示所述目标用户的公钥计算过程中所采用的非对称加密算法及实现对应非对称加密算法所需的计算参数;
处理单元,用于根据所述目标签名数据、算法参数及所述消息原文参数计算所述目标用户的公钥,并保存计算得到的所述目标用户的公钥在本地区块链节点设备。
本发明实施例第三方面提供了一种区块链节点设备,该区块链节点设备包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-4任一项所述的方法。
可选的,作为一种可能的实时方式,本发明实施例中的区块链节点设备为组成CDN网络或者区块链网络的节点。
本发明实施例第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序可被一个或者多个处理器执行,以实现如第一方面及第一方面任一种可能的实施方式中区块链网络中的数据处理方法中的步骤。
本发明实施例第五方面提供了一种计算机程序产品,其包括计算机指令,当其在计算机上运行时,使得计算机可以执行上述第一方面及第一方面任一种可能的实施方式中区块链网络中的数据处理方法中的步骤。
本发明实施例中,区块链节点设备在进行数据同步的过程中,可以接收验证通过的目标签名数据及目标签名数据对应的消息原文参数,并根据目标签名数据、算法参数及消息原文参数计算目标用户的公钥,无需传输目标用户的公钥,节约了数据传输过程中网络带宽。
附图说明
图1为本发明实施例中一种基于区块链的数据处理方法的一个实施例示意图;
图2为本发明实施例中一种基于区块链的数据处理系统的一个实施例示意图;
图3为本发明实施例中一种区块链节点设备一个实施例示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信者使用收信者的公钥加密信件,收信者使用自己的私钥解密信件。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法、美国国家标准局提出的DSA、以及SM2椭圆曲线公钥密码算法等,为了便于理解,本发明实施例主要以SM2椭圆曲线公钥密码算法为例进行说明。
现有的区块链网络在进行数据同步的过程中,需要向下一节点发送签名数据、公钥及目标签名数据对应的消息原文。本发明实施例中,区块链节点设备可以通过签名数据回推出公钥,在传输过程中无需传输公钥,节省带宽。例如,公钥长度约为256位,签名长度512位。如果全部传输需要768位数据,如果只传输签名只需512位数据,可以节约33%的带宽。
为便于理解,下面对本发明实施例中的具体流程进行描述,请参阅图1,本发明实施例中区块链网络中的数据处理方法一个实施例包括:
101、接收验证通过的目标签名数据并获取目标签名数据对应的消息原文参数;
本发明实施例中,目标用户的区块链节点设备A中存储有基于SM2椭圆曲线公钥密码算法生成的密钥(包含公钥及私钥),当区块链节点设备A获取到消息原文M(交易信息)之后,可以采用基于SM2椭圆曲线公钥密码算法生成的密钥中的私钥对消息原文M进行运算得到签名数据(r,s),可以将该签名数据(r,s)发送给其他节点B进行校验,节点B可以基于目标用户的公钥对接收到的签名数据(r',s')进行校验,可以理解的是,本发明实施例中可以设置单独的节点对接收到的签名数据(r',s')进行校验,也可以直接在区块链网络中选择一个或多个节点(少于全区块链节点)对接收到的签名数据(r',s')进行校验,校验成功之后将校验通过的目标签名数据(r〞,s〞)及目标签名数据对应的消息原文参数发送给区块链网络中的其它节点设备。区块链网络中的节点设备可以接收验证通过的目标签名数据及目标签名数据对应的消息原文参数。
可以理解的是,如果传输过程没有数据损坏的情况下,数据(r,s)、(r',s')、(r〞,s〞)是相同的数据。
102、获取目标用户的公钥对应的算法参数;
为了回推计算目标用户的公钥,区块链网络中的节点设备需要获取目标用户的公钥计算过程中所采用的非对称加密算法及实现对应非对称加密算法所需的计算参数即算法参数。该算法参数的获取可以通过上一个节点进行传输也可以是在安装客户端安装过程中预先保存在区块链网络中的各个节点设备的本地存储空间中,在本地存储空间中中提取,无需网络传输。
103、根据目标签名数据、算法参数及消息原文参数计算目标用户的公钥,并保存计算得到的目标用户的公钥在本地区块链节点设备。
在获取到目标签名数据、算法参数及消息原文参数之后,可以针对所采用的非对称加密算法的特性推导对应的算法,以计算目标用户的公钥。
具体的,仅以SM2椭圆曲线公钥密码算法为例进行说明。
若节点接收到的验证通过的目标签名数据为(r〞,s〞),算法参数中包含SM2算法中使用的椭圆曲线的基点G及基点的阶数为n,消息原文参数为密码杂凑函数作用于消息原文M的输出值e,根据目标签名数据、算法参数及消息原文参数计算目标用户的公钥包括:
将r〞与s〞转换为整数之后,根据公式计算参数t,其中t=(r〞+s〞)mod n;
采用有限域逆运算算法计算参数t的逆元素t-1;
计算基点G在椭圆曲线的s〞倍点[s〞]G;
计算椭圆曲线上横坐标为(r〞-e)的点U;
根据公式计算目标用户的公钥PA'=[t-1](U-[s〞]G)。
需要说明的是,节点可能直接接收到其它节点(节点B)发送的密码杂凑函数作用于消息原文M的输出值e,则可直接使用e进行公钥的计算;如果节点未接收到上述输出值e,但获取到了消息原文M,则要分两种情况处理:1、可以利用密码杂凑函数计算出上述输出值e;2、如果消息原文M符合杂凑函数的输出格式,也可以把消息原文M当作输出值e来使用。
具体的,有限域逆运算算法及椭圆曲线的倍点算法可以参照现有技术中的方案,此处不做赘述。实际运用中椭圆曲线上横坐标为(r〞-e)的点可以有多个,具体运用中可以在算法参数中从多个横坐标为(r〞-e)的点中预先指定特定一个U点。
本发明实施例中,区块链节点设备在进行数据同步的过程中,可以接收验证通过的目标签名数据及目标签名数据对应的消息原文参数,并根据目标签名数据、算法参数及消息原文参数计算目标用户的公钥,无需传输目标用户的公钥,节约了数据传输过程中网络带宽。尤其是在区块链节点数量巨大(数以百万级)的区块链网络中,大大节约了网络带宽资源。
可选的,作为一种可能的实施方式,为了保障数据的准确性,在计算目标用户的公钥PA'之前,还需要对接收到的数据进行校验,具体可以包括:
校验目标签名数据(r〞,s〞)是否符合第一预设条件,若符合第一预设条件,则进行计算目标用户的公钥PA'的步骤;具体的,符合第一预设条件可以包括:
r〞∈[1,n-1]成立,s〞∈[1,n-1]成立,(r〞+s〞)mod n=t的值不为零,[t-1]mod n的值不为零,(r〞-e)mod n的值不为零。
本发明实施例在回推计算出目标用户的公钥之后,如果计算得到的目标用户的公钥能使得原签名验证通过,则可以说明在上述实施例中的计算步骤是正确。可选的,作为一种可能的实施方式,为了保障数据的准确性,在保存计算得到的目标用户的公钥在本地区块链节点设备之前,方法还包括:
校验目标用户的公钥PA'是否符合第二预设条件,若符合,则执行保存计算得到的目标用户的公钥在本地区块链节点设备的步骤;
第二预设条件包括:等式([t-1]PA'+[s〞]G).x+e=r〞mod n成立。
根据国家密码管理局公布的SM2椭圆曲线公钥密码算法可知,签名验证算法中,([t-1]PA+[s]G).x+e={[t][t-1](U-[s]G)+[s]G}.x+e mod n
={(U+[s]G)-[s]G}.x+e mod n
=U.x+emod n=r-e+emod n=r mod n
因此,只需要验证等式([t-1]PA'+[s〞]G).x+e=r〞mod n是否成立,若成立,即可验证可以说明在上述实施例中的计算步骤是正确。
为了便于理解,下面将结合具体运用实例对本申请中的区块链网络中的数据处理方法进行说明。
用户A生成私钥及对应的公钥。私钥为自己的秘密,公钥PA公开。私钥可以用于生成签名,公钥可以用于验证签名。公钥PA生成以后会同步给需要对自己信息进行验证的用户B。当用户A使用私钥对自己的信息签名以后,会把信息原文及对应的签名(r,s)发送给用户B,用户B使用用户A的公钥对接收到的签名(r',s')进行验证。用户C只需要根据用户B发送的验证通过的目标签名数据(r〞,s〞),SM2算法中使用的椭圆曲线的基点G及基点的阶数为n,以及密码杂凑函数作用于消息原文的输出值e或消息原文M回推计算出目标用户的公钥PA',具体计算过程如下:
C1:检验r〞∈[1,n-1]是否成立,若不成立则退出运算;
C2:检验s〞∈[1,n-1]是否成立,若不成立则退出运算;
C3:计算,若(r〞+s〞)mod n=t=0,则退出运算;
C4:计算采用有限域逆运算算法计算参数t的逆元素t-1,并验证[t-1]mod n的值是否为零,若为零,则退出计算;
C5:验证(r〞-e)mod n的值是否为零,若为零,则退出计算;
C6:找到椭圆曲线上的点U与U′,U与U′点的x坐标都等于(r〞-e),y坐标关于y轴对称,可以根据具体业务需求,通过额外参数的方式具体指定使用U与U′;
C7:计算椭圆曲线上的多倍点[s〞]G;
C8:计算椭圆曲线上的点U-[s〞]G;
C9:计算公钥PA'=[t-1](U-[s〞]G)。
本发明实施例中,通过设计出可以根据已验证签名回推公钥算法极大的减少了通讯量,减少了带宽。尤其是在区块链场景下,每笔已经验证的交易均为一个签名,用户的钱包地址取决于公钥地址,在交易确认过程中,往往既需要对交易的确认又需要钱包地址。根据签名回推出公钥地址可以极大的减少通讯量,减少区块链的交易确认时间及网络带宽资源。
请参阅图2,在本实施例中还提供了一种区块链网络中的数据处理系统,其包括:
接收单元201,用于接收验证通过的目标签名数据并获取目标签名数据对应的消息原文参数,目标签名数据是采用目标用户的公钥对消息原文进行加密运算之后得到的数据;
获取单元202,用于获取目标用户的公钥对应的算法参数,算法参数用于指示目标用户的公钥计算过程中所采用的非对称加密算法及实现对应非对称加密算法所需的计算参数;
处理单元203,用于根据目标签名数据、算法参数及消息原文参数计算目标用户的公钥,并保存计算得到的目标用户的公钥在本地区块链节点设备。
可选的,作为一种可能的实施方式,若目标签名数据为(r〞,s〞),算法参数中包含SM2算法中使用的椭圆曲线的基点G及基点的阶数为n,消息原文参数为密码杂凑函数作用于消息原文的输出值e或消息原文M,处理单元包括:
第一计算模块,用于将r〞与s〞转换为整数之后,根据公式计算参数t,其中t=(r〞+s〞)mod n;
第二计算模块,用于采用有限域逆运算算法计算参数t的逆元素t-1;
第三计算模块,用于计算基点G在椭圆曲线的s〞倍点[s〞]G;
第四计算模块,用于计算椭圆曲线上横坐标为(r〞-e)的点U;
第五计算模块,用于根据公式计算目标用户的公钥PA'=[t-1](U-[s〞]G)。
可选的,作为一种可能的实施方式,在计算目标用户的公钥PA'之前,该系统还包括:
第一校验单元,用于校验目标签名数据(r〞,s〞)是否符合第一预设条件,若符合第一预设条件,则进行计算目标用户的公钥PA'的步骤;
符合第一预设条件包括:
r〞∈[1,n-1]成立,s〞∈[1,n-1]成立,(r〞+s〞)mod n=t的值不为零,[t-1]mod n的值不为零,(r〞-e)mod n的值不为零。
可选的,作为一种可能的实施方式,在保存计算得到的目标用户的公钥在本地区块链节点设备之前,该系统还包括:
第二校验单元,用于校验目标用户的公钥PA'是否符合第二预设条件,若符合,则执行保存计算得到的目标用户的公钥在本地区块链节点设备的步骤;符合第二预设条件包括:等式([t-1]PA'+[s〞]G).x+e=r〞mod n成立。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
请参阅图3,在本实施例中还提供了一种区块链节点设备,区块链节点设备1可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机、智能路由器、矿机、网络存储设备终端设备。
该区块链节点设备1可以是组成CDN网络或者区块链网络的节点。
该区块链节点设备1可以包括存储器11、处理器12和总线13。处理器11执行计算机程序时实现上述图1所示的基于区块链的区块链网络中的数据处理方法实施例中的步骤,例如图1所示的步骤101至103。或者,处理器执行计算机程序时实现上述各装置实施例中各模块或单元的功能。
本发明的一些实施例中,处理器具体用于实现如下步骤:
接收验证通过的目标签名数据并获取目标签名数据对应的消息原文参数,目标签名数据是采用目标用户的公钥对消息原文进行加密运算之后得到的数据;
获取目标用户的公钥对应的算法参数,算法参数用于指示目标用户的公钥计算过程中所采用的非对称加密算法及实现对应非对称加密算法所需的计算参数;
根据目标签名数据、算法参数及消息原文参数计算目标用户的公钥,并保存计算得到的目标用户的公钥在本地区块链节点设备。
若目标签名数据为(r〞,s〞),算法参数中包含SM2算法中使用的椭圆曲线的基点G及基点的阶数为n,消息原文参数为密码杂凑函数作用于消息原文的输出值e或消息原文M,可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
将r〞与s〞转换为整数之后,根据公式计算参数t,其中t=(r〞+s〞)mod n;
采用有限域逆运算算法计算参数t的逆元素t-1;
计算基点G在椭圆曲线的s〞倍点[s〞]G;
计算椭圆曲线上横坐标为(r〞-e)的点U;
根据公式计算目标用户的公钥PA'=[t-1](U-[s〞]G)。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
接收目标签名数据对应的消息原文M;
若消息原文M符合密码杂凑函数的输出格式,则将消息原文作为所述输出值e,否则利用密码杂凑函数和消息原文M计算得到所述输出值e。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
校验目标签名数据(r〞,s〞)是否符合第一预设条件,若符合第一预设条件,则进行计算目标用户的公钥PA'的步骤;
第一预设条件包括:
r〞∈[1,n-1]成立,s〞∈[1,n-1]成立,(r〞+s〞)mod n=t的值不为零,[t-1]mod n的值不为零,(r〞-e)mod n的值不为零。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
校验目标用户的公钥PA'是否符合第二预设条件,若符合,则执行保存计算得到的目标用户的公钥在本地区块链节点设备的步骤;
第二预设条件包括:等式([t-1]PA'+[s〞]G).x+e=r〞mod n成立。
其中,存储器11至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是区块链节点设备1的内部存储单元,例如该区块链节点设备1的硬盘。存储器11在另一些实施例中也可以是区块链节点设备1的外部存储设备,例如区块链节点设备1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括区块链节点设备1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于区块链节点设备1的应用软件及各类数据,例如**程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行**程序01等。
该总线13可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步地,区块链节点设备还可以包括网络接口14,网络接口14可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该区块链节点设备1与其他电子设备之间建立通信连接。
可选地,该区块链节点设备1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(OrganicLight-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在区块链节点设备1中处理的信息以及用于显示可视化的用户界面。
图3仅示出了具有组件11-14以及计算机程序01的区块链节点设备1,本领域技术人员可以理解的是,图1示出的结构并不构成对区块链节点设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,可以实现如下步骤:
接收验证通过的目标签名数据并获取目标签名数据对应的消息原文参数,目标签名数据是采用目标用户的公钥对消息原文进行加密运算之后得到的数据;
获取目标用户的公钥对应的算法参数,算法参数用于指示目标用户的公钥计算过程中所采用的非对称加密算法及实现对应非对称加密算法所需的计算参数;
根据目标签名数据、算法参数及消息原文参数计算目标用户的公钥,并保存计算得到的目标用户的公钥在本地区块链节点设备。
若目标签名数据为(r〞,s〞),算法参数中包含SM2算法中使用的椭圆曲线的基点G及基点的阶数为n,消息原文参数为密码杂凑函数作用于消息原文的输出值e或消息原文M,可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
将r〞与s〞转换为整数之后,根据公式计算参数t,其中t=(r〞+s〞)mod n;
采用有限域逆运算算法计算参数t的逆元素t-1;
计算基点G在椭圆曲线的s〞倍点[s〞]G;
计算椭圆曲线上横坐标为(r〞-e)的点U;
根据公式计算目标用户的公钥PA'=[t-1](U-[s〞]G)。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
接收目标签名数据对应的消息原文M;
若所述消息原文M符合密码杂凑函数的输出格式,则将所述消息原文作为所述输出值e,否则利用密码杂凑函数和消息原文M计算得到所述输出值e。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
校验目标签名数据(r〞,s〞)是否符合第一预设条件,若符合第一预设条件,则进行计算目标用户的公钥PA'的步骤;
符合第一预设条件包括:
r〞∈[1,n-1]成立,s〞∈[1,n-1]成立,(r〞+s〞)mod n=t的值不为零,[t-1]mod n的值不为零,(r〞-e)mod n的值不为零。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
校验目标用户的公钥PA'是否符合第二预设条件,若符合,则执行保存计算得到的目标用户的公钥在本地区块链节点设备的步骤;
符合第二预设条件包括:等式([t-1]PA'+[s〞]G).x+e=r〞mod n成立。
本发明实施例还提供了一种计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。