System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于信息安全,涉及一种数字签名验证方法、系统及设备,特别涉及一种基于多标量点乘的sm2数字签名验证方法、系统及设备。
技术介绍
1、数字签名是一种基于公钥密码体制的技术,通过密码学手段在原消息上附加了一段只有消息的发送者可以生成的数据段,从而保证了消息的完整性、真实性和不可抵赖性。目前,数字签名技术主要用在防伪和防篡改等领域,用来鉴别签名者的身份是否正确以及消息的合法性、正确性等。数字签名的应用领域十分广泛,包括电子证书的认证,数字资产防篡改,比特币等虚拟货币也大量使用数字签名技术。
2、sm2算法是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法。sm2算法是一种更先进的公钥密码算法,其安全强度和运算速度均优于同为公钥密码算法的rsa,在我国的商用密码体系中被用来替换rsa算法。其主要包括数字签名算法、密钥交换协议和公钥加密算法3个部分。
技术实现思路
1、本专利技术的目的在于提供一种基于多标量点乘的sm2数字签名验证方法、系统及设备,在sm2签名结构的基础上,对椭圆曲线多标量乘法进行优化,在效率和安全性上进一步完善国产功能型密码算法体系。
2、本专利技术的方法所采用的技术方案是:一种基于多标量点乘的sm2数字签名验证方法,包括以下步骤:
3、步骤1:每个用户各自生成自己的公私钥对(di、pi);
4、步骤2:用户i使用自己的私钥di,生成签名σi;
5、步骤3:对接收到的全部m个用户的签名,验
6、作为优选,步骤1中,生成随机数di∈[1,n-1],di即为用户i的私钥,n为基点g的阶,g=(xg,yg),是群的一个基点,是阶为n的加法循环群;计算椭圆曲线点pi=[di]g=(xi,yi),pi即为用户i的公钥;xg,yg为g的x,y坐标,xi,yi为用户公钥pi的x,y坐标,ri为椭圆曲线点。
7、作为优选,步骤2的具体实现包括以下子步骤:
8、步骤2.1:计算ei=h(zi||mi),其中zi=h(entleni||idi||a||b||xg||yg||xi||yi),mi为待签名的消息,zi为签名标识;entleni为idi的比特长度,idi为用户i的可辨别标识;a,b是上的元素,用来定义一条椭圆曲线;pi=(xi,yi)是用户i的公钥,xi,yi为pi的x,y坐标;h()为密码杂凑函数;||为拼接符;
9、步骤2.2:生成随机数ki∈[1,n-1],计算椭圆曲线点
10、步骤2.3:计算
11、步骤2.4:计算si=((1+di)-1·(ki-ri·di))modn;
12、步骤2.5:输出签名σi=(ri,si)。
13、作为优选,步骤3的具体实现包括以下子步骤:
14、步骤3.1:计算ei=h(zi||mi),ti=(ri+si)modn;
15、步骤3.2:对于每个用户i,签名验证者使用扩展欧几里得算法,对于根据公式aj·n+bj·ti=rj产生一系列方程,其中j=1,2,...,当满足预设条件时停止迭代;其中,aj、bj是扩展欧几里得算法中的中间变量,初始a0=1,b0=0,r0=n,a1=0,b1=1,r1=ti;
16、所述预设条件为:
17、当rj和bj的比特长度小于等于时,取ui=rj,vi=bj;其中,λ为中元素的比特长度;是由1,2,,....,q-1组成的整数集合,q为一个大素数;
18、当rj和-bj的比特长度小于等于时,取ui=rj,vi=-bj;令ri=-ri,此时,ui=|vi|·timodn;
19、步骤3.3:计算两组多标量乘法和其中,m表示用户的数量(签名的数量);
20、步骤3.4:计算验证等式如果相等,则验签通过,否则失败。
21、作为优选,步骤3.3中,所述计算令将后比特的标量ui分割成w个l比特的标量uij,j=1,2,...,w,将原始任务分成w个子任务进行计算,每个子任务分别计算得到全部w个子任务的输出后,计算椭圆曲线点tw=gw,并通过递归公式tj=[2l]tj+1+gj,j=1,2,...,w,计算出t1,输出t1作为多标量乘法的结果;
22、每个子任务的计算过程包括以下步骤:
23、(1)根据uij的值,将对应的pi累加,除去uij=0的一组,得到2l-1组点加的结果,记为bk,k=1,2,...,2l-1;
24、(2)令计算
25、(3)计算为子任务的最终输出。
26、本专利技术的系统采用的技术方案是:一种基于多标量点乘的sm2数字签名验证系统,包括以下模块:
27、用户公私钥对生成模块,用于每个用户各自生成自己的公私钥对(di、pi);
28、用户签名生成模块,用于用户i使用自己的私钥di,生成签名σi;
29、批量验证模块,用于对接收到的全部m个用户的签名,验证者进行批量验证。
30、本专利技术的设备采用的技术方案是:一种基于多标量点乘的sm2数字签名验证设备,其特征在于,包括:
31、一个或多个处理器;
32、存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现所述的基于多标量点乘的sm2数字签名验证方法。
33、本专利技术与现有技术相比具有如下优点和有益效果:
34、1、签名的批量验证可以在签名数量多的情况下提高验签的效率,使用高效的椭圆曲线多标量乘法进行加速,大幅提高验签速度。
35、2、本方案安全性高,安全依赖性直接依赖于国密sm2算法的安全性,同时可以抵抗批验证中的消除攻击。
本文档来自技高网...【技术保护点】
1.一种基于多标量点乘的SM2数字签名验证方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于多标量点乘的SM2数字签名验证方法,其特征在于:步骤1中,生成随机数di∈[1,n-1],di即为用户i的私钥,n为基点G的阶,G=(xG,yG),是群的一个基点,是阶为N的加法循环群;计算椭圆曲线点Pi=[di]G=(xi,yi),Pi即为用户i的公钥;xG,yG为G的x,y坐标,xi,yi为用户公钥Pi的x,y坐标,Ri为椭圆曲线点。
3.根据权利要求2所述的基于多标量点乘的SM2数字签名验证方法,其特征在于,步骤2的具体实现包括以下子步骤:
4.根据权利要求3所述的基于多标量点乘的SM2数字签名验证方法,其特征在于,步骤3的具体实现包括以下子步骤:
5.根据权利要求4所述的基于多标量点乘的SM2数字签名验证方法,其特征在于,步骤3.3中,所述计算令将后比特的标量ui分割成w个l比特的标量ui,jj=1,2,...,w,将原始任务分成w个子任务进行计算,每个子任务分别计算得到全部w个子任务的输出后,计算椭圆曲线点Tw=Gw,并
6.一种基于多标量点乘的SM2数字签名验证系统,其特征在于,包括以下模块:
7.一种基于多标量点乘的SM2数字签名验证设备,其特征在于,包括:
...【技术特征摘要】
1.一种基于多标量点乘的sm2数字签名验证方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于多标量点乘的sm2数字签名验证方法,其特征在于:步骤1中,生成随机数di∈[1,n-1],di即为用户i的私钥,n为基点g的阶,g=(xg,yg),是群的一个基点,是阶为n的加法循环群;计算椭圆曲线点pi=[di]g=(xi,yi),pi即为用户i的公钥;xg,yg为g的x,y坐标,xi,yi为用户公钥pi的x,y坐标,ri为椭圆曲线点。
3.根据权利要求2所述的基于多标量点乘的sm2数字签名验证方法,其特征在于,步骤2的具体实现包括以下子步骤:
4.根据权利要求3所述的基于多标量点乘的sm...
【专利技术属性】
技术研发人员:李孟泽,彭聪,罗敏,冯琦,郭勇立,何德彪,
申请(专利权)人:武汉大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。