一种针对SM2算法的掩码运算方法及装置转让专利

申请号 : CN202010966633.3

文献号 : CN112131613B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 彭金辉雷宗华王阳阳刘武忠卫志刚

申请人 : 郑州信大捷安信息技术股份有限公司

摘要 :

本发明涉及一种针对SM2算法的掩码运算方法及装置,掩码运算方法是通过预置点和随机数的方式将进行[k]G运算中的随机数k进行掩盖,SM2算法运算过程中[k]G计算具体包括:在芯片内部预置点P0=[r‑1]G和第一随机数r;P0为有限域椭圆曲线上的点,G为椭圆曲线上的基点;在芯片内部生成第二随机数d;通过第一随机数r和第二随机数d计算生成第三随机数k=d·r‑1;计算生成点P1=[k]G=[d·r‑1]G=[d]·[r‑1]G=[d]P0,掩码运算装置包括预置模块、随机数生成模块、随机数运算模块和点乘运算模块;本发明能够增强真实参数信息k和功耗分析获取信息的破解难度,有效应对功耗分析攻击。

权利要求 :

1.一种针对SM2算法的掩码运算方法,其特征在于,所述掩码运算方法是通过预置点和随机数的方式将进行[k]G运算中的随机数k进行掩盖,SM2算法运算过程中[k]G计算具体包括:

‑1

在芯片内部预置点P0=[r ]G和第一随机数r;其中,P0为有限域椭圆曲线上的点,G为椭圆曲线上的基点;

在芯片内部生成第二随机数d;

‑1

通过第一随机数r和第二随机数d计算生成第三随机数k=d·r ;

‑1 ‑1

计算生成点P1=[k]G=[d·r ]G=[d]·[r ]G=[d]P0。

2.根据权利要求1所述的掩码运算方法,其特征在于,在计算生成点P1之后还包括坐标系的转换,具体包括:

将点P0从仿射坐标系转换为雅可比坐标系下,P0=(x0,y0,z0);

计算点P1=[d]P0=(x1,y1,z1),再将点P1转换至仿射坐标系下P1=(x,y)。

3.根据权利要求2所述的掩码运算方法,其特征在于,在计算生成点P1之后还包括点P1的验证和输出,具体包括:

2 3

验证点P1是否在椭圆曲线上:若y=x+ax+b,则验证成功,输出点P1=[k]G=(x,y);否则验证失败,输出错误标识。

4.根据权利要求3所述的掩码运算方法,其特征在于,在验证点P1之后还包括预置点P0和第一随机数r的更新,具体包括:b ‑1 b

获取1比特第四随机数b,更新第一随机数r=(‑1)·2r,点P0=[r ]G=(‑1)·2·[r‑1

]G。

5.根据权利要求1‑4之一所述的掩码运算方法,其特征在于,在获取到计算生成的点P1=[k]G=(x,y)和第三随机数k之后,获取SM2算法的签名值过程具体包括:将x的数据类型转换成整数,计算r’=(e+x)modn,若r’=0或r’+k=n,则输出错误标识,并返回重新计算生成第三随机数k和点P1;

‑1

计算s’=(1+dA) ·(k‑r·dA)modn,若s’=0,则输出错误标识,并返回重新计算生成第三随机数k和点P1;

将获得的r’、s’的数据类型转换为字符串,消息的签名值为(r’,s’);

其中,e为消息经过哈希计算后的值,dA为私钥。

6.一种针对SM2算法的掩码运算装置,其特征在于,所述掩码运算装置包括:预置模块、随机数生成模块、随机数运算模块和点乘运算模块;

‑1

所述预置模块,用于在芯片内部预置点P0=[r ]G和第一随机数r;其中,P0为有限域椭圆曲线上的点,n为椭圆曲线的阶数,G为椭圆曲线上的基点;

所述随机数生成模块,用于在芯片内部生成第二随机数d;

所述随机数运算模块,用于通过第一随机数r和第二随机数d计算生成第三随机数k=‑1

d·r ;

‑1 ‑1

所述点乘运算模块,用于计算生成点P1=[k]G=[d·r ]G=[d]·[r ]G=[d]·P0。

7.根据权利要求6所述的掩码运算装置,其特征在于,所述掩码运算装置还包括坐标转换模块;

所述坐标转换模块,用于将点P0从仿射坐标系转换为雅可比坐标系下,P0=(x0,y0,z0);

所述点乘运算模块,还用于计算点P1=[d]·P0=(x1,y1,z1);

所述坐标转换模块,还用于将点P1转换至仿射坐标系下P1=(x,y)。

8.根据权利要求6所述的掩码运算装置,其特征在于,所述掩码运算装置还包括点验证模块和输出模块;

2 3

所述点验证模块,用于验证点P1是否在椭圆曲线上:若y =x +ax+b,则验证成功;否则验证失败;

所述输出模块,用于在所述点验证模块验证成功时,输出点P1=[k]G=(x,y);在验证失败时,输出错误标识。

9.根据权利要求6所述的掩码运算装置,其特征在于,所述掩码运算装置还包括更新模块;

b

所述更新模块,用于获取1比特第四随机数b,更新第一随机数r=(‑1)·2r,点P0=[r‑1 b ‑1

]G=(‑1)·2·[r ]G。

10.根据权利要求6‑9之一所述的掩码运算装置,其特征在于,所述掩码运算装置还包括签名生成模块;

所述签名生成模块,用于调用预置模块、随机数生成模块、随机数运算模块、点乘运算模块、坐标转换模块、点验证模块和输出模块,获取到计算生成的点P1=[k]G=(x,y)和第三随机数k后,再通过所述点P1和第三随机数k进行签名值的生成;

所述签名值的生成具体包括:将x的数据类型转换成整数,计算r’=(e+x)modn,若r’=0或r’+k=n,则输出错误标识,并返回重新计算生成第三随机数k和点P1;

‑1

计算s’=(1+dA) ·(k‑r·dA)modn,若s’=0,则输出错误标识,并返回重新计算生成第三随机数k和点P1;

将获得的r’、s’的数据类型转换为字符串,消息的签名值为(r’,s’);

其中,e为消息经过哈希计算后的值,dA为私钥。

说明书 :

一种针对SM2算法的掩码运算方法及装置

技术领域

[0001] 本发明属于SM2密码算法的技术领域,具体涉及一种针对SM2算法的掩码运算方法及装置。

背景技术

[0002] 随着密码技术和计算技术的不断发展,目前常用的1024位公钥密码算法RSA面临严重威胁,由于SM2算法安全性高、计算量小、处理速度快等优势,我们国家密码管理部门经
过研究,决定采用SM2椭圆曲线密码算法替换RSA算法。相对于RSA算法,在达到相同的安全
强度前提下,SM2算法所需要的密钥长度更短,硬件实现更为简单。
[0003] SM2密码算法在理论上是十分安全的,但是在实现过程中要考虑到近些年新兴起的密码分析手段,在众多攻击方法中,利用时间、功耗等旁路信息获取密码设备的相关密钥
信息的旁路攻击方式对密码芯片的安全造成了严重的威胁,其中功耗分析攻击最具威胁性
和最有效的攻击方式,特别是对于安全芯片等硬件加密设备中加密算法的实现,因为功耗
在密码设备加密过程中是主要的旁路泄露信息。对于不同的操作,密码设备会出现不同的
能量消耗,从而攻击者可以从中判断出其中以什么样的顺序进行了什么样的操作。DPA是一
种对密码芯片泄露的功耗信息进行统计分析从而恢复出密钥的攻击方法。因此如何设计一
种针对SM2算法的掩码运算方法,能够将SM2算法过程中的真实参数信息进行掩码,增强真
实参数信息和功耗分析获取信息的破解难度,有效应对功耗分析攻击是目前急需解决的问
题。

发明内容

[0004] 本发明的目的在于克服现有技术中存在的不足而提供一种采用预置点和随机数的方式能够将SM2算法过程中的真实参数信息进行掩码,增强真实参数信息和功耗分析获
取信息的破解难度,有效应对功耗分析攻击的针对SM2算法的掩码运算方法及装置。
[0005] 本发明第一方面提出一种针对SM2算法的掩码运算方法,所述掩码运算方法是通过预置点和随机数的方式将进行[k]G运算中的随机数k进行掩盖,SM2算法运算过程中[k]G
计算具体包括:
[0006] 在芯片内部预置点P0=[r‑1]G和第一随机数r;其中,P0为有限域椭圆曲线上的点,G为椭圆曲线上的基点;
[0007] 在芯片内部生成第二随机数d;
[0008] 通过第一随机数r和第二随机数d计算生成第三随机数k=d·r‑1;
[0009] 计算生成点P1=[k]G=[d·r‑1]G=[d]·[r‑1]G=[d]P0。
[0010] 进一步的,在计算生成点P1之后还包括坐标系的转换,具体包括:
[0011] 将点P0从仿射坐标系转换为雅可比坐标系下,P0=(x0,y0,z0);
[0012] 计算点P1=[d]P0=(x1,y1,z1),再将点P1转换至仿射坐标系下P1=(x,y)。
[0013] 进一步的,在计算生成点P1之后还包括点P1的验证和输出,具体包括:
[0014] 验证点P1是否在椭圆曲线上:若y2=x3+ax+b,则验证成功,输出点P1=[k]G=(x,y);否则验证失败,输出错误标识。
[0015] 进一步的,在验证点P1之后还包括预置点P0和第一随机数r的更新,具体包括:
[0016] 获取1比特第四随机数b,更新第一随机数r=(‑1)b·2r,点P0=[r‑1]G=(‑1)b·‑1
2·[r ]G。
[0017] 进一步的,在获取到计算生成的点P1=[k]G=(x,y)和第三随机数k之后,获取SM2算法的签名值过程具体包括:
[0018] 将x的数据类型转换成整数,计算r’=(e+x)modn,若r’=0或r’+k=n,则输出错误标识,并返回重新计算生成第三随机数k和点P1;
[0019] 计算s’=(1+dA)‑1·(k‑r·dA)modn,若s’=0,则输出错误标识,并返回重新计算生成第三随机数k和点P1;
[0020] 将获得的r’、s’的数据类型转换为字符串,消息的签名值为(r’,s’);
[0021] 其中,e为消息经过哈希计算后的值,dA为私钥。
[0022] 本发明第二方面还提出一种针对SM2算法的掩码运算装置,所述掩码运算装置包括:预置模块、随机数生成模块、随机数运算模块和点乘运算模块;
[0023] 所述预置模块,用于在芯片内部预置点P0=[r‑1]G和第一随机数r;其中,P0为有限域椭圆曲线上的点,n为椭圆曲线的阶数,G为椭圆曲线上的基点;
[0024] 所述随机数生成模块,用于在芯片内部生成第二随机数d;
[0025] 所述随机数运算模块,用于通过第一随机数r和第二随机数d计算生成第三随机数‑1
k=d·r ;
[0026] 所述点乘运算模块,用于计算生成点P1=[k]G=[d·r‑1]G=[d]·[r‑1]G=[d]·P0。
[0027] 进一步的,所述掩码运算装置还包括坐标转换模块;
[0028] 所述坐标转换模块,用于将点P0从仿射坐标系转换为雅可比坐标系下,P0=(x0,y0,z0);
[0029] 所述点乘运算模块,还用于计算点P1=[d]·P0=(x1,y1,z1);
[0030] 所述坐标转换模块,还用于将点P1转换至仿射坐标系下P1=(x,y)。
[0031] 进一步的,所述掩码运算装置还包括点验证模块和输出模块;
[0032] 所述点验证模块,用于验证点P1是否在椭圆曲线上:若y2=x3+ax+b,则验证成功;否则验证失败。
[0033] 所述输出模块,用于在所述点验证模块验证成功时,输出点P1=[k]G=(x,y);在验证失败时,输出错误标识。
[0034] 进一步的,所述掩码运算装置还包括更新模块;
[0035] 所述更新模块,用于获取1比特第四随机数b,更新第一随机数r=(‑1)b·2r,点P0‑1 b ‑1
=[r ]G=(‑1)·2·[r ]G。
[0036] 进一步的,所述掩码运算装置还包括签名生成模块;
[0037] 所述签名生成模块,用于调用预置模块、随机数生成模块、随机数运算模块、点乘运算模块、坐标转换模块、点验证模块和输出模块,获取到计算生成的点P1=[k]G=(x,y)
和第三随机数k后,再通过所述点P1和第三随机数k进行签名值的生成;
[0038] 所述签名值的生成具体包括:
[0039] 将x的数据类型转换成整数,计算r’=(e+x)modn,若r’=0或r’+k=n,则输出错误标识,并返回重新计算生成第三随机数k和点P1;
[0040] 计算s’=(1+dA)‑1·(k‑r·dA)modn,若s’=0,则输出错误标识,并返回重新计算生成第三随机数k和点P1;
[0041] 将获得的r’、s’的数据类型转换为字符串,消息的签名值为(r’,s’);
[0042] 其中,e为消息经过哈希计算后的值,dA为私钥。
[0043] 本发明具有突出的实质性特点和显著的进步,具体的说:在椭圆曲线密码体系中,SM2算法涉及的加密、签名等过程均是以椭圆曲线上的点乘运算P=[k]G为基础来实现的,
‑1
因此k的安全性至关重要;本发明在芯片内部预置点P0=[r ]G和第一随机数r;在芯片内部
‑1
生成第二随机数d;通过第一随机数r和第二随机数d计算生成第三随机数k=d·r ;计算生
‑1 ‑1
成点P1=[k]G=[d·r ]G=[d]·[r ]G=[d]P0;使得[k]G的运算由预置点P0和第二随机
数d共同计算生成,即使第二随机数d被破解,但是第一随机数r是预置的,所以r不会被破
解,增加了k的破解难度,破坏了真实k信息和功耗曲线之间的相关性,给功耗分析获取信息
增加了相应的难度,达到抵御功耗分析的目的,从而起到很好的抗功耗攻击作用;此外,通
过对预置点P0和第一随机数r的更新机制,使得点P0和第一随机数r的信息是动态变化的,
从而增强k的破解难度,有效抵御功耗分析攻击。
[0044] 本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。

附图说明

[0045] 本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
[0046] 图1示出本发明一种针对SM2算法的掩码运算方法流程图;
[0047] 图2示出本发明一种针对SM2算法的掩码运算装置结构图。

具体实施方式

[0048] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
[0049] 需要说明的是,当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中组件。
[0050] 除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具
体的实施例的目的,不是旨在于限制本发明。
[0051] 如图1所示,本发明第一方面提出一种针对SM2算法的掩码运算方法,所述掩码运算方法是通过预置点和随机数的方式将进行[k]G运算中的随机数k进行掩盖,SM2算法运算
过程中[k]G计算具体包括:
[0052] 在芯片内部预置点P0=[r‑1]G和第一随机数r;其中,P0为有限域椭圆曲线上的点,G为椭圆曲线上的基点;
[0053] 在芯片内部生成第二随机数d;
[0054] 通过第一随机数r和第二随机数d计算生成第三随机数k=d·r‑1;
[0055] 计算生成点P1=[k]G=[d·r‑1]G=[d]·[r‑1]G=[d]P0。
[0056] 进一步的,在计算生成点P1之后还包括坐标系的转换,具体包括:
[0057] 将点P0从仿射坐标系转换为雅可比坐标系下,P0=(x0,y0,z0);
[0058] 计算点P1=[d]P0=(x1,y1,z1),再将点P1转换至仿射坐标系下P1=(x,y)。
[0059] 进一步的,在计算生成点P1之后还包括点P1的验证和输出,具体包括:
[0060] 验证点P1是否在椭圆曲线上:若y2=x3+ax+b,则验证成功,输出点P1=[k]G=(x,y);否则验证失败,输出错误标识。
[0061] 进一步的,在验证点P1之后还包括预置点P0和第一随机数r的更新,具体包括:
[0062] 获取1比特第四随机数b,更新第一随机数r=(‑1)b·2r,点P0=[r‑1]G=(‑1)b·‑1
2·[r ]G。
[0063] 需要说明的是,预置点P0和第一随机数r在进行SM2算法的运算过程中是动态更新的,不会预置一次就不变化,能够有效增强预置点P0和第一随机数r的破解难度。
[0064] 进一步的,在获取到计算生成的点P1=[k]G=(x,y)和第三随机数k之后,获取SM2算法的签名值过程具体包括:
[0065] 将x的数据类型转换成整数,计算r’=(e+x)modn,若r’=0或r’+k=n,则输出错误标识,并返回重新计算生成第三随机数k和点P1;
[0066] 计算s’=(1+dA)‑1·(k‑r·dA)modn,若s’=0,则输出错误标识,并返回重新计算生成第三随机数k和点P1;
[0067] 将获得的r’、s’的数据类型转换为字符串,消息的签名值为(r’,s’);
[0068] 其中,e为消息经过哈希计算后的值,dA为私钥。
[0069] 需要说明的是,椭圆曲线密码体系中,加解密、签名和验签等操作均是以点乘运算[k]G为基础实现的,以签名过程为例,通常SM2签名的具体实现过程为:
[0070] M为待签名消息,数字签名结果为(r,s),用户密钥对(d,P)。
[0071] 实现步骤:
[0072] 1)e=hash(M)//获取消息散列值
[0073] 2)产生随机数k//以便即使是同一个消息,每次签名出来的结果不同。
[0074] 3)使用随机数,计算椭圆曲线点(x,y)=[k]G
[0075] 4)r=(e+x)modn//判断:r=0或者r+k=n,继续第2步。
[0076] 5)s=((1+dA)‑1*(k‑r*dA))modn,若s=0,继续第2步
[0077] 6)r,s为签名信息。
[0078] 本发明签名过程中涉及的第三随机数k的值为d·r‑1,[k]G=[d·r‑1]G,因此k和[k]G的值是随机变化的,由于r是预置的,很难被破解,所以增强了k和[k]G的破解难度,从
而也有效提升了签名过程的安全性,防止功耗攻击。
[0079] 如图2所示,本发明第二方面还提出一种针对SM2算法的掩码运算装置,所述掩码运算装置包括:预置模块、随机数生成模块、随机数运算模块和点乘运算模块;
[0080] 所述预置模块,用于在芯片内部预置点P0=[r‑1]G和第一随机数r;其中,P0为有限域椭圆曲线上的点,n为椭圆曲线的阶数,G为椭圆曲线上的基点;
[0081] 所述随机数生成模块,用于在芯片内部生成第二随机数d;
[0082] 所述随机数运算模块,用于通过第一随机数r和第二随机数d计算生成第三随机数‑1
k=d·r ;
[0083] 所述点乘运算模块,用于计算生成点P1=[k]G=[d·r‑1]G=[d]·[r‑1]G=[d]·P0。
[0084] 进一步的,所述掩码运算装置还包括坐标转换模块;
[0085] 所述坐标转换模块,用于将点P0从仿射坐标系转换为雅可比坐标系下,P0=(x0,y0,z0);
[0086] 所述点乘运算模块,还用于计算点P1=[d]·P0=(x1,y1,z1);
[0087] 所述坐标转换模块,还用于将点P1转换至仿射坐标系下P1=(x,y)。
[0088] 进一步的,所述掩码运算装置还包括点验证模块和输出模块;
[0089] 所述点验证模块,用于验证点P1是否在椭圆曲线上:若y2=x3+ax+b,则验证成功;否则验证失败。
[0090] 所述输出模块,用于在所述点验证模块验证成功时,输出点P1=[k]G=(x,y);在验证失败时,输出错误标识。
[0091] 进一步的,所述掩码运算装置还包括更新模块;
[0092] 所述更新模块,用于获取1比特第四随机数b,更新第一随机数r=(‑1)b·2r,点P0‑1 b ‑1
=[r ]G=(‑1)·2·[r ]G。
[0093] 进一步的,所述掩码运算装置还包括签名生成模块;
[0094] 所述签名生成模块,用于调用预置模块、随机数生成模块、随机数运算模块、点乘运算模块、坐标转换模块、点验证模块和输出模块,获取到计算生成的点P1=[k]G=(x,y)
和第三随机数k后,再通过所述点P1和第三随机数k进行签名值的生成;
[0095] 所述签名值的生成具体包括:
[0096] 将x的数据类型转换成整数,计算r’=(e+x)modn,若r’=0或r’+k=n,则输出错误标识,并返回重新计算生成第三随机数k和点P1;
[0097] 计算s’=(1+dA)‑1·(k‑r·dA)modn,若s’=0,则输出错误标识,并返回重新计算生成第三随机数k和点P1;
[0098] 将获得的r’、s’的数据类型转换为字符串,消息的签名值为(r’,s’);
[0099] 其中,e为消息经过哈希计算后的值,dA为私钥。
[0100] 在椭圆曲线密码体系中,SM2算法涉及的加密、签名等过程均是以椭圆曲线上的点乘运算P=[k]G为基础来实现的,因此k的安全性至关重要;本发明在芯片内部预置点P0=
‑1
[r ]G和第一随机数r;在芯片内部生成第二随机数d;通过第一随机数r和第二随机数d计算
‑1 ‑1 ‑1
生成第三随机数k=d·r ;计算生成点P1=[k]G=[d·r ]G=[d]·[r ]G=[d]P0;使得
[k]G的运算由预置点P0和第二随机数d共同计算生成,即使第二随机数d被破解,但是第一
随机数r是预置的,所以r不会被破解,增加了k的破解难度,破坏了真实k信息和功耗曲线之
间的相关性,给功耗分析获取信息增加了相应的难度,达到抵御功耗分析的目的,从而起到
很好的抗功耗攻击作用;此外,通过对预置点P0和第一随机数r的更新机制,使得点P0和第
一随机数r的信息是动态变化的,从而增强k的破解难度,有效抵御功耗分析攻击。
[0101] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修
改、等同替换、改进等,均应包含在本发明的保护范围之内。