首页 购物车 询价
www.GB-GBT.com

[PDF] GB/T 32918.2-2016 - 自动发货. 英文版

标准搜索结果: 'GB/T 32918.2-2016'
标准号码内文价格美元第2步(购买)交付天数标准名称状态
GB/T 32918.2-2016 英文版 145 GB/T 32918.2-2016 3分钟内自动发货[PDF] 信息安全技术 SM2椭圆曲线公钥密码算法 第2部分:数字签名算法 有效

基本信息
标准编号 GB/T 32918.2-2016 (GB/T32918.2-2016)
中文名称 信息安全技术 SM2椭圆曲线公钥密码算法 第2部分:数字签名算法
英文名称 Information security technology -- Public key cryptographic algorithm SM2 based on elliptic curves -- Part 2: Digital signature algorithm
行业 国家标准 (推荐)
中标分类 L80
字数估计 14,142
发布日期 2016-08-29
实施日期 2017-03-01
标准依据 National Standard Announcement 2016 No.14
发布机构 中华人民共和国国家质量监督检验检疫总局、中国国家标准化管理委员会

GB/T 32918.2-2016 Information security technology--Public key cryptographic algorithm SM2 based on elliptic curves--Part 2: Digital signature algorithm ICS 35.040 L80 中华人民共和国国家标准 信息安全技术 SM2椭圆曲线公钥 密码算法 第2部分:数字签名算法 2016-08-29发布 2017-03-01实施 中华人民共和国国家质量监督检验检疫总局 中国国家标准化管理委员会发布 目次 前言 Ⅰ 引言 Ⅱ 1 范围 1 2 规范性引用文件 1 3 术语和定义 1 4 符号和缩略语 1 5 数字签名算法 2 5.1 综述 2 5.2 椭圆曲线系统参数 2 5.3 用户密钥对 2 5.4 辅助函数 3 5.5 用户其他信息 3 6 数字签名的生成算法及流程 3 6.1 数字签名的生成算法 3 6.2 数字签名生成算法流程 3 7 数字签名的验证算法及流程 4 7.1 数字签名的验证算法 4 7.2 数字签名验证算法流程 5 附录A(资料性附录) 数字签名与验证示例 7 A.1 综述 7 A.2 Fp上的椭圆曲线数字签名 7 A.3 F2m上的椭圆曲线数字签名 8 参考文献 10 前言 GB/T 32918《信息安全技术 SM2椭圆曲线公钥密码算法》分为5个部分: ---第1部分:总则; ---第2部分:数字签名算法; ---第3部分:密钥交换协议; ---第4部分:公钥加密算法; ---第5部分:参数定义。 本部分为GB/T 32918的第2部分。 本部分按照GB/T 1.1-2009给出的规则起草。 本部分由国家密码管理局提出。 本部分由全国信息安全标准化技术委员会(SAC/TC260)归口。 本部分起草单位:北京华大信安科技有限公司、中国人民解放军信息工程大学、中国科学院数据与 通信保护研究教育中心。 本部分主要起草人:陈建华、祝跃飞、叶顶峰、胡磊、裴定一、彭国华、张亚娟、张振峰。 引 言 N.Koblitz和V.Miler在1985年各自独立地提出将椭圆曲线应用于公钥密码系统。椭圆曲线公 钥密码所基于的曲线性质如下: ---有限域上椭圆曲线在点加运算下构成有限交换群,且其阶与基域规模相近; ---类似于有限域乘法群中的乘幂运算,椭圆曲线多倍点运算构成一个单向函数。 在多倍点运算中,已知多倍点与基点,求解倍数的问题称为椭圆曲线离散对数问题。对于一般椭圆 曲线的离散对数问题,目前只存在指数级计算复杂度的求解方法。与大数分解问题及有限域上离散对 数问题相比,椭圆曲线离散对数问题的求解难度要大得多。因此,在相同安全程度要求下,椭圆曲线密 码较其他公钥密码所需的密钥规模要小得多。 SM2是国家密码管理局组织制定并提出的椭圆曲线密码算法标准。GB/T 32918的主要目标 如下: ---GB/T 32918.1定义和描述了SM2椭圆曲线密码算法的相关概念及数学基础知识,并概述了 该部分同其他部分的关系。 ---GB/T 32918.2描述了一种基于椭圆曲线的签名算法,即SM2签名算法。 ---GB/T 32918.3描述了一种基于椭圆曲线的密钥交换协议,即SM2密钥交换协议。 ---GB/T 32918.4描述了一种基于椭圆曲线的公钥加密算法,即SM2加密算法,该算法需使用 GB/T 32905-2016定义的SM3密码杂凑算法。 ---GB/T 32918.5给出了SM2算法使用的椭圆曲线参数,以及使用椭圆曲线参数进行SM2运算 的示例结果。 本部分为GB/T 32918的第2部分,描述了基于椭圆曲线的数字签名算法。 信息安全技术 SM2椭圆曲线公钥 密码算法 第2部分:数字签名算法 1 范围 GB/T 32918的本部分规定了SM2椭圆曲线公钥密码算法的数字签名算法,包括数字签名生成算 法和验证算法,并给出了数字签名与验证示例及其相应的流程。 本部分适用于商用密码应用中的数字签名和验证,可满足多种密码应用中的身份鉴别和数据完整 性、真实性的安全需求。 2 规范性引用文件 下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文 件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。 GB/T 32918.1-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第1部分:总则 GB/T 32905-2016 信息安全技术 SM3密码杂凑算法 3 术语和定义 下列术语和定义适用于本文件。 3.1 消息 message 任意有限长度的比特串。 3.2 签名消息 signedmessage 由消息以及该消息的签名部分所组成的一组数据项。 3.3 签名密钥 signaturekey 在数字签名生成过程中由签名者专用的秘密数据项,即签名者的私钥。 3.4 输入消息、签名密钥和椭圆曲线系统参数,并输出数字签名的过程。 3.5 可以无歧义辨别某一实体身份的信息。 4 符号和缩略语 下列符号和缩略语适用于本文件。 A,B 使用公钥密码系统的两个用户。 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中元素的数目。 a,b Fq中的元素,它们定义Fq上的一条椭圆曲线E。 x‖y x与y的拼接,其中x、y可以是比特串或字节串。 ZA 关于用户A的可辨别标识、部分椭圆曲线系统参数和用户A公钥的杂凑值。 (r,s) 发送的签名。 (r',s') 收到的签名。 [k]P 椭圆曲线上点P 的k倍点,即,[k]P=P+P++P 􀮩 􀮫􀮪􀪁􀪁􀪁 􀪁􀪁􀪁 k个 ,k是正整数。 [x,y] 大于或等于x且小于或等于y的整数的集合。 5 数字签名算法 5.1 综述 数字签名算法由一个签名者对数据产生数字签名,并由一个验证者验证签名的可靠性。每个签名 者有一个公钥和一个私钥,其中私钥用于产生签名,验证者用签名者的公钥验证签名。在签名的生成过 程之前,要用密码杂凑算法对M(包含ZA和待签消息M)进行压缩;在验证过程之前,要用密码杂凑算 法对M'(包含ZA和待验证消息M')进行压缩。 5.2 椭圆曲线系统参数 椭圆曲线系统参数包括有限域Fq的规模q(当q=2m时,还包括元素表示法的标识和约化多项式); 定义椭圆曲线E(Fq)的方程的两个元素a、b ÎFq;E(Fq)上的基点G=(xG,yG)(G≠O),其中xG和 yG是Fq中的两个元素;G 的阶n及其他可选项(如n的余因子h等)。 椭圆曲线系统参数及其验证应符合GB/T 32918.1-2016第5章的规定。 5.3 用户密钥对 用户A的密钥对包括其私钥dA和公钥PA=[dA]G=(xA,yA)。 用户密钥对的生成算法与公钥验证算法应符合GB/T 32918.1-2016第6章的规定。 5.4 辅助函数 5.4.1 概述 在本部分规定的椭圆曲线数字签名算法中,涉及两类辅助函数:密码杂凑算法与随机数发生器。 5.4.2 密码杂凑算法 本部分规定使用国家密码管理局批准的密码杂凑算法,如SM3密码杂凑算法。 5.4.3 随机数发生器 本部分规定使用国家密码管理局批准的随机数发生器。 5.5 用户其他信息 作为签名者的用户A具有长度为entlenA比特的可辨别标识IDA,记ENTLA是由整数entlenA转 换而成的两个字节,在本部分规定的椭圆曲线数字签名算法中,签名者和验证者都需要用密码杂凑算法 求得用户A的杂凑值ZA。按GB/T 32918.1-2016中4.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/T 32918.1-2016中4.2.4和4.2.3给出的方法将e的数据类型转换 为整数; A3:用随机数发生器产生随机数k∈[1,n-1]; A4:计算椭圆曲线点(x1,y1)=[k]G,按GB/T 32918.1-2016中4.2.8给出的方法将x1的数据类 型转换为整数; A5:计算r= (e+x1)modn,若r=0或r+k =n则返回A3; A6:计算s= ((1+dA)-1· (k-r·dA))modn,若s=0则返回A3; A7:按GB/T 32918.1-2016中4.2.2给出的细节将r、s的数据类型转换为字节串,消息M 的签名 为(r,s)。 注:数字签名生成过程的示例参见附录A。 6.2 数字签名生成算法流程 数字签名生成算法流程见图1。 图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/T 32918.1-2016中4.2.4和4.2.3给出的方法将e'的数据类型转换 为整数; B5:按GB/T 32918.1-2016中4.2.3给出的方法将r'、s'的数据类型转换为整数,计算t=(r'+s') modn,若t=0,则验证不通过; B6:计算椭圆曲线点(x'1,y'1)=[s']G+[t]PA; B7:按GB/T 32918.1-2016中4.2.8给出的方法将x1'的数据类型转换为整数,计算R=(e'+x1') modn,检验R=r'是否成立,若成立则验证通过;否则验证不通过。 注:如果ZA不是用户A所对应的杂凑值,验证自然通不过。数字签名验证过程的示例参见附录A。 7.2 数字签名验证算法流程 数字签名验证算法流程见图2。 图2 数字签名验证算法流程 附 录 A (资料性附录) 数字签名与验证示例 A.1 综述 本附录选用GB/T 32905-2016给出的密码杂凑算法,其输入是长度小于264的消息比特串,输出 是长度为256比特的杂凑值,记为H256()。 本附录中,所有用16进制表示的数,左边为高位,右边为低位。 本附录中,消息采用GB/T 1988给出的编码。 设用户 A 的身份是:ALICE123@YAHOO.COM。用 GB/T 1988给出的编码IDA:414C 49434531 32334059 41484F4F 2E434F4D。ENTLA=0090。 A.2 Fp上的椭圆曲线数字签名 椭圆曲线方程为:y2=x3+ax+b 示例1:Fp-256 素数p:8542D69E 4C044F18 E8B92435 BF6FF7DE 45728391 5C45517D 722EDB8B 08F1DFC3 系数a:787968B4 FA32C3FD 2417842E 73BBFEFF 2F3C848B 6831D7E0 EC65228B 3937E498 系数b:63E4C6D3 B23B0C84 9CF84241 484BFE48 F61D59A5 B16BA06E 6E12D1DA 27C5249A 基点G=(xG,yG),其阶记为n。 坐标xG:421DEBD6 1B62EAB6 746434EB C3CC315E 32220B3B ADD50BDC 4C4E6C14 7FEDD43D 坐标yG:0680512B CBB42C07 D47349D2 153B70C4 E5D7FDFC BFA36EA1 A85841B9 E46E09A2 阶n: 8542D69E 4C044F18 E8B92435 BF6FF7DD 29772063 0485628D 5AE74EE7 C32E79B7 待签名的消息M:messagedigest 私钥dA:128B2FA8 BD433C6C 068C8D80 3DFF7979 2A519A55 171B1B65 0C23661D 15897263 公钥PA=(xA,yA): 坐标xA:0AE4C779 8AA0F119 471BEE11 825BE462 02BB79E2 A5844495 E97C04FF 4DF2548A 坐标yA:7C0240F8 8F1CD4E1 6352A73C 17B7F16F 07353E53 A176D684 A9FE0C6B B798E857 杂凑值ZA=H256(ENTLA‖IDA‖a‖b‖xG‖yG‖xA‖yA)。 ZA:F4A38489 E32B45B6 F876E3AC 2168CA39 2362DC8F 23459C1D 1146FC3D BFB7BC9A 签名各步骤中的有关值: M=ZA‖M: F4A38489 E32B45B6 F876E3AC 2168CA39 2362DC8F 23459C1D 1146FC3D BFB7BC9A 6D657373 61676520 64696765 7374 密码杂凑函数值e=H256(M): B524F552 CD82B8B0 28476E00 5C377FB1 9A87E6FC 682D48BB 5D42E3D9 B9EFFE76 产生随机数k:6CB28D99 385C175C 94F94E93 4817663F C176D925 DD72B727 260DBAAE 1FB2F96F 计算椭圆曲线点(x1,y1)=[k]G: 坐标x1:110FCDA5 7615705D 5E7B9324 AC4B856D 23E6D918 8B2AE477 59514657 CE25D112 坐标y1:1C65D68A 4A08601D F24B431E 0CAB4EBE 084772B3 817E8581 1A8510B2 DF7ECA1A 计算r=(e+x1)modn:40F1EC59 F793D9F4 9E09DCEF 49130D41 94F79FB1 EED2CAA5 5BACDB49 C4E755D1 (1+dA)-1:79BFCF30 52C80DA7 B939E0C6 914A18CB B2D96D85 55256E83 122743A7 D4F5F956 计算s=((1+dA)-1·(k-r·dA))modn:6FC6DAC3 2C5D5CF1 0C77DFB2 0F7C2EB6 67A45787 2FB09EC5 6327A67E C7DEEBE7 消息M 的签名为(r,s): 值r:40F1EC59 F793D9F4 9E09DCEF 49130D41 94F79FB1 EED2CAA5 5BACDB49 C4E755D1 值s:6FC6DAC3 2C5D5CF1 0C77DFB2 0F7C2EB6 67A45787 2FB09EC5 6327A67E C7DEEBE7 验证各步骤中的有关值: 密码杂凑算法值e'=H256(M'):B524F552 CD82B8B0 28476E00 5C377FB1 9A87E6FC 682D48BB 5D42E3D9 B9EFFE76 计算t=(r'+s')modn:2B75F07E D7ECE7CC C1C8986B 991F441A D324D6D6 19FE06DD 63ED32E0 C997C801 计算椭圆曲线点(x'0,y'0)=[s']G: 坐标x'0:7DEACE5F D121BC38 5A3C6317 249F413D 28C17291 A60DFD83 B835A453 92D22B0A 坐标y'0:2E49D5E5 279E5FA9 1E71FD8F 693A64A3 C4A94611 15A4FC9D 79F34EDC 8BDDEBD0 计算椭圆曲线点(x'00,y'00)=[t]PA: 坐标x'00:1657FA75 BF2ADCDC 3C1F6CF0 5AB7B45E 04D3ACBE 8E4085CF A669CB25 64F17A9F 坐标y'00:19F0115F 21E16D2F 5C3A485F 8575A128 BBCDDF80 296A62F6 AC2EB842 DD058E50 计算椭圆曲线点(x'1,y'1)=[s']G+[t]PA: 坐标x'1:110FCDA5 7615705D 5E7B9324 AC4B856D 23E6D918 8B2AE477 59514657 CE25D112 坐标y'1:1C65D68A 4A08601D F24B431E 0CAB4EBE 084772B3 817E8581 1A8510B2 DF7ECA1A 计算R=(e'+x'1)modn:40F1EC59 F793D9F4 9E09DCEF 49130D41 94F79FB1 EED2CAA5 5BACDB49 C4E755D1 A.3 F2m上的椭圆曲线数字签名 椭圆曲线方程为:y2+xy=x3+ax2+b 示例2:F2m-257 基域生成多项式:x257+x12+1 系数a:0 系数b:00 E78BCD09 746C2023 78A7E72B 12BCE002 66B9627E CB0B5A25 367AD1AD 4CC6242B 基点G=(xG,yG),其阶记为n。 坐标xG:00 CDB9CA7F 1E6B0441 F658343F 4B10297C 0EF9B649 1082400A 62E7A748 5735FADD 坐标yG:01 3DE74DA6 5951C4D7 6DC89220 D5F7777A 611B1C38 BAE260B1 75951DC8 060C2B3E 阶n:7FFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF BC972CF7 E6B6F900 945B3C6A 0CF6161D 待签名的消息M:messagedigest 私钥dA:771EF3DB FF5F1CDC 32B9C572 93047619 1998B2BF 7CB981D7 F5B39202 645F0931 公钥PA=(xA,yA): 坐标xA:01 65961645 281A8626 607B917F 657D7E93 82F1EA5C D931F40F 6627F357 542653B2 坐标yA:01 68652213 0D590FB8 DE635D8F CA715CC6 BF3D05BE F3F75DA5 D5434544 48166612 杂凑值ZA=H256(ENTLA‖IDA‖a‖b‖xG‖yG‖xA‖yA)。 ZA:26352AF8 2EC19F20 7BBC6F94 74E11E90 CE0F7DDA CE03B27F 801817E8 97A81FD5 签名各步骤中的有关值: M=ZA‖M: 26352AF8 2EC19F20 7BBC6F94 74E11E90 CE0F7DDA CE03B27F 801817E8 97A81FD5 6D657373 61676520 64696765 7374 密码杂凑算法值e=H256(M):AD673CBD A3114171 29A9EAA5 F9AB1AA1 633AD477 18A84DFD 46C17C6F A0AA3B12 产生随机数k:36CD79FC 8E24B735 7A8A7B4A 46D454C3 97703D64 98158C60 5399B341 ADA186D6 计算椭圆曲线点(x1,y1)=[k]G: 坐标x1:00 3FD87D69 47A15F94 25B32EDD 39381ADF D5E71CD4 BB357E3C 6A6E0397 EEA7CD66 坐标y1:00 80771114 6D73951E 9EB373A6 58214054 B7B56D1D 50B4CD6E B32ED387 A65AA6A2 计算r=(e+x1)modn:6D3FBA26 EAB2A105 4F5D1983 32E33581 7C8AC453 ED26D339 1CD4439D 825BF25B (1+dA)-1:73AF2954 F951A9DF F5B4C8F7 119DAA1C 230C9BAD E60568D0 5BC3F432 1E1F4260 计算s=((1+dA)-1·(k-r·dA))modn:3124C568 8D95F0A1 0252A9BE D033BEC8 4439DA38 4621B6D6 FAD77F94 B74A9556 消息M 的签名为(r,s): 值r:6D3FBA26 EAB2A105 4F5D1983 32E33581 7C8AC453 ED26D339 1CD4439D 825B......