CN117201041A - 基于区块链的链下协同门限签名方法及装置 - Google Patents
基于区块链的链下协同门限签名方法及装置 Download PDFInfo
- Publication number
- CN117201041A CN117201041A CN202311320624.7A CN202311320624A CN117201041A CN 117201041 A CN117201041 A CN 117201041A CN 202311320624 A CN202311320624 A CN 202311320624A CN 117201041 A CN117201041 A CN 117201041A
- Authority
- CN
- China
- Prior art keywords
- signature
- contract
- address
- key
- algorithm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 53
- 238000012795 verification Methods 0.000 claims abstract description 19
- 230000008569 process Effects 0.000 claims abstract description 16
- 238000004590 computer program Methods 0.000 claims description 21
- 238000004364 calculation method Methods 0.000 claims description 13
- 239000003999 initiator Substances 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 8
- 230000006870 function Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Landscapes
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明提供一种基于区块链的链下协同门限签名方法及装置,所述方法包括确定用于签名的密码算法;在参与节点上部署智能合约,参与节点根据部署的合约代码生成独立的合约地址,并共享合约地址给其他参与节点;参与节点验证合约地址,并根据合约地址推导得到公钥生成地址,并进行地址匹配;根据密码算法生成签名过程中所需的公开参数,通过密码算法生成密钥并将密钥进行分片;参与节点以合约地址作为公共参数,在达到签名算法阈值的情况下进行协同签名,使用验证算法和合约地址共同验证签名的有效性。与相关技术相比,本发明提供的基于区块链的链下协同门限签名方法及装置其能提高签名的安全性,同时提高签名效率。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种基于区块链的链下协同门限签名方法及装置。
背景技术
近年来,具有去中心化与不可篡改特性的数字货币吸引了大量用户,越来越多的人愿意采用加密数字货币进行交易,而区块链作为数字货币的底层技术也被大众所熟知。区块链是一种按照时间顺序将区块以链条的方式组合成特定的数据结构,并以密码学方式保证的不可篡改的去中心化共享账本。
区块链链下交易指的是在区块链之外进行的交易,也称为离链交易或链下交易,这种交易基于传统的信任机制,交易过程中除参与交易的双方外还需依赖中央机构或其他可信的第三方来完成交易的交易和结算,相较于区块链上的交易链下交易通常具有更快的确认速度和更高的隐私性。
申请号为202010582070.8“一种SM2协同门限签名方法及电子装置”,其主要内容为:用户端生成第一部分私钥d1,第二部分私钥d2,计算椭圆曲线上的点W1,W2,及n个私钥份额ci,将(W2,ci)秘密发送给n个服务端Ui;签名时在n个服务端Ui中选取m个服务端Uj,组成集合M;用户端生成随机数kc,服务器端Uj根据集合M生成随机数kj,用户端和各服务端Uj计算出第一部分签名r,第二部分签名s,得到最终签名(r,s),该方案仅适用于一个用户端和若干服务器组成的网络***。
申请号为201910657002.0“一种支持信息隐藏的协同签名方法与***”,其主要内容为:将签名参数初始化;生成调用方和协作方的私钥及公钥;生成签名;其中调用方和协作方分别存储SM2子私钥部分,协同完成消息的签名操作;任何一方无法获取完整的SM2私钥信息。该方案调用方与协作方协同完成签名,从方案中可以推断,该方案适用于交易双方之间的签名方案,适合作为区块链链上交易签名的算法,而区块链链下交易的达成需要交易发起方,交易协作方,服务提供商或第三方机构协作完成。其次,链下交易有别于链上交易,链上每一笔交易都需要同步至区块链所有节点进行确认及验证,在实现交易不可逆并防止篡改的同时,区块链交易的确认速度较慢,因此在链下交易中,不需要等待区块生成和验证使得交易速度更快。所以在协同签名过程中理应避免各交易方多次相互传递参数,运行复杂度高的运算,浪费网络带宽和CPU计算时间,否则可能导致协同签名及交易速度减慢,有占用算力和带宽增长的风险。
因此,有必要提供一种新型的基于区块链的链下协同门限签名方法及装置,以克服上述缺陷。
发明内容
本发明的目的在于提供一种新型的基于区块链的链下协同门限签名方法及装置,其提高协同签名抗风险能力,提高签名效率,提高安全性。
为了达到上述目的,本发明提供一种基于区块链的链下协同门限签名方法,包括:
确定至少三个参与签名操作的参与节点,并确定用于签名的密码算法;
在参与节点上部署智能合约,参与节点根据部署的合约代码生成独立的合约地址,并共享合约地址给其他参与节点;
参与节点验证合约地址,并根据合约地址推导得到公钥生成地址,并进行地址匹配;
根据密码算法生成签名过程中所需的公开参数,进行签名参数初始化,通过密码算法生成密钥并将密钥进行分片;
参与节点以合约地址作为公共参数,在达到签名算法阈值的情况下进行协同签名,使用验证算法和合约地址共同验证签名的有效性。
本发明还提供一种基于区块链的链下协同门限签名装置,该装置包括:
签名密码算法模块,用于生成满足签名特性的密钥,将签名计算任务分割为多个子任务,并行地进行计算,提高了签名地效率和吞吐量;
可信第三方,用于负责生成***参数,并部署智能合约;
交易发起方,用于根据签名密码算法模块生成密钥;
交易协作方,用于根据发起方生成的密钥和智能合约的合约地址进行验证。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述基于区块链的链下协同门限签名方法的步骤。
本发明还提供一种计算机终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述基于区块链的链下协同门限签名方法的步骤。
与相关技术相比较,本发明在协同签名过程中先对各个合约地址进行身份验证,在验证完成后利用链下隐私计算节点合约地址作为密码算法协同签名的公共参数,基于门限签名的方式实现了协同签名具有安全性,高效性;本发明通过一种安全的两方分布式签名算法,该协议将私钥分离到两个设备上进行存储,就可以生成一个有效的签名,而不需要重构整个私钥,具有较小通信复杂度的同时可以抵御一定程度上的中止攻击。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:
图1为本发明基于区块链的链下协同门限签名方法流程图;
图2为本发明基于区块链的链下协同门限签名装置架构图。
具体实施方式
下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,本发明设计了一种基于区块链的链下协同门限签名方法,包括:
确定至少三个参与签名操作的参与节点,并确定用于签名的密码算法;
在参与节点上部署智能合约,参与节点根据部署的合约代码生成独立的合约地址,并共享合约地址给其他参与节点;
参与节点验证合约地址,并根据合约地址推导得到公钥生成地址,并进行地址匹配;
根据密码算法生成签名过程中所需的公开参数,进行签名参数初始化,通过密码算法生成密钥并将密钥进行分片;
参与节点以合约地址作为公共参数,在达到签名算法阈值的情况下进行协同签名,使用验证算法和合约地址共同验证签名的有效性。
为克服现有技术的不足,本方案利用链下隐私计算节点的合约地址作为国产密码算法协同签名的公共参数,提供了一种SM2链下协同门限签名方法,能够在安全性上同时满足门限签名特性和协同签名特性。签名需要三个及以上参与方配合,并允许缺少部分参与者的情况下完成签名和验证。
上面将对上述步骤进行详细描述:
步骤一:选择合适的密码算法
SM2是基于椭圆曲线离散对数问题的困难性假设构建的数字签名算法,在安全性,密码复杂度,处理速度,机器性能消耗上其表现都优于RSA算法,故在本方案中选择SM2作为密码算法。
SM2椭圆曲线公钥密码算法包括数字签名算法、密钥交换协议以及公钥加密算法,算法的安全基于求解有限域上椭圆曲线离散对数问题的难题。SM2算法在国内身份认证、电子商务等应用中都发挥了重要的安全保护作用。SM2签名算法的过程如下:密钥产生:a)随机选取密钥d,(d∈[1,q-1]),其中d为整数,q为G在椭圆曲线上的阶;b)计算P=d·G(G为椭圆曲线上的点,(·)为椭圆曲线上的点乘运算)并将P作为公钥公开,d作为私钥保存。签名生成:a)签名者选择随机数k,k∈[1,q-1],(k为整数)计算k·G=(x1,y1),(x1,y1)为椭圆曲线上一点的坐标值;b)计算数值r=(Hash(Message)+x1)mod(q),其中Message是待签名的消息,Hash(·)是单向哈希函数,若r=0或r+k=q,则重新选取随机数k;c)计算数值s=(1+d)-1(k-rd)mod(q);若s=0,则重新选取随机数k,否则将(r,s)作为签名结果。签名验证:a)验证者接收到m和(r,s)后,先检查是否满足r,s∈[1,q-1],且(r+s)≠q,若满足则计算(x1′,y1′)=s·G+(r+s)·P,其中(x1′,y1′)为椭圆曲线上一点的坐标值;b)计算r′=(Hash(m)+x1′)mod(q),若r′与r相等则签名验证通过,否则验证失败。
步骤二:确定门限签名方案
门限签名算法将签名计算任务分割为多个子任务,并行地进行计算,提高了签名的效率和吞吐量,这期间门限签名算法允许多个参与者共同完成签名过程,没有单点故障,单独的参与者无法获取完整的签名密钥,实现了去中心化、分权和隐私保护的特性。
门限秘密分享方案通过将密钥信息分享给多个用户分散保存,密码功能操作可由至少门限值个用户协作完成,而且任意少于门限数量的用户无法进行合谋。一方面提高了***的健壮性,即使少量用户丢失密钥也不会导致密码***丧失功能性;另一方面,提高了***的安全性,恶意敌手即使窃取了部分(少于门限值)用户的密钥,也难以打破密码***的安全性。
步骤三:在链下隐私节点上部署智能合约
将智能合约代码编译成字节码格式,生成部署所需文件;
将上一步骤中生成的合约文件通过部署工具或命令行代码部署至链下隐私节点上。
步骤四:共享合约地址
选择SHA-256作为合约地址参数,每个节点根据部署的合约代码的哈希计算结果生成独立的合约地址。假设节点A计算出地址X,节点B计算出地址Y,节点C计算出地址Z,每个节点将自己计算得到的独立合约地址与其他节点共享,即节点A,B,C分别共享地址X,Y,Z。
交易阶段:
以下方案中Encpk()表示使用公钥pk的加密操作,Decsk()表示使用私钥sk的解密操作。
步骤五:验证合约地址
获取待验证合约地址;
首先验证地址格式是否符合格式要求;
将合约地址转换为公钥;
推导得到公钥生成地址,并进行地址匹配,将生成的地址与待验证的合约地址进行比较,检查是否匹配。
步骤六:签名参数初始化
产生整个签名过程中所需的公开参数:所述参数包括:SM2算法的椭圆曲线相关参数(q,Fq,n,G)、密码杂凑函数Hash();
其中q为大素数,Fq为包含q个元素的有限域,n为素数,G为椭圆曲线的一个基点,其阶为n。
步骤七:生成密钥
在这一阶段,交易发起方和交易协作方相互交互,生成公钥Q;
P1随机选择一个位于[1,n-1]数字x1,并计算Q1=x1G;
P1发送(prove,1,Q1,x1)到第三方;
经运算,P1生成一个Paillier密钥对(pk,sk),其中pk为公钥,sk为私钥;
P1发送(prove,1,N,(p1,p2))到第三方,其中pk=N=p1·p2;
P2接收来自第三方的消息(proof,1,Q1),(proof,1,N);
P2随机选择一个位于[1,n-1]数字x2,并计算Q2=x2G;
P2发送(prove,2,Q2,x2)到第三方;
P2计算Q=x2·Q1-G,并保存(x2,Q,pk);
P1接收第三方消息(proof,2,Q2),计算得Q=x1·Q2-G并保存(x1,Q,(sk,pk));
可计算得出Q=x2·Q1-G=x1·Q2-G=(x1x2-1)G
步骤八:密钥分片
依据步骤七,可以得到P1的私钥x1,P2的私钥x2,两私钥由各自的参与节点单独保存。
步骤九:协同签名
参与者在拥有私钥分片的基础上,使用链下隐私计算节点提供的合约地址作为公共参数,在一定数量的参与者达到门限值的情况下进行协同签名。具体步骤如下:
P1发起的协同签名请求,P1随机选择一个位于[1,n-1]数字k1,计算:R1=k1G;
利用同态加密算法加密k1,Ckey=Encpk(k1);
P1发送(prove,1,(R1,Ckey),(k1,sk))到第三方;
如果P2收到第三方发送的(proof,1,(R1,Ckey)),执行以下步骤:
P2随机选择一个位于[1,n-1]数字k2;
计算:R2=k2G;
发送(prove,2,R2,k2)到第三方;
P2计算R=k2R1=k1k2G=(rx,ry),其中r=(rx+e)modn;
根据同态加密,P2计算得:
ρ为任意值;
P2发送C3到P1。
步骤十:验证签名
获得协同签名后,可以使用以下验证算法和合约地址共同验证签名的有效性。
计算Z=H(ENTL||ID||a||b||G||Y);
if(r`)不是自然数,输出0;
if(s`)不是自然数,输出0;
设置a`=Z||m`,计算e`=h(a`);
计算t=(r`+s`)mod n,if(t=0),输出0;
计算(r`x,r`y)=s`G+tQ;
计算R=(e`+r`x)mod n if(R=r`)输出1,否则输出0。
本发明解决链下交易情景中协同签名过程中交易发起方,交易协作方,第三方机构三者在满足安全性的基础上协同进行门限签名的难题,实现链下交易场景也能够应用门限签名方式将密钥分布式存储于各签名方节点中,提高链下交易时的协同签名抗风险,抗攻击能力;同时解决协同门限签名过程中各节点间频繁交换参数,并运行复杂计算,占用算力和带宽的问题,实现一种安全高效的签名方式,同时保证签名效率。
请参阅图2,本发明还提供一种基于区块链的链下协同门限签名装置包括:
签名密码算法模块,用于生成满足签名特性的密钥,将签名计算任务分割为多个子任务,并行地进行计算,提高了签名地效率和吞吐量;
可信第三方,用于负责生成***参数,并部署智能合约;
交易发起方,用于根据签名密码算法模块生成密钥;
交易协作方,用于根据发起方生成的密钥和智能合约的合约地址进行验证。
与相关技术相比较,本发明为进一步提高协同签名效率,提高安全性,本方案选择在协同签名过程中先对各个合约地址进行身份验证,在验证完成后利用链下隐私计算节点合约地址作为国产密码算法(SM2)协同签名的公共参数,基于门限签名的方式实现了协同签名。本方案选择采用SM2国产密码算法,因应于SM2签名算法在安全性,密码复杂度,处理速度,机器性能消耗上的优秀表现,保证了本方案交易过程具有安全性,高效性。
当前门限交易方案无法适配链下交易场景中交易参与者两方进行门限签名的操作,本方案设计采用门限密码学方式结合零知识证明,实现了两方门限签名的可能。再者由于门限密码学中,私钥被分享给独立的多个参与者,每一次的签名,验证都需要多个参与者同意,从而本方案在具有较小通信复杂度的同时可以抵御一定程度上的中止攻击。
本发明另一方面还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于区块链的链下协同门限签名方法的步骤。
作为本发明另一方面的延伸还提供一种计算机终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于区块链的链下协同门限签名方法的步骤。
所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在终端设备中的执行过程。
所述计算机终端可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。可包括但不仅限于,处理器、存储器。可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备、总线等。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器可以是内部存储单元,例如硬盘或内存。所述存储器也可以是外部存储设备,例如插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器还可以既包括内部存储单元也包括外部存储设备。所述存储器用于存储所述计算机程序以及其他程序和数据。所述存储器还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种基于区块链的链下协同门限签名方法,其特征在于,包括:
确定至少三个参与签名操作的参与节点,并确定用于签名的密码算法;
在参与节点上部署智能合约,参与节点根据部署的合约代码生成独立的合约地址,并共享合约地址给其他参与节点;
参与节点验证合约地址,并根据合约地址推导得到公钥生成地址,并进行地址匹配;
根据密码算法生成签名过程中所需的公开参数,通过密码算法生成密钥并将密钥进行分片;
参与节点以合约地址作为公共参数,在达到签名算法阈值的情况下进行协同签名,使用验证算法和合约地址共同验证签名的有效性。
2.根据权利要求1所述的基于区块链的链下协同门限签名方法,其特征在于,所述在参与节点上部署智能合约包括:
将智能合约代码编译成字节码格式,生成合约部署文件;
将生成的合约部署文件通过部署工具或命令行代码部署至链下隐私的参与节点。
3.根据权利要求2所述的基于区块链的链下协同门限签名方法,其特征在于,所述参与节点验证合约地址,并根据合约地址推导得到公钥生成地址,并进行地址匹配包括:
获取待验证合约地址;
首先验证地址格式是否符合格式要求;
将合约地址转换为公钥;
推导得到公钥生成地址,并进行地址匹配,将生成的地址与待验证的合约地址进行比较,检查是否匹配。
4.根据权利要求3所述的基于区块链的链下协同门限签名方法,其特征在于,所述根据密码算法生成签名过程中所需的公开参数,进行签名参数初始化包括:
所述参数包括:椭圆曲线相关参数(q,Fq,n,G)、密码杂凑函数Hash();
其中q为大素数,Fq为包含q个元素的有限域,n为素数,G为椭圆曲线的一个基点,其阶为n;
生成公钥Q:
P1随机选择一个位于[1,n-1]数字x1,并计算Q1=x1G;
P1发送(prove,1,Q1,x1)到第三方;
经运算,P1生成一个密钥对(pk,sk),其中pk为公钥,sk为私钥;
P1发送(prove,1,N,(p1,p2))到第三方,其中pk=N=p1·p2;
P2接收来自第三方的消息(proof,1,Q1),(proof,1,N);
P2随机选择一个位于[1,n-1]数字x2,并计算Q2=x2G;
P2发送(prove,2,Q2,x2)到第三方;
P2计算Q=x2·Q1-G,并保存(x2,Q,pk);
P1接收第三方消息(proof,2,Q2),计算得Q=x1·Q2-G并保存(x1,Q,(sk,pk));
计算得出Q=x2·Q1-G=x1·Q2-G=(x1x2-1)G;
同时得到P1的私钥x1,P2的私钥x2,私钥由各参与节点单独保存。
5.根据权利要求4所述的基于区块链的链下协同门限签名方法,其特征在于,所述参与节点以合约地址作为公共参数,在达到签名算法阈值的情况下进行协同签名包括:
P1发起的协同签名请求,P1随机选择一个位于[1,n-1]数字k1,计算:R1=k1G;
利用加密算法加密k1,Ckey=Encpk(k1);
P1发送(prove,1,(R1,Ckey),(k1,sk))到第三方,P2收到第三方发送的(proof,1,(R1,Ckey)),执行以下步骤:
P2随机选择一个位于[1,n-1]数字k2;
计算:R2=k2G;
发送(prove,2,R2,k2)到第三方;
P2计算R=k2R1=k1k2G=(rx,ry),其中r=(rx+e)modn;
根据加密算法,P2计算得:C2=C1⊕Encpk(r),/> ρ为任意值;
P2发送C3到P1。
6.根据权利要求5所述的基于区块链的链下协同门限签名方法,其特征在于,所述使用验证算法和合约地址共同验证签名的有效性包括:
获得协同签名后,使用验证算法和合约地址进行验证;
计算Z=H(ENTL||ID||a||b||G||Y);
if(r`)不是自然数,输出0;
if(s`)不是自然数,输出0;
设置a`=Z||m`,计算e`=h(a`);
计算t=(r`+s`)modn,if(t=0),输出0;
计算(r`x,r`y)=s`G+tQ;
计算R=(e`+r`x)modn,if(R=r`)输出1,否则输出0。
7.一种应用如权利要求1-6任一所述的基于区块链的链下协同门限签名方法的装置,其特征在于,该装置包括:
签名密码算法模块,用于生成满足签名特性的密钥,将签名计算任务分割为多个子任务,并行地进行计算,提高了签名地效率和吞吐量;
可信第三方,用于负责生成***参数,并部署智能合约;
交易发起方,用于根据签名密码算法模块生成密钥;
交易协作方,用于根据发起方生成的密钥和智能合约的合约地址进行验证。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述基于区块链的链下协同门限签名方法的步骤。
9.一种计算机终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述基于区块链的链下协同门限签名方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311320624.7A CN117201041A (zh) | 2023-10-12 | 2023-10-12 | 基于区块链的链下协同门限签名方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311320624.7A CN117201041A (zh) | 2023-10-12 | 2023-10-12 | 基于区块链的链下协同门限签名方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117201041A true CN117201041A (zh) | 2023-12-08 |
Family
ID=88994358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311320624.7A Pending CN117201041A (zh) | 2023-10-12 | 2023-10-12 | 基于区块链的链下协同门限签名方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117201041A (zh) |
-
2023
- 2023-10-12 CN CN202311320624.7A patent/CN117201041A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107579819B (zh) | 一种sm9数字签名生成方法及*** | |
CN109309569B (zh) | 基于sm2算法的协同签名的方法、装置及存储介质 | |
CN107634836B (zh) | 一种sm2数字签名生成方法及*** | |
RU2376651C2 (ru) | Использование изогений для разработки криптосистем | |
CN108667625B (zh) | 协同sm2的数字签名方法 | |
CN107248909B (zh) | 一种基于sm2算法的无证书安全签名方法 | |
CN107707358A (zh) | 一种ec‑kcdsa数字签名生成方法及*** | |
CN110932865B (zh) | 一种基于sm2数字签名算法的可链接环签名生成方法 | |
CN107911217B (zh) | 基于ecdsa算法协同生成签名的方法、装置和数据处理*** | |
CN112187469B (zh) | 一种基于密钥因子的sm2多方协同数字签名方法和*** | |
WO2019110399A1 (en) | Two-party signature device and method | |
CN111030821B (zh) | 一种基于双线性映射技术的联盟链的加密方法 | |
CN112436938B (zh) | 数字签名的生成方法、装置和服务器 | |
CN113676333A (zh) | 一种两方协作生成sm2盲签名方法 | |
CN112417489B (zh) | 数字签名的生成方法、装置和服务器 | |
CN111783136A (zh) | 一种数据保护方法、装置、设备和存储介质 | |
Bellare et al. | Deterring certificate subversion: efficient double-authentication-preventing signatures | |
CN112632630A (zh) | 一种基于sm2的协同签名计算方法及装置 | |
Tsai et al. | An ECC‐based blind signcryption scheme for multiple digital documents | |
CN117478302B (zh) | 基于区块链隐私节点身份验证方法及装置 | |
CN108768634B (zh) | 可验证加密签名生成方法和*** | |
CN110932866B (zh) | 一种基于sm2数字签名算法的环签名生成方法 | |
CN117220891A (zh) | 基于非交互分布式密钥的门限ecdsa签名方法及*** | |
CN111245594A (zh) | 一种基于同态运算的协同签名方法及*** | |
JP2003513480A (ja) | エンティティの真正性および/またはメッセージの完全性を証明するための方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |