(13条消息) 国密SM9算法C++实现之一:算法简介


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产生,包括签名私钥和加密私钥。

  • 签名私钥:是G1群的基点P1的倍点。签名私钥仅用于签名中

  • 加密私钥:是G2群的基点P2的倍点。加密私钥用于密钥解封、解密和密钥交换中私钥

KGC使用主私钥和用户身份标识(以下简称ID)生成用户的私钥。

算法部分

SM9算法包括签名验签、密钥封装解封、加密解密和密钥交换四大部分。

  • 签名算法:使用签名主公钥和签名者的签名私钥给数据签名

  • 验签算法:使用签名主公钥和签名者ID验证签名

  • 密钥封装算法:使用加密主公钥和密钥解封者(使用对称密钥的另一方)ID封装一个对称密钥

  • 密钥解封算法:使用加密主公钥和密钥解封者ID解出封装了的对称密钥

  • 加密算法:使用加密主公钥和解密者ID加密数据

  • 解密算法:使用解密者的加密私钥和解密者ID解密数据

  • 密钥交换算法:密钥交换双方使用加密主公钥、自己的加密私钥和双方的ID协商出一个共享密钥

用户身份标识符:ID

总结上述描述,可见在SM9算法中的用户身份标识ID主要用于用于私钥生成、验签、密钥封装解封、加密解密封和密钥交换。各部分的ID描述如下:

  • 私钥生成:ID是私钥属主的ID

  • 验签:ID是签名者的ID

  • 密钥封装解封:ID是解封者的ID

  • 加密解密:ID是解密者的ID

  • 密钥交换:发起方和响应方都需要自己的ID和对方的ID

SM9算法的简介就介绍到这里,具体的算法描述和数学理论课参考SM9算法标准,以及后续文章。

(0)

相关推荐

  • 过“硬”才够安全,Rambus两款信任根IP为中国IoT安全保驾护航

    在万物互联的时代,物联网(IoT).5G.AI等新兴技术融合发展,为人们带来了不可思议的生活体验,同时也带来了不容忽视的安全问题.IDC报告显示,到2025年,全球将有557 亿联网设备,其中75%将 ...

  • 一个关于国密SM4的故事

    一个关于国密SM4的故事 我的名字叫SM4,我还有三位兄长,分别是大哥SM1, 二哥SM2, 和三哥SM3.说起我的名字,故事要回到2006年的时候,我出生的时候并不是叫SM4的,而是叫做SMS4.只 ...

  • (11条消息) 国密算法概述

    国密即国家密码局认定的国产密码算法,即商用密码. 国密算法是国家密码局制定标准的一系列算法.其中包括了对称加密算法,椭圆曲线非对称加密算法,杂凑算法.具体包括SM1,SM2,SM3等,其中: SM2为 ...

  • 保单服务

    保单服务

  • (13条消息) 机器学习

    时间序列分析预测法 简介 在之前,写了不少关于分类的算法,其中有传统机器学习算法如KNN.SVM,也有深度学习领域的算法如多层感知机,但是可以发现这里的算法核心思路都没有变化,利用一部分已有标签的数据 ...

  • (13条消息) DC

     1. 开关电源基础拓扑: BUCK减压型 先上电路图 图中器件T为  N-mos管 当PWM驱动高电平使得NMOS管T导通的时候,忽略MOS管的导通压降,等效如图2,电感电流呈线性上升,MOS导通时 ...

  • (13条消息) 音视频入门(四)

    一.JPEG的引入 JPEG属于一种图片压缩格式,之前我们通过对YUV420图像格式的学习,了解了怎么计算一帧YUV图像的大小.假设这里一帧图片的分辨率为1080p,像素格式为YUV420,那么它的大 ...

  • (13条消息) 工业相机的常见参数及选型

    一.相机成像原理如图所示: 注: 1)当物距为无穷远时,像距等于焦距,成像在焦平面上: 2)当物距为无穷无与两倍焦距之间时,像距在焦距与两倍焦距之间,成缩小的实像: 3)当物距等于两倍焦距时,像距与物 ...

  • (13条消息) 镜头的选型

    光学镜头在机器视觉系统中具有非常重要的地位,它的作用与人眼中的晶状体类似.一个光学镜头对像差校正的优良与否,即成像质量的好坏,可以通过像差的大小来衡量,一般较常见的像差类型有球差.像散.场曲.色差.畸 ...

  • (13条消息) 阿里云单盘百万IOPS的背后

    本文组织: 单盘100万IOPS意味着? 背后的技术猛料! 性能这么高,安全性有保障么? 笑对Intel漏洞? 存储界已三足鼎立? 2018年1月9日,阿里云在北京隆重发布了如下产品和技术: 其中,E ...

  • (13条消息) 北京峰会系列二|基于SPDK的UDisk全栈优化

    今天给大家带来的是UCloud基于SPDK的UDisk全栈优化解决方案分享.通过介绍UDisk如何结合SPDK(包括SPDK vhost虚拟化方案)来进行端到端IO路径上的CPU.网络.磁盘性能的优化 ...

  • (13条消息) 阿里云储道深度解析存储系统设计

    NVMe SSD的性能时常捉摸不定,为此我们需要打开SSD的神秘盒子,从各个视角分析SSD性能影响因素,并思考从存储软件的角度如何最优化使用NVMe SSD,推进数据中心闪存化进程.本文从NVMe S ...