本发明涉及信息安全,尤其涉及一种基于sm2算法的盲适配器签名方法及系统。
背景技术:
1、适配器签名(adaptor signature)是一种新的密码学原语,由poelstra提出的无脚本脚本(scriptless script)演变而来,它将消息的身份验证和秘密值的揭露关联起来,由于其在不同应用程序,如原子交换和支付通道中具有广泛的应用,引起国内外学者的广泛关注。
2、随着适配器签名技术的发展,基于schnorr、ecdsa、格签名和sm2签名构造的适配器签名相继出现,关于适配器签名的研究越来越热门。虽然现有的适配器签名具有原子性,可以集成于多种区块链中,使支付通道中拥有良好的灵活性和互操作性,但是现有的适配器签名不具隐私保护功能。对于隐私要求较高的支付场景和应用程序,需要适配器签名具有一定的盲性才能更灵活地解决数字支付中的隐私和安全问题,提供更安全、更隐私的数字支付解决方案。然而现有的适配器签名并不具有盲性。
技术实现思路
1、为解决上述背景中存在的缺陷,本发明的目的在于提供一种基于sm2算法的盲适配器签名方法及系统。其采用的盲适配器签名方案使消息在签名之前被盲化,可以保护交易细节,同时保留了适配器签名的原子性,能够更灵活地解决数字支付中的隐私和安全问题,提供更安全、更隐私的数字支付解决方案。
2、为了实现上述目的,本发明采用如下技术方案。
3、本发明一方面公开了一种基于sm2算法的盲适配器签名方法,签名参与方包括持有签名私钥的签名者signer、知道秘密值的适配者adaptor、持有签名消息的用户user、可以同时获取预签名和签名的提取者以及知道公钥和秘密值对应困难关系状态的验证者;包括以下步骤:
4、(1)系统初始化
5、各签名参与方进行系统初始化,包括生成密码系统公共参数,生成sm2盲适配器签名的密钥对、临时密钥对、困难关系对和盲化因子,以及计算承诺;
6、(2)消息盲化
7、用户根据盲化因子、待签名消息和困难关系对,生成盲化后的待签名消息;
8、(3)盲签名生成
9、签名者根据盲化后的待签名消息、密钥和临时密钥生成盲签名;
10、(4)解盲
11、用户根据盲签名和盲化因子计算预签名;
12、(5)预签名验证
13、验证者根据公钥、困难关系状态和承诺、以及预签名验证预签名的有效性;
14、(6)适配
15、适配者根据预签名和困难关系证据适配出sm2签名;
16、(7)提取
17、提取者根据预签名、sm2签名以及困难关系状态提取出对应的秘密值。
18、本发明中,步骤(1)中,系统初始化过程中,密码系统公共参数包括:sm2算法的椭圆曲线相关参数(q,fq,n,g),其中,q为大素数,fq为包含q个元素的有限域,n为素数,g为椭圆曲线的一个基点,其阶为n;
19、生成密钥对,生成签名者的公钥和私钥,公钥基于所述私钥生成,适配者、用户、提取者和验证者可以获取公钥,不能获私钥,包括:签名者随机选取整数x作为私钥,为以n为模的,所有对模乘可逆元的集合,计算公钥p=xg,得到公私钥对(sk,pk)=(x,p);
20、生成临时密钥对,生成临时公钥和临时私钥,临时公钥基于临时私钥生成,临时私钥只有签名者知道,临时公钥只有签名者和用户知道,包括:签名者随机选取整数t作为临时私钥,计算临时公钥t=tg,得到临时公私钥对(t,t);
21、生成困难关系对时,生成适配者的困难关系对,困难关系对包括困难关系证据(即秘密值)和困难关系状态,困难关系状态基于困难关系证据生成,签名者、用户、提取者和验证者在适配器前可以获取困难关系状态,不能获取困难关系证据;包括:适配者随机选取整数y作为困难关系证据即秘密值,计算困难关系状态y=yg,得到困难关系对(y,y);
22、生成盲化因子,用户随机选取整数a,得到盲化因子a,b;
23、计算承诺时,适配者计算aa=yp+y并公布aa,签名者计算as=(1+x)y并公布as,用户比较aa与as是否相等,若相等则承诺a=as,将承诺的值公布给所有签名参与方,若不相等则重新生成密钥对和困难关系对。
24、本发明中,步骤(2)中,用户利用盲化因子a,b计算中间变量k=at+bg,中间变量r=k+a=(rx,ry),rx,ry分别是r的横坐标和纵坐标,中间变量r=h(m)+rx,计算盲化后的待签名消息c=a-1(r+b)mod n,将c发送给签名者;
25、步骤(3)中,签名者收到盲化后的待签名消息c后,计算中间变量令盲签名并将盲签名发送给用户;
26、步骤(4)中,用户利用盲化因子a,b计算中间变量令预签名预签名即为解盲的结果;
27、步骤(5)中,任何知道签名者公钥p、困难关系状态y的验证者对预签名进行验证,其过程包括:计算中间变量中间变量中间变量r*=h(m)+rx*,验证r*=r是否成立,若成立,则验证通过输出true,否则验证失败输出false;
28、步骤(6)中,适配者获得预签名后,与秘密值y一起适配出sm2签名δ,其过程包括:计算令签名δ=(r,s);
29、步骤(7)中,提取者获取到预签名和签名δ后,提取出秘密值y*,其过程为:计算验证困难关系状态y=(y*)g是否成立,若成立则输出秘密值y*,否则提取失败输出fail。
30、本发明另一方面公开了一种基于sm2算法的盲适配器签名系统,签名参与方包括持有签名私钥的签名者signer、知道秘密值的适配者adaptor、持有待签名消息的用户user、可以同时获取预签名和签名的提取者、以及知道验证公钥和秘密值对应困难关系状态的验证者;包括:
31、系统初始化模块:各签名参与方进行系统初始化,包括生成密码系统公共参数、生成sm2盲适配器签名的密钥对、临时密钥对、困难关系对和盲化因子,以及计算承诺;
32、消息盲化模块:用户根据盲化因子、待签名消息和困难关系对,生成盲化后的待签名消息;
33、盲签名生成模块:签名者根据盲化后的待签名消息、密钥和临时密钥生成盲签名;
34、解盲模块:用户根据盲签名和盲化因子计算预签名;
35、预签名验证模块:验证者根据公钥、困难关系状态和承诺、以及预签名验证预签名的有效性;
36、适配模块:适配者根据预签名和困难关系证据适配出sm2签名;
37、提取模块:提取者根据预签名、sm2签名以及困难关系状态提取出对应的秘密值。
38、经由上述的技术方案可知,本发明具有如下优点:
39、(1)具有盲性性质,允许用户在进行数字支付时保持高度的隐私。由于签名者只对盲化后的消息进行签名,无法获取交易的详细信息,用户可以匿名的进行支付,从而保护了其个人隐私。
40、(2)具有盲性的同时不影响适配器功能。用户对盲签名解盲可以获得预签名,该预签名可以验证,还可以通过适配生成sm2签名,预签名与对应sm2签名还能共同提取出一个秘密值。
41、以上,盲适配器签名能更灵活地解决数字支付中的隐私和安全问题,提供更安全、更隐私的数字支付解决方案;能够在不破坏适配器签名的原子性的同时,使其具有隐私保护功能。