本发明属于信息安全技术领域,尤其是涉及一种支持批验证的sm2数字签名方法及介质。
背景技术:
数字签名是保障网络安全的密码技术之一,能够保证数据的完整性、真实性和不可抵赖性。为了实现数字签名的高效验证,naccache等人提出了批验证的概念。批验证能够在保证高正确率的前提下,一次验证多个签名,极大地提高了验证效率。其原理是利用群的同构性,找到相同的项,简化运算,以此减少验证所需时间。批验证因其安全性与高效性,在车联网、智能医疗系统等领域有着广泛的应用,成为当前研究的一个热点。
随着数字签名的不断发展,国家密码管理局于2010年12月17日发布了sm2椭圆曲线数字签名算法,它具有安全性高、存储空间小和签名速度快的优势,被广泛使用在各个领域,但目前并没有支持批验证的sm2数字签名方案。本发明设计了支持批验证的sm2数字签名方案,保证了签名的完整性、真实性、不可伪造性和高效性。
技术实现要素:
本发明的上述技术问题主要是通过下述技术方案得以解决的:
一种支持批验证的sm2数字签名方法,其特征在于,基于以下定义
n:n为素数且n>2256;
modn:模n运算;
ai:签名者,为第i个用户;
v:验证者;
xi:用户i的私钥,且
e:由有限域上的元素a和b定义的一条椭圆曲线;
g:循环群
qi:用户i的公钥,计算方式为qi=xi·g;
idi:用户i的可辨别标识;
h():输入为任意长度比特串{0,1}*,输出为固定长度的密码杂凑函数;
zi:用户i的签名标识,计算方式为zi=h(idi,a,b,xg,yg,xq,yq);
方法包括
步骤1、生成签名,具体是给定消息mi,私钥xi,公钥qi=xi·g,签名者ai执行以下步骤产生数字签名:
步骤1.1、ai计算ei=h(zi||mi);
步骤1.2、ai随机选择
步骤1.3、ai计算
步骤1.4、ai计算si=(1 xi)-1(ki-ri·xi)modn;
步骤1.5、输出签名σi=(ri,si)
步骤2、验证签名,具体是给定消息mi,签名σi,公钥qi,验证者v执行以下步骤验证该签名是否有效:
步骤2.1、v计算ei=h(zi||mi),
步骤2.2、v验证等式ri=si·g ti·qi是否成立,如果成立,则接收这个签名,否则拒绝这个签名。
在上述的一种支持批验证的sm2数字签名方法,还包括一个批验证签名的步骤,具体是给定一组消息{m1,m2,…,mm},对应的数字签名{σ1=(r1,s1),σ2=(r2,s2),…,σm=(rm,sm)},对应的公钥{q1,q2,…,qm},验证者v执行以下步骤验证签名这一组签名是否有效:
步骤1、v随机生成一组随机数{a1,a2…,am};
步骤2、v计算ei=h(zi||mi),
步骤3、v验证等式
一种计算机存储介质,其特征在于,存储有计算机程序,运行计算机程序包括以下步骤:
步骤1、生成签名,具体是给定消息mi,私钥xi,公钥qi=xi·g,签名者ai执行以下步骤产生数字签名:
步骤1.1、ai计算ei=h(zi||mi);
步骤1.2、ai随机选择
步骤1.3、ai计算
步骤1.4、ai计算si=(1 xi)-1(ki-ri·xi)modn;
步骤1.5、输出签名σi=(ri,si)
步骤2、验证签名,具体是给定消息mi,签名σi,公钥qi,验证者v执行以下步骤验证该签名是否有效:
步骤2.1、v计算ei=h(zi||mi),
步骤2.2、v验证等式ri=si·g ti·qi是否成立,如果成立,则接收这个签名,否则拒绝这个签名;
其中,n:n为素数且n>2256;
modn:模n运算;
ai:签名者,为第i个用户;
v:验证者;
xi:用户i的私钥,且
e:由有限域上的元素a和b定义的一条椭圆曲线;
g:循环群
qi:用户i的公钥,计算方式为qi=xi·g;
idi:用户i的可辨别标识;
h():输入为任意长度比特串{0,1}*,输出为固定长度的密码杂凑函数;
zi:用户i的签名标识,计算方式为zi=h(idi,a,b,xg,yg,xq,yq)。
在上述的一种计算机存储介质,还包括一个批验证签名的步骤,具体是给定一组消息{m1,m2,…,mm},对应的数字签名{σ1=(r1,s1),σ2=(r2,s2),…,σm=(rm,sm)},对应的公钥{q1,q2,…,qm},验证者v执行以下步骤验证签名这一组签名是否有效:
步骤1、v随机生成一组随机数{a1,a2…,am};
步骤2、v计算ei=h(zi||mi),
步骤3、v验证等式
因此,本发明具有如下优点:首先,目前现有的sm2数字签名方案具有安全性高、存储空间小和签名速度快的优势,但是并没有支持批验证的sm2数字签名方案。其次,原始的sm2数字签名算法的验证过程需要恢复ri,本发明将ri作为签名的一部分,有效减少了批量验证的计算量。最后,可在随机预言模型下本发明中批验证的安全性。
附图说明
附图1是本发明的一种方法原理图。
具体实施方式
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
实施例:
一、首先介绍下本发明涉及的符号及定义。
n:n为素数且n>2256。
modn:模n运算。
ai:签名者,为第i个用户。
v:验证者。
xi:用户i的私钥,且
e:由有限域上的元素a和b定义的一条椭圆曲线。
g:循环群
qi:用户i的公钥,计算方式为qi=xi·g。
idi:用户i的可辨别标识。
h():输入为任意长度比特串{0,1}*,输出为固定长度的密码杂凑函数。
zi:用户i的签名标识,计算方式为zi=h(idi,a,b,xg,yg,xq,yq)。
二、下面给出具体描述本方案包含三个算法步骤:签名生成算法步骤,签名验证算法步骤和签名批验证算法步骤。
1.签名生成算法步骤。
给定消息mi,私钥xi,公钥qi=xi·g,签名者ai执行以下步骤产生数字签名:
(1)ai计算ei=h(zi||mi);
(2)ai随机选择
(3)ai计算
(4)ai计算si=(1 xi)-1(ki-ri·xi)modn;
(5)输出签名σi=(ri,si)
2.签名验证算法步骤。
给定消息mi,签名σi,公钥qi,验证者v执行以下步骤验证该签名是否有效:
(1)v计算ei=h(zi||mi),
(2)v验证等式ri=si·g ti·qi是否成立,如果成立,则接收这个签名,否则拒绝这个签名。
3.签名批验证算法步骤。
给定一组消息{m1,m2,…,mm},对应的数字签名{σ1=(r1,s1),σ2=(r2,s2),…,σm=(rm,sm)},对应的公钥{q1,q2,…,qm},验证者v执行以下步骤验证签名这一组签名是否有效:
(1)v随机生成一组随机数{a1,a2…,am};
(2)v计算ei=h(zi||mi),
(3)v验证等式
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
1.一种支持批验证的sm2数字签名方法,其特征在于,基于以下定义
n:n为素数且n>2256;
modn:模n运算;
ai:签名者,为第i个用户;
v:验证者;
xi:用户i的私钥,且
e:由有限域上的元素a和b定义的一条椭圆曲线;
g:循环群
qi:用户i的公钥,计算方式为qi=xi·g;
idi:用户i的可辨别标识;
h():输入为任意长度比特串{0,1}*,输出为固定长度的密码杂凑函数;
zi:用户i的签名标识,计算方式为zi=h(idi,a,b,xg,yg,xq,yq);
方法包括
步骤1、生成签名,具体是给定消息mi,私钥xi,公钥qi=xi·g,签名者ai执行以下步骤产生数字签名:
步骤1.1、ai计算ei=h(zi||mi);
步骤1.2、ai随机选择
步骤1.3、ai计算
步骤1.4、ai计算si=(1 xi)-1(ki-ri·xi)modn;
步骤1.5、输出签名σi=(ri,si)
步骤2、验证签名,具体是给定消息mi,签名σi,公钥qi,验证者v执行以下步骤验证该签名是否有效:
步骤2.1、v计算
步骤2.2、v验证等式ri=si·g ti·qi是否成立,如果成立,则接收这个签名,否则拒绝这个签名。
2.根据权利要求1所述的一种支持批验证的sm2数字签名方法,其特征在于,还包括一个批验证签名的步骤,具体是给定一组消息{m1,m2,…,mm},对应的数字签名{σ1=(r1,s1),σ2=(r2,s2),…,σm=(rm,sm)},对应的公钥{q1,q2,…,qm},验证者v执行以下步骤验证签名这一组签名是否有效:
步骤1、v随机生成一组随机数{a1,a2…,am};
步骤2、v计算ei=h(zi||mi),
步骤3、v验证等式
3.一种计算机存储介质,其特征在于,存储有计算机程序,运行计算机程序包括以下步骤:
步骤1、生成签名,具体是给定消息mi,私钥xi,公钥qi=xi·g,签名者ai执行以下步骤产生数字签名:
步骤1.1、ai计算ei=h(zi||mi);
步骤1.2、ai随机选择
步骤1.3、ai计算
步骤1.4、ai计算si=(1 xi)-1(ki-ri·xi)modn;
步骤1.5、输出签名σi=(ri,si)
步骤2、验证签名,具体是给定消息mi,签名σi,公钥qi,验证者v执行以下步骤验证该签名是否有效:
步骤2.1、v计算ei=h(zi||mi),
步骤2.2、v验证等式ri=si·g ti·qi是否成立,如果成立,则接收这个签名,否则拒绝这个签名;
其中,n:n为素数且n>2256;
modn:模n运算;
ai:签名者,为第i个用户;
v:验证者;
xi:用户i的私钥,且
e:由有限域上的元素a和b定义的一条椭圆曲线;
g:循环群
qi:用户i的公钥,计算方式为qi=xi·g;
idi:用户i的可辨别标识;
h():输入为任意长度比特串{0,1}*,输出为固定长度的密码杂凑函数;
zi:用户i的签名标识,计算方式为zi=h(idi,a,b,xg,yg,xq,yq)。
4.根据权利要求3所述的一种计算机存储介质,其特征在于,还包括一个批验证签名的步骤,具体是给定一组消息{m1,m2,…,mm},对应的数字签名{σ1=(r1,s1),σ2=(r2,s2),…,σm=(rm,sm)},对应的公钥{q1,q2,…,qm},验证者v执行以下步骤验证签名这一组签名是否有效:
步骤1、v随机生成一组随机数{a1,a2…,am};
步骤2、v计算ei=h(zi||mi),
步骤3、v验证等式