《GM-T0009-2023 SM2密码算法使用规范.docx》由会员分享,可在线阅读,更多相关《GM-T0009-2023 SM2密码算法使用规范.docx(12页珍藏版)》请在优知文库上搜索。
1、ICS35.030CCS1.80中华人民共和国密码行业标准GM/T00092023代GMT()0092012SM2密码算法使用规范SM2cryptographya1.gorithmapp1.icationspecification2023-12-04发布2024-06-01实施国家密码管理局发布目次向UnI1.1.1苑困I2规范性引用文件I3术语和定义I4缩略语I5SM2密钥对I6数据折换27IMe格式38预处理49fWJiS5W用户身WWIDfiW1.值7本文件按照GBJT1.12020标求化工作导则第1部分:林优化文件的结构和起草观其心的规定起草.本文件代昔GM?TOOo92012SM2密
2、码算法使用双范:KGMT(X)O92012相比,除结构训整和编班性改动外,主要技术变化如下:a)更改了SM2私钥(见5.1,2012年版的5.D;b)更改了SM2公桃(见5.2,2012年版的5.2);O更改了SM2公钥格式(见7.1,2012年版的7.I):d)更改了密钥对保护数据格式(见7.4,2012年版的7.4):c)更改了预处理1(见8.1.2012年版的8.D.请注意木文件的某些内容可能涉及专刑.本文件的发布机构不承担识别C利的诜任,本文件由密码行业标准化技术委员会提出弁白口.本文件起草单位:北京海泰方圆科技股份有限公用、北京佑安世纪科技股份有限公司北京小雷科技有限公司、中电科网络
3、安全科技股份有限公司、北京国味信安科技有限公司、无锡江南信息安全工程技术中心、兴购通信科技有限公司、山东得安信息技术有限公司、格尔软件股份有限公司、山东大学.本文件主要起取人:刘平,蒋红宇、柳指寿、普宇波、袁峰李元正、徐强、谭武征、孔凡玉、土妮娜、汪宗斌、安晓江、罗俊、徐明翼、郑强、马洪富.本文件及其所代替文件的历次版本发布情况为:2012年首次发布为GMfT00092012:本次为第一次修订.SM2密码算法使用规范1范围本文件定义/SM2密:码算法的使用方法,也定义了相关的数据格式.本文件适用于SM2密码算法的使用,也适用于支持SM2密码兑法的设备和系统的研发和检测.2规范慢引用文件下列文件
4、中的内容通过文中的规慈性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件:不注日期的引用文件,其及新版本(包括所有的修改单)适用于本文件。GB/T32905-2016信息安全技术SM3密码杂凑算法GB,T32918.1-2016信息安全技术SM2惭阳曲线公物密研算法第1部分:总则GB.32918.22016信息安全技术SM2椭阳曲线公纲密印,算法第力.;分:数,格算法GB.T32918.3-2016信息安全技术SM2桶网曲殴公钢密码宓法第3部分:宓钥交换称议GB,T32918.4-2016信息安全技术SM2椭网曲线公钥密码鸵法第4部分:共钥加浙算法GBT3
5、2918.52017倍息安全技术SM2椭画曲线公的密码算法第5郃分:参故定义GMT0006密码应用标识现范GMzZ4001名同术语3术语和定义GMZ4001界定的术语和定义适用于本文件.4缩略语下列缩略谱适用于本文件.ECB电码本模式(EkC1.nmiCCodebook)ECC椭IM1.曲城缗码飘法(EI1.iPtiCCurveC11ptRraphy)ID用户身份标双(Identity)5SM2密铜对5.1 SM2私朝SM2私初是大于或等于1且小于n-1的整数(n为SM2尊法的阶,其值见GBjT32918.52017),简记为d.5.2 SM2公钥SM2公的是SM2曲线上的一个点,山横坐标和以
6、坐标两个分地来表示,记为(x.y).简记为Q公钥值由其时应的私钊d与G进行点乘计算得到(G为SM2椭妣曲线的基点,G的取值见GB3291852017).6数据转换6.1位串到8位字节事的转换位邢长度若不是8的整数倍,应先在它的左边补0,以保证它的长度为8的倍数,然后构造8位字节审,转换过程如下:情入:一个长度为的位串B.输出:一个长度为mien的字节申M,其中mien的取值为(b1.en+7N8的整数部分,动作;将位申B=BoBiBbienJ转换到8位字节M=MMiMmIen采用如下方法:从OWjI,设徨.:M=Bbicn-8-X(-1-;Bbcn-7-8(-1.-).Bbcn-1.-8(mk
7、n-1-0.对于M.,故左边8-b1.en%8位设置为0,右边设置为BB,.B?+bcn-8m1.e,其中%示模运算.输出M.6.28位字节串到位串的转换8位字节串到位串转换过程如下:输入:一个长度为mien的8位字节中M.输出:一个长度为b1.en=(8*a1.en)的位串B.动作;将8位字节申M=MoM1.Mm1.en/转换到位/B=BoB1.Bben-I采用如下方法:从OWiWmICnI,设置:Bg;Bgi+I.Bsi+7=M.输出B.63整数到8位字节串的转换一个整数转换为8位字节中,基本方法是将此先使用二进制表达,然后把结果位中再转换为8位字节串。以下是犯换流程:输入:一个非负整数X
8、,期望的8位字节小长度mien.基本限制为:28(px.输出:一个长度为mien的8位字节*M动作:将法于2=256的X伯X=XmIen-128(1.en-D+xm1.e228Gn1.E-2)十+x2+x,转换为一个8位字节中M=MoM1.Mmen-I采用如下方法:0im1.enI.设置:Nk=Xinkn-1.-i.输出M.6 .48位字节串到整数的转换可把8位字节中看成以256为基表示的整数,转换过程如下:输入:一个长度mJen的8位字节中M,输出:一个整数工动作:将一个8位字节即M=MOMIMmIen-I转换为整数X方法如卜:物乂看作0255中的-个整数.则:,M输出X.7 f1.格式8
9、.evm三MSM1.PubIicKey,GMZT0M)92023-SM2私胡需文sm2EncotedPrivaieKeyBITSIRING其中对称密码算法标识为SGD_SMkECB.应符合GMJTOOO6中的规定.81M预处理1是指使用篮名方的用户身份标识和签名方公钥.通过运算得到Z值的过程.Z使用于偿处理2,也用于SM2密钥协商协议。输入:IDQ输出:Z计笄公式为:字节串用户身份标识SM2Pub1.icKcy用户的公物字节串隙处理1的输出Z=SM3(1.Sip1.1.a1.1.b1.xgI1.yg1.1.xA1.1.ya)式中:Z预处理1的输出;1.用户身份标识的长度(比特:Sp一用户身价标
10、识:a一SM2瓢即曲找参数;b一SM2椭圆曲线参数;XG基点的横坐标:yG基点的纵坐标:XA用户公饱的横坐标:y用户公钥的纵坐标.1.1.h其盛数值的二进制形式进行高比特补。至16比特后转换得到.a.b.xg,YG,XA和ya分别由其整数值的二进制形式进行高比特补0至256比特后转换得到.详细的计算过程应符合GB.T32918.22016中5.5和GB.T329052016中第5点的规定。8.292预处掰2是指使用Z值和待签名消息,通过SM3运算得到杂凑IgH的过程。杂凑值H用于SM2数字签名.输入:Z字节由一处埋1的输出M字节中待签名消息输H字节串杂淡值计算公式为:H三SM3(ZM)式中:H
11、杂凄值:Z预处理1的输出:M带签名的消息.详细的计算过程应符合GB“329052016中第5章的规定.9计It过程9.1 生JEJSM2密钢生成是指生成SM2犯法的密阴对的过程,该密钥对包括私钥和与之对应的公钥.我表示方法见71.输入:无输H1.:kSM2PrivaeKeySM2私钥QSM2Pub1.icKcySM2公钮详细的计克过程应符合GB.T32918.12016中第6章的规定.9.2 加宙SM2加密是指使用指定公开密钥对明文进行特定的加密计算.生成相应密文的过程.该密文只能由该指定公开密钢对应的私钥解密。输入:QSMZPuNicKeySM2公旬m字节事待加密的明文数据输出:CSM2Cipher密文大中:输出参数C的格式应符合7.2中定义;怆出参数C的XCoOrdinatc、VCoordinatc为随机产生的公用的X分fit和y分量.:输出参数C中的HASH的计算公式为:HASH=SM3(QxnQ.)其中,Qx、Q,分别为Q的X分垃和y分业的长度为32字节的8位字帝申衣示;粕出参数C中。PherTeX1.为加玄密文,其长度等于明文的长度。详细的计算过程应符合GB.T32918.42016中第6瘠的规定.9.3 部