GB/T 35276-2017 信息安全技术 SM2密码算法使用规范.pdf

  • GB/T 35276-2017  信息安全技术 SM2密码算法使用规范.pdf为pdf格式
  • 文件大小:0.6 M
  • 下载速度:极速
  • 文件评级
  • 更新时间:2021-08-09
  • 发 布 人: 13648167612
  • 文档部分内容预览:
  • 6.48位字节串到整数的转换

    可以简单地把8位字节串看成以256为基表示的整数,转换过程如下: 输入:一个长度mlen的8位字节串M。 输出:一个整数。

    GB/T352762017

    SM2算法私钥数据格式的ASN.1定义为: SM2PrivateKey::=INTEGER SM2算法公钥数据格式的ASN.1定义为: SM2PublicKey : := BIT STRING SM2PublicKey为BITSTRING类型,内容为04IIXIIY配电网标准规范范本,其中,X和Y分别标识公钥的x分量和y 分量,其长度各为256位

    SM2算法加密后的数据格式的ASN.1定义为: SM2Cipher::=SEQENCE XCoordinate INTEGER, 一x分量 YCoordinate INTEGER, y分量 HASH OCTET STRING SIZE(32), 一杂凑值 CipherText OCTET STRING 密文

    其中,HASH为使用SM3算法对明文数据运算得到的杂凑值,其长度固定为256位。C 是与明文对应的密文

    SM2算法签名数据格式的ASN.1定义为: SM2Signature::=SEQUENCE( R INTEGER, S INTEGER

    7.4密钥对保护数据格式

    签名值的第一部分 签名值的第二部分

    在SM2密钥对传递时,需要对SM2密钥对进行加密保护。具体的保护方法为: a)产生一个对称密钥; D 按对称密码算法标识指定的算法对SM2私钥进行加密,得到私钥的密文。若对称算法为分组 算法,则其运算模式为ECB; 使用外部SM2公钥加密对称密钥得到对称密钥密文; d)将私钥密文、对称密钥密文封装到密钥对保护数据中。 SM2密钥对的保护数据格式的ASN.1定义为:

    预处理1是指使用签名方的用户身份标识和签名方公钥,通过运算得到乙值的 处理2,也用于SM2密钥协商协议, 输入:ID 字节串 用户身份标识 Q SM2PublicKey 用户的公钥 输出:Z 字节串 预处理1的输出 计算公式为: Z=SM3(ENTL Il IDIl a Ilb Il xG Il yG Il xA Il yA) 式中: ENTL 为由2个字节表示的ID的比特长度; ID 为用户身份标识; α、b 为系统曲线参数; XG·yG 为基点; XAyA 为用户的公钥,

    详细的计算过程见GB/T32918.2—2016的5.5和GB/T32905—2016的第5章

    预处理2是指使用Z值和待签名消息,通过SM3运算得到杂漆值H的过程。杂漆值H用于SM2 数字签名。 输入:Z 字节串 预处理2的输人 M 字节串 待签名消息 输出:H 字节串 杂凑值 计算公式为

    SM2密钥生成是指 输入:无 输出:k SM2PrivateKey SM2私钥 Q SM2PublicKey SM2公钥 详细的计算过程见GB/T32918.1 2016的6.1

    GB/T352762017

    加密是指使用指定公开密钥对明文进行特定的加密计算,生成相应密文的过程。该 公开密钥对应的私钥解密。 Q SM2PublicKey SM2公钥 m 字节串 待加密的明文数据 C SM2Cipher 密文 输出参数c的格式由本规范7.2中定义; 输出参数c的XCoordinate、YCoordinate为随机产生的公钥的x分量和y分量 输出参数c中的HASH的计算公式为: HASH = SM3(x Il m Il y) Q的x分量和y分量; 输出参数c中CipherText为加密密文,其长度等于明文的长度。 的计算过程见GB/T32918.4一2016的6.1。

    x,y Q的x分量和y分量; 输出参数c中CipherText为加密密文,其长度等于明文的长度。 详细的计算过程见GB/T32918.4—2016的6.1

    SM2解密是指使用指定私钥对密文进行解密计算,还原对应明文的过程。 输入:d SM2PrivateKey SM2私钥 SM2Cipher 密文 输出:m 字节串 与密文对应的明文

    m为SM2Cipher经过解密运算得到的明文,该明文的长度与输人参数c中CipherText的长度 目同。 详细的计算过程见GB/T32918.4一2016的7.1

    SM2签名是指使用预处理2的结果和签名者私钥,通过签名计算得到签名结果的过程。 输入:d SM2PrivateKey 签名者私钥 H 字节串 预处理2的结果 输出:sign SM2Signature 签名值

    SM2签名验证是指使用预处理2的结果、签名值和签名者的公钥,通过验签计算确定签名是否通 金证的过程。 输入:H 字节串预 处理2的结果 sign SM2Signature 签名值 Q PublicKey 签名者的公钥 输出:为“真”表示“验证通过”,为“假”表示“验证不通过”。 详细的计算过程见GB/T32918.2一2016的7.1。

    SM2签名验证是指使用预处理2的结果、签名值和签名者的公钥,通过验签计算确定签 过验证的过程。

    字节串预 SM2Signature PublicKey

    密钥协商是在两个用户之间建立一个共享秘密密钥的协商过程,通过这种方式能够确定一个共

    GB/T35276—2017

    密钥的值。 设密钥协商双方为A、B,双方的密钥对分别为(da,Q^)和(d,Qs),双方需要获得的密钥 寺长度为klen。密钥协商协议分为两个阶段。 第一阶段:产生临时密钥对 用户A: 调用生成密钥算法产生临时密钥对(rA,RA),将RA和用户A的用户身份标识IDA发送给月 用户B: 调用生成密钥算法产生临时密钥对(rB,Rs),将R和用户B的用户身份标识ID发送给用 第二阶段:计算共享秘密密钥 用户A: 输入参数: Q SM2PublicKey 用户A的公钥 Q SM2PublicKey 用户B的公钥 RA SM2PublicKey 用户A的临时公钥 IDA OCTET STRING 用户A的用户身份标识 RB SM2PublicKey 用户B的临时公钥 IDB OCTETSTRING 用户B的用户身份标识 dA SM2PrivateKey 用户A的私钥 IA SM2PrivateKey 用户A的临时私钥 klen INTEGER 需要输出的密钥数据的比特长度 输出参数: K OCTETSTRING 位长为klen的密钥数据 步骤: a) 用ID和Q作为输入参数铝合金标准规范范本,调用预处理1得到ZA; b 用ID和Q:作为输人参数,调用预处理1得到Z; 以klen、ZA、ZB、dA、IA、RA、Q、RB为输入参数,进行运算得到K。 用户B: 输入参数: Q SM2PublicKey 用户B的公钥 Q SM2PublicKey 用户A的公钥 RB SM2PublicKey 用户B的临时公钥 IDB OCTETSTRING 用户B的用户身份标识 RA SM2PublicKey 用户A的临时公钥 IDA OCTET STRING 用户A的用户身份标识 dB SM2PrivateKey 用户B的私钥 B SM2PrivateKey 用户B的临时私钥 klen INTEGER 需要输出的密钥数据的比特长度

    秘密密钥的值。 设密钥协商双方为A、B,双方的密钥对分别为(da,Q^)和(ds,Qs),双方需要获得的密钥数据白 比特长度为klen。密钥协商协议分为两个阶段。 第一阶段:产生临时密钥对 用户A: 调用生成密钥算法产生临时密钥对(rA,RA),将RA和用户A的用户身份标识IDA发送给用户B。 用户B: 调用生成密钥算法产生临时密钥对(rB,R),将R和用户B的用户身份标识IDs发送给用户A。 第二阶段:计算共享秘密密钥 用户A:

    GB/T 35276=2017

    K OCTET STRING 位长为klen的密钥数据 步骤: 用ID和Q作为输入参数,调用预处理1得到Z^; b)用IDs和Q:作为输人参数,调用预处理1得到Zs; c)以klen、ZA、ZB、d、IB、RB、Qa、R为输人参数,进行运算得到K。 详细的计算过程见GB/T32918.3一2016的6.1

    10用户身份标识ID的默认值

    建筑软件、计算,用户身份标识ID的长度为16字节,其默认 0x34,0x35,0x36,0x37,0x38,0x31,0x32,0x33,

    ....
  • 相关专题: 信息安全  

相关下载

常用软件