一种跨区块链的交易身份确认方法及装置
文献发布时间:2023-06-19 09:27:35
技术领域
本发明涉及金融科技(Fintech)领域中的区块链(blockchain)领域,尤其涉及一种跨区块链的交易身份确认方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。区块链(blockchain)由于不可篡改、去中心化等特点常与金融科技领域相结合。随着区块链技术的发展,跨链场景也逐渐应用于金融科技领域。目前跨区块链场景下,常有跨链认证用户的需求,即验证不同区块链上的交易是否为同一用户发起的。
目前,同构区块链系统的跨链场景下可以轻松解决跨链认证用户的需求,因为同构区块链系统的采用相同的签名算法,用户可以只用一种密钥生成算法,生成一对公私钥对,便能适配同构区块链系统的所有区块链,在不同链上都使用这对私钥签名交易,直接验证其公钥是否相同即可。然而,同构区块链系统跨链是跨链中的小众场景,更多的是涉及到签名算法不完全相同的异构区块链系统的跨链场景。而异构区块链系统场景下,由于采用了不完全相同的签名算法,需要不同的密钥生成算法,生成不同的公私钥对去适配异构区块链系统中的区块链,因此不能直接比对公钥来判断不同链上的交易是否来自同一个用户。所以,目前异构区块链还没有跨链认证用户的方法,这是一个亟待解决的问题。
发明内容
本发明提供一种跨区块链的交易身份确认方法及装置,解决了现有技术中目前异构区块链还没有跨链认证用户的问题。
第一方面,本发明提供一种跨区块链的交易身份确认方法,包括:获取第一交易的公钥、所述第一交易的签名、第二交易的签名和所述第二交易的公钥;所述第一交易为第一区块链上的交易;所述第二交易为第二区块链上的交易;所述第一区块链和所述第二区块链为区块链系统中任意两个区块链;针对任一用户在所述区块链系统中任一区块链的私钥,所述用户在该区块链的私钥是基于所述用户的共用公钥根据该区块链的密钥生成算法确定的;所述用户在所述区块链系统中任一区块链上交易的签名是基于所述用户在该区块链上的私钥得到的;若所述第一交易的公钥和所述第二交易的公钥相同,且所述第一交易的签名和所述第二交易的签名均验证通过,则确定所述第一用户和所述第二用户为相同用户,从而确定所述第一交易和所述第二交易为相同用户发起的交易。
上述方法中,针对任一用户在所述区块链系统中任一区块链的私钥,所述用户在该区块链的私钥是基于所述用户的共用公钥根据该区块链的密钥生成算法确定的,也就是说,每个用户在区块链系统中任一区块链上的公钥都相同,均是共用公钥,在每个区块链上生成了在该区块链上的私钥,从而对于同一用户,无论在哪个区块链上发起的交易,虽然不同区块链上的交易的签名是该用户在不同区块链上的私钥得到的,即便在各区块链上的密钥生成算法不完全相同,但不同区块链上的私钥都映射该用户的同一共用公钥,而且,所述用户在所述区块链系统中任一区块链上交易的签名是基于所述用户在该区块链上的私钥得到的,所以只要所述用户发起交易的签名验签通过便能证明这笔交易的私钥确实是所述用户在该区块链上的私钥,若所述第一交易的公钥和所述第二交易的公钥相同,且所述第一交易的签名和所述第二交易的签名均验证通过,便可以确定所述第一交易和所述第二交易为相同用户发起的交易,从而提供了一种在异构区块链系统中也能确认交易身份的方法。
可选的,所述用户的共用公钥是根据所述用户的身份标识信息生成的;针对所述用户在所述区块链系统中任一区块链的私钥,该区块链的私钥按照以下方式生成:根据第一随机数和所述用户的共用公钥,基于椭圆曲线运算,将得到的运算结果作为所述用户在该区块链的私钥;针对所述用户在该区块链上的任一交易的签名,该签名按照以下方式生成:根据第二随机数和有向循环群的第一生成元,生成该签名的第一子部分;根据所述第一子部分、所述用户的身份标识信息和交易数据,生成该签名的第一中间变量;根据所述用户在该区块链的私钥、所述第二随机数和所述第一中间变量,生成该签名的第二子部分。
上述方法中,所述用户的共用公钥是根据所述用户的身份标识信息生成的,通过椭圆曲线运算,生成所述用户在该区块链的私钥,进一步地生成所述用户在该区块链的签名,从而可以基于用户的身份标识信息,增加了所述用户在该区块链的私钥以及签名的安全性。
可选的,所述用户的共用公钥具体是按照以下方式生成:W=H1(ID);其中,H1为第一单向映射函数,ID为所述用户的身份标识信息,W为所述用户的共用公钥;所述根据第一随机数和所述用户的共用公钥,基于椭圆曲线运算,将得到的运算结果作为所述用户在该区块链的私钥,包括:u=s*W;其中,s为所述第一随机数,u为所述用户在该区块链的私钥;所述根据第二随机数和有向循环群的第一生成元,生成该签名的第一子部分,包括:c=k*G1;其中,k为所述第二随机数,G1为所述第一生成元,c为所述第一子部分;所述根据所述第一子部分、所述用户的身份标识信息和交易数据,生成该签名的第一中间变量,包括:d=H2(ID,t,c);其中,H2为第二单向映射函数,t为交易数据,d为所述第一中间变量;所述根据所述用户在该区块链的私钥、所述第二随机数和所述第一中间变量,生成该签名的第二子部分,包括:f=u+k*d;其中,f为所述第二子部分。
上述方法中,通过第一单向映射函数、椭圆曲线运算和第二单向映射函数等信息,得到所述用户在该区块链的私钥以及签名,从而增加了所述用户在该区块链的私钥以及签名的安全性。
可选的,所述用户在所述区块链系统中任一区块链上交易的签名按照以下方式验证:根据所述有向循环群的第二生成元和该签名的第二子部分,基于椭圆曲线运算,得到第一运算结果;根据跨链联盟委员会的公钥和所述用户的共用公钥,基于椭圆曲线运算,得到第二运算结果;所述跨链联盟委员会的公钥是根据所述第一随机数和所述第一生成元得到的;根据该签名的第一子部分和所述第一中间变量,基于椭圆曲线运算,得到第三运算结果;若确定所述第一运算结果、所述第二运算结果和所述第三运算结果满足预设关系,则确定该签名验证通过。
上述方式下,基于所述用户在该区块链的私钥和签名的生成方法,通过构造第一运算结果、第二运算结果和第三运算结果,可以通过预设关系,则确定该签名验证通过,从而提供了一种高安全性的验签方法。
可选的,所述跨链联盟委员会的公钥具体按照以下方式得到:J=s*G2;其中,s为所述第一随机数,J为所述跨链联盟委员会的公钥;所述预设关系具体为:e(G2,f)=e(J,W)*e(c,d),其中,e(G2,f)为所述第一运算结果,e(J,W)为所述第二运算结果,e(c,d)为所述第三运算结果,e表示椭圆曲线运算中的双线性映射运算;G2为所述第二生成元,f为所述第二子部分,W为所述用户的共用公钥,c为所述第一子部分,d为所述第一中间变量。
上述方式下,J为通过所述第一随机数和所述第二生成元得到,进而通过椭圆曲线运算中的双线性映射运算,在不泄露私钥的前提下,对所述预设关系进行验证,从而提升了签名验证的安全性。
可选的,若所述第一交易的公钥和所述第二交易的公钥不相同,或者所述第一交易的签名和\或所述第二交易的签名未验证通过,则确定所述第一用户和所述第二用户为不同用户,从而确定所述第一交易和所述第二交易为不同用户发起的交易。
上述方式下,在所述第一交易的公钥和所述第二交易的公钥不相同,或者所述第一交易的签名和\或所述第二交易的签名未验证通过,便确定所述第一用户和所述第二用户为不同用户,从而提供了一种确定所述第一交易和所述第二交易为不同用户发起的交易的方法。
可选的,对所述第一交易和\或所述第二交易进行跨链交易存在性验证,从而确定所述第一交易是否在所述第一区块链上有效上链,和\或确定所述第二交易是否在所述第二区块链上有效上链。
上述方式下,通过跨链交易存在性验证,确定所述第一交易是否在所述第一区块链上有效上链,和\或确定所述第二交易是否在所述第二区块链上有效上链,从而进一步地增加交易身份确认的可靠性。
第二方面,本发明提供一种跨区块链的交易身份确认装置,包括:获取模块,用于获取第一交易的公钥、所述第一交易的签名、第二交易的签名和所述第二交易的公钥;所述第一交易为第一区块链上的交易;所述第二交易为第二区块链上的交易;所述第一区块链和所述第二区块链为区块链系统中任意两个区块链;针对任一用户在所述区块链系统中任一区块链的私钥,所述用户在该区块链的私钥是基于所述用户的共用公钥根据该区块链的密钥生成算法确定的;所述用户在所述区块链系统中任一区块链上交易的签名是基于所述用户在该区块链上的私钥得到的;处理模块,用于若所述第一交易的公钥和所述第二交易的公钥相同,且所述第一交易的签名和所述第二交易的签名均验证通过,则确定所述第一用户和所述第二用户为相同用户,从而确定所述第一交易和所述第二交易为相同用户发起的交易。
可选的,所述用户的共用公钥是根据所述用户的身份标识信息生成的;所述处理模块还用于:针对所述用户在所述区块链系统中任一区块链的私钥,该区块链的私钥按照以下方式生成:根据第一随机数和所述用户的共用公钥,基于椭圆曲线运算,将得到的运算结果作为所述用户在该区块链的私钥;针对所述用户在该区块链上的任一交易的签名,该签名按照以下方式生成:根据第二随机数和有向循环群的第一生成元,生成该签名的第一子部分;根据所述第一子部分、所述用户的身份标识信息和交易数据,生成该签名的第一中间变量;根据所述用户在该区块链的私钥、所述第二随机数和所述第一中间变量,生成该签名的第二子部分。
可选的,所述处理模块具体用于:具体按照以下方式生成所述用户的共用公钥:W=H1(ID);其中,H1为第一单向映射函数,ID为所述用户的身份标识信息,W为所述用户的共用公钥;具体按照以下方式生成所述用户在该区块链的私钥:u=s*W;其中,s为所述第一随机数,u为所述用户在该区块链的私钥;具体按照以下方式生成所述第一子部分:c=k*G1;其中,k为所述第二随机数,G1为所述第一生成元,c为所述第一子部分;具体按照以下方式生成所述第一中间变量:d=H2(ID,t,c);其中,H2为第二单向映射函数,t为交易数据,d为所述第一中间变量;具体按照以下方式生成所述第二子部分:f=u+k*d;其中,f为所述第二子部分。
可选的,所述处理模块还用于:按照以下方式验证所述用户在所述区块链系统中任一区块链上交易的签名:根据所述有向循环群的第二生成元和该签名的第二子部分,基于椭圆曲线运算,得到第一运算结果;根据跨链联盟委员会的公钥和所述用户的共用公钥,基于椭圆曲线运算,得到第二运算结果;所述跨链联盟委员会的公钥是根据所述第一随机数和所述第一生成元得到的;根据该签名的第一子部分和所述第一中间变量,基于椭圆曲线运算,得到第三运算结果;若确定所述第一运算结果、所述第二运算结果和所述第三运算结果满足预设关系,则确定该签名验证通过。
可选的,所述跨链联盟委员会的公钥具体按照以下方式得到:J=s*G2;其中,s为所述第一随机数,J为所述跨链联盟委员会的公钥;所述预设关系具体为:e(G2,f)=e(J,W)*e(c,d),其中,e(G2,f)为所述第一运算结果,e(J,W)为所述第二运算结果,e(c,d)为所述第三运算结果,e表示椭圆曲线运算中的双线性映射运算;G2为所述第二生成元,f为所述第二子部分,W为所述用户的共用公钥,c为所述第一子部分,d为所述第一中间变量。
可选的,所述处理模块还用于:若所述第一交易的公钥和所述第二交易的公钥不相同,或者所述第一交易的签名和\或所述第二交易的签名未验证通过,则确定所述第一用户和所述第二用户为不同用户,从而确定所述第一交易和所述第二交易为不同用户发起的交易。
可选的,所述处理模块还用于:对所述第一交易和\或所述第二交易进行跨链交易存在性验证,从而确定所述第一交易是否在所述第一区块链上有效上链,和\或确定所述第二交易是否在所述第二区块链上有效上链。
上述第二方面及第二方面各个可选装置的有益效果,可以参考上述第一方面及第一方面各个可选方法的有益效果,这里不再赘述。
第三方面,本发明提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法。
第四方面,本发明提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种跨区块链的交易身份确认方法可应用的系统架构示意图;
图2为本发明实施例提供的一种跨区块链的交易身份确认方法对应的流程示意图;
图3为本发明实施例提供的一种跨区块链的交易身份确认装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面首先列出本申请实施例中出现的名词及释义。
区块链:区块链是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
智能合约:智能合约是一种特殊代码,可以运行在区块链上,可以其他合约进行互动、做决策、存储数据到区块链上等。
跨链:一种支持数据或资产在多条区块链之间进行转移的技术,是区块链向外拓展和连接的桥梁。
跨链用户:跨链用户是在多条区块链均发起交易的用户。每个用户在每条链上均有一对独立且唯一的公私钥对,发起交易时使用其私钥进行签名,接收方可通过公钥验签交易。
交易存在性验证:一种轻节点支付验证技术,借助默克尔树结构在不保存全量区块数据的情况下验证交易的存在性。
基于身份密码体系:在这种密码体系中,用户的公钥是其身份或从其身份信息中获得,而私钥则由一个称之为私钥生成器的可信第三方产生,不需要存放公钥或证书的目录,从而简化了公钥的管理过程。
在金融机构(银行机构、保险机构或证券机构)在进行业务(如银行的贷款业务、存款业务等)运转过程中,区块链(blockchain)由于不可篡改、去中心化等特点常与金融科技领域相结合。目前跨区块链场景下,常有跨链认证用户的需求,即验证不同区块链上的交易是否为同一用户发起的。但是,目前异构区块链系统场景下,由于采用了不完全相同的签名算法,需要不同的密钥生成算法,生成不同的公私钥对去适配异构区块链系统中的区块链,因此不能直接比对公钥来判断不同链上的交易是否来自同一个用户。所以,目前异构区块链还没有跨链认证用户的方法。这种情况不符合银行等金融机构的需求,无法保证金融机构各项业务的高效运转。为此,本发明实施例提供一种跨区块链的交易身份确认方法。如图1所示,为本发明实施例提供的一种跨区块链的交易身份确认方法可应用的系统架构示意图。
由图1可知,该架构包括两部分:分别是用户和区块链系统。图1中有n个用户:用户1、用户2、…用户n。图1中区块链系统以区块链a和区块链b为例,具体区块链系统中区块链的个数以及有哪些区块链不做限制。具体来说:
用户:参与跨链交易,每个用户利用的公钥(图1中为用户自身认证的用户身份标识信息(ID)),根据具体区块链采用的基于身份的签名算法获取其对应私钥(如用户1,根据用户1的用户ID1得到在区块链a的私钥a(sk1_a),以及得到在区块链b的私钥b(sk1_b))。用户ID作为公钥,用于唯一标识一个用户。因此每个用户均有一个唯一的认证公钥和多个与区块链相对应的私钥。
区块链:各条区块链通过跨链协议进行跨链互通,每条区块链不要求有完全相同的签名算法,只需要支持基于身份的密码体系即可,即每条区块链可以各自选择具体的基于身份的签名密码算法。
下面结合图2,详细说明本发明实施例提供的一种跨区块链的交易身份确认方法。
步骤201:获取第一交易的公钥、所述第一交易的签名、第二交易的签名和所述第二交易的公钥。
步骤202:若所述第一交易的公钥和所述第二交易的公钥相同,且所述第一交易的签名和所述第二交易的签名均验证通过,则确定所述第一用户和所述第二用户为相同用户,从而确定所述第一交易和所述第二交易为相同用户发起的交易。
步骤201~步骤202中,所述第一交易为第一区块链上的交易;所述第二交易为第二区块链上的交易;所述第一区块链和所述第二区块链为区块链系统中任意两个区块链;针对任一用户在所述区块链系统中任一区块链的私钥,所述用户在该区块链的私钥是基于所述用户的共用公钥根据该区块链的密钥生成算法确定的;所述用户在所述区块链系统中任一区块链上交易的签名是基于所述用户在该区块链上的私钥得到的。
用户提供用户的公钥(如用户ID),可以根据接入的区块链的基于身份的签名算法,调用其密钥生成算法生成一个关于用户身份的私钥。如在图1中,用户1需要接入区块链a和区块链b,其提供用户ID1,即为用户公钥,然后针对区块链a和区块链b分别生成了私钥a和私钥b。类似的,其他用户也是采用相同机制生成公私钥。
一种可选实施方式中,所述用户的共用公钥是根据所述用户的身份标识信息生成的。具体来说,所述用户的身份标识信息为用户ID,将用户ID作为所述用户的共用公钥,用户ID是基于身份密码体系中的公钥字符串,可以唯一标识一个用户,例如电子邮件地址,电话号码,身份证号码等。针对所述用户在所述区块链系统中任一区块链的私钥,该区块链的私钥按照以下方式生成:
步骤(1-1):根据第一随机数和所述用户的共用公钥,基于椭圆曲线运算,将得到的运算结果作为所述用户在该区块链的私钥。
针对所述用户在该区块链上的任一交易的签名,该签名按照以下方式生成:
步骤(1-2):根据第二随机数和有向循环群的第一生成元,生成该签名的第一子部分。
步骤(1-3):根据所述第一子部分、所述用户的身份标识信息和交易数据,生成该签名的第一中间变量。
步骤(1-4):根据所述用户在该区块链的私钥、所述第二随机数和所述第一中间变量,生成该签名的第二子部分。
上述可选实施方式具体情形可以如下:
所述用户的共用公钥具体是按照以下方式生成:W=H1(ID);其中,H1为第一单向映射函数,ID为所述用户的身份标识信息,W为所述用户的共用公钥。步骤(1-1)具体可以如下:
u=s*W;其中,s为所述第一随机数,u为所述用户在该区块链的私钥。
步骤(1-2)具体可以如下:
c=k*G1;其中,k为所述第二随机数,G1为所述第一生成元,c为所述第一子部分。
步骤(1-3)具体可以如下:
d=H2(ID,t,c);其中,H2为第二单向映射函数,t为交易数据,d为所述第一中间变量。
步骤(1-4)具体可以如下:
f=u+k*d;其中,f为所述第二子部分。
在一种具体实现方式中,构造生成公私钥算法可以通过跨链联盟委员会来实现,具体如下:
跨链联盟委员会进行参数初始化,选择两个哈希函数h1和h2,两个有限循环群R1和R2,椭圆曲线中的双线性对映射运算e,双线性对映射满足线性性质,即任意选取R1中的点P,Q,选择Zq中的数a,b,其中Zq表示从1到素数q范围之间的正整数集合,可知a和b均是1到素数q之间的任意一个正整数。双线性对映射的线性性质表示为e(aP,bQ)=e(P,Q)
跨链联盟委员会公私钥生成:跨链联盟委员会为了通过每个用户的公钥生成其对应的私钥,跨链联盟委员会自身需要提前生成一套公私钥,用于用户私钥生成过程。具体做法是跨链联盟委员会选择一个随机数(第一随机数)s,在R1群中选择生成元G1(生成元是R1中的一类特殊点,即群中所有的点都可以通过该点表示),计算J=s*G,其中s作为跨链联盟委员会的私钥,J作为跨链联盟委员会的公钥。
用户公私钥生成:对于任一用户,通过该用户的公钥ID计算所述用户的共用公钥W=H1(ID),并将W发送给跨链联盟委员会。跨链联盟委员会利用自身私钥s计算u=s*W,将u发送给用户。用户的公钥为ID,私钥为u。
显然,通过上述公私钥生成过程,若用户针对不同区块链发起交易,其签名私钥分别是通过相同用户ID根据不同区块链的签名算法派生的私钥。例如用户1可以分别向区块链a和区块b发起交易,其交易私钥分别是sk1_a和sk1_b,但其对应公钥均是用户ID1。
对于交易数据t,构造签名过程具体可以如下:
选择第二随机数k,并计算c=k*G1,然后计算d=H2(ID,t,c),其中ID是用户的身份标识信息;计算f=u+k*d,其中u是用户私钥,生成的签名为(c,f)。
一种可选实施方式中,所述用户在所述区块链系统中任一区块链上交易的签名按照以下方式验证:
步骤(2-1):根据所述有向循环群的第二生成元和该签名的第二子部分,基于椭圆曲线运算,得到第一运算结果;
步骤(2-2):根据跨链联盟委员会的公钥和所述用户的共用公钥,基于椭圆曲线运算,得到第二运算结果。
所述跨链联盟委员会的公钥是根据所述第一随机数和所述第一生成元得到的。
步骤(2-3):根据该签名的第一子部分和所述第一中间变量,基于椭圆曲线运算,得到第三运算结果。
步骤(2-4):若确定所述第一运算结果、所述第二运算结果和所述第三运算结果满足预设关系,则确定该签名验证通过。
在上述步骤(2-1)~步骤(2-4)中,区块链之间通过跨链协议获取对方区块链交易的签名信息,需要确认不同区块链链中的交易是否来自同一个用户。这时需要通过交易提取交易中用户的公钥,也为交易签名的公钥,利用用户的公钥可以验签交易。通过对不同区块链中用户交易中用户的公钥,即可识别是否是同一个用户在不同区块链完成了相关交易。
由于,用户在不同区块链均提供了同一个用户的公钥,利用基于身份的密码体系可以产生适配不同区块链签名算法的私钥,即可满足用户在不同区块链正常发送交易,通过跨链协议又可以通过交易获取其唯一用户的公钥,实现对同一用户的标识,进而实现同一用户在满足在不同区块链均完成特定交易情况下的应用业务逻辑。
上述可选实施方式的具体情形中可以如下:
所述跨链联盟委员会的公钥具体按照以下方式得到:
J=s*G2;其中,s为所述第一随机数,J为所述跨链联盟委员会的公钥;
所述预设关系具体为:
e(G2,f)=e(J,W)*e(c,d),其中,e(G2,f)为所述第一运算结果,e(J,W)为所述第二运算结果,e(c,d)为所述第三运算结果,e表示椭圆曲线运算中的双线性映射运算;G2为所述第二生成元,f为所述第二子部分,W为所述用户的共用公钥,c为所述第一子部分,d为所述第一中间变量。
具体来说,构造验签算法可以如下:利用用户的唯一标志ID,交易数据t,签名(c,f),验证签名做以下两步:
计算W=H1(ID),d=H2(ID,t,c),其中ID是用户的身份标识信息。
验证e(G2,f)=e(J,W)*e(c,d),其中G2是R1群中的生成元,J是跨链联盟委员会的公钥,W为所述用户的共用公钥,c和f是用户生成的签名,d是所述第一中间变量,即验证者通过用户的ID,交易数据t以及签名值c计算的哈希值。
验证者通过用户的公钥(即ID),跨链联盟委员会的公钥J,用户的签名c和f,以及通过公开参数计算的W和d满足该映射等式是否成立,从而完成签名的验证过程。验证证明过程如下:
e(J,W)*e(c,d)=e(s*G,W)*e(k*G,d)
=e(G,s*W)*e(G,k*d)
=e(G,u)*e(G,k*d)
=e(G,u+k*d)
=e(G,f)。
一种可选实施方式中,若所述第一交易的公钥和所述第二交易的公钥不相同,或者所述第一交易的签名和\或所述第二交易的签名未验证通过,则确定所述第一用户和所述第二用户为不同用户,从而确定所述第一交易和所述第二交易为不同用户发起的交易。
一种可选实施方式中,对所述第一交易和\或所述第二交易进行跨链交易存在性验证,从而确定所述第一交易是否在所述第一区块链上有效上链,和\或确定所述第二交易是否在所述第二区块链上有效上链。
基于步骤201~步骤202的方法及可选方法,下面通过一示例场景继续说明图2示出的跨区块链的交易身份确认方法,具体场景为:用户在区块链a上发起交易进行业务1的办理,但依赖该用户在区块链b上先完成业务2,然后再进行业务1的处理流程,那么区块链a需要通过跨链协议获取区块链b中关于用户发起的交易Tb。
具体过程如下:
第一步,用户生成多个公私钥对:
用户提供用户ID,例如提供一个认证的电子邮件地址。然后通过用户ID分别获取适配区块链a和区块链b上的账户私钥sk_a和sk_b。
第二步,用户发起交易:用户首先向区块链b发起处理业务2的交易Tb,交易Tb使用私钥sk_b签名,区块链b可以正常验签。然后用户向区块链a发起处理业务1的交易Ta,该交易使用私钥sk_a签名,区块链a可以正常验签。
第三步,统一用户标识协助跨链业务处理:
由于用户在不同链使用了相同的用户ID标识其身份,因此区块链a可以通过跨链协议获取区块链b中关于用户发起的交易Tb,通过跨链交易存在性证明判断Tb交易是否有效上链,如果有效上链则代表业务2在区块链上处理完成,那么在区块链a上可以继续业务1的处理。
如图3所示,本发明提供一种跨区块链的交易身份确认装置,包括:获取模块301,用于获取第一交易的公钥、所述第一交易的签名、第二交易的签名和所述第二交易的公钥;所述第一交易为第一区块链上的交易;所述第二交易为第二区块链上的交易;所述第一区块链和所述第二区块链为区块链系统中任意两个区块链;针对任一用户在所述区块链系统中任一区块链的私钥,所述用户在该区块链的私钥是基于所述用户的共用公钥根据该区块链的密钥生成算法确定的;所述用户在所述区块链系统中任一区块链上交易的签名是基于所述用户在该区块链上的私钥得到的;处理模块302,用于若所述第一交易的公钥和所述第二交易的公钥相同,且所述第一交易的签名和所述第二交易的签名均验证通过,则确定所述第一用户和所述第二用户为相同用户,从而确定所述第一交易和所述第二交易为相同用户发起的交易。
可选的,所述用户的共用公钥是根据所述用户的身份标识信息生成的;所述处理模块302还用于:针对所述用户在所述区块链系统中任一区块链的私钥,该区块链的私钥按照以下方式生成:根据第一随机数和所述用户的共用公钥,基于椭圆曲线运算,将得到的运算结果作为所述用户在该区块链的私钥;针对所述用户在该区块链上的任一交易的签名,该签名按照以下方式生成:根据第二随机数和有向循环群的第一生成元,生成该签名的第一子部分;根据所述第一子部分、所述用户的身份标识信息和交易数据,生成该签名的第一中间变量;根据所述用户在该区块链的私钥、所述第二随机数和所述第一中间变量,生成该签名的第二子部分。
可选的,所述处理模块302具体用于:具体按照以下方式生成所述用户的共用公钥:W=H1(ID);其中,H1为第一单向映射函数,ID为所述用户的身份标识信息,W为所述用户的共用公钥;具体按照以下方式生成所述用户在该区块链的私钥:u=s*W;其中,s为所述第一随机数,u为所述用户在该区块链的私钥;具体按照以下方式生成所述第一子部分:c=k*G1;其中,k为所述第二随机数,G1为所述第一生成元,c为所述第一子部分;具体按照以下方式生成所述第一中间变量:d=H2(ID,t,c);其中,H2为第二单向映射函数,t为交易数据,d为所述第一中间变量;具体按照以下方式生成所述第二子部分:f=u+k*d;其中,f为所述第二子部分。
可选的,所述处理模块302还用于:按照以下方式验证所述用户在所述区块链系统中任一区块链上交易的签名:根据所述有向循环群的第二生成元和该签名的第二子部分,基于椭圆曲线运算,得到第一运算结果;根据跨链联盟委员会的公钥和所述用户的共用公钥,基于椭圆曲线运算,得到第二运算结果;所述跨链联盟委员会的公钥是根据所述第一随机数和所述第一生成元得到的;根据该签名的第一子部分和所述第一中间变量,基于椭圆曲线运算,得到第三运算结果;若确定所述第一运算结果、所述第二运算结果和所述第三运算结果满足预设关系,则确定该签名验证通过。
可选的,所述跨链联盟委员会的公钥具体按照以下方式得到:J=s*G2;其中,s为所述第一随机数,J为所述跨链联盟委员会的公钥;所述预设关系具体为:e(G2,f)=e(J,W)*e(c,d),其中,e(G2,f)为所述第一运算结果,e(J,W)为所述第二运算结果,e(c,d)为所述第三运算结果,e表示椭圆曲线运算中的双线性映射运算;G2为所述第二生成元,f为所述第二子部分,W为所述用户的共用公钥,c为所述第一子部分,d为所述第一中间变量。
可选的,所述处理模块302还用于:若所述第一交易的公钥和所述第二交易的公钥不相同,或者所述第一交易的签名和\或所述第二交易的签名未验证通过,则确定所述第一用户和所述第二用户为不同用户,从而确定所述第一交易和所述第二交易为不同用户发起的交易。
可选的,所述处理模块302还用于:对所述第一交易和\或所述第二交易进行跨链交易存在性验证,从而确定所述第一交易是否在所述第一区块链上有效上链,和\或确定所述第二交易是否在所述第二区块链上有效上链。
基于同一发明构思,本发明实施例还提供了一种计算机设备,包括程序或指令,当所述程序或指令被执行时,如本发明实施例提供的跨区块链的交易身份确认方法及任一可选方法被执行。
基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,包括程序或指令,当所述程序或指令被执行时,如本发明实施例提供的跨区块链的交易身份确认方法及任一可选方法被执行。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
- 一种跨区块链的交易身份确认方法及装置
- 一种跨区块链的交易同步方法和装置