《信息安全技术 SM2椭圆曲线公钥密码算法第2部分数字签名算法-GB》_第1页
《信息安全技术 SM2椭圆曲线公钥密码算法第2部分数字签名算法-GB》_第2页
《信息安全技术 SM2椭圆曲线公钥密码算法第2部分数字签名算法-GB》_第3页
《信息安全技术 SM2椭圆曲线公钥密码算法第2部分数字签名算法-GB》_第4页
《信息安全技术 SM2椭圆曲线公钥密码算法第2部分数字签名算法-GB》_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ICS35.040

L80

中华人民共和国国家标准

GB/TXXXXX.2—XXXX

信息安全技术SM2椭圆曲线公钥密码算法

第2部分:数字签名算法

Informationsecuritytechnology-PublickeycryptographicalgorithmSM2basedon

ellipticcurves-

Part2:Digitalsignaturealgorithm

点击此处添加与国际标准一致性程度的标识

(征求意见稿)

在提交反馈意见时,请将您知道的相关专利连同支持性文件一并附上

XXXX-XX-XX发布XXXX-XX-XX实施

GB/TXXXXX.2—XXXX

目  次

前言.................................................................错误!未定义书签。

引言.................................................................................II

1范围................................................................................1

2规范性引用文件......................................................................1

3术语和定义..........................................................................1

4符号和缩略语........................................................................1

5数字签名算法........................................................................2

5.1总则...........................................................错误!未定义书签。

5.2椭圆曲线系统参数................................................................2

5.3用户密钥对......................................................................2

5.4辅助函数........................................................................2

5.5用户其它信息....................................................................3

6数字签名的生成算法及流程............................................................3

6.1数字签名的生成算法...............................................................3

6.2数字签名生成算法流程.............................................................3

7数字签名的验证算法及流程............................................................4

7.1数字签名的验证算法..............................................................4

7.2数字签名验证算法流程............................................................6

附录A(资料性附录)数字签名与验证示例...............................................7

A.1一般要求.........................................................错误!未定义书签。

A.2Fp上的椭圆曲线数字签名............................................................7

A.3上的椭圆曲线数字签名..........................................................8

F2m

I

GB/TXXXXX.2—XXXX

引言

N.Koblitz和V.Miller在1985年各自独立地提出将椭圆曲线应用于公钥密码系统。椭圆曲线公钥

密码所基于的曲线性质如下:

──有限域上椭圆曲线在点加运算下构成有限交换群,且其阶与基域规模相近;

──类似于有限域乘法群中的乘幂运算,椭圆曲线多倍点运算构成一个单向函数。

在多倍点运算中,已知多倍点与基点,求解倍数的问题称为椭圆曲线离散对数问题。对于一般椭圆

曲线的离散对数问题,目前只存在指数级计算复杂度的求解方法。与大数分解问题及有限域上离散对数

问题相比,椭圆曲线离散对数问题的求解难度要大得多。因此,在相同安全程度要求下,椭圆曲线密码

较其它公钥密码所需的密钥规模要小得多。

SM2是国家密码管理局组织制定并提出的椭圆曲线密码算法标准。GB/TXXXXX—XXXX的主要

目标如下:

——GB/TXXXXX.1—XXXX定义和描述了SM2椭圆曲线密码算法的相关概念及数学基础知识,

并概述了该部分同其它部分的关系。

——GB/TXXXXX.2—XXXX描述了一种基于椭圆曲线的签名算法,即SM2签名算法。

——GB/TXXXXX.3—XXXX描述了一种基于椭圆曲线的密钥交换协议,即SM2密钥交换协议。

——GB/TXXXXX.4—XXXX描述了一种基于椭圆曲线的公钥加密算法,即SM2加密算法,该算

法需使用GB/TAAAAA—AAAA定义的SM3密码杂凑算法。

——GB/TXXXXX.5—XXXX给出了SM2算法使用的椭圆曲线参数,以及使用椭圆曲线参数进行

SM2运算的示例结果。

本部分为为GB/TXXXXX—XXXX第二部分,描述了基于椭圆曲线的数字签名算法。

II

GB/TXXXXX.2—XXXX

SM2椭圆曲线公钥密码算法

第2部分:数字签名算法

1范围

GB/TXXXXX的本部分规定了SM2椭圆曲线公钥密码算法的数字签名算法,包括数字签名生成算

法和验证算法,并给出了数字签名与验证示例及其相应的流程。

本部分适用于商用密码应用中的数字签名和验证,可满足多种密码应用中的身份鉴别和数据完整

性、真实性的安全需求。

2规范性引用文件

下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。

凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。

GB/TXXXXX信息安全技术SM2椭圆曲线公钥密码算法第1部分:总则

3术语和定义

下列术语和定义适用于本部分。

3.1

消息message

任意有限长度的比特串。

3.2

签名消息signedmessage

由消息以及该消息的签名部分所组成的一组数据项。

3.3

签名密钥signaturekey

在数字签名生成过程中由签名者专用的秘密数据项,即签名者的私钥。

3.4

签名生成过程signatureprocess

输入消息、签名密钥和椭圆曲线系统参数,并输出数字签名的过程。

3.5

可辨别标识distinguishingidentifier

可以无歧义辨别某一实体身份的信息。

4符号和缩略语

下列符号和缩略语适用于本文件。

A,B使用公钥密码系统的两个用户。

a,bFq中的元素,它们定义Fq上的一条椭圆曲线E。

1

GB/TXXXXX.2—XXXX

dA用户A的私钥。

E(Fq)Fq上椭圆曲线E的所有有理点(包括无穷远点O)组成的集合。

e密码杂凑算法作用于消息M的输出值。

e’密码杂凑算法作用于消息M’的输出值。

Fq包含q个元素的有限域。

G椭圆曲线的一个基点,其阶为素数。

Hv()消息摘要长度为v比特的密码杂凑算法。

IDA用户A的可辨别标识。

M待签名消息。

M’待验证消息。

modn模n运算。例如,23mod7=2。

n基点G的阶(n是#E(Fq)的素因子)。

O椭圆曲线上的一个特殊点,称为无穷远点或零点,是椭圆曲线加法群的单位元。

PA用户A的公钥。

q有限域Fq中元素的数目。

x||yx与y的拼接,其中x、y可以是比特串或字节串。

ZA关于用户A的可辨别标识、部分椭圆曲线系统参数和用户A公钥的杂凑值。

(r,s)发送的签名。

(r’,s’)收到的签名。

椭圆曲线上点的倍点,即,,是正整数。

[k]PPk[k]PPP...Pk

k个

[x,y]大于或等于x且小于或等于y的整数的集合。

x顶函数,大于或等于x的最小整数。例如,77,8.39。

x底函数,小于或等于x的最大整数。例如,77,8.38。

#E(Fq)E(Fq)上点的数目,称为椭圆曲线E(Fq)的阶。

5数字签名算法

5.1综述

数字签名算法由一个签名者对数据产生数字签名,并由一个验证者验证签名的可靠性。每个签名者

有一个公钥和一个私钥,其中私钥用于产生签名,验证者用签名者的公钥验证签名。在签名的生成过程

之前,要用密码杂凑算法对M(包含ZA和待签消息M)进行压缩;在验证过程之前,要用密码杂凑算法

对M’(包含ZA和待验证消息M’)进行压缩。

5.2椭圆曲线系统参数

m

椭圆曲线系统参数包括有限域Fq的规模q(当q=2时,还包括元素表示法的标识和约化多项式);

定义椭圆曲线E(Fq)的方程的两个元素a、bFq;E(Fq)上的基点G=(xG,yG)(G≠O),其中xG和yG是Fq

中的两个元素;G的阶n及其它可选项(如n的余因子h等)。

椭圆曲线系统参数及其验证应符合GB/TXXXXX.1-xxxx第5章的规定。

5.3用户密钥对

用户A的密钥对包括其私钥dA和公钥PA=[dA]G=(xA,yA)。

用户密钥对的生成算法与公钥验证算法应符合GB/TXXXXX.1-xxxx第6章的规定。

5.4辅助函数

5.4.1概述

2

GB/TXXXXX.2—XXXX

在本部分规定的椭圆曲线数字签名算法中,涉及到两类辅助函数:密码杂凑算法与随机数发生器。

5.4.2密码杂凑算法

本部分规定使用国家密码管理局批准的密码杂凑算法,如SM3密码杂凑算法。

5.4.3随机数发生器

本部分规定使用国家密码管理局批准的随机数发生器。

5.5用户其它信息

作为签名者的用户A具有长度为entlenA比特的可辨别标识IDA,记ENTLA是由整数entlenA转换而

成的两个字节,在本部分规定的椭圆曲线数字签名算法中,签名者和验证者都需要用密码杂凑算法求得

用户A的杂凑值ZA。按GB/TXXXXX.1-XXX4.2.6和4.2.5给出的方法,将椭圆曲线方程参数a、b、G

的坐标xG、yG和PA的坐标xA、yA的数据类型转换为比特串,ZA=H256(ENTLA||IDA||a||b||xG||yG||xA||yA)。

6数字签名的生成算法及流程

6.1数字签名的生成算法

设待签名的消息为M,为了获取消息M的数字签名(r,s),作为签名者的用户A应实现以下运算步

骤:

A1:置M=ZA||M;

A2:计算e=Hv(M),按GB/TXXXXX.1-xxxx4.2.4和4.2.3给出的方法将e的数据类型转换为整

数;

A3:用随机数发生器产生随机数k∈[1,n-1];

A4:计算椭圆曲线点(x1,y1)=[k]G,按GB/TXXXXX.1-XXXX4.2.8给出的方法将x1的数据类型转

换为整数;

A5:计算r=(e+x1)modn,若r=0或r+k=n则返回A3;

-1

A6:计算s=((1+dA)(k-rdA))modn,若s=0则返回A3;

A7:按GB/TXXXXX.1-XXXX4.2.2给出的细节将r、s的数据类型转换为字节串,消息M的签

名为(r,s)。

注:数字签名生成过程的示例参见附录A。

6.2数字签名生成算法流程

数字签名生成算法流程见图1。

3

GB/TXXXXX.2—XXXX

用户A的原始数据

(椭圆曲线系统参数、ZA、M、PA、dA)

第1步:置M=ZA||M

第2步:计算e=Hv(M)

第3步:产生随机数k∈[1,n-1]

第4步:计算椭圆曲线点(x1,y1)=[k]G

第5步:计算r=(e+x1)modn

r=0或r+k=n?

-1

第6步:计算s=((1+dA)(k-rdA))modn

s=0?

否是

第7步:确定数字签名(r,s)

输出消息M及其数字签名(r,s)

图1数字签名生成算法流程

7数字签名的验证算法及流程

7.1数字签名的验证算法

为了检验收到的消息M’及其数字签名(r’,s’),作为验证者的用户B应实现以下运算步骤:

B1:检验r’∈[1,n-1]是否成立,若不成立则验证不通过;

B2:检验s’∈[1,n-1]是否成立,若不成立则验证不通过;

B3:置M’=ZA||M’;

B4:计算e’=Hv(M’),按GB/TXXXXX.1-XXXX4.2.4和4.2.3给出的方法将e’的数据类型转换

4

GB/TXXXXX.2—XXXX

为整数;

B5:按本GB/TXXXXX.1-XXXX4.2.3给出的方法将r’、s’的数据类型转换为整数,计算t=(r’+

s’)modn,若t=0,则验证不通过;

B6:计算椭圆曲线点(x1’,y1’)=[s’]G+[t]PA;

B7:按GB/TXXXXX.1-XXXX4.2.8给出的方法将x1’的数据类型转换为整数,计算R=(e’+x1’)

modn,检验R=r’是否成立,若成立则验证通过;否则验证不通过。

注:如果ZA不是用户A所对应的杂凑值,验证自然通不过。数字签名验证过程的示例参见附录A。

5

GB/TXXXXX.2—XXXX

7.2数字签名验证算法流程

数字签名验证算法流程见图2。

用户B的原始数据

(椭圆曲线系统参数、ZA、PA、M’、(r’,s’))

第1步:检验r’∈[1,n-1]是否成立

r’∈[1,n-1]?

第2步:检验s’∈[1,n-1]是否成立

s’∈[1,n-1]?

第3步:置M’=ZA||M’

第4步:计算e’=Hv(M’)

第5:计算t=(r’+s’)modn

t=0?否

第6步:计算椭圆曲线点

(x1’,y1’)=[s’]G+[t]PA

第7步:计算R=(e’+x1’)modn

R=r’?

验证通过验证不通过

图2数字签名验证算法流程

6

GB/TXXXXX.2—XXXX

附录A

(资料性附录)

数字签名与验证示例

A.1综述

本附录选用GB/TAAAAA-AAAA《信息安全技术SM3密码杂凑算法》给出的密码杂凑算法,其

64

输入是长度小于2的消息比特串,输出是长度为256比特的杂凑值,记为H256()。

本附录中,所有用16进制表示的数,左边为高位,右边为低位。

本附录中,消息采用GB/T1988给出的编码。

设用户A的身份是:ALICE123@YAHOO.COM。用GB/T1988给出的编码IDA:414C49434531

3233405941484F4F2E434F4D。ENTLA=0090。

A.2Fp上的椭圆曲线数字签名

椭圆曲线方程为:y2=x3+ax+b

示例1:Fp-256

素数p:8542D69E4C044F18E8B92435BF6FF7DE457283915C45517D722EDB8B08F1DFC3

系数a:787968B4FA32C3FD2417842E73BBFEFF2F3C848B6831D7E0EC65228B3937E498

系数b:63E4C6D3B23B0C849CF84241484BFE48F61D59A5B16BA06E6E12D1DA27C5249A

基点G=(xG,yG),其阶记为n。

坐标xG:421DEBD61B62EAB6746434EBC3CC315E32220B3BADD50BDC4C4E6C147FEDD43D

坐标yG:0680512BCBB42C07D47349D2153B70C4E5D7FDFCBFA36EA1A85841B9E46E09A2

阶n:8542D69E4C044F18E8B92435BF6FF7DD297720630485628D5AE74EE7C32E79B7

待签名的消息M:messagedigest

私钥dA:128B2FA8BD433C6C068C8D803DFF79792A519A55171B1B650C23661D15897263

公钥PA=(xA,yA):

坐标xA:0AE4C7798AA0F119471BEE11825BE46202BB79E2A5844495E97C04FF4DF2548A

坐标yA:7C0240F88F1CD4E16352A73C17B7F16F07353E53A176D684A9FE0C6BB798E857

杂凑值ZA=H256(ENTLA||IDA||a||b||xG||yG||xA||yA)。

ZA:F4A38489E32B45B6F876E3AC2168CA392362DC8F23459C1D1146FC3DBFB7BC9A

签名各步骤中的有关值:

M=ZA||M:

F4A38489E32B45B6F876E3AC2168CA392362DC8F23459C1D1146FC3DBFB7BC9A

6D65737361676520646967657374

密码杂凑函数值e=H256(M):B524F552CD82B8B028476E005C377FB19A87E6FC682D48BB

5D42E3D9B9EFFE76

产生随机数k:6CB28D99385C175C94F94E934817663FC176D925DD72B727260DBAAE1FB2F96F

计算椭圆曲线点(x1,y1)=[k]G:

坐标x1:110FCDA57615705D5E7B9324AC4B856D23E6D9188B2AE47759514657CE25D112

坐标y1:1C65D68A4A08601DF24B431E0CAB4EBE084772B3817E85811A8510B2DF7ECA1A

7

GB/TXXXXX.2—XXXX

计算r=(e+x1)modn:40F1EC59F793D9F49E09DCEF49130D4194F79FB1EED2CAA5

5BACDB49C4E755D1

-1

(1+dA):79BFCF3052C80DA7B939E0C6914A18CBB2D96D8555256E83122743A7D4F5F956

-1

计算s=((1+dA)(k-rdA))modn:6FC6DAC32C5D5CF10C77DFB20F7C2EB667A45787

2FB09EC56327A67EC7DEEBE7

消息M的签名为(r,s):

值r:40F1EC59F793D9F49E09DCEF49130D4194F79FB1EED2CAA55BACDB49C4E755D1

值s:6FC6DAC32C5D5CF10C77DFB20F7C2EB667A457872FB09EC56327A67EC7DEEBE7

验证各步骤中的有关值:

密码杂凑算法值e’=H256(M’):B524F552CD82B8B028476E005C377FB19A87E6FC682D48BB

5D42E3D9B9EFFE76

计算t=(r’+s’)modn:2B75F07ED7ECE7CCC1C8986B991F441AD324D6D619FE06DD

63ED32E0C997C801

计算椭圆曲线点(x0’,y0’)=[s’]G:

坐标x0’:7DEACE5FD121BC385A3C6317249F413D28C17291A60DFD83B835A45392D22B0A

坐标y0’:2E49D5E5279E5FA91E71FD8F693A64A3C4A9461115A4FC9D79F34EDC8BDDEBD0

计算椭圆曲线点(x0’0,y0’0)=[t]PA:

坐标x0’0:1657FA75BF2ADCDC3C1F6CF05AB7B45E04D3ACBE8E4085CFA669CB2564F17A9F

坐标y0’0:19F0115F21E16D2F5C3A485F8575A128BBCDDF80296A62F6AC2EB842DD058E50

计算椭圆曲线点(x1’,y1’)=[s’]G+[t]PA:

坐标x1’:110FCDA57615705D5E7B9324AC4B856D23E6D9188B2AE47759514657CE25D112

坐标y1’:1C65D68A4A08601DF24B431E0CAB4EBE084772B3817E85811A8510B2DF7ECA1A

计算R=(e’+x1’)modn:40F1EC59F793D9F49E09DCEF49130D4194F79FB1EED2CAA5

5BACDB49C4E755D1

A.3上的椭圆曲线数字签名

F2m

椭圆曲线方程为:y2+xy=x3+ax2+b

示例2:F2m-257

基域生成多项式:x257+x12+1

系数a:0

系数b:00E78BCD09746C202378A7E72B12BCE00266B9627ECB0B5A25367AD1AD4CC6242B

基点G=(xG,yG),其阶记为n。

坐标xG:00CDB9CA7F1E6B0441F658343F4B10297C0EF9B6491082400A62E7A7485735FADD

坐标yG:013DE74DA65951C4D76DC89220D5F7777A611B1C38BAE260B175951DC8060C2B3E

阶n:7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC972CF7E6B6F900945B3C6A0CF6161D

待签名的消息M:messagedigest

私钥dA:771EF3DBFF5F1CDC32B9C572930476191998B2BF7CB981D7F5B39202645F0931

公钥PA=(xA,yA):

坐标xA:0165961645281A8626607B917F657D7E9382F1EA5CD931F40F6627F357542653B2

坐标yA:01686522130D590FB8DE635D8FCA715CC6BF3D05BEF3F75DA5D543454448166612

杂凑值ZA=H256(ENTLA||IDA||a||b||xG||yG||xA||yA)。

ZA:26352AF82EC19F207BBC6F9474E11E90CE0F7DDACE03B27F801817E897A81FD5

8

GB/TXXXXX.2—XXXX

签名各步骤中的有关值:

M=ZA||M:

26352AF82EC19F207BBC6F9474E11E90CE0F7DDACE03B27F801817E897A81FD5

6D65737361676520646967657374

密码杂凑算法值e=H256(M):AD673CBDA311417129A9EAA5F9AB1AA1633AD47718A84DFD

46C17C6FA0AA3B12

产生随机数k:36CD79FC8E24B7357A8A7B4A46D454C397703D6498158C605399B341ADA186D6

计算椭圆曲线点(x1,y1)=[k]G:

坐标x1:003FD87D6947A15F9425B32EDD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论