本发明专利技术公开了一种加快数字签名的方法,首先将根据句柄和索引号导出签名公钥,然后将杂凑算法标识、签名者ID、签名者公钥作为参数调用杂凑运算初始化,然后调用杂凑运算结束得到Z
【技术实现步骤摘要】
一种加快数字签名的方法
[0001]本专利技术涉及一种加快数字签名的方法。
技术介绍
[0002]在商用密码应用与安全性评估(以下简称密评)的大环境下,所有的密码运算都需要在硬件中运行。而有的硬件在某方面可能性能一般,根据木桶原理,它就成了影响整体性能的短板。
[0003]一般在进行数字签名时,正常的流程是:设待签名的消息为M,为了获取消息M的数字签名(r,s),作为签名者的用户A应实现以下运算步骤:
[0004]1、置M'=Z
A
||M;其中Z
A
=H
256
(ENTL
A
||ID
A
||a||b||x
G
||y
G
||x
A
||y
A
);
[0005]2、计算e=Hv(M'),按GM/T0003.1
‑
20124.2.4和4.32.3给出的方法将e计算的类型转换为整数;
[0006]3、SM2签名的实现。
[0007]现有模式下,都存在如下缺点:每次都运行hash算法,而hash算法的性能较低,导致整体签名的性能较低。在很多项目中要求用硬件设备进行计算,我们一个项目中的硬件设备的Hash算法SM3性能较低,SM2签名算法较快。进行压力测试时,发现性能较低在7000次/秒左右。如果将hash去掉性能在20000次/秒,而如果去掉hash计算结果明显是错误的。
技术实现思路
[0008]针对上述现有技术的不足,本专利技术提供一种加快数字签名的方法来节约时间,提高性能。
[0009]本专利技术解决其技术问题所采用的技术方案是:
[0010]一种加快数字签名的方法,它包括如下步骤:
[0011]S1:计算公钥对应的Z
A
并将密钥索引和ZA的对应关系存储在hashMap中;
[0012]S2:签名时调用Z
A
进行计算。
[0013]进一步的,步骤S1包括:
[0014]S101:程序启动后,根据不同索引读取公钥,利用公钥和曲线参数计算公钥对应的Z
A
;
[0015]S102:将密钥索引和Z
A
的对应关系存储在hashMap中;
[0016]进一步的,步骤S2包括:
[0017]S201:当进行签名时,输入密钥索引和待签名的消息M;
[0018]S202:根据密钥索引得到Z
A
,根据ZA和待签名长度消息M计算出e;
[0019]S203:根据密钥索引和e调用硬件计算签名值;
[0020]S204:等待输入数据,循环步骤S201
‑
S203。
[0021]本专利技术的有益效果是:本专利技术在满足密评要求的前提下,通过用空间换取时间的方式在硬件不变的情况下提高了运算性能。
[0022]本专利技术求e的过程仅需要一步hash,即e=Hv(M'),改进后速度在19000次/秒左右。
附图说明
[0023]附图1为本专利技术的流程图;
具体实施方式
[0024]为了更好地理解本专利技术,下面结合附图1来详细解释本专利技术的实施方式。
[0025]本专利技术将Z
A
的计算前置,将密钥索引和Z
A
的对应关系存储在HashMap中,在签名时调用Z
A
,用很小的内存换取了性能的大幅度的提升。
[0026]当服务器接收到数据和对应的密钥索引时,程序首先打开密码机,得到密码机句柄,然后根据句柄和索引号导出签名公钥,然后将杂凑算法标识、签名者ID、签名者公钥作为参数调用杂凑运算初始化,将原文作为参数调用杂凑运算更新;然后调用杂凑运算结束得到e;最后将原文和密钥索引作为参数调用调用内部密钥ECC签名,完成签名。上述操作看不到计算Z
A
等过程,我们为了性能对数据进行了处理。首先我们将根据句柄和索引号导出签名公钥,然后将杂凑算法标识、签名者ID、签名者公钥作为参数调用杂凑运算初始化,然后调用杂凑运算结束得到Z
A
;将每个密钥索引和对应ZA存储在hashMap中;当服务器接收到数据和对应的密钥索引时,然后将杂凑算法标识、空、空作为参数调用杂凑运算初始化,将Z
A
和原文拼接的数据作为参数调用杂凑运算更新;然后调用杂凑运算结束得到e;最后将原文和密钥索引作为参数调用调用内部密钥ECC签名,完成签名。
[0027]如图1所示,加速生成签名值流程:
[0028]S101:程序启动后,根据不同索引读取公钥,利用公钥和曲线参数计算公钥对应的Z
A
。S102:将密钥索引和Z
A
的对应关系存储在hashMap中。S201:当进行签名时,输入密钥索引和待签名的消息M。S202:根据密钥索引得到Z
A
,根据Z
A
和待签名长度消息M计算出e。S203:根据密钥索引和e调用硬件计算签名值。S204:等待输入数据,循环步骤S201
‑
S203。
[0029]相比较与现有工作模式,本专利技术在满足目前技术方案所有功能需求的同时,还有着显著的性能优点:节约时间,提高了性能。
[0030]本专利技术将公钥的读取和求Z
A
的8次hash都提前计算,节约了正式运行时的时间,将整体性能提供了3倍左右。
[0031]经过分析发现计算ZA和服务器进行了8次交互,加上求e的共进行了9次;而ENTLA、IDA、a、b、xG、yG是固定值,xA、yA是公钥,我们将ZA的计算前置,这样需花费很小的内存空间(1000对就40K左右)存储每个密钥索引对应的ZA,求e的过程仅需要一步hash,即e=Hv(M'),改进后速度在19000次/秒左右。通过将读取公钥和根据公钥和曲线计算Z
A
前置实现了加速。
本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种加快数字签名的方法,其特征在于,它包括如下步骤:S1:计算公钥对应的Z
A
并将密钥索引和ZA的对应关系存储在hashMap中;S2:签名时调用Z
A
进行计算。2.如权利要求1所述的一种加快数字签名的方法,其特征在于,步骤S1包括:S101:程序启动后,根据不同索引读取公钥,利用公钥和曲线参数计算公钥对应的Z
A
;S102:将密钥索引和Z...
【专利技术属性】
技术研发人员:焦正坤,王永起,刘鹏,金健,
申请(专利权)人:同智伟业软件股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。