一种基于国密SM2的无证书签名方法与流程

文档序号:16741321发布日期:2019-01-28 13:01阅读:1997来源:国知局
一种基于国密SM2的无证书签名方法与流程

本发明涉及信息安全技术领域,尤其涉及一种基于国密算法的无证书签名方法,并且在签名生成与验证过程中需要签名双方共同参与。



背景技术:

随着信息时代的发展和大数据的应用,移动智能终端得到广泛的普及,用户使用移动终端访问网络处理业务的现象越来越普遍,但是由于移动终端本身的安全防护能力较差,无法对密钥进行有效的防护,因此需要一种安全高效的终端与服务器协作签名方案来确保网络业务的安全性。

基于此,本发明提出了一种国密算法的无证书签名方法,签名公私钥无需一个可信中心来分发,即使敌手获取部分私钥也不能恢复出完整的私钥,同时终端和服务器之间交互的参数均能通过公开信道传输;服务器与移动终端协作参与签名与验证过程,防止敌手控制其中一方谋私,实现了双方的安全通信。



技术实现要素:

为了弥补现有技术的不足,本发明提供一种基于国密算法的双方合作无证书签名方法及系统。

本发明解决其技术问题所采用的技术方案是:

步骤1)系统建立与初始化,密钥生成中心生成系统主公私钥对。

步骤2)签名方a和验证方b分别向密钥生成中心提取各自的部分私钥,并结合各自随机选择的秘密值生成私钥和公钥。

步骤3)签名生成时,首先验证方b根据随机选择参与签名生成的秘密参数计算参与签名生成的参数,并发送给签名方a;签名方a随机选择参与签名验证的秘密参数,结合此参数生成消息发送给验证方b。

步骤4)签名验证时,验证方b根据参与签名生成的秘密参数来验证签名方a的签名公钥是否有效,若无效,验证失败,反之,继续验证;验证方b计算某一参数,并发送给签名方a;签名方a通过此参数验证验证方b是否按照正确的步骤完成签名验证,若验证方b符合正确执行步骤,则发送包含秘密值的参数,否则,终止签名;验证方b接收签名方a的验证参数并参与后续签名验证,最终产生结果。

具体包括以下步骤:

1)系统初始化,kgc(密钥生成中心)生成系统主公私钥对(s,ps),其中ps=s·p。

2)签名双方(a为签名方,b为验证方)分别向kgc提取各自的部分私钥{sa,da,ha}和{sb,db,hb}。

3)签名双方随机选择各自的签名秘密值ua∈[1,n-1]和ub∈[1,n-1],并结合各自的部分私钥生成签名私钥ska={ska,ha}、skb={skb,hb},和公钥puba={pka,pha}、pubb={pkb,phb},其中,a和b的公私钥对满足pki=ski·p和phi=hi·ps。

4)签名生成时,b随机选择v∈[1,n-1],并发送签名参数n=v·p给a。a随机选择q∈[1,n-1],计算:

(xv,yv)=ska·n+ska·pkb,

m=h1((ha+yv)·(phb+yv·ps),m),

la=(ska+xv)p=(xa,ya),

v=(xv·xa·ska+q)pkb,

e1=h1(v,m),

生成消息m签名:σ={la,e1},并将签名发送给b。其中,h1(*)为国密sm3算法。

5)签名验证时,b计算:(x′v,y′v)=(v+skb)·pka,将la-pka和x′v·p比较,若不同验证失败,反之,继续验证。

b根据la=(xa,ya)计算e=x′v·xa·skb·pka,将e发送至a。

a计算:e+q·pkb,并与v比较,若不同,验证失败;反之,a将q=q·p发送给b。

b接收q后计算:

v′=e+skb·q,

m′=h1((hb+y′v)·(pha+y′v·ps),m),

e′1=h1(v′,m′)。

b通过验证e′1和e1,若相等,则签名验证成功,否则接收到的q可能受到篡改,验证失败。

本发明产生的有益效果是:本发明适用于无可信中心分发签名公私钥的双方安全通信的场景,本发明中签名公私钥无需一个可信中心来分发,且双方在签名生成和验证过程中交互的参数皆通过公开信道传输;签名生成与验证过程必须有签名方与验证方参与,且在通信过程中或完成时,通信双方都无法得到对方的私钥信息,保证了签名私钥的安全性,提高了双方参与签名的公平性。

附图说明

图1是本发明实施例的系统建立步骤示意图;

图2是本发明实施例的用户提取部分私钥与用户生成签名密钥步骤示意图;

图3是本发明实施例的双方合作生成签名步骤示意图;

图4是本发明实施例的双方合作验证签名步骤示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清晰,以下结合实施例,对本发明进行进一步的详细说明。

本发明提出了一种基于国密算法的无证书签名方法,下面给出具体描述。

符号及定义

实施步骤,如图1-图4所示:

1、系统建立:输入安全参数k,kgc(密钥生成中心)选择一个大素数p和椭圆曲线:ep(a,b):y2=x3+ax+b(modp),其中a,b,x和y均在有限域gfp中,且满足:4a3+27b2(modp)≠0。在ep(a,b)中选取生成元点p。定义g1是由p生成的在ep(a,b)上的加法循环群,阶为满足安全需求的素数n,定义sm2算法中使用的sm3密码杂凑算法为:h1:密钥生成中心随机选择主密钥s∈[1,n-1],计算主公钥:ps=s·ps。发布系统参数:{ep(a,b),g1,n,p,ps,h1}。

2、用户获取部分私钥:kgc随机选取ri∈[1,n-1],计算:di=ri·p,根据用户的idi计算:hi=h1(di,idi),生成用户的部分私钥:si=ri+hi·s,将{si,di,hi}通过安全信道发送给用户。

3、用户生成签名密钥:用户接收kgc的部分私钥后进行验证:di+hi·ps和si·p是否相等,若不相等,则接收的部分私钥无效;若相等,则接收的部分私钥有效,并进行如下操作:

用户随机选取ui∈[1,n-1]作为用户的秘密值,计算:ski=si·ui,生成签名私钥ski={ski,hi};计算:pki=ski·p和phi=hi·ps,生成公钥:pubi={pki,phi}。

4、双方合作生成签名:此处假设用户a为签名方,用户b为验证方。

用户b随机选取参与签名的秘密参数:v∈[1,n-1],计算:n=v·p,并将n通过公开信道发送给用户a。

用户a随机选取参与签名验证的秘密参数:q∈[1,n-1],计算:

(xv,yv)=ska·n+ska·pkb

m=h1((ha+yv)·(phb+yv·ps),m)

la=(ska+xv)p=(xa,ya)

v=(xv·xa·ska+q)pkb,

e1=h1(v,m)

生成消息m的签名:σ={la,e1},并将签名通过公开信道发送用户b进行验证。

5、双方合作验证签名:用户b接收签名σ={la,e1},进行如下操作:

①验证公钥的有效性:用户b根据参与签名的秘密参数v计算:(x′v,y′v)=(v+skb)·pka。用户b计算:la-pka,并和x′v·p比较,若不同,则此公钥不能验证此消息,验证失败;若相同,则此公钥有效,继续向下验证。

②验证签名的有效性:用户b根据la=(xa,ya)计算:e=x′v·xa·skb·pka,将e通过公开信道发送至用户a。

用户a根据参与签名验证的秘密参数q计算:e+q·pkb,并与v比较,若不同,则用户b未按照正确的验证步骤进行验证,则终止签名验证,签名验证失败;若相同,用户a将q=q·p通过公开信道发送给用户b。

用户b接收q进行计算:

v′=e+skb·q

m′=h1((hb+y′v)·(pha+y′v·ps),m)

e′1=h1(v′,m′)

将e′1和e1进行比较,若不同,则用户a发送的q可能受到篡改,签名验证失败;若相同,签名验证成功。

本发明实现了安全实用的基于国密算法的双方合作无证书签名,签名过程中无需可信中心分配签名公私钥,且在签名生成与验证过程中,通信双方均不会暴露各自的公私钥,同时签名的生成与验证过程中,签名双方必须共同参与,从而防止敌手控制其中一方谋私,实现了双方的安全通信。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1