当前位置: 首页 > 专利查询>武汉大学专利>正文

一种基于SM2的身份基的数字签名方法与系统技术方案

技术编号:19436320 阅读:135 留言:0更新日期:2018-11-14 13:06
本发明专利技术公开了一种基于SM2的身份基的数字签名方法与系统,该方法首先产生系统参数、系统主公私钥,用户将身份标识发送给KGC注册以获取签名私钥,然后用户使用签名私钥产生消息M的数字签名并进行验证。由于本发明专利技术的签名过程中,在SM2签名算法整体架构不改变的基础上使用新型的用户私钥的产生方式,基于用户的身份来生成用户的签名私钥,不再使用公钥证书,无需维护和管理公钥证书以及耗时计算,从而保证了本发明专利技术签名方法具有低复杂度、高安全性、易验证等特点。

【技术实现步骤摘要】
一种基于SM2的身份基的数字签名方法与系统
本专利技术涉及信息安全
,尤其涉及一种基于SM2的身份基的数字签名方法与系统。
技术介绍
数字签名是伴随着信息网络技术的发展而出现的一种安全保障技术,目的就是通过技术手段实现传统的纸面签字或者盖章的功能,用于鉴定签名人的身份以及对一项电子数据内容的认可。它还能验证出文件的原文在传输过程中有无变动,确保传输电子文件的完整性、真实性和不可抵赖性。数字签名是公钥密码体系中重要的一部分,在很多场合有着重要的作用。SM2椭圆曲线公钥密码算法是由国家密码管理局颁布的一种椭圆曲线公钥密码算法(参见《SM2椭圆曲线公钥密码算法》规范,国家密码管理局,2010年12月),算法确定了包括数据加密、数字签名和密钥交换等算法或协议。其中,SM2签名算法因其高安全、高效率而广泛用于消息传输,可有效保证消息传输过程中消息的可靠性。SM2签名算法包括系统初始化算法(SM2_Setup)、用户密钥对生成算法(SM2_KeyGen)、数字签名算法(SM2_Sign)、签名验证算法(SM2_Verify)。由于SM2签名算法是基于PKI框架设计的密码系统,需要证书授权中心(CA)维护管理用户公钥证书,主要包括证书的颁发、撤销等。证书的管理开销随着用户数量增加而成线性增长,因此,在云计算、大数据等多用户环境下,高昂的证书管理开销将限制SM2公钥密码算法的使用。为解决基于PKI框架下证书管理开销大、维护困难等问题,国家于2015年确立SM9标识密码算法为国家密码行业标准(GM/T0044-2016)。SM9标识密码算法是一种基于双线性对的身份基密码算法。SM9标识算法包括数字签名、数据加密、密钥交换以及身份认证等。在SM9签名算法中,密钥生成中心(KGC)根据用户注册身份利用密钥提取算法(Extract)产生签名私钥,签名验证算法(SM9_Verify)利用用户身份来验证签名正确性,避免了证书管理问题。然而,由于SM9签名算法在产生签名和验证签名过程中,使用了耗时的双线对运算,对于计算能力有限移动设备,执行双线性对运算是无法承担的。基于SM2和SM9签名算法现有问题,SM2签名算法需要承担证书管理的开销,使其无法满足多用户的网络新环境,而SM9签名算法虽然免去了证书管理,由于耗时的双线对运算严重影响其在移动端应用。
技术实现思路
本专利技术要解决的技术问题在于针对现有技术中的缺陷,提供一种基于SM2的身份基的数字签名方法与系统,解决现有SM2签名算法中证书管理问题和SM9标识签名算法中需要耗时的双线对运算问题。本专利技术解决其技术问题所采用的技术方案是:一种基于SM2的身份基的数字签名方法,包括以下步骤:步骤1)产生整个签名过程所需参数,参数包括:椭圆曲线相关参数:q、Fq、a、b、n、G,和安全哈希函数:HV(·)、H(·)、H256(·);其中,q为大素数,Fq为包含q个元素的有限域,a、b为Fq中的元素,用于定义Fq上的一条椭圆曲线E;G为椭圆曲线的一个基点,其阶为素数;n为基点G的阶;步骤2)由密钥生成中心KGC生成系统主公私钥(Ppub,Ppri),其中,Ppub为系统主公钥,Ppri为系统主私钥;步骤2)由密钥生成中心KGC生成系统主公私钥(Ppub,Ppri),其中,Ppub为系统主公钥,Ppri为系统主私钥;步骤3)用户密钥提取:产生用户User的签名私钥,具体过程如下:步骤3.1)用户User将身份标识ID发送给KGC,请求签名私钥;步骤3.2)KGC收到私钥请求后,首先利用已有的身份认证方法确认ID与User身份一致,随后,KGC在集合{1,2,…,n-1}中随机选取整数l并通过以下公式计算签名私钥的第一部分L;L=[l]G=(x1,y1)其中,(x1,y1)表示L的横纵坐标。步骤3.3)KGC根据L,通过以下公式计算私钥的第二部分α;h=H(ID||L)α=l+xhmodn其中,H(·)表示安全哈希函数,符号||表示连接,modn表示模n运算;步骤3.4)KGC将私钥(L,α)通过安全信道发送给用户User;步骤3.5)用户User接收并秘密保存KGC发送的私钥(L,α);步骤4)用户签名(Sign):该步骤主要用于用户User产生消息M的数字签名(L,r,s);步骤5)签名验证(Verify):验证消息M'的签名(L',r',s')合法性,具体验证过程如下:步骤5.1)检查r'是否属于集合{1,2,…,n-1}中,如果不是则验证不通过;否则,检查s'是否属于{1,2,…,n-1},如果不是则验证不通过,否则进入步骤5.2;步骤5.2)根据以下公式计算Z'A并置Z'A=H256(ENTLA'||ID||a||b||xG||yG||x1||y1)步骤5.3)根据以下公式计算e',并将e'转换为整数;步骤5.4)根据以下公式计算并判断t,如果t=0成立,则消息签名为非法,结束验证过程,否则进入步骤5.5;t=r'+s'modn步骤5.5)根据以下公式先后计算h'和椭圆曲线点K',h'=H(ID||L')K'=(x'k,y'k)=s'G+t(L'+h'Ppub)步骤5.6)根据以下公式计算并判断R',如果R'=r'成立,则消息签名合法,否则消息签名非法;R'=(e'+x'k)modn。按上述方案,所述步骤2)中,由密钥生成中心KGC生成系统主公私钥的具体过程如下:步骤2.1)KGC从集合{1,2,…,n-1}中随机选取整数x作为主私钥Ppri=x,其中n表示SM2密码运算所使用的椭圆曲线点群的阶。步骤2.2)KGC根据所选主私钥x,通过以下公式计算并公布系统主公钥Ppub,Ppub=[x]G=(xG,yG)其中,G为SM2数字签名系统参数中椭圆曲线点群的基点,[x]G表示点乘运算,(xG,yG)表示公钥的横纵坐标。按上述方案,所述步骤4)的签名过程具体如下:步骤4.1)用户User根据以下公式计算ZA并置ZA=H256(ENTLA||ID||a||b||xG||yG||x1||y1)其中,H256表示安全哈希函数,a,b为椭圆曲线参数,ENTLA表示当前用户ID长度。步骤4.2)用户User根据以下公式计算e并将e转换为整数,其中,HV(·)表示安全哈希函数;步骤4.3)用户User在集合{1,2,…,n-1}中随机选择整数k,根据以下公式计算椭圆曲线点K,K=[k]G=(xk,yk)并将xk转换为整数类型;步骤4.4)用户User根据以下公式计算部分签名r并判断r,如果r=0或r+k=n成立,则返回步骤4.3,否则执行步骤4.5;r=(e+xk)modn步骤4.5)用户User根据以下公式计算部分签名s并判断s,如果s=0成立,则返回步骤4.3,否则执行步骤4.6;s=(1+α)-1(k-rα)modn其中,(1+α)-1为(1+α)的模n乘法逆;步骤4.6)用户User输出消息M签名为(L,r,s)。一种基于SM2的身份基的数字签名系统,包括:系统初始化模块,用于产生整个签名系统所需参数,参数包括:椭圆曲线相关参数:q、Fq、a、b、n、G,和安全哈希函数:HV(·)、H(·)、H256(·);其中,q为大素数,Fq为包含q个元素的有限域,a、b为Fq中的元素,用于定义Fq本文档来自技高网
...

【技术保护点】
1.一种基于SM2的身份基的数字签名方法,其特征在于,包括以下步骤:步骤1)产生整个签名过程所需参数,参数包括:椭圆曲线相关参数:q、Fq、a、b、n、G,和安全哈希函数:HV(·)、H(·)、H256(·);其中,q为大素数,Fq为包含q个元素的有限域,a、b为Fq中的元素,用于定义Fq上的一条椭圆曲线E;G为椭圆曲线的一个基点,其阶为素数;n为基点G的阶;步骤2)由密钥生成中心KGC生成系统主公私钥(Ppub,Ppri),其中,Ppub为系统主公钥,Ppri为系统主私钥;步骤3)用户密钥提取:产生用户User的签名私钥,具体过程如下:步骤3.1)用户User将身份标识ID发送给KGC,请求签名私钥;步骤3.2)KGC收到私钥请求后,首先利用已有的身份认证方法确认ID与User身份一致,随后,KGC在集合{1,2,…,n‑1}中随机选取整数l并通过以下公式计算签名私钥的第一部分L;L=[l]G=(x1,y1)其中,(x1,y1)表示L的横纵坐标;步骤3.3)KGC根据L,通过以下公式计算私钥的第二部分α;h=H(ID||L)α=l+xhmodn其中,H(·)表示安全哈希函数,符号||表示连接,modn表示模n运算;步骤3.4)KGC将私钥(L,α)通过安全信道发送给用户User;步骤3.5)用户User接收并秘密保存KGC发送的私钥(L,α);步骤4)用户签名:该步骤主要用于用户User产生消息M的数字签名(L,r,s);步骤5)签名验证:验证通过接收的消息M'的签名(L',r',s')合法性,具体验证过程如下:步骤5.1)检查r'是否属于集合{1,2,…,n‑1}中,如果不是则验证不通过;否则,检查s'是否属于{1,2,…,n‑1},如果不是则验证不通过,否则进入步骤5.2);步骤5.2)根据以下公式计算Z'A并置...

【技术特征摘要】
1.一种基于SM2的身份基的数字签名方法,其特征在于,包括以下步骤:步骤1)产生整个签名过程所需参数,参数包括:椭圆曲线相关参数:q、Fq、a、b、n、G,和安全哈希函数:HV(·)、H(·)、H256(·);其中,q为大素数,Fq为包含q个元素的有限域,a、b为Fq中的元素,用于定义Fq上的一条椭圆曲线E;G为椭圆曲线的一个基点,其阶为素数;n为基点G的阶;步骤2)由密钥生成中心KGC生成系统主公私钥(Ppub,Ppri),其中,Ppub为系统主公钥,Ppri为系统主私钥;步骤3)用户密钥提取:产生用户User的签名私钥,具体过程如下:步骤3.1)用户User将身份标识ID发送给KGC,请求签名私钥;步骤3.2)KGC收到私钥请求后,首先利用已有的身份认证方法确认ID与User身份一致,随后,KGC在集合{1,2,…,n-1}中随机选取整数l并通过以下公式计算签名私钥的第一部分L;L=[l]G=(x1,y1)其中,(x1,y1)表示L的横纵坐标;步骤3.3)KGC根据L,通过以下公式计算私钥的第二部分α;h=H(ID||L)α=l+xhmodn其中,H(·)表示安全哈希函数,符号||表示连接,modn表示模n运算;步骤3.4)KGC将私钥(L,α)通过安全信道发送给用户User;步骤3.5)用户User接收并秘密保存KGC发送的私钥(L,α);步骤4)用户签名:该步骤主要用于用户User产生消息M的数字签名(L,r,s);步骤5)签名验证:验证通过接收的消息M'的签名(L',r',s')合法性,具体验证过程如下:步骤5.1)检查r'是否属于集合{1,2,…,n-1}中,如果不是则验证不通过;否则,检查s'是否属于{1,2,…,n-1},如果不是则验证不通过,否则进入步骤5.2);步骤5.2)根据以下公式计算Z'A并置Z'A=H256(ENTLA'||ID||a||b||xG||yG||x1||y1)步骤5.3)根据以下公式计算e',并将e'转换为整数;步骤5.4)根据以下公式计算并判断t,如果t=0成立,则消息签名为非法,结束验证过程,否则进入步骤5.5);t=r'+s'modn步骤5.5)根据以下公式先后计算h'和椭圆曲线点K',h'=H(ID||L')K'=(x'k,y'k)=s'G+t(L'+h'Ppub)步骤5.6)根据以下公式计算并判断R',如果R'=r'成立,则消息签名合法,否则消息签名非法;R'=(e'+x'k)modn。2.根据权利要求1所述的基于SM2的身份基的数字签名方法,其特征在于,所述步骤2)中,由密钥生成中心KGC生成系统主公私钥的具体过程如下:步骤2.1)KGC从集合{1,2,…,n-1}中随机选取整数x作为主私钥Ppri=x,其中n表示SM2密码运算所使用的椭圆曲线点群的阶。步骤2.2)KGC根据所选主私钥x,通过以下公式计算并公布系统主公钥Ppub,Ppub=[x]G=(xG,yG)其中,G为SM2数字签名系统参数中椭圆曲线点群的基点,[x]G表示点乘运算,(xG,yG)表示公钥的横纵坐标。3.根据权利要求1所述的基于SM2的身份基的数字签名方法,其特征在于,所述步骤4)的签名过程具体如下:步骤4.1)用户User根据以下公式计算ZA并置ZA=H256(ENTLA||ID||a||b||xG||yG||x1||y1)其中,H256表示安全哈希函数,a,b为椭圆曲线参数,ENTLA表示当前用户ID长度;步骤4.2)用户User根据以下公式计算e并将e转换为整数,其中,HV(·)表示安全哈希函数;步骤4.3)用户User在集合{1,2,…,n-1}中随机选择整数k,根据以下公式计算椭圆曲线点K,K=[k]G=(xk,yk)并将xk转换为整数类型;步骤4.4)用户User根据以下公式计算部分签名r并判断r,如果r=0或r+k=n成立,则返回步骤4.3,否则执行步骤4.5;r=(e+xk)modn步骤4.5)用户User根据以下公式计算部分签名s并判断s,如果s=0成立,则返回步骤4.3,否则执行步骤4.6;s=(1+α)-1(k-rα)modn其中,(1+α)-1为(1+α)的模n乘法逆;步骤4.6)用户User输出消息M签名为(L,r,s)。4.一种基于SM...

【专利技术属性】
技术研发人员:何德彪张佳妮陈泌文张宇波
申请(专利权)人:武汉大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1