SM9标识密码算法是由国密局发布的一种IBE(Identity-Based Encryption)算法。IBE算法以用户的身份标识作为公钥,不依赖于数字证书。国密SM9算法标准包括5个文档,分别为: 《GMT 0044-2016 SM9标识密码算法:第1部分 总则》 《GMT 0044-2016 SM9标识密码算法:第2部分 数字签名算法》 《GMT 0044-2016 SM9标识密码算法:第3部分 密钥交换协议》 《GMT 0044-2016 SM9标识密码算法:第4部分 密钥封装机制和公钥加密算法》 《GMT 0044-2016 SM9标识密码算法:第5部分 参数定义》 曲线参数SM9是基于256位的BN椭圆曲线的,使用素域 FpFp 和有限域 Fp2Fp2,双线性对使用R-ate。曲线参数主要包括: 椭圆曲线方程:y2=x3+by2=x3+b 方程参数b:05 参数t: 60000000 0058F98A 基域特征q: B6400000 02A3A6F1 D603AB4F F58EC745 21F2934B 1A7AEEDB E56F9B27 E351457D 群的阶N B6400000 02A3A6F1 D603AB4F F58EC744 49F2934B 18EA8BEE E56EE19C D69ECF25 余因子cf:1 群1 的生成元P1 = (xp1 , yp1): 坐标xp1: 93DE051D 62BF718F F5ED0704 487D01D6 E1E40869 09DC3280 E8C4E481 7C66DDDD 坐标yp1: 21FE8DDA 4F21E607 63106512 5C395BBC 1C1C00CB FA602435 0C464CD7 0A3EA616 群2 的生成元P2 = (xp2, yp2): 坐标xp2: (85AEF3D0 78640C98 597B6027 B441A01F F1DD2C19 0F5E93C4 54806C11 D8806141 , 37227552 92130B08 D2AAB97F D34EC120 EE265948 D19C17AB F9B7213B AF82D65B ) 坐标yp2: (17509B09 2E845C12 66BA0D26 2CBEE6ED 0736A96F A347C8BD 856DC76B 84EBEB96 , A7CF28D5 19BE3DA6 5F317015 3D278FF2 47EFBA98 A71A0811 6215BBA5 C999A7C7 )
详细参数可参考国密局SM9文档。 SM9算法主要包括密钥部分部分和算法部分。 密钥部分SM9算法的密钥由KGC(密钥生成中心)产生,主要包括KGC的主密钥对和用户的私钥。 主密钥对分为签名主密钥对和加密主密钥对。 签名主密钥对:其私钥是一个在[1,N-1]范围内的随机数;公钥是G2群的基点P2的倍点,倍数为私钥。 加密主密钥对:其私钥是一个在[1,N-1]范围内的随机数;公钥是G1群的基点P1的倍点,倍数为私钥。
主密钥对的公私钥用在不同场景,其中主私钥仅用于计算用户私钥;主公钥则由KGC公开并用在其他部分。同时,签名主公钥仅用于签名和验签算法;加密主公钥则用于密钥封装、加密和密钥交换中。 用户私钥由KGC产生,包括签名私钥和加密私钥。 KGC使用主私钥和用户身份标识(以下简称ID)生成用户的私钥。 算法部分SM9算法包括签名验签、密钥封装解封、加密解密和密钥交换四大部分。 签名算法:使用签名主公钥和签名者的签名私钥给数据签名 验签算法:使用签名主公钥和签名者ID验证签名 密钥封装算法:使用加密主公钥和密钥解封者(使用对称密钥的另一方)ID封装一个对称密钥 密钥解封算法:使用加密主公钥和密钥解封者ID解出封装了的对称密钥 加密算法:使用加密主公钥和解密者ID加密数据 解密算法:使用解密者的加密私钥和解密者ID解密数据 密钥交换算法:密钥交换双方使用加密主公钥、自己的加密私钥和双方的ID协商出一个共享密钥
用户身份标识符:ID总结上述描述,可见在SM9算法中的用户身份标识ID主要用于用于私钥生成、验签、密钥封装解封、加密解密封和密钥交换。各部分的ID描述如下: SM9算法的简介就介绍到这里,具体的算法描述和数学理论课参考SM9算法标准,以及后续文章。
|