GM-T0010-2023 SM2密码算法加密签名消息语法规范.docx
ICS35.030CCS1.80中华人民共和国密码行业标准GM/T00102023代GMT00102012SM2密码算法加密签名消息语法规范SM2cryptographymessagesyntaxspecification2023-12-04发布2024-06-01实施国家密码管理局发布目次前言IIII范围I2规范性引用文件13术语和定义14缩略语I5O1.D定义I6基本类型定义26.1 Certifica1.eRevocation1.ists26.2 ContcntEncr)ptio11AIgorithmIdcntificr26.3 DigesiAIgorithmIden1.iIier26.4 DtgcstEncryptionAIgorithmIdcntificr26.5 Certificate26.6 IssucrAndScriaINumbcr26.7 KcyEncryptionA1.gorithmIdcniificr36.8 Veision36.9 Contcnt1.nfo37数据类型Da1.a38锭名数据类型SignedData38.1 SignedDau类型38.2 Signcr1.n1.b类型49数字信封数据类型CnvcIopcdDaJa59.1 enve1.opedDa<a类里59.2 RXipientInfo类型510签名及数字信封数据类型SigncdAndEnvckipcdData611 力I1.密数据类型CncryptcdData712 密钥协商类型keyAgNemenUnfb7附录A(资料性)示例8附录B(规范性)SM2隐式证书的加密签名消息谱法20附录C(规范性)SM2密知格式24本文件按照GBJT1.12020标求化工作导则第1部分:标准化文件的结构和起草规则的规定起草.本文件代替GwTOO1.O2012CSM2海玛屈法加密笈名消息治法规范3.,jGM.T0010-2012相比,除结构调整和编钳性改动外,主要技术变化如下:a)增加了规范性引用文件GBJT25069.GM1T0015和GNUZ4001(见第3章,6.5),州除了PKCS*6的引用(见2012年版的6.5);b)删除了术语“算法标识”和“SM2密码知法”(见2012年版的3.1和3.2),增加了术语“了式证书”(J&3.1);c)增加了做式证书相关的3个OID(见第5章):d)州舱了对汇展证书类型的描述(见2012年版的6.5);e)更改了“coment1.nfoSM2Signaure''(见第8章,2012年版的井8章):f)更改UsciCcrtiticate(见第12章.2012年版的第12章);g)增加了规范性的阴求B(见附录B。请注意本文件的某些内容可能涉及专利.本文件的发布机构不承担识别专利的责任.本文件由密码行业标准化技术委员会提出并归口.本文件起草单位:格尔软件股份有限公司、北京湖泰方国科技有限公司、北京数字认证股份有限公司,广东省电子商务认证有限公司、无镯江南信息安全工程技术中心、中电科网络安全科技股份有限公司、北京信安世纪科技股份有限公司、北京国脉信安科技有限公司、上海市数字证的认证中心有限公司、兴唐岫佰科技有限公司、山东得安信息技术行限公司、山东大学、深圳奥联信息安全技术有限公司、智巡密码(上海)检测技术有限公司、卜.海顾东网络信息什限公司、国家信息安全工程技术研究中心.本文件主要起草人:刘平、郑强、源武征、忖闻言、李述胜.赵永时、赵政、梁宇宁、汪宗斌、Jft洋、孔凡玉、程小薜、韩玮、马洪富、蒋红字、Eim.刘伟,徐强、李元正、刘承,更东山.本文件及其所代替文件的历次版木发布情况为:-2012年首次发布为GMrr00102012;一一木次为第一次修订.SM2密码算法加密签名消息语法规范1范围本文件规定r使用SM2密码克法的加密笑2消息诺法。本文件适用于使用SM2密码第法进行加密:和务名操作时对操作结果的标准化封装,2册范性引用文件卜列文件中的内容通过文中的规范性引用而构成本文件必不可少的条软.其中,注口期的引用文件,仅该H期对应的版本适用于本文件:不注FI剧的引用文件,其最新版本(包括所行的修改单)适用于本文件。GB25069侑息安全技术术语GMJTOOO6密码向用标识规范GMrr0009SM2密码算法使用规苑GMT0015数字证书格式GM-Z4001密码术谱3相M定义GB1T25069和GMTZ4001界定的术语和定义适用于本文件。3.1B30E4imp1.icit,rtificate包含用户标识.公用还像数据和维发存标识信息但不显式包含证书认证机构(CA)的数字签片的数字证书.&用户关联的实际公用由桶回曲线系统参数、CA的公孤瞪式证竹中相关的用户信息和公钥还原数据计力得出,4下列缩略语适用于本文件.CA:证书认证机构(Ce1.IifiCatiOnAuthority)O1.D:对弦标识符(ObjectIdentity)5 OI)X本文件对9个对象datasi即CdData.Cnvc1.opcdDatasigncdAndEnvcIOPCdDcryp<cdData.keyAgreenient1.nfoJnKSignedDatajincEnveIopedDaia和inSignedAn1.Enve1.opedDaia的标识符进行/定义.年见表1。肺箪标识得OID对般标N籽定义1.2.1S6.10197.6.1.4.2SM2密码尊法加京琴名游Z语法规范1.2.156.10197.6.1.4.2.1数JK类型1.2.)56.10197.a1.4.2.2签名数据类型1.2.156.101d7.6.1.4.2.3数字倍月数幅荚里1.2.156.10197.6.1,4,2,4笠名及数字信豺数需类IS1.2.156.10197.6.1.4.2.5加)密数据类型1.2.156.10197.6.1.4.2.6密例外商类笈1.2,J56.10197.6.1.4.2.7心式证书线名数据类型1.2.156.10197.6.1.4.2.8IaKif书数字信封数据类型1.2.156.10197.6.1.4.2.9隐式江InSg及数字僧时数幅类型6K本类83义6.1 CvrtincatcRcvocation1.tstsCertifkaieRevocation1.isis类型标明一个证书撤列C的集ft。CcrtiikatcRcvocation1.ists:尸SETO1.*CcrtjikatcRcvocation1.ist6.2 Co>tentEncryptionorithm!denti11erContcntEncryptionA1.goriihni1.dcntificr类型标明,个数据加密算法.M-OID应符OGMjT()(X)6.ConientEncrypiionAIgofiihmIdentiGerAIgOri1.hmI加INifier6.3 1.)igest1.gori1.hm1.den(i11<rrDigesiAIgonihmIdentiGer类型标明个消息娴要算法.本文件为SM3南玛鸵法,其O1.D应符合GM仟0006,Diges1.AIgon1.hmId¢n1.ificr:=AIgIMi1.hmIdCfHifIB6.4 DigestEncnptionA1.gorithinIdentifierDigcS1.EMrHIEionA1.gori1.hmIdeMi门er类型标明一个算名算法,木文件为SM2答名算法,其OID应符介GM/T00()6.Diges1.Encryp1.ion1.gori(hfnMen1.ifier:=A1.guri1.hnI1.denIifier6.5 CertifkateCenifiCa1.e类型指定个符合GM/T0015格式的证书.它表示集合足以包含从可识别的“根”或“顶级CA”到所仃找弘者的证书隧.Certificates:=SETOECertificate6.6 IssiicrAndScrhiI'UmberIssucrAndScria1.Numbcr类型标明一个证书领发行可识别名和毯!发齐痛定的证书序列号,可据此确定一份证书和与此证书对应的实体及公钥。IssuerzXndSeriaINumtKjr:=SEQUENCE|issuerName.ScriaINumbcrCcrtificaicScria1.Numhcr6.7 KcyEncryptionzKIgonthmIdcntificrKcyEnciyPtionAIgoriihmIdennfier类型标明加密对钥的加麻Vf法KcyEncryptionAIgorithmIdcnhficr:=A1.gorithmIdcntifkr6.8 Vcrsk>nVerSi的类型标明语法版本号.Version:=1NTEGER(1)6.9 ContvntInfoContcnt1.nfo类型标明内容交换通用语法结构,内容交换的通用语法结构定义如下,ConkntInfb:=SEQUENCE1.ConientTypcContcntTypc.conten0EXPMCITANYDEFINEDBYContentTypeOPTIONAi.¾ContcntTypc:=OHJECrIDENT1.1.qER其中:Contcn1.Type内容类型是一个对象标识符,其定义见第5章。xtcn内容,可选。7依奥我Data数据类型DaIa结构定义如下rDataZ=OCTCTSTRING数据类型DakI衣示任意的字节中.8 S45*Htf1.SignedData8.1 SignedData奥StSignedDaut数据类型由任意类型的数据和至少个键名者的器名侦组成。任意类型的数据能同时被任意数M的笠名者签名,签名数据类M示例见附录A中的A.I,限式证书的签名数据类型应符合附录B中的B.I.SignaJDaUt数据类结构定义如下:SignedData:=SEQUENCE(versionVersion,digestAJgOridMnSDigestAIgoriihmIdentifiers,Conient1.nfoContendnfo.certi1.<esOIMP1.IC1.TCertificatesOPTIONA1.Cr1.sI1.HMP1.1.CrrCertificateRevocaiion1.isisOPTIONA1.,SigncrInfbsSignCrInRKDigesiAIgOfiihmIdentiGers:-SETOFDigesiA1.gorithmIdeinifierSignerInft>$:=SETOFSignerInfo结构中各项含义见表2*2signedData字段名称数JK类型含义versionVersion取水号,½t(n1.igcxtgorithnsDigcstA1.orith111.d<*ntifiors;消息纲要理法标识衿的臬介Conunt1.nfoContentInfo数需内容certificntcsOrtificaies还书的靠合cr1.sCcrtificatcRcvocation1.ists证15撤Ifi列表的象台Sign1.nfasSigner1.nfos签名并信息的集合8.2 signer1.nf<>9tf1.signerinfo类型结构定义如下,Signer1.nfo:=SEQUENCEversionVeniioIKissucrAndScria1.Numbcr!SsucrAndScriaINumber.digcsA1.gori(hmDigcstAIgorithmIdcntificr.au1.hcniki1.eduribu1.esOIMP1.IC1.TAUribUgOPTIONA1.digcs1.Eryp<ionA1.gori1.hmDigestEr>,p<i(MiA1.gon(hm1.(kn(ificr.CneryptedDiges1.EncnpcedDiges1.,UnautbenticatedAnributesIIIMPI.ICITAnribuiesOPTIONA1.EncnptcdDigcst:=OCTETSTRING结构中各项含义见表3。*3Signtr1.nfo字段名称数搦类型含义VersionVerxion版本号,此处双效为】iSsuerAndSeria1陶(IKrISsuerAndSeria1Niaber一个证竹粒发名可识别和颁发拧现定的注书序列号,可据此碇定一份证书和与此证书对应的实体及公8digestA1.xsorii1.uiDigest1.¢ori1.uidenifi<r对内容进行拽«itt的消息总娈立法,本文件采用SM3?码算法authenticatedAttributesUtributes是经由签名者签名的帐性的集合.该域可选.如果该域存在,该域中摘要的计#方法是时加文避行摘要计尊结果dirthrryptim<>rithtDigcxtEncrTptimMgnrithn1.<icntifirjSH2ft由曲纹数字答名算法标识符CncryptedDieest)C11TSPRING值JSM2Signzurg,用线冬衣私阴进行线名的结娱其定义应迦循GMjT00099 数字倍/MWff1.knvegpcdData9.1 cnvc1.opcd1.)a(a类R数字信封OBdORdDd1.a数据类型由加密数据和至少一个接收者的数据加密密钥的密文组成。其中,加密数据是用数据加格密钥加率的,数据加密密钥是用接收者的公钥加密的。数字信封数据类型示例见A.2,总式证书数字信封数据类里应符合B.2。该类型用于为接收者的daia、digcstc<1.DatapXSiKnCdDm,三种类型的数据做数字信封。CnvcIopcdData数据类型结构定义如下:Enve1.opedDaui-=SEQUENCEversionVersion,rccip沁nIM60Rccipicnt1.nfostencryp<edCnientInfoEncryp1.edContcn1.InfoRecipiendnfbs:=SETOFRecipientInfo站构中各项含义见表14Enve1.opedDataftUftjK/段名就数貂类F含义versionVorxian版本号,此处取位为IrocipictInfoxRccipient1.nfos接收才俏恩的典介.至少要力一个接收希CncryptcdContentInfoEncryptcdCont<ntInfo被加密的内容Encryp1.edCon1.en1.1.nfb:=SEQUENCECon1.en1.TypeCon1.en1.Typc.ContentEncnp1.nmAIgori1.hniConten1.Encryp(ionA1.gorihm!dentifier.encfyp(e<IConte1101.MP1.ICiTEncryptedContentOPTIONA1.*Sharcd1.nfb1.1.1.!IMP1.ICITOeTETSTRINGOPTIONA1.shad1.nfo22)IMP1.iCOCTETSTRINGOPTIONA1.)EncryptcciConicni:二OeTETSTRING结构中各项含义见表5.充SEnCryPtEdContentInfoJk类S1.字段名例枚幅臭型含义CanETn»。ContentIype内容的类型ContentEncrjptiixiAUorittinContenIEocryptionA1gorith111.d<*ntifier内部加密原法(和相应的参数)CncryptcdContnntEncryptc<iContcnt内容1«时的结亲,可选!Chnred1.nfo1.OC1.ETSTRING例育好的共享信息,可遗sharedInf02OCTETSTRIMG出有好的共享伯忠可遥9.2 recipientinfo类型接收者信息用NCiPien山的类型表示.Ircipien1.Info类型结构定义如下:Rccipicni1.nfo:=SEQUENCEversionVersion.iss>erAndSeria1.NumberIsxuerAndSeriaINunibcr.keyEncryHionAIgorihmKcyEncrjptionA1.gorithmkicntificr,cncryp<cdKcyOC1KSIK1.NG结构中各项含义见表6痴RedpientInMMI1.BSI字段名称数据类奥含义versionVersion版本弓.此处取值为】iSxurrAndSrri;i1KU1.1.bCrIxsDcrAndScrinIXunhrr领发音可辨别名和破发序列号kryHncryptio11A1.g<>ritbnKcyErxrryptio11!ithn!dmtifirr川接收H公钊加密故寨加密索"J的嫌法.为SX21.ffiW曲线加密比法段SM2RS式证H公的加盥机制OncryptedKeyOCTETSKI5Xi数据加杀密钊密文SM2cipher,其定义底强微CmT0009IO筌及酷封幡StgnedAndEnvdopedDataSignCdAndEnVdOPCdDwI数据类型由任意类型的加密数据、至少一个接收者的数据加繇密钥和至少一个签名者的签名组成.陷式证书签名及数字信封数据类型应符合B.3.SigncdADdEnvcIopcdData数据类型结构定义如下:SigiKdAndEnveIopedDaia:=SEQUENCE(versionVersion.Fccipicnt1.nfbsRecipicm1.ntbs.C1.igcstAIgorithmsDigcstAIgorithmIdentificnsencryPiedContein1.nfbEiKryptedCoinentInfb,Certificatesioi1.MP1.ICITCcrtifica1.esOPTIONA1.Cr1.s1.1.1.iMP1.1.CITCcrtificatcRcvocation1.is1.sOF!ONA1.SignerInIosSigiwr1.nfbs)结构中各项含义见式九赛7SigncdzKndEnvcIupcdData字段名称iiiK¾S含义versionVersion版本”.虻处取值为IrecIpieniInfoeRecipftentInfod接受并价息的集合.至少一个元素d1.cesA1.fioritfDieeetA1.ioriIha1.dentifiere消Z摘要快法标识符的集合ncryptedCtentJnfoEncryptedCotitentInfo帔加密外内容.可是任阿定义的UK类型ccrtificntc*Certificates诋书或心火证书的型合.OIitcr1.sCcrtifictcRc'v<X:ntion1.ixts证书报的列赛的集合Sitcner1.nfoeSignerInfos卷名并的典合.至少要有个元卷11 加宙奥ShnCrMMedDataCnCryPtCdDa1.a数据类里由任意类中的加密后的数据组成.数IK类型既没仃接收不也没右加密的数据加密密切。加密数据类里示例见A3.CnCryPtCdDaIa数据类型定义加下:EncrypteiIData:=SEQUENCE1.versionVersion.CncryptcdContcntInfoEiKryptcdContcntInfo)结构中各项含义见表8.*8CncryPkdDHtHMRUS字段名称数如类型含义versionVersion版本号,此处取值为IenerypiedContenJnfcEiKrrTptedCanten1.Info已加密的内部信且12 室的悔商类SUeyAgreeaent1.nfo密钥桃商kcyAgnxmenUnfb数据类型标明两个用户之建立一个共享秘密海钥的结构,通过这种方式能确定一个共享秘密密期的值。密期协商类型示例见A.4,该类型用于两个用户为产生共享秘密帝句进行的公共鎏数交换.KcyAgrccnKnt1.nfb:=SEQUENCE|versionVerekin.IempPubIicKeyRSM2P*b1.icKey,UseiCertificateCertifka1.e1OPTIONA1.userIDOCTETSTRING)结构中各项含义见我94t9keA*reement1.nr<>触据类型字段名卷数据类型含义versionVersion版本号北处取值为1tc<pPub1.icKoyRS1.GPubIicKey信时公S1.SM2密切格犬应爱搐附录C,S构定义应遵筛G1.T0006UserCertificateCertificate用户证书,可透gerIDOCTETSndM用户标识附录A(资料性)示例A.I签名数据炎型示例01083:SEQUENCE(4KkOBJECTIDENT1HER,121561OI976I422,161067:0<201063:SEQUENCEI21I:INTEGERI2715:SCT29B:SEQUENCE(319:OBJECTIDENTIFIER2I56IOI9714O1<20:NU1.1.Wio;Sequencei1610:OBJECTIDENTIFIER'121561019761421'SS26:0(6024:OCTETSTRINqcu11wcr1.23412we11p¼1.f)867&i:0W760:SEQUENCE(w66H:SEQUENCE(w3:01001:IN1.bGER212312513513THIJ18:INTEGER21Q57OMoF60324517»FOC10SEQUENCE(8: OBJECTIDENT1FIER,I2I56IOI97I5OO:N1.F1.1.)9:SPQUENCE(11:SCT(9: SEQUENcbE56I9ISR6DBF143H8152)S13:OBJECT2:1.F8SringI13:SF11:SEQUENCEIDENIHFRcountryNamc(2M6)VN,I1563:OBJECTIDENTIFIERorgani7ationNamc(254IO)1614:UTFXStringTcst'16727:SETjW25:SEQUENCE(111.3:OBJECTIDENTIFIERgania1.iona1.Uni1.Nane(25411)17618:U1.TXString,1214(M)004()5703345Q19639:SET1.W37:SEQUENCEI2003:OBJECTIDENTIFIERCom1.nOnName(2543)20530:UTFSS1.riIIg.23723930:SEQUENCE(13:UTC11mc27/03/2019()5:52:45GMGMT13:1.CTimc13/1(0)1905:52:45泗27127327552:SEQUENCE(II:SET9:SEQUENCE(3:OBJECIDENTIFIERCoUnUyNamc(2546)2SO如2X62X&2:UTFSString'CN,10:SETJ8:SEQUENCE(3:OBJECTIDENTIFIERfganizaionNa11)e(254IO)2932,36琬)00i:UTF8String。12:SET10:SEQUENCER3:OBJECTIDENTIFIERorganizationa1.Uni(Namc(2541.1)J053103123143:UTF8S(ring'001'11:SET(9:SEQUENCE(3:OBJECTIDENTIFIERcommonNamc(2543)3192:UTFSS1.ring'12'32389:SEQUENCE32519:SEQUENCER3277.OBJECTIDENTIFIERec1.,ub1.icKey(128401(XM521)3368:OBJECTIDENTIFIER'121.56IOI971.3r546J66:BITSTRING040777FC9242CF154606D37EID3054CDIO6E33F7B43A589FB90C339FCOCEFEIEFA6ACC87539BC9AI3D7COF4363C080D9E35A1I9EA71348A1.D1.A2F286A6FA8CC1.1414348:341844:SEQUENCE422II;SEQUENCE(4243:OBJECTIDENTIFIERkcyUsagc(252915)4294:OCTETSTRINGKncapwIiHes4312:BITSTRING5UnUydbits'11B)435)9:SEQUENCE4373:OBJECTIDENTIFIERbaskConstraints(252919)4422:OcrETSTR1.NGxncapsuIatcs(4440:SEQUENCE()446)19:SEQUENCE(4483:OBJECTIDENTIF1.ERex(KeyUsage(252937)45312:OCTETSTRINC.encapsu1.a(es45510:SEQUENCE(4578:objectIdentirerCodeSigning(136155733)46745:SEQUENCE4X3:OBJECTIDENTIFIERcR1.DistributionPoints(252931)475137:OCTETSTRING.encapsuIa1.es!478:SEQUENCE(4K61:SEQUENCE(4S359:048S57:048755:htp1.27.0.0.i707cr1.,'Ut111stSc<CA.1.UtrustSccC'A,O.cri,I51469:rSEQUENCE!51667:o<61H65:055063:http:/1.27.0.0.:7070.'crt/UtrustSccCAZincUtrust'SccCAJnjOaiT)61529:SEQUENCE(6173:OBJECTIDENTIFIERSubjcctKcyIdcntificr(252914)62222:OCTETSTRING,encapsu1.a(es62420:OCTETSTRING<A26ABD92DBCA9BWBW询)3DgE58E24B6364631:SEQUENCEItm3:objectIdentiherauthorityKeykien(ifier(252935)t三21:OCTETSTR1.NG.scapwMes65522:SEQUENCE6573):0CC672442IAC3F8AD27ACD2F2E5848I1FEQC«FAE679R5:SEQUENCE(tm3:objectIdentiherCer1.ifk陀Po1.iCk$(252932)6防OCTETSTR1.NGxncapsu1.atcs(68876:SEQUENCE(69071:SEQUENCE(W210:OBJECTIDENTIFIER,121561125626411'TM60:SEQUENCE(W58:SEQUENCEIW8:OBJECTIDENTIFIERCPsd36155721)71»46:1.A5String,ht1.p:/127.0.0.1:7070/q)s/UcrusiSecCA/cps.htmr1)I7C12:r)SEQUENCEITM8:OBJECTIDENTIFIER'I2156101971501,m0:NU1.1.砌72:JBITSTR1.NGxncapsu1.atesJ因69:SEQUENCER?8533:INTEGER0087B1DE65I()6E98EA4EED8IB9OC20E87101539DCB7B44939D279A279F4A8F59132:INTEGER74137297B4CC38020652971662B2216B4A81D96E8ADOEAD972FI7C9IOC'52CFK54230:)SETKS7227:SEQUENCE(MOI:INTEGER18M120:SEQUENCE(VM98:SEQUENCE(867II:SET(W)9:SEQUENCE(3:OBJECTIDENTIFIERCOUmryName(2546)X762:UTF8String'CN,WO13:SET(II:SEQUENCE(3OBJECTIDENTIFIEROTganizationNamd25410)4:UTFXStringTest'27:SET断25:SEQUENCE883:OBJECTIDENTIFIEROrganizationa1.UnitNamd254!I>9CM18:UTF8String'12140000405703345Q'92439:)SET(%637:SEQUENCE(92H3:OBJECTIDENTIFIERCommQnName(2543)93330:UTFSString.96518:INTEGER210570340F6D3245178F0C10E56191886DBF)SEQUENCEIW513:%?9:OBJECTIDENTIFIER'1215610197140199«0:NU1.1.100O13:SEQUENCE(!00>9:OBJECTIDENTiHIER,121561019713011,1)I50:NU1.1.1IDI570:JOCrETSTR1.NG.cncapsu1.atcs(101?68:SEQUENCE101932:INTEGER7I1AB6795FE797A8C6668113BC551()78944A7EB90E54EB6DIV51740A87A6A130IW332:INTEGER78445EFB53B6ABD7CD27BA61EBCIF546D61CB9489CoC8FE2ADB7D74E18E553AA.2敷字值封类N示例0317:SEQUENCE410:OBJECTIDENTIFIER'12156101976)423,16301020297:SEQUENCE(241INTEGERI27229:SET(X1.226SEQUENCE(331INTEGER15682SEQUENCE(3X6SSEQUENCEJ40I1.SET(429SEQUENCE(443OBJECTIDENTIFIERCoun1.ryNanxH2546)492Printab1.cStringCN,13SETJ55I1.SEQUENCE573objectIdentiherorganizationNamc(25410)624UTFSStringTe51'M13)SET(70I1.SEQUENCE(723OBJECTIDENTIFIERorgani7ationa1.Uni(Namc(2541.1)7?4UTF8StringT