GB/T 41389-2022 信息安全技术 SM9密码算法使用规范(正式版)_第1页
GB/T 41389-2022 信息安全技术 SM9密码算法使用规范(正式版)_第2页
GB/T 41389-2022 信息安全技术 SM9密码算法使用规范(正式版)_第3页
GB/T 41389-2022 信息安全技术 SM9密码算法使用规范(正式版)_第4页
GB/T 41389-2022 信息安全技术 SM9密码算法使用规范(正式版)_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

ICS35.030GB/T41389—2022信息安全技术SM9密码算法使用规范国家市场监督管理总局国家标准化管理委员会 I 3术语和定义 25SM9的密钥对 25.1生成元 25.2SM9主私钥 25.3SM9主公钥 25.4SM9用户私钥 35.5SM9用户公钥 3 36.1数据格式 36.2预处理 56.3计算过程 77证实方法 7.1数据格式 7.2预处理 7.3计算过程 附录A(规范性)数据格式编码测试用例 IGB/T41389—2022本文件按照GB/T1.1—2020《标准化工作导则第1部分:标准化文件的结构和起草规则》的规定起草。请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。本文件由全国信息安全标准化技术委员会(SAC/TC260)提出并归口。王栋。1GB/T41389—2022信息安全技术SM9密码算法使用规范1范围本文件适用于SM9密码算法的正确和规范使用,以及指导SM9密码算法的设备和系统的研发和检测。2规范性引用文件下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文本文件。GB/T16262.1—2006信息技术抽象语法记法一(ASN.1)第1部分:基本记法规范GB/T17964信息安全技术分组密码算法的工作模式GB/T32905信息安全技术SM3密码杂凑算法GB/T32907信息安全技术SM4分组密码算法GB/T32915信息安全技术二元序列随机性检测方法GB/T35276—2017信息安全技术SM2密码算法使用规范GB/T38635.1—2020信息安全技术SM9标识密码算法第1部分:总则GB/T38635.2—2020信息安全技术SM9标识密码算法第2部分:算法3术语和定义3.13.23.33.4一种基于身份标识的椭圆曲线公钥密码算法。签名主密钥signaturemasterkey密钥管理基础设施的根签名密钥对。密钥管理基础设施的根加密密钥对。用户的签名密钥对。2GB/T41389—2022注:包括用户签名私钥和签名公钥,其中私钥由密钥管理基础设施产生并下发给用户,用于数字签名和验签。3.5用户加密密钥userencryption用户的加密密钥对。4符号和缩略语下列符号和缩略语适用于本文件。IBC:基于标识的密码技术(Identity-BasedCryptography)KGC:密钥生成中心(KeyGenerationCenter)e:从G₁×G2到Gr的双线性对F。:包含q个元素的有限域F,":有限域F,的m次扩域Gr:阶为素数N的乘法循环群G₁、G₂:阶为素数N的加法循环群N:循环群G₁、G₂和Gr的阶P₁:G₁的生成元P₂:G₂的生成元q:有限域F,中元素的数目5SM9的密钥对G₁上的生成元P₁点,由横坐标和纵坐标两个分量来表示,记为(xp₁,yp₁),其中xp₁,yp₁的长度都为256位,其值符合GB/T38635.1—2020中A.1的规定。G₂上的生成元P₂点,由横坐标和纵坐标两个分量来表示,记为(xp₂,yp₂),其中xp₂,yp₂是有限域Fq²中元素,xp₂的高维和低维分量记作X₁和X₂,yp₂的高维和低维分量记作Y₁和Y₂,其中X₁、X₂Y₁和Y2的长度都为256位,其值符合GB/T38635.1—2020中A.1的规定。包括SM9签名主私钥ks和加密主私钥ke,都是一个大于或等于1且小于N的整数(N是循环群G₁、G₂和Gr的阶,其值符合GB/T38635.1—2020中A.1的规定),长度为256位。5.3SM9主公钥包括SM9签名主公钥Ppubs和加密主公钥Ppube。分别是G₂和G₁上的点,记为(xpubs,Ypubs)和(xpube,yputbe)。其中签名主公钥的横坐标xipus的高维和低维分量记作X₁和X₂,纵坐标ypobs的高维和低维分量记作Y₁和Y₂,每个分量的长度为256位。加密主公钥xpube和ypube坐标值长度都是256位。3GB/T41389—2022包括SM9用户签名私钥ds和用户加密私钥de,分别是G₁和G₂上的点,记为(xpris,Ypris)和(xpric,ypic)。其中用户签名私钥的横坐标xpri和纵坐标ypis的长度都是256位。用户加密私钥的Xprie的高维和低维分量记作X₁和X2,yprie的高维和低维分量记作Y₁和Y₂,每个分量的长度为256位。在IBC技术中,KGC的签名主密钥(加密主密钥)确定后,用户身份标识可唯一确定用户的签名公钥(加密公钥),应用中以此代表公钥。用户签名公钥与签名主公钥结构相同,记为Qp。用户加密公钥用户公钥的计算方法如下(按照GB/T38635.2—2020中6.4,7.2,8.2,9.2)。Qp=[H₁(ID||hid,N)]P₂+Ppub-s=(XQp,YQp),签名公钥用于数字签名验证;6技术要求6.1数据格式本文件按照GB/T16262.1—2006的特定编码规则(DER)对SM9算法中的各项数据进行编码。位串与8位字节串、整数与8位字节串的数据转换按照GB/T35276—2017的第6章。G₁上的生成元P₁点数据格式的ASN.1定义为:——04||X|Y,其中,X和Y分别为P₁点的xp₁分量和yp₁分量,每个分量长度为256位;——03|X,其中,X为P₁点的xp,分量,长度为256位,G₂上的生成元P₂点数据格式的ASN.1定义为:———04||X₁|X₂|Y₁|Y₂,其中,X、X2是P₂点的xp₂的高维和低维分量,Y₁、Y²是yp₂的高维和低维分量,其长度各为256位;Y₂最右边的位为1;Y₂最右边的位为0。4GB/T41389—2022SM9算法签名主私钥数据格式的ASN.1定义为:SM9SignMasterPrivateKey::=SM9PrivateKeySM9PrivateKey::=INTERGERSM9算法签名主公钥数据格式的ASN.1定义为:SM9SignMasterPublicKey::=SM9KeyBlob2量Y₂最右边的位为1;量Y₂最右边的位为0。SM9EncryptMasterPrivateKey::=SM9PrivateKeySM9EncryptMasterPublicKey::=SM9KeyBloblSM9EncryptPrivateKey::=SSM9Signature::=SEQUENCE{}SM9算法加密数据格式的ASN.1定义为:SM9Cipher::=SEQUENCE{EnTypeINTEGER,——加密方式5GB/T41389—2022C1SM9KeyBlobl,——密文第一部分C₁(符合GB/T38635.2—2020)C3OCTETSTRING,——密文杂凑值}EnType为加密的方式,内容为0代表M+K1序列密码加密,内容为1、2、4、8分别代表ECB、CBC、OFB、CFB分组密码算法工作模式,分组密码算分组密码加密的算法按照GB/T32907。Cl在GB/T38635.2—2020的9.2中被称为C₁。C3在GB/T38635.2—2020的9.2中被称为C₃,为按照GB/T32905算法对明文数据运算得到的C2在GB/T38635.2—2020的9.2中被称为C₂,为加密密文。6.1.6密钥封装数据格式用户A将一个随机数封装成C后,并传递给用户B,以便计算出密钥K。密钥封装数据格式的ASN.1定义为:KOCTETSTRING,——生成的密钥}K作为用户A保留的密钥。C作为交换密文传递给B用户,B用户利用C可以生成K。6.2预处理6.2.1预处理杂凑函数H₁验签、加密时应按GB/T38635.2—2020中5.3.2.2进行预处理计算。DATA比特串——数据输出:6.2.2预处理杂凑函数H₂签名时应按GB/T38635.2—2020中5.3.2.3进行预处理计算。输入:DATA比特串——数据输出:6.2.3预处理对运算1预处理对运算1是指使用KGC的签名主公钥和G₁的生成元P₁点,计算Gr中的元素g₁。该结果用于SM9数字签名。预处理对运算1应按GB/T38635.1—2020附录A规定的双线性对进行计算。6GB/T41389—2022g₁=e(P₁,Ppubs)双线性对e的详细计算过程按照GB/T38635.1—2020中C.6。6.2.4预处理对运算2预处理对运算2是指使用KGC的加密主公钥和G₂的生成元P₂点,计算Gr中的元素g₂。该结预处理对运算2应按GB/T38635.1—2020附录A规定的双线性对进行计算。输出:计算公式为:g₂=e(Pputbe,P₂)双线性对e的详细计算过程按照GB/T38635.1—2020中C.6。6.2.5预处理用户验签公钥Qo预处理用户验签公钥Qo是指将身份标识字符串变换为群G₂上的点Q,该结果用于数字签名验证计算过程中。预处理用户验签公钥Qp应按GB/T38635.2—2020中6.4的B5和B6进行计算。输入:hid整型——KGC私钥生成函数识别符,取值为1PpubsSM9SignMasterPublicKey——签名主公钥输出:QpSM9KeyBlob2——群G₂上的点计算公式为:Qp=[h1]P₂+Ppub-s其中hl的计算见6.2.1。6.2.6预处理用户加密公钥QE预处理用户加密公钥QE是指将身份标识ID字符串变换为群G₁上的点Qe,该结果用于密钥交预处理用户加密公钥QE应按GB/T38635.2—2020中7.2的Bl(或GB/T38635.2—2020中8.2的A1,或GB/T38635.2—2020中9.2的A1)进行计算。7GB/T41389—2022ID字节串——用户身份标识串QE=[h1]P₁+Ppube其中hl的计算见6.2.1。密钥生成是指生成SM9算法的主私/公钥、用户私钥的过程。a)主私钥生成SM9签名主私钥和加密主私钥是由KGC产生的随机数生成,并且大于或等于1且小于N,其KGC产生的随机数应符合GB/T32915的要求。无kSM9PrivateKey—b)主公钥生成ksSM9SignMasterPrivateKey——签名主私钥P₂SM9P2—群G₂的生成元P₁SM9P1——群G₁的生成元详细的计算过程见GB/T38635.2—2020中9.1。c)用户私钥生成用户私钥生成是指生成用户私钥的过程,用户私钥分用户签名私钥和用户加密私钥,分别与相对应的主私钥与G₁的生成元P₁和G₂的生成元P₂有关。用户签名私钥生成过程应为:8GB/T41389—2022ksSM9SignMasterPrivateKey字节串hid N——群G₁的生成元SM9SignPrivateKey——SM9用户签名私钥P₂SM9P2——群G₂的生成元deSM9EncryptPrivateKey——SM9用户加密私钥详细的计算过程按照GB/T38635.2g₁比特串——预处理对运算1的结果详细的计算过程按照GB/T38635.2—2020中6.2。SM9签名验证是指使用预处理对运算1的结果、签名者标识、签名值、被签名数据,通过验签计算确定签名是否通过验证的过程。签名验证过程应为:g₁比特串——预处理对运算1的结果QpSM9KeyBlob2预处理用户验签公钥Qp的结果M比特串——被签名数据signSM9Signature—签名值9GB/T41389—2022输出:为“真”表示“验证通过”,为“假”表示“验证不通过”。详细的计算过程按照GB/T38635.2—2020中6.4。SM9密钥封装是指使用对方身份标识通过双线性对运算生成密钥,并产生基于对方加密公钥的密文即加密封装的密文。g₂比特串——预处理对运算2的结果KeyCSM9KeyPackage——封装密文详细的计算过程按照GB/T38635.2—2020中8.2。SM9密钥解封装是指用户收到封装密文后,对密文进行解封装的计算过程。密钥解封装过程应为:输出:Key比特串详细的计算过程按照GB/T38635.2—2020中8.4。SM9加密是指使用指定公开密钥对明文进行特定的加密计算,生成相应密文的过程。该密文只能由该指定公开密钥对应的私钥解密。M字节串明文QESM9KeyBlobl———对方的预处理用户加密公钥Qe的结果输出:CSM9Cipher——密文详细的计算过程按照GB/T38635.2—2020中9.2。SM9解密是指使用指定私钥对密文进行解密计算,还原对应明文的过程。GB/T41389—2022CSM9Cipher——密文详细的计算过程按照GB/T38635.2—2020中9.4。设密钥交换双方身份标识为IDA、IDg,分别计算用户A:QEBSM9KeyBlobl——用户B的预处理用户加密公钥Qe的结果RASM9KeyBlobl——用户A的临时公钥用户B:QEASM9KeyBlobl——用户A的预处理用户加密公钥QE的结果详细的计算过程按照GB/T38635.2—2020中7.1。用户B:klenSM9EncryptMasterPublicKeySM9EncryptPrivateKey整型比特串比特串比特串——用户A的临时公钥——用户A的身份标识——用户B的身份标识——加密主公钥——生成元P₂——用户B加密私钥——位长为klen的密钥数据GB/T41389—2022详细的计算过程按照GB/T38635.2—2020中7.2。用户A:输入:RASM9KeyBlobl——A临时密钥RpSM9KeyBlobl——B临时密钥IDA字节串——A的身份标识IDg字节串——B的身份标识Ppub-eSM9EncryptMasterPublicKey——加密主公钥P₂SM9P2——生成元P₂dASM9EncryptPrivateKey——用户A加密私钥klen整型——需要输出的密钥数据的比特长度输出:SA比特串——可选项,校验值,用于用户B校验S₂S₁比特串可选项,用于对比SB的校验值SKA比特串——位长为klen的密钥数据详细的计算过程按照GB/T38635.2—2020中7.2。7证实方法7.1数据格式G₁上的生成元P₁点和G₂上的生成元P₂点数据结构按GB/T16262.1—2006进行编码,使用7.1.2密钥数据结构私钥数据结构和用户加密私钥数据结构按GB/T16262.1—2006进行编码,使用A.3的测试用例测试通过。7.1.3签名数据结构签名数据结构按GB/T16262.1—2006进行编码,使用A.4的测试用例测试通过。7.1.4加密数据结构加密数据结构按GB/T16262.1—2006进行编码,使用A.5的测试用例测试通过。7.1.5密钥封装数据结构密钥封装数据结构按GB/T16262.1—2006进行编码,使用A.6的测试用例测试通过。7.2预处理7.2.1预处理杂凑函数H₁预处理杂凑函数H₁按GB/T38635.2—2020中5.3.2.2进行计算。GB/T41389—2022计算实例见GB/T38635.2—2020中A.2。预处理杂凑函数H₂按GB/T38635.2—2020中计算实例见GB/T38635.2—2020中A.2。预处理对运算1计算按GB/T38635.1—2020中A.1和C.6.2进行计算。计算实例见GB/T38635.2—2020中A.2。预处理对运算2计算按GB/T38635.1—2020中A.1和C.6.2进行计算。7.2.5预处理用户验签公钥Qo预处理用户验签公钥Qp按GB/T38635.2—2020中6.4的B5和B6进行计算。预处理用户加密公钥QE按GB/T38635.2—2020中7.2的B1(或GB/T38635.2—2020中8.2的A1,或GB/T38635.2—2020中9.2的A1)进行计算。a)主私钥生成KGC的随机数发生器按照GB/T32915进行验证。签名主私钥生成按GB/T38635.2—2020中6.1进行计算,计算实例见GB/T38635.2—2020加密主私钥生成按GB/T38635.2—2020中7.1、8.1或9.1进行计算,计算实例见b)主公钥生成签名主公钥生成按GB/T38635.2—2020中6.1进行计算,计算实例见GB/T38635.2—2020加密主公钥生成按GB/T38635.2—2020中7.1、8.1或9.1进行计算,计算实例见c)用户私钥生成用户签名私钥生成按GB/T38635.2—2020中6.1进行计算,计算实例见GB/T38635.2—2020中A.2。用户加密私钥生成按GB/T38635.2—2020中7.1、8.1或9.1进行计算,计算实例见GB/T41389—2022数字签名按GB/T38635.2—2020中6.2进行计算,计算实例见GB/T38635.2—2020中A.2。签名验证按GB/T38635.2—2020中6.4进行计算,计算实例见GB/T38635.2—2020中A.2。密钥封装按GB/T38635.2—2020中8.2进行计算,计算实例见GB/T38635.2—2020中A.4。密钥解封装按GB/T38635.2—2020中8.4进行计算,计算实例见GB/T38635.2—2020中A.4。加密按GB/T38635.2—2020中9.2进行计算,计算实例见GB/T38635.2—2020中A.5。解密按GB/T38635.2—2020中9.4进行计算,计算实例见GB/T38635.2—2020中A.5。密钥交换按GB/T38635.2—2020中7.2进行计算,计算实例见GB/T38635.2—2020中A.3。A.1概述本附录给出数据格式的编码测试用例。本附录中,所有用16进制表示的数,左边为高位,右边为低位。本附录中的数据来源见GB/T38635.2—2020中附录A。A.2生成元数据格式编码测试用例群G₁的生成元P₁=(xp₁;Vp₁)坐标yp₂:(17509B092E845C1266BA0D262CBEE6FD07?01D6ElF4086909DC3280F8C4F4817C66DL)D)21lE8DDA4l'21E607631065125C395BBC1ClC00CBFA6024350C464CD70A3EA616038182:BTTSTRTNG000485AE13D078640C98597B6027B44l:A0lFFIDD2C190F5E93C454806Cl1D61413722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82EB96A7CF28D519BE31A65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7A.3密钥数据格式编码测试用例坐标xpu-s:(9I64080B3084i733E48AllF4B413565011CL0711C5E392CIB0AB1B6791394C408,29DBA116152D1F786CE843ED24A3B573414D2177386A92DD8F14D65696EA5E32)坐标ypub-:(69850938ABEA0112B57329F447E3A0CBAD3E2FDB1A77F335E89E1408DOEF1C25,加密主私钥ke:02E65B0762D042F5IFOD23542B13ED8CFA2L9A0E7206361L013A283905L31F加密主公钥Ppub-c-[ke]P₁=(xpe,YPpse)坐标xu-:9174542668LE8F14A坐标ypu-:54E598C6BF749A3DACC9FFFE实体A的标识IDA:AliceIDA的16进制表示:416C696365B273C0945C3690C66L5DD09678386F734C4350567ED06283DD9DB6866C50457CFC7AA2A4AD65C3168FF74210坐标xasa:A5702F05CF1315305E2D6EB64BODEB923DBIA0BCF0CAFF90523AC8754AA69820坐标xdeA:(4C5EC9C8CA8DEBA238CC3E500458F5147911F2251A4BD021F:TNTFRGFRCE0B66340F319F348A1D5BIF2DC5F4038182:BITSTRTNG5E3269850938ABEA0112B57329F447E36F741006E85F5CDFF0730E75C05F34E3加密主私钥ke的编码如下。021F:TNTERGFRFA2L9A0L720636IE013A283905L31F加密主公钥Ppub-e的编码如下。0342:BITSTRTNG00049174542668F8F14AB273C0945C36:B6866C50457CFC7AA2A4AD65C3168FF742100342:BITSTRTXGI0004A5702F05CH1315305E2D6EB64B0DEB923DB1A0BCF0CAFF90523AC8754AA6038182:?BITSTRTXGF5147911F225lA4BD0AA903BB5F8D5FD●23B40360DBBD99CC571DCB883D417B8D239302BD90097C6B21F05A64F659287400F2D202723250D068AFFFD503C768A765731F62FC3C5678A.4签名数据格式编码测试用例签名主公钥Ppub-s=[ks]P₂=(xpussYrmbs)坐标xps:(9F64080133084F733E48AFF4B41B565011CL0711C5L392CFBOAB1B6791394C408,29DBA116152D1F786CE843ED24A3B573414D2177386A92DD8F14D65696EA5E32)坐标ypub-s:(69850938ABEA0112B57329F447E3A0CBAD3E2FDB1A77F335E89E1408DOEF1C25,41E00A53DDA532DA1A7实体A的标识[DA:AliceIDA的16进制表示:416C696365坐标xdsA:A5702F05CF1315305F2D6EB64BODEB923DB1AOBCFOCAFF90523AC8754AA69820坐标yda:78559A844411F9825C109F5EE3F52D720DD01785392A727BB1556952B2B013D3M的16进制表示:4368696E65736520494253207374616E64617264S:0473BF96923CE58B6ADOE13E9643A406D8EB98417050EF1B29CEF9ADB48B6D5980856712F1C2E0968AB7769F42A99586AED139D5B8B3E15891827CC2ACED9BAA05签名的编码如下。3066:SEQUENCE0420:0CTETSTRING823C4B21E4BD2DFElED920606653E996668563152FC33F55D7BFBB9BD9705ADB0342:BTTSTRTNG000473BF96923CE58B6AD0E13E9643A406D8EB98417C50LFIB29CEF9Al)B48L6D?598C856712FlC2E0968AB7769F42A99586AFD139D5B8B3E15891827CC2ACED9BAA05加密主私钥ke:01EDEE3778F441F8DEA3D9FAOACCAE07EE36C93F9A08618AF4AD85CEDE1C22加密主公钥Ppmb-e-[ke]Pi-(xrue,Vps-e)实体B的标识IDs:BobIDB的16进制表示:426F62坐标x₄ep:(94736ACD2C8C8796CC4785E938301A139A059D3537B6414140B2D31EECF41683,坐标yaeg:(7AA5E47570DA7600CD760A0CF7BEAF71C447F3844753FE74FA7BA92CA7D3B55F,27538A62E7F7BFl5IDCL08704796094C9156734F119LA44732B50E31CDEB75C1)消息M的16进制表示为:4368696E657365204942452073

温馨提示

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

评论

0/150

提交评论