GM/T 0009格式规范说明
GM/T 0009格式规范说明
GM/T 0009-2012 SM2密码算法使用规范
1.SM2密钥对
- SM2私钥是一个大于等于1且小于n-1的整数(n为SM2算法的阶),长度为256位。
- SM2公钥是SM2曲线上的一个点,由横坐标和纵坐标两个分量来表示,记为(x,y),简记为Q,每个分量的长度为256位。
2.数据格式
2.1 密钥数据格式
SM2算法私钥数据格式的ASN.1定义为:
SM2PrivateKey::=INTEGER
SM2算法公钥数据格式的ASN.1定义为:
SM2PublicKey::=BIT STRING
SM2PublicKey为BIT STRING类型,内容为04||X||Y,其中X和Y分别标识公钥的x分量和y分量,其长度各为256位。
2.2 加密数据格式
SM2加密后的数据格式的ASN.1定义为:
SM2Cipher::=SEQENCE{
Xcoordinate INTEGER, --x分量
Ycoordinate INTEGER, --y分量
HASH OCTET STRING SIZE(32),--杂凑值
CipherText OCTET STRING --密文
}
其中,HASH为使用SM3算法对明文数据运算得到的杂凑值,其长度固定为256位。CipherText是与明文等长的密文。
2.3 签名数据格式
SM2算法签名数据格式的ASN.1定义为:
SM2Signature::={
R INTEGER, --签名值第一部分
S INTEGER, --签名值第二部分
}
R和S的长度各为256位
2.4宓钥对保护数据格式
在SM2密钥对传递时,需要对SM2密钥对进行加密保护。具体的保护方法为:
a)产生一个对称密钥;
b)按对称密码算法标识指定的算法对SM2私钥进行加密,得到私钥的密文。若对称算法为分组 算法,则其运算模式为ECB;
c)使用外部SM2公钥加密对称密钥得到对称密钥密文;
d)将私钥密文、对称密钥密文封装到密钥对保护数据中。
SM2密钥对的保护数据格式的ASN. 1定义为:
SM2EnvelopedKcy ::=SEQUENCE{
symAlglD Algorithmldcntifier, --对称密码算法标
symEncrypted Key SM2Cipher, --对称密钥密文
Sm2PublicKey SM2PublicKey, --SM2公钥
Sm2EncryptedPrivateKey BIT STRING --SM2私钥密文
}