标准搜索结果: 'GM/T 0081-2020'
| 标准编号 | GM/T 0081-2020 (GM/T0081-2020) | | 中文名称 | SM9密码算法加密签名消息语法规范 | | 英文名称 | SM9 cryptographic algorithm encryption and signature message syntax specification | | 行业 | Chinese Industry Standard (推荐) | | 中标分类 | L80 | | 字数估计 | 17,193 | | 发布日期 | 2020-12-28 | | 实施日期 | 2021-07-01 | | 标准依据 | 国家密码管理局公告第41号 | | 发布机构 | 国家密码管理局 |
GM/T 0081-2020: SM9密码算法加密签名消息语法规范
GM/T 0081-2020 英文名称: SM9 cryptographic algorithm encryption and signature message syntax specification
中华人民共和国密码行业标准
SM9密码算法加密签名消息语法规范
国家密码管理局 发 布
1 范围
本文件定义了使用SM9密码算法的加密签名消息语法。
本文件适用于使用SM9算法进行加密和签名操作时对操作结果的标准化封装。
2 规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文
件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于
本文件。
GB/T 33560 信息安全技术 密码应用标识规范
GB/T 38635(所有部分) 信息安全技术 SM9标识密码算法
GM/T 0080 SM9密码算法使用规范
GM/Z4001-2013 密码术语
3 术语和定义
GB/T 38635(所有部分)和GM/Z4001-2013界定的以及下列术语适用于本文件。
5 OID定义
本文件对6个对象sm9data,signedData,envelopedData,signedAndEnvelopedData,encrypted-
Data和keyAgreementInfo的标识符进行了定义,详见表1。
6 基本类型定义
6.1 IdentifierRevocationLists
IdentifierRevocationLists类型标明一个标识撤销列表的集合。
IdentifierRevocationLists∷=SETOFIdentifierRevocationList
IdentifierRevocationList的定义按附录A定义。
6.2 ContentEncryptionAlgorithmIdentifier
ContentEncryptionAlgorithmIdentifier类型标明一个数据加密算法,其OID见GB/T 33560。
ContentEncryptionAlgorithmIdentifier∷= AlgorithmIdentifier
6.3 DigestAlgorithmIdentifier
DigestAlgorithmIdentifier类型标明一个消息摘要算法,在本文件中为 SM3 算法,其 OID
见GB/T 33560。
DigestAlgorithmIdentifier∷= AlgorithmIdentifier
6.4 DigestEncryptionAlgorithmIdentifier
DigestEncryptionAlgorithmIdentifier类型标明一个签名算法,在本文件中为SM9密码算法,其
OID见GB/T 33560。
DigestEncryptionAlgorithmIdentifier∷= AlgorithmIdentifier
6.5 KeyEncryptionAlgorithmIdentifier
KeyEncryptionAlgorithmIdentifier类型标明加密对称密钥的加密算法。
KeyEncryptionAlgorithmIdentifier∷= AlgorithmIdentifier
6.6 Version
Version类型标明语法版本号。
Version∷=INTEGER(1)
6.7 ContentInfo
ContentInfo类型标明内容交换通用语法结构,内容交换的通用语法结构定义如下:
ContentInfo∷=SEQUENCE{
contentType ContentType,
content [0] EXPLICITcontentTypeOPTIONAL
ContentType∷= OBJECTIDENTIFIER
其中:
ContentType内容类型是一个对象标识符,其定义见第5章。
content内容,可选。
6.8 Identifier
标识类型,该类型标明一个标识有用的基本项。
Identifier∷=SEQUENCE{
version EXPLICITVERSIONDEFAULTv1,
ibcType OBJECTIDENTIFIER,
ibcTypeAlias [0] OCTETSTRINGOPTIONAL,
identityData OCTETSTRING,
validStart UTCTIME,
validEnd [1] UTCTIMEOPTIONAL,
extensions [2] ExtensionsOPTIONAL
version标识信息的版本号,默认为1;
ibcType是一个对象标识符oid,用于定义该标识应用的算法;
ibcTypeAlias是一个标识的别名,可选项;
identifyData描述标识的内容;
validStart用于描述标识有效期的起始时间;
validEnd该项是可选的,用于描述标识有效期的终止时间,如果该项不存在则该标识的结束有效
期和公开参数的结束有效期一致;
extensions该项是可选的,本项是一个扩展序列(SEQUENCE),如果出现,此项由一个或多个标识
扩展的序列组成。
Externsions∷=SEQUENCESIZE(1.MAX)OFExtension
Extension∷=SEQUENCE{
extnID OBJECTIDENTIFIER,
critical BOOLEANDEFAULTFALSE,
extnValue OCTETSTRING
extnID:表示一个扩展元素的OID;
critical:表示这个扩展元素的重要性;
extnValue:表示这个扩展元素的值,字符串类型。
如果是ibcType是SM9的OID,则扩展性需包括颁发该标识密钥的密钥基础设施的公开参数服务
器信息,具体定义格式如下:
extnID的内容为1.xx.xxx;
critical的内容为TRUE;
extnValue的内容为DistricInfo的ASN1编码数据,DistricInfo具体定义如下:
DistricInfo::=SEQUENCE{
district IA5String,
districtNo INTEGER,
district:本项描述生成该标识密钥的基础设施的公共参数发布服务的地址信息;
districtNo:该项描述在公共参数发布服务中存在多套公开参数信息时,生成该标识密钥的公共参
数信息的唯一编号。
6.9 Validity
Validity∷=SEQUENCE{
notBefore Time,
notAfter Time,
Time∷=CHOICE{
utcTime UTCTime,
generalTime GeneralizedTime
6.10 IBCSysParamsPublishInfo
公开参数的发布信息
IBCSysParamsPublishInfo∷=SEQUENCE{
ibcSysParams IBCSysParams,
signatureAlgorithm OBJECTIDENTIFIER,
signatureValue BITSTRING
上述标识信息数据结构ibcSysParams,signatureAlgorithm和signatureValue三个域组成。这些
域的含义如下:
ibcSysParams域包含公开参数的相关信息;
signatureAlgorithm域包含标识应用属性信息签发机构签发该标识应用属性信息所使用的密码算
法的标识符;
AlgorithmIdentifier∷=SEQUENCE{
Algorithm OBJECTIDENTIFIER,
Parameters ANYDEFINEDBYalgorithmOPTIONAL
BeSignParamsPubInfo∷=SEQUENCE{
ibcSysParams IBCSysParams,
signatureAlgorithm OBJECTIDENTIFIER
BeSignParamsPubInfo描述待签名数据;
signatureValue域包含了对ibcSysParams域和signatureAlgorithm域进行数字签名的结构,采用
ASN.1DER编码的BeSignParamsPubInfo的摘要作为数字签名的输入,而签名的结构则按照ASN.1
编码成BITSTRING类型并保存在标识信息的签名值域内。
SM9密码算法签名数据格式见GM/T 0080。
6.11 IDAppAttr
IDAppAttr包含标识信息结构中的前五个项的信息。这些信息主要有主体标识和颁发者标识、上
一次主体标识以及扩展项等。本条的下述段落描述这些项的语法和语义。
IDAppAttr∷=SEQUENCE{
versoin VersionDEFAULTv1,
serialNumber IdentifierSerialNumber,
subjectId Identifier,
sysParamsPublishInfo IBCSysParamsPublishInfo,
extensions [0]EXPLICITExternsionsOPTIONAL
version∷=INTEGER{v1(0)}
IdentifierSerialNumber∷=INTEGER
Externsions∷=SEQUENCESIZE(1.MAX)OFExtension
version:本项描述了编码标识应用属性的版本号;
serialNumber:本项描述该标识在IBC系统中唯一编号;
subjectId:本项记录标识主体;
sysParamsPublishInfo:系统公开参数发布信息;
extensions:本项是一个或者多个标识扩展的序列(SEQUENCE)。
7 数据类型Data
Data数据类型结构定义如下:
Data∷= OCTETSTRING
Data数据类型表示任意的字节串,比如ASCII文本文件。
8 签名数据类型
8.1 SignedData类型
SignedData数据类型由任意类型的数据和至少一个签名者的签名值组成。任意类型的数据能够
同时被任意数量的签名者签名。
SignedData数据类型结构定义如下:
SignedData∷=SEQUENCE{
version Version,
digestAlgorithms DigestAlgorithmIdentifiers,
contentInfo ContentInfo,
ibcSysParamsPublishInfos [0] IMPLICITIBCSysParamsPublishInfosOPTIONAL,
irls [1] IMPLICITIdentifierRevocationListsOPTIONAL,
signerInfos SignerInfos
IBCSysParamsPublishInfos∷=SETOFIBCSysParamsPublishInfo
DigestAlgorithmIdentifiers∷=SETOFDigestAlgorithmIdentifier
SignerInfos∷=SETOFSignerInfo
结构中各项含义见表2。
表2 SignedData数据类型
字段名称 数据类型 含义
version Version 语法的版本号,为1
digestAlgorithms DigestAlgorithmIdentifiers 消息摘要算法标识符的集合
contentInfo ContentInfo 被签名的数据内容,数据类型见第5章
ibcSysParamsPublishInfos IBCSysParamsPublishInfos 公开参数发布信息的集合
irls IdentifierRevocationLists 标识吊销列表集合
signInfos SignerInfo 每个签名者信息的集合
8.2 SignerInfo类型
SignerInfo类型结构定义如下:
SignerInfo∷=SEQUENCE{
version Version,
issuerIdentifier Identifier,
digestAlgorithm DigestAlgorithmIdentifier,
authenticatedAttributes [0]IMPLICITAttributesOPTIONAL,
digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
encryptedDigest SM9Signature,
unauthenticatedAttributes [1]IMPLICITAttributesOPTIONAL
结构中......
|