GB/T35276-2017
信息安全技术SM2密码算法使用规范
Informationsecuritytechnology—SM2cryptographicalgorithmusagespecification
- 中国标准分类号(CCS)L80
- 国际标准分类号(ICS)35.040
- 实施日期2018-07-01
- 文件格式PDF
- 文本页数11页
- 文件大小556.79KB
以图片形式预览信息安全技术SM2密码算法使用规范
信息安全技术SM2密码算法使用规范
国家标准 GB/T35276一2017 信息安全技术SM2密码算法使用规范 nfomatn.seerttytehmogyS\2crypugraphilcalgurthmusgespeifieatinm 2017-12-29发布 2018-07-01实施 中华人民共利国国家质量监督检验检疙总局 发布 国家标准化管理委员会国家标准
GB/T35276一2017 次 目 前言 引言 范围 规范性引用文件 术语和定义 缩略语 SM2的密钥对 5.1SM2私钥 5.2SM2公钥 数据转换 6.1位串到8位字节串的转换 6.28位字节串到位串的转换 6.3整数到8位字节串的转换 6.48位字节串到整数的转换 数据格式 7.1密钥数据格式 7.2加密数据格式 7.3签名数据格式 7.4密钥对保护数据格式 预处理 8.1预处理1 8.2预处理2 计算过程 9.1生成密钥 9.2加密 9.3解密 9.4数字签名 9.5签名验证 9.6密钥协商 10 用户身份标识ID的默认值
GB/35276一2017 前 言 本标准按照GB/T1.1一2009给出的规则起草
请注意本文件的某些内容可能涉及专利
本文件的发布机构不承担识别这些专利的责任 本标准由全国信息安全标准化技术委员会(SAC/TC260)提出并归口
本标准起草单位:北京海泰方圆科技股份有限公司、卫士通信息产业股份有限公司、无锡江南信息 安全工程技术中心,兴唐通信科技股份有限公司山东得安信息技术有限公司、上海格尔软件股份有限 公司
本标准主要起草人:刘平、蒋红宇、柳增寿,李元正、徐强,谭武征、孔凡玉、王妮娜
GB/T35276一2017 引 言 SM2椭圆曲线公钥密码算法(以下简称SM2)是由GB/T32918给出的一组非对称算法,其中包括 SM2-1椭圆曲线数字签名算法、SM2-2椭圆曲线密钥协商协议SM2-3椭圆曲线加密算法
本标准的目标是保证SM2使用的正确性,为SM2密码算法的使用制定统一的数据格式和使用 方法
本标准中涉及的SM3算法是指GB/T32905给出的一种密码杂凑算法
本标准仅从算法应用的角度给出SM2密码算法的使用说明,不涉及SM2密码算法的具体编制 细节
GB/35276一2017 信息安全技术SM2密码算法使用规范 范围 本标准规定了SM2密码算法的使用方法,以及密钥、加密与签名等的数据格式
本标准适用于SM2密码算法的使用,以及支持SM2密码算法的设备和系统的研发和检测 规范性引用文件 下列文件对于本文件的应用是必不可少的
凡是注日期的引用文件,仅注日期的版本适用于本文 件
凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件
GB/T32905一2016信息安全技术SM3密码杂凑算法 GB/T32918.1一2016信息安全技术SM2椭圆曲线公钥密码算法第1部分:总则 GB:/T32918.2一2016信息安全技术sM2椭圆曲线公钥密码算法第2部分;数字签名算法 信息安全技术sM2椭圆曲线公钥密码算法第3部分;密钥交换协议 GB/T32918.32016 GB/T32918.4一2016信息安全技术SM2椭圆曲线公钥密码算法第4部分;公钥加密算法 GB/T32918.5一2017信息安全技术SM2椭圆曲线公钥密码算法第5部分;参数定义 术语和定义 下列术语和定义适用于本文件 3. 算法标识algorithmidentifier 用于标明算法机制的数字化信息
3.2 SM2密码算法SM2c 2cugruphtalerlhm" 由GB/T32918(所有部分)定义的一种算法
3.3 S13密码算法sM3cryptographicalgorithm 由GB/T329052016定义的一种算法
缩略语 下列缩略语适用于本文件
ECB;电码本模式(ElectronicesCodeBook) ECcC;椭圆曲线密码算法(E:lptieCurveCryptography) 5 SM2的密钥对 5.1SM2私钥 SM2私钥是大于1且小于n-1的整数(n为SM2算法的阶,其值见GB/T32918.5一2017的第2
GB/T35276一2017 章),简记为k,长度为256位
5.2SM2公钥 SM2公钥是SM2曲线上的一个点,由横坐标和纵坐标两个分量来表示,记为(x,y),简记为Q,每 个分量的长度为256位
数据转换 6 6.1位串到8位字节串的转换 位串长度若不是8的整数倍,需先在它的左边补0,以保证它的长度为8的倍数,然后构造8位字 节串,转换过程如下 输人:一个长度为blen的位串B
输出:一个长度为mlen的字节串M,其中mlen的取值为(blen十7)/8的整数部分
动作;将位串B=B,BB转换到8位字节串M=M,MM采用如下方法 从1.x 输出:一个长度为mlen的8位字节串M
2"" 2"lt”+ 动作:将基于2=256的r值工=r 十十r2十r
转换为一个 十rmlen 8位字节串M=M,MM,m-采用如下方法 从0imlen一1,设置:M,=
=工mken一1-" 输出M
6.48位字节串到整数的转换 可以简单地把8位字节串看成以256为基表示的整数,转换过程如下 输人;一个长度mlen的8位字节串M. 输出;一个整数r
GB/35276一2017 动作;将一个8位字节串M=M,M,M, wm-转换为整数
方法如下 将M,看作[O一255]中的一个整数 2(mlen-1-M 输出工
数据格式 7.1密钥数据格式 SM2算法私钥数据格式的ASN.1定义为: SM2PrivateKey::=INTEGER sM2算法公钥数据格式的AsN.1定义为 sM2Publickey BITsTRING ;= SM2Publickey为BTSTRING类型,内容为04lxlY,其中,x和Y分别标识公钥的x分量和y 分量,其长度各为256位
7.2加密数据格式 SM2算法加密后的数据格式的ASN.1定义为 SM2Cipher:;=SEQENCE xCoordinate INTEGER x分量 INTEGER -y分量 YCoordinate HASH OCTETSTRINGSIZE(32) 杂凑值 OCTETSTRING CipherText 密文 其中,HASH为使用SM3算法对明文数据运算得到的杂凑值,其长度固定为256位
CipherText 是与明文对应的密文
7.3签名数据格式 SM2算法签名数据格式的ASN.1定义为 SM2Signature::=SEQUENCE INTEGER 签名值的第一部分 R INTEGER 签名值的第二部分 7.4密钥对保护数据格式 在sM2密钥对传递时,需要对sM2密钥对进行加密保护
具体的保护方法为 产生一个对称密钥 a 按对称密码算法标识指定的算法对SM2私钥进行加密,得到私钥的密文
若对称算法为分组 b 算法,则其运算模式为ECB: 使用外部SM2公钥加密对称密钥得到对称密钥密文; c 将私钥密文,对称密钥密文封装到密钥对保护数据中
d SM2密钥对的保护数据格式的ASN.1定义为 SM2EnvelopedKey::;=SEQUENCE
GB/T35276一2017 symAlglID Algorithmldentifier, 对称密码算法标识 symEneryptedKey SM2Cipher -对称密钥密文 Sm2PubieKey sM2PadbieKey. SM2公钥 sm2EncryptedlPiatekeyBIrsTRING SM2私钥密文 8 预处理 8.1预处理1 预处理1是指使用签名方的用户身份标识和签名方公钥,通过运算得到Z值的过程
乙值用于预 处理2,也用于SM2密钥协商协议
输人:ID 字节串 用户身份标识 Q sM2Pubiekey用户的公钥 输出 字节串 预处理1的输出 计算公式为 Z=SM3(ENTLIDlalblxly|xly 式中 ENTI 为由2个字节表示的ID的比特长度; ID 为用户身份标识; 为系统曲线参数; a、b xG、ya 为基点; 为用户的公钥
XA、yA 详细的计算过程见GB/T32918.2一2016的5.5和GB/T329052016的第5章
8.2预处理2 预处理2是指使用Z值和待签名消息,通过SM3运算得到杂凑值H的过程
杂凑值H用于SM2 数字签名
输人 字节串 预处理2的输人 M 字节串 待签名消息 H 输出 字节串 杂凑值 计算公式为 H=SM3(ZM 详细的计算过程见GB/T32918.2一2016的6.1和GB/T32905一2016的第5章
g 计算过程 9.1生成密钥 SM2密钥生成是指生成SM2算法的密钥对的过程,该密钥对包括私钥和与之对应的公钥
输人 无 输出 SM2PrivateKeySM2私钥 Q sSM2PublicKeySM2公钥 详细的计算过程见GB/T32918.1一2016的6.1
GB/35276一2017 9.2加密 SM2加密是指使用指定公开密钥对明文进行特定的加密计算,生成相应密文的过程
该密文只能 由该指定公开密钥对应的私钥解密
sM2PublicKey sM2公钥 Q 输人: 字节串 待加密的明文数据 m 输出: SM2Cipher 密文 其中: 输出参数c的格式由本规范7.2中定义; 输出参数c的XCoordinate,YCoordinate为随机产生的公钥的x分量和y分量
输出参数c中的HASH的计算公式为 HAsH=SM3(xlmly) 式中 Q的x分量和y分量; X,y 输出参数c中CipherText为加密密文,其长度等于明文的长度
详细的计算过程见GB/T32918.4一2016的6.!
9.3解密 SM2解密是指使用指定私钥对密文进行解密计算,还原对应明文的过程 SM2PrivateKe 输人: SM2私钥 ey SM2Ciphe 密文 输出: 字节串 与密文对应的明文 m为SM2Cipher经过解密运算得到的明文,该明文的长度与输人参数c中CipherText的长度 相同
详细的计算过程见GB/T32918.!一2016的7.1
9.4数字签名 SM2签名是指使用预处理2的结果和签名者私钥,通过签名计算得到签名结果的过程
sM2PrivateKey 签名者私钥 d 输人: 字节串 预处理2的结果 H 输出:sign" sM2Signature 签名值 详细的计算过程见GB/T32918.2一2016的6.1
9.5签名验证 SM2签名验证是指使用预处理2的结果、签名值和签名者的公钥,通过验签计算确定签名是否通 过验证的过程
输人: 字节串预 处理2的结果 H SM2Signature 签名值 s1gn PublicKey 签名者的公钥 输出;为“真”表示“验证通过”,为“假”表示“验证不通过” 详细的计算过程见GB/T32918.22016的7.1
9.6密钥协商 密钥协商是在两个用户之间建立一个共享秘密密钥的协商过程,通过这种方式能够确定一个共享
GB/T35276一2017 秘密密钥的值
设密钥协商双方为A,B,双方的密钥对分别为(dA,QA)和(d,,Q),双方需要获得的密钥数据的 比特长度为klen
密钥协商协议分为两个阶段
第一阶段;产生临时密钥对 用户A: 调用生成密钥算法产生临时密钥对(rA,R),将R,和用户A的用户身份标识ID发送给用户B. 用户B 调用生成密钥算法产生临时密钥对(ri,Rw),将R和用户B的用户身份标识ID发送给用户A
第 二阶段;计算共享秘密密钥 用户A: 输人参数 Q sSM2Paubliekey 用户A的公钥 Q SM2PublieKey 用户B的公钥 R SM2Publiekey 用户A的临时公钥 D. 用户A的用户身份标识 OcTETSTRING R SM2PublicKey 用户B的临时公钥 D OCTETSTRING 用户B的用户身份标识 SM2PrivateKey 用户A的私钥 d sM2PrivateKey 用户A的临时私钥 rr klen NTEGER 需要输出的密钥数据的比特长度 输出参数 OcTETSTRING 位长为klen的密钥数据 步骤 用ID和Q作为输人参数,调用预处理1得到Z: a b) 用ID和Q作为输人参数,调用预处理1得到Zw 以klen、Z、Z、dA、r、,RA.Q、R,为输人参数,进行运算得到K
c 用户B 输人参数 M2PublicKe 用户B的公钥 QB ey Q SM2PublicKey 用户A的公钥 SM2PublicKey 用户B的临时公钥 R n (OcTETsTRING 用户B的用户身份标识 用户A的临时公钥 SM2PublicKey 0CTETSTRNG 用户A的用户身份标识 d SM2PrivatekKey 用户B的私钥 用户B的临时私钥 SM2Privatekey rn klen INTEGER 需要输出的密钥数据的比特长度
GB/35276一2017 输出参数 OcTETsTRING 位长为klen的密钥数据 K 步骤: 用ID和Q作为输人参数,调用预处理1得到乙; a b 用ID和Q作为输人参数,调用预处理1得到Za 以klen,Z、Z,d、r,Rw,QA,RA为输人参数,进行运算得到K
c 详细的计算过程见GB/T32918.32016的6.1
10用户身份标识D的默认值 无特殊约定的情况下,用户身份标识ID的长度为16字节,其默认值从左至右依次为 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38
了解SM2密码算法使用规范GB/T35276-2017
随着互联网的快速发展,信息安全问题日益凸显。为了保护个人隐私和商业机密,信息安全技术得到了广泛应用。其中一项重要技术是密码算法。
SM2 是中国自主设计的椭圆曲线公钥密码算法,属于非对称加密算法的一种。它具有高强度、高安全性和高效率等优点,在政府、金融、电信等领域得到了广泛应用。
SM2密码算法的特点
SM2 密码算法采用椭圆曲线加密算法和哈希算法,用于实现数字签名、密钥协商、数据加密等功能。与 RSA 算法相比,SM2 具有以下优点:
- 更高的安全性:SM2 比 RSA 更难被攻破,可以提供更好的安全保障。
- 更高的效率:SM2 的运算速度比 RSA 更快,可以提高系统的响应速度。
- 更小的秘钥尺寸:SM2 的秘钥尺寸比 RSA 更小,可以节省存储空间。
GB/T35276-2017 使用规范
为了规范 SM2 密码算法的使用,国家标准化管理委员会发布了 GB/T35276-2017《信息安全技术 SM2 密码算法使用规范》。该规范主要包括以下内容:
- 密码算法的基本概念和术语
- 密码算法的体系结构和功能模块
- 对称加密算法和非对称加密算法的区别和优缺点
- SM2 算法的详细介绍和使用规范
- 密钥管理、证书管理和安全策略等方面的规定
GB/T35276-2017 规范中明确了 SM2 密码算法的实现要求和使用方法,包括密钥长度、随机数生成、密钥协商、签名验证等细节问题。同时,规范还强调了密钥管理和证书管理的重要性,提出了相应的安全策略和措施。
结论
信息安全是当前互联网发展的热点问题,密码算法作为其中重要的一环,其规范化使用将对保障个人隐私和商业机密具有重要意义。GB/T35276-2017《信息安全技术 SM2 密码算法使用规范》明确了 SM2 密码算法的实现要求和使用方法,可以为开发者和用户提供有效的参考和指导。
信息安全技术SM2密码算法使用规范的相关资料
- 信息安全技术SM2密码算法加密签名消息语法规范GB/T35275-2017详解
- 了解信息安全技术公钥基础设施证书策略与认证业务声明框架GB/T26855-2011
- 信息安全技术引入可信第三方的实体鉴别及接入架构规范GB/T28455-2012
- 信息系统安全管理评估要求GB/T28453-2012
- 信息安全技术应用软件系统通用安全技术要求GB/T28452-2012
- GB/T28447-2012信息安全技术电子认证服务机构运营管理规范解析
- 银行卡磁条信息格式和使用规范GB/T19584-2010
- 低压铸造机技术条件GB/T28688-2012
- 调速电气传动系统GB/T12668.701-2012标准介绍
- 木质楼梯安装、验收和使用规范GB/T30356-2013
- 铜铬砷(CCA)防腐木材的处理及使用规范GB/T31763-2015
- 了解SM2密码算法使用规范GB/T35276-2017