收藏 分销(赏)

GM∕T 0080-2020 SM9密码算法使用规范.pdf

上传人:曲**** 文档编号:181780 上传时间:2022-11-04 格式:PDF 页数:14 大小:1.14MB
下载 相关 举报
GM∕T 0080-2020 SM9密码算法使用规范.pdf_第1页
第1页 / 共14页
GM∕T 0080-2020 SM9密码算法使用规范.pdf_第2页
第2页 / 共14页
GM∕T 0080-2020 SM9密码算法使用规范.pdf_第3页
第3页 / 共14页
GM∕T 0080-2020 SM9密码算法使用规范.pdf_第4页
第4页 / 共14页
GM∕T 0080-2020 SM9密码算法使用规范.pdf_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、ICS 35.040 CCS L 80 中华人民共和国密码行业标准G/T 0080-2020 SM9密码算法使用规范S9 cryptographic algorithm application specification 2020-12-28发布2021-07-01实施哗但物葡草y司. 亨、-o啕F国国- 郁J. 咱、也一、周躺w山._L_崎咄叫fr直l涂层查lt伪国家密码管理局发布GM/T 0080-2020 目次I 引言HI 范围2 规范性引用文件3 术语和定义4 缩略语25 SM9的密钥对25.1 生成元25.2 SM9主私钥25.3 SM9主公钥25.4 SM9用户私钥5.5 SM9用

2、户公钥.6 数据格式.3 6.1 密钥数据结构36.2 签名数据结构46.3 加密数据结构46.4 密钥封装数据格式.4 7 预处理47.1 预处理杂凑函数Hl4 7.2 预处理杂凑函数H25 7.3 预处理对运算e5 7.4 预处理用户验签QD5 7.5 预处理用户加密QE6 8 计算过程8.1 牛成密钥8.2 数字签名78.3 签名验证78.4 密钥封装88.5 密钥解封88.6 加密88.7 解密88.8 密钥协商GM/T 0080-2020 刚昌本文件按照GB/T1.1-2020(标准化工作导则第1部分:标准化文件的结构和起草规则的规定起草。请注意本文件的某些内容可能涉及专利。本文件的

3、发布机构不承担识别专利的责任。本文件由密码行业标准化技术委员会提出并归口。本文件起草单位:上海信息安全工程技术研究中心、北京国脉信安科技有限公司、深圳奥联信息安全技术有限公司、元锡华正天网信息安全系统有限公司。本文件主要起草人:袁峰、王晓春、封维端、张立圆、王学进、药乐、蒋楠、程朝辉、蔡先勇、王一曲。I G/T 0080-2020 引本文件是IBC(Identity-Based Cryptography)基于标识的密码技术系列标准之一,及依托于GB/ T 38635.2 (信息安全技术SM9标识密码算法第2部分:算法。本文件的目标是保证SM9密码算法使用的正确性,为SM9密码算法的使用制定统一

4、的数据格式和使用方法。本文件从算法应用的角度给出SM9密码算法的使用说明。H GjT 0080-2020 SM9密码算法使用规范1 范围本文件定义了SM9密码算法的使用方法,以及密钥、加密与签名等的数据格式。本文件适用于SM9密码算法的使用,以及支持SM9密码算法的设备和系统的研发和检测。2 规范性引用文件下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GBjT 32905 信息安全技术SM3密码杂凑算法GB/T 32907 信息安全技术SM4分组密码算法GB

5、/T 32918(所有部分)信息安全技术SM2椭圆曲线公钥密码算法GB/T 38635.1-2020 信息安全技术SM9标识密码算法第1部分:总则GB/T 38635.2-2020 信息安全技术SM9标识密码算法第2部分:算法3 术语和定义3.1 3.2 3.3 下列术语和定义适用于本文件。算法标识algorithm identifier 用于标明算法机制的数字化信息。S9密码算法S9 algorithm 一种采用双线性对的椭圆曲线公钥密码算法。签名主密钥signature master key 密钥管理基础设施的根签名密钥对,包括签名主私钥和签名主公钥,用于进行数字签名、验签和为用户生成用户

6、签名密钥。3.4 加密主密钥encryption master key 密钥管理基础设施的根加密密钥对,包括加密主私钥和加密主公钥,用于进行数字加密、解密和为用户生成用户加密密钥。3.5 用户签名密钥signature key 其中私钥由密钥管理基础设施产生并下发给用户。该类密钥包括用户签名私钥和签名公钥,用于数字签名和验签。GM/T 0080-2020 3.6 用户加密密钥encryption key 其中私钥由密钥管理基础设施产生并下发给用户。该类密钥包括用户加密私钥和加密公钥,用于加密、解密和密钥协商。3.7 公开参数服务public parameter service 用于发布基于标识

7、的密码技术中公开参数、私钥生成策略、用户标识信息和状态等数据的应用服务。4 缩略语5 S 5.1 成中心(KeyGenerating Centr) PPS:公邢参数服朵PublicParameter Be-tv 格式前1!Y河Y2,其中,X1、X2和Y1、Y2分别标识公钥的q一根Y1,Y2=基域q根Y2。或IT STRING,类型为和y分量,每个分量长度长度为256bito选取解压后的右那个比特应用为1,否则Y1=基域02 11 X1 11 Xn其中,X1、X2分别标识公钥的2个x分量,每个分量长度为256bit。选取解压后的Y根值(Y1IIY2)中最右边bit位为O的选项值。还原后Y根值取最

8、右一比特为O的选项值,否则Y1=基域q一根Y1,Y2=基域q一根Y2。5.2 SM9主私钥包括SM9签名主私钥和加密主私钥,都是一个大于或等于1且小于N-l的整数(N是循环群G1、Gz和GT的阶,其值见GB/T38635.2-2020的附录A.l),简记为S,长度为256bit。5.3 侧的主公钥包括SM9签名主公钥Pub2和加密主公钥P户ubl。分别是G2和Gj上的点,坐标表示为(XSPub , YSPub)和(XEPubYElub)。其中签名主公钥的X,Y坐标还分别包含两个分量即XI分量和X2分量,YI分量和yz分量,每个分量的长度为256bit。而加密主公钥x,y坐标值长度都是256bi

9、t。5.4 S9用户私钥G/T 0080-2020 包括SM9用户签名私钥和用户加密私钥,分别是Gl和Gz上的点,坐标表示为(XSPri , Y SPri )和(XEP口,YEPri)。其中用户签名钥X,Y坐标值长度都是256bit。而用户加密私钥的X,Y坐标还分别包含两个分量即Xl分量和Xz分量Yl分量和Yz分量,每个分量的长度为256bit。5.5 S9用户公钥在IBC技术中,用户标识ID可唯一确定用户的公钥,应用中以此代表公钥。基于双线性对ID坐标的表示可分为用户签名公钥坐标和F型晦斜尴坠E签名公钥坐标与签名主公钥坐标结构相6.1 密各a) 为256bit。或03 11 x, 11 Xz

10、,其中,X;、Y根值(YlIIY2)中最右边bitl 基域q一根YlYZ=基域q一根Yz。或E密主公钥坐标结构相同,记为QE。y分量,每个分量长度v度为256bit。选取解压后的最右那个比特为O的值,否则Y1二02 11 X) 11 Xz ,其中,X1、Xz分别标识公钥的2个x分量,每个分量长度为256bit。选取解压后的Y根值(Y)11 Yz)中最右边bit位为O的选项值。还原后Y根值取最右一比特为O的选项值,否则Y1=基域q一根Yj,Yz=基域q一根Y2。c) SM9算法加密主私钥数据格式的ASN.l定义为:SM9EncryptMasterPrivateKey: : = SM9Master

11、PrivateKey d) SM9算法加密主公钥数据格式的ASN.l定义为:SM9EncryptMasterPublicKey: : =BIT STRING SM9EncryptMasterPublicKey为BITSTRING类型,内容为:0411 X 11 y,其中,X和Y标识公钥的各个x分量和y分量,每个分量长度为256bit。0311 x,其中,X标识公钥的x分量,每个分量长度为256bit 0选取解压后的Y根值中最右边bitGM/T 0080-2020 位为1的那个值。还原后Y根值取最右那个比特为O的值,否则Y二基域q一根Y。或0211 x,其中,X分别标识公钥的x分量,每个分量长度

12、为256bit。选取解压后的Y根值中最右边bit位为O的选项值。还原后Y根值取最右一比特为O的选项值,否则y=基域q一根Y。e) SM9算法用户签名私钥数据格式的ASN.l定义为:SM9SignPrivateKey: :二SM9EncryptMaster PU blicKey f) SM9算法用户加密私钥数据格式的ASN.l定义为:s19EncryptPrivateKey: : = S岛19Sign如1asterPublicKey6.2 签名数据结构SM9算法签名数据格式的ASN.l定义为:SMSlSignature : : = SEQUENCE H OCTET STRING, S SM9Si

13、gnPrivateKey /杂凑分量,算法是H2(见GB/T38635.2-2020) /签名结果(见GB/T38635.2-2020) 6.3 加密数据结构SM9算法加密后的数据格式的ASN.l定义为:SM9Cipher : = SEQUENCE EnType INTEGER, Cl C3 CipherText s19SignPrivateKey, OCTET STRING, OCTET STRING /加密方式/ClC见GB/T38635.2-2020的9.2)/明文数据杂凑值/密文EnType为加密的方式,定义O代表MEBKl序列密码加密,1、2、4、8分别代表ECB、CBC,OFB、C

14、FB分组密码模式。分组密码加密的算法为GB/T32907, Cl,该部分在GB/T38635.2-2020的9.2中被称为Cl。C3为HASH,使用GB/T32905算法对明文数据运算得到的杂凑值,其长度固定为256bit。CipherText,为加密密文。6.4 密钥封装数据格式用户A将一个随机数封装成C后,并传递给用户B,以便计算出密钥K。密钥封装数据格式的ASN.l定义为:SM9KeyPackage : :二SEQUENCEK OCTET STRING, /生成的密钥C SM9EncryptMasterPublicKey /封装的交换密文K作为用户A保留的密钥。C作为交换密文传递给B用户

15、,B用户利用C可以生成K。7 预处理7. 1 预处理杂凑函数H14 验签、加密时应按GB/T38635.2-2020的5.3.2.2内容进行预处理计算。输入:DATA 比特串整型整型Len N 输出:h1 字节串G/T 0080-2020 /数据/数据长度/是循环群G1、Gz和GT的阶/杂凑值,长度为256bit,且1h1N-17.2 预处理杂凑函数H2签名时应按GB/T38635.2-2020的5.3.2.3内容进行预处理计算。输入:DATA 比特串/数据Len 整型/数据长度N 整型/是循环群G1、Gz和GT的阶输出:h2 整数7.3 预处理对运算e应按GB/T38635.2-2020的数

16、字签名生成算法进行预处理计算。对运算e,通过用户标识公钥和G1、Gz中的两个公开点P1和Pz点计算出双曲线对gl和gz。签名gl运算。输入:P1 vd e K FL 10 U PA VA e +L QU a M n ub -I PAQu nHdn叫dMM QUQU L u nV QM PA 输出:gl 加密gz运算。输入:比特串/双线性对GT中元素计算结果,N的长度(256)X 12=3 072 bit Pz PEpub SM9P2 SM9 EncryptMaster PU blicKey 输出:gz 比特串/生成元P1/签名主公钥/生成元Pz/加密主公钥/双线性对,长度为3072 bit 详

17、细计算过程见GB/T38635.1-2020的附录C.6。7.4 预处理用户验签Qo将身份标识ID字符串变换为Gz域上的点的运算,从而得到基于双线性对ID的用户验证签名所需的坐标值Qo,用于验签计算过程中。输入:ID hid N 字节串整数整数S孔19P2SM9 SignMaster PU blicKey P Pspub 输出:Qo S孔19SignMasterPublicKey/用户身份标识串/KGC私钥生成函数公开标识,取值为1/是循环群G1、Gz和GT的阶/生成元Pz/签名主公钥5 G/T 0080-2020 7.5 预处理用户加密QE将身份标识ID字符串变换为Gz域上的点的运算,从而得

18、到基于双线性对ID的用户加解密所需的坐标值QE用于密钥封装、加密、密钥交互计算过程中。输入:ID 字节串hid 整数N 整数Pj SM9Pl Pepub 输出:QE 8 计算过程8.1 /用户身份标识串/KGC私钥生成函数公开标识,取值为1/是循环群Gj、G2和G7的阶产生的随机数,S 为SE飞/10 Gj的生成元点P1S5 P2 输出:P,pub SM9SignMasterPublicKey /SM9签名主公钥 加密主公钥生成输入:SE vd K L a v vi PA r L QU a M凹OJQd MM QUQ) /加密主私钥/Pj生成元点P 输出:Pcpuh S肌rI9Encrypt肌

19、rIasterPublicKey/SM9加密主公钥详细的计算过程见GB/T38635.2-2020的第6章。c) 用户私钥生成SM9用户私钥分用户签名私钥和用户加密私钥,用户分别由相对应的主私钥与G1的生成元点P16 和G2的生成元点P2有关。8.2 用户签名私钥生成输入:Ss SM9MasterPrivateKey ID 字节串hid 整数N 整数P1 S岛19P1输出:ds 用户加密私钥生成输入:SE ID hid N P2 dE 详-1gl N M ds 输出:slgn 详细的计算过程见8.3 签名验证G/T 0080-2020 /签名主私钥/用户身份标识串/KGC私钥生成函数公开标识,

20、取值为1/是循环群G1,G2和GT的阶/P1生成元点标识,取值为3G碎的阶SM9签名验证是指使用预处理e的结果、签名值和被签数据,通过验签计算确定签名是否通过验证的过程。输入:ID 字节串/签名者标识hid 整数/私钥生成函数公开标识N 整数/是循环群G1、G2和GT的阶gl 比特串/对值QD SM9SignMasterPublicKey M 比特串/被签名数据slgn SM9SignPri va teKey /签名值7 G/T 0080-2020 输出:为真表示验证通过为假表示验证不通过。详细的计算过程见GB/T38635.2-2020的6.4。8.4 密钥封装SM9密钥封装是指使用通过对运

21、算生成密钥,并产生基于对方加密公钥坐标值的点的密文即加密封装的密文。输入:KeyLen ID g2 QE 输出:整型字节串比特串S岛19EncryptMasterPublicKeyKeyC SM9KeyPackage 详细的计算过程见GB/T38635.2-2020的8.2。/生成密钥的长度/对方身份标识/预处理的P2对值/预处理对方用户加密公钥坐标值8.5 密钥解封SM9密钥封装是指使用通过对运算生成对称加密密钥,并产生基于对方加密公钥坐标值的点的密文即加密封装的密文。输入:ID 字节串/解封方身份标识d SM9 EncryptPri va teKey /解封方加密私钥C SM9Encryp

22、tMasterPublicKey /加密封装的密文输出:Key 比特串/密钥详细的计算过程见GB/T38635.2-2020的8.4。8.6 加密SM9加密是指使用指定公开密钥对明文进行特定的加密计算,生成相应密文的过程。该密文只能由该指定公开密钥对应的私钥解密。输入:M mlen KDF ID g2 QE 输出:比特串整数整数比特串SM9Encrypt岛1asterPublicKey/明文/明文长度/对称加密算法类型,序列:0,分组:1 /预处理的P2对值/预处理对方用户加密公钥坐标值C SM9Cipher /密文详细的计算过程见GB/T38635.2-2020的9.2。8.7 解密8 SM

23、9解密是指使用指定私钥对密文进行解密计算,还原对应明文的过程。输入:ID KDF ID d C 输出:如fmlen 字节串整数SM9EncryptPriva teKey SM9Cipher 比特串整数详细的计算过程见GB/T38635.2-2020的9.4。8.8 密钥协商G/T 0080-2020 /解密方身份标识/对称加密算法类型,序列:0,分组:1 /解密方加密私钥/加密封装的密文/明文/明文长度密钥协商是在两个用户之间建立一个共享秘密密钥的协商过程,通过这种方式能够确定一个共享秘密密钥的值。设密钥协商双方身份标识为IDA、IDB分别预处理对应的QE得到QEA和QEB。其加密密钥对分别为

24、(dA,QA)和(白, QB),双方需要获得的密钥数据的比特长度为klen。密钥协商协议分为两个阶段。第一阶段:产生临时密钥对用户A。输入:QEB SM9EncryptMasterPublicKey 输出:RA SM9EncryptMasterPublicKey 用户B。输入:QEA SM9 EncryptMaster PU blicKey 输出:RB SM9EncryptMasterPublicKey 详细的计算过程见GB/T38635.2-2020的7.1。第二阶段:计算共享秘密密钥用户B。输入:RA SM9 EncryptMas ter PU blicKey RB SM9EncryptM

25、asterPublicKey IDA 字节串IDB 字节串Ppub SM9EncryptMasterPublicKey P2 SM9P2 DB SM9 EncryptPri va teKey klen 整型输出:SB 比特串S2 比特串SKB 比特串详细的计算过程见GB/T38635.2020的7.2。/加密坐标/临时密钥/加密坐标/临时密钥/临时密钥/临时密钥/A身份标识/B身份标识/加密主公钥/P2生成元/用户加密私钥/需要输出的密钥数据的比特长度/可选项,校验值,用于用户A校验Sl/可选项,用于对比SA的校验值/位长为klen的密钥数据9 G/T 0080-2020 用户A。10 输入:RA Rs IDA 1Ds Ppub Pz dA klen 输出:SA S SKA SM9EncryptMasterPublicKey SM9EncryptMasterPublicKey 字节串字节串SM9EncryptMasterPu blicKey SM9P2 SM9EncryptPrivateKey 整型/临时密钥/临时密钥/A身边标识/B身边标识/加密主公钥/Pz生成元/用户加密私钥们密钥数据的比特长度

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 数据库/数据算法

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服