GB/T31503-2015
信息安全技术电子文档加密与签名消息语法
Informationsecuritytechnology—Encryptionandsignaturemessagesyntaxforelectronicdocument
![本文分享国家标准信息安全技术电子文档加密与签名消息语法的全文阅读和高清PDF的下载,信息安全技术电子文档加密与签名消息语法的编号:GB/T31503-2015。信息安全技术电子文档加密与签名消息语法共有38页,发布于2016-01-01](/image/data/23962_1.gif)
- 中国标准分类号(CCS)L80
- 国际标准分类号(ICS)35.040
- 实施日期2016-01-01
- 文件格式PDF
- 文本页数38页
- 文件大小714.64KB
以图片形式预览信息安全技术电子文档加密与签名消息语法
信息安全技术电子文档加密与签名消息语法
国家标准 GB/T31503一2015 信息安全技术 电子文档加密与签名消息语法 nformationseeuritytechnology一 Eneryptioandsignaturemessagesyntaxforeleetronicdocument 2015-05-15发布 2016-01-01实施 国家质量监督检验检疫总局 发布 国家标准化管理委员会国家标准
GB/I31503一2015 目 次 前言 引言 范围 规范性引用文件 术语和定义 缩略语 通用语法 数据内容类型 签名数据内容类型 封装数据内容类型 摘要数据内容类型 5 加密数据内容类型 6 l0 鉴别数据内容类型 ll 有用类型 12 13有用属性 22 14AsN.1模块 2 15安全事宜 33
GB/T31503一2015 前 言 本标准按照GB/T1.1一2009给出的规则起草
本标准由全国信息安全标准化技术委员会(SAC/TC260)提出并归口 本标准起草单位;科学院数据与通信保护研究教育中心,北京数字认证股份有限公司、上海普 华诫信信息技术有限公司、赞嘉电子科技有限公司
本标准主要起草人;向继、汪嬉,王雷,荆继武、高能林躁锵,管乐、马存庆、查达仁,詹榜华、梁佐泉、 张嘉纯
GB/I31503一2015 引 言 本标准主要参考IETF(互联网工程特别工作组)RFC5652文件制定
本标准规定了用于电子文档密码保护的封装语法
它支持数字签名和加密
该语法允许多重封 装 个封装信封可以嵌套在另一个封装信封之内,同样,一方可以对以前封装过的数据再进行数字签 名
它也允许任意属性,如签名时间,同消息内容一起签名,并且提供其他属性如联合签名,同签名关联 在一起
本标准描述的电子文档加密与签名消息语法支持各种基于证书的密钥管理架构
该语法使用抽象 语法记法ASN.1,并采用BER编码生成值
这些值通常表示成字节串的形式
虽然很多系统都能够 可靠地传输字节串,但仍有很多电子邮件系统不行
本标准不提供字节串编码机制以保证这种环境下 的可靠传输
GB/I31503一2015 信息安全技术 电子文档加密与签名消息语法 范围 本标准规定了电子文档加密与签名消息语法,此语法可用于对任意消息内容进行数字签名、摘要、 鉴别或加密
本标准适用于电子商务和电子政务中电子文档加密与签名消息的产生、处理以及验证
规范性引用文件 下列文件对于本文件的应用是必不可少的
凡是注日期的引用文件,仅注日期的版本适用于本文 件
凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件
GB/T16262.1一2006信息技术抽象语法记法一(ASN.1)第1部分:基本记法规范 GB/T16263.1一2006信息技术ASN.1编码规则第1部分;基本编码规则(BER),正则编码 规则(CER)和非典型编码规则DER)规范 GB/T16264.2一2008信息技术开放系统互连目录第2部分;模型 GB/T16264.8一2005信息技术开放系统互连目录第8部分:公钥和属性证书框架 GB/T197142005 信息技术 公钥基础设施证书管理协议 安全技术 信息安全技术公钥基础设施数字证书格式 GB/T205182006 RFc3281用于授权的因特网属性证书框架(AnInternetAttributeCertifieateProfileforAu thorization RFC5280因特网X.509公钥基础设施证书和证书撤销列表轮廓(InternetX.509PublieKeyIn frastructureCerificateandCertificateRevocationList(CRL)Profiley 术语和定义 GB/T19714一2005,GB/T20518一2006界定的以及下列术语和定义适用于本文件
3.1 算法标识符algorithmidentifier 通过对象标识符标识算法的类型
3.2 属性attribute 包括属性类型以及一个或多个属性值,属性类型由对象标识符指定
缩略语 下列缩略语适用于本文件
ASN.1:抽象语法记法一(AbstractSyntaxNotationone) Rules BER:基本编码规则BasicEnm ncoding"
GB/I31503一2015 List CRL;证书撤销列表CertificateRe evocation DER;可辨别编码规则(DistinguishedEncodingRules) EsMs;电子文档加密与签名消息语法EncryptionandsignatureMessagesyntaxforEleetronie Document 1 Code) MAC;消息鉴别码(Meswwe \uthentication PRNG;伪随机数生成器(PseudorandomNumberGenerator) UKM;用户密钥生成材料(UserKeyingMaterial 通用语法 下列对象标识符(objeetider ntifier)标识了内容信息类型: dct-contentInfoOBECTIDENTIFIER:=iso(1member-body(2) us(840)rsadsi(113549)pkes(1pkcs9(9smime(16)et(1)6 ESMS将内容类型标识符与内容关联起来
语法中应含有ASN.1(见GB/T16262.1一2006)Con- tentlnfo类型: Contentlnfo=SEQUENCE contentTypeContentType [oEXPLICITANYDEFINEDBY contentTypeOPTIONAL content ContentType::=OBJECTIDENTIFIER Contentlnfo中各个域的意义如下 ?入 Type:表示关联内容的类型,是一个对象标识符,由权威机构分配,用于定义内容类型 content 的唯一整数串 eontent表示关联内容
内容的类型由contentType唯一确定
本标准定义了6种内容类型 数据、签名数据、封装数据,摘要数据,加密数据以及鉴别数据
如果在其他文档中定义了其他 内容类型,定义的ASN.1类型不应是CHOICE类型
数据内容类型 下列对象标识符标识了数据内容类型 iddataOBJECTIDENTIFIER=iso(1member-body(2) us(840)radsi(135149)pkes(1)pkes7(7)1 数据内容类型用于表示任意字节串,例如AsC文本文件;具体应用具体解释
这类串不需要任 何的内部结构,它们可能有自己的AsN.1定义或其他结构
数据内容类型一般装在签名数据,封装数据、摘要数据、加密数据或鉴别数据的内容类型中 签名数据内容类型 7.1概述 签名数据内容类型包括任何类型的内容,以及零个或多个签名结果
任意数量的签名者可并行地 对任意类型的内容进行签名
GB/T31503一2015 签名数据内容类型的典型应用是,签名者对数据内容类型的内容进行数字签名
另一个典型应用 是分发证书和CRL 构造签名数据的步骤如下: 对于每个签名者,使用签名者指定的消息摘要算法计算出内容的消息摘要值
如果签名者要 a 对除内容之外的其他信息进行签名,那么使用签名者的消息摘要算法对内容摘要值和其他信 息一起计算摘要,得到的结果为“消息摘要” 对于每个签名者,使用签名者的私钥对消息摘要进行数字签名
b 对于每个签名者,签名结果和其他签名者指定的信息放在Signerlnfo值中,见7.4
每个签名 者所对应的证书和CRL,以及其他不对应于任何签名者的信息,都在这一步收集
d)所有签名者的消息摘要算法和Signerlnlo值,同内容一起放人SignedData值中,见7.2 接收者独立地计算消息摘要,利用消息摘要以及签名者的公钥验证签名结果
签名者的公钥可以 通过两种途径查询;签发者的可辨别名称以及该签发者的签名证书序列号唯一标识了一张证书,证书中 包含公钥;或者通过主体密钥标识符,同时适合认证的和未经认证的公钥
签名者的证书可包含在 SignedData里的证书域中,但并非必须包括
当存在多个签名时,成功验证某个给定签名者的签名,通常视为该签名者签名成功
但是,也有些此 应用环境需要其他的规则
若某个应用除了每个签名者对应一个有效签名外,还采用了别的规则,则应 阐明这些规则
此外,只匹配签名者标识符并不足以确定这些签名是否由该签名者生成,在应用说明中 应描述如何确定哪个签名是由该签名者生成的
签名者选择包含多个签名的主要原因是为了支持多个 不同的接收者群体
本章分为6个部分第一部分描述了顶层类型signedDate a;第二部分描述了 EncapsulatedCon ntlnfo;第三部分描述了每个签名者信息的类型Signerlnfo;第四,第五和第六部分分别描述了消息摘 tent 要的计算,签名的生成以及签名的验证过程
7.2signedData类型 下列对象标识符(objectidentifier)标识了签名数据的内容类型 id-signedDataOBECTlIDENTIFIER=iso(1member-body2 us(840)rsadsi(1l3549pkces(1pkcs7(72 签名数据的内容类型应有ASN.1SignedData类型: SignedData::=sEQUENCE versionESMSVersion. digestAlgorithmsDigestAlgorithmldentifiers ncapsulatedContentlnfo eneapContentlnfoEn certifcates[o]IMPLICIrCertifieateSetOPTIONAL erls[1]IMPLlIcITRevocationlnfoChoicesOPTIONAL. signerlnfosSignerlnfos rithmldentifiers=SETOFDigestAlgorithmldentifier DgetAlgt Signerlnfos::=sETOFsignerlnfo signedData类型的结构框图,如图1所示
GB/I31503一2015 签名数据 SignediDan 消息摘要算法集合 待签名的内容 拨销状态信息集合 签名者信息果合 证书集合 版本号 digetAgoihms encapContemtnfo certiicates signerlnfos version crs SignedData类型结构框图 图 signedData类型的各个域的意义如下 是语法的版本号
version值取决于certifieates,e(ContentType 和sSignerlnfo. verSiOn verSion n应如下分配: ntAND IEF(certifieatesispresen nt)OR erifteatewihatypeofolherarepreen any erlsispresent)AND (anycrlswithatypeofotherarepresent)) THENversionMUSTbe5 ELSE IFcertifieatesispresentAND anyversion2attributecertificatesarepresent) THENversionMUSTbe4 EL.SE IF(certificatesispresent)AND anyversion1attributecertifcatesarepresent))OR (anySignerlnfostructuresareversion3)OR encapContentlnfoeContentTypeisotherthanid一data) THENversionMUSTbe3 E:I.SEversionMUSTbe1 digestAlgorithms:是消息摘要算法标识符的集合,集合中可有任意个元素,包括零个
每个元 b 素标识了一个或多个签名者所使用的消息摘要算法及其相关参数
该集合旨在列出所有签 名者能使用的消息摘要算法
该集合是无序的,以便单次签名验证
应用中签名若使用了不 在该集合内的摘要算法,则签名验证可能会失败
消息摘要的过程描述,见7.5
enceapContentlnfo;是待签名的内容,包括内容类型标识符以及内容本身
EncapsulatedCon tentInfo类型具体描述,见7.3 eertifleate;是证书集合
预期证书集合包括从信任根或顶级证书机构到signerlnos域中所 有签名者的证书路径
该集合包含的证书可多于这些必要证书,也可包括从两个或多个独立 的顶级证书机构出发的证书路径
如果接收者能通过其他途径获取必要的证书(例如从以前 的证书集合中获取),则可不完全包含这些必要的证书
强烈禁止使用版本1属性证书
:是撤销状态信息集合
预期该集合包含的信息足以确定certifieates域中的证书是否有 crls: 效,但并非必须满足此条件
CRL是撤销状态信息的主要来源
集合中包含的CRL可多于 必要的CRL,也可少于必要的CRL
signerlnfos;是每个签名者信息的集合,可包含任意个元素,包括零个
当该集合含有多个证 书时,若能成功验证给定签名者的其中一个签名,应认为该签名者签名成功
但是,一些应用 环境也可能需要其他的规则
Signerlnfo类型具体描述,见7.4
由于每个签名者可采用不同
GB/T31503一2015 的数字签名技术,而且以后的规范可能会更新语法,所以,所有实现应处理好它们未实现的 Signerlnfo版本
进一步的说,由于所有实现将支持不了每个可能的签名算法,所以,所有实 现在遇到未实现的签名算法时应处理得当
7.3 aeapsulatelcontenttnto类型 EncapsulatedContentlnfo类型中的内容如下表示: EncapsulatedContentInfo=SEQUENCE eContentTypeContentTy ype eContent[0]EXPLICITOCTETSTRINGOPTIONAL ContentType=OBECTIDENTIFIER EncapsulatedContentlnfo类型各个域的意义如下 cContentType;是对象标识符
该对象标识符唯一指定了内容类型 b)eContent:是内容本身,由字节串表示
eContent不需要DER编码
可选择省略EncapsulatedContenno域中的cContent从而能够构造“外部签名”
在有外部签名 的情况下,包含在签名数据的内容类型中的neapsulatedContentlnfo值将缺少签名内容
如果Encap sulatedContentlnfo中没有eContent值,照常计算signatureValue并分配eContentType,同eContent 值存在一样
在没有签名者的情况下,“待签名”的EncapsulatedContentInfo值是无关紧要的
这种情况下,En capsulatedContentlnfo值中的内容类型应是id-data,见第6章,而且EncapsulatedcContentlnfo值中的 内容域应省略
7.4signerlnto类型 每个签名者的信息包含在Signerlnfo类型中 Signerlnfo=SEQUENCE versionESMsVersion sidSignerldentifier" digestAlgorithmDigestAlgorithmldentifier signedAttrs[o]IMPLlICITSignedAttributesOPTIONAL
signatureAlgorithmSignature.Algorithmldentifier signatureSignatureValue unsignedAttrs[1]IMPLICITUnsignedAttributesOPTIONAL nifier=CH(OCE sgnerldent issuerAndSerialNumberlssuerAndSerialNumber subjeetkKeyldentifier[0Subjeetkeyldentifier dAttributes=SETSIZE(1.MAX)OFAttribute sgnse edAttributes=SETSIZE1..MAXOFAttribute Unsigne
GB/I31503一2015 Attribute=SEQUENCE attrTypeOB]ECTIDENTIFIER. attrValuesSETOFAttributeValue AttributeValue:=ANY 0CTETSTRING SignatureValue SignerInfo类型的结构框如图2所示 签名者信息 Signernfo 要签名的属性维会 不子签名的属性维会 签名者ID 摘要算法 签名算法 签名结果 版本号 ersion digestAlgorithm signedAtts gnatureAlgorithm dunsigncdAttrs sId signatur 图2Signerlnfo类型结构框图 signerlnfo类型各个域的意义如下 version:是语法的版本号
若Signerdentifier是issuerAndSerialNumber选项,那么版本应为 若Signerldentifier是subjectKeyldentifier选项,那么版本应为3. sid;指定了签名者的证书,从而指定了签名者的公钥
接收者需要签名者的公钥以验证签名
Signerldentifier提供了两种选择用以指定签名者公钥
issuerAndSerialNumber选项通过签 发者的可辨别名称和证书序列号,标识签名者的证书;subjgetKeyldenifer选项则是通过 密钥标识符,标识签名者的证书
当引用GB/T16264.8一2005证书时,密钥标识符与 GB/T16264.8一2005主体密钥标识符的扩展值相匹配
当引用了其他证书格式时,用于规范 证书格式以及ESMS使用的文档,应包括关于密钥标识符与适当证书域匹配的详细说明
实 er的 郁 iie 现应同时支持Signerldentifie r两种类型的 issuerAndSeriaNumber subiectKeldent ,实现可支持其中一种类型(is issuerAndSerialNumber或sub dentifier时 接收
当生成signerlde jectKeyldentifier),并一直使用这种类型,或者实现也可将两种类型任意混合使用 digestAlgorithm;标识了签名者使用的消息摘要算法以及任何相关参数
消息摘要是通过计 签名属性而 算待签名的内容或者内容加 而得到的消息摘要的计算过程见7.5
消息摘要算法 应包含相关signedData的digestAlgorithms 若签名使用了不在Signed 些签名可能会失败
DatadigestAlgorithms集合里的摘要算法,实现验证这些 signedAttrs:是要签名的属性集合
该域是可选的,但是,如果待签名的EncapsulatedCon tentlnfo值中的内容类型不是iddata,则该域应存在
signedAttributes应是DER编码(见 GB/T16263.12006),即使该结构的其他部分是BER编码(见GB/T16263.12006)
一些 有用的属性类型,如签名时间,见第13章
如果该域存在,则应至少包括下列两个属性 内容类型属性;将待签名的EncapsulatedContentlnfo值的内容类型作为它的值
13.2定 义了内容类型属性
但是,内容类型属性不应作为联合签名-不予签名属性的一部分使 用,联合签名-不予签名属性,见13.5
消息摘要属性;将内容的消息摘要作为它的值
13.3定义了消息摘要属性
sgnatueANgorihm;标识了签名者生成数字签名所使用的签名算法以及任何相关参数 :是数字签名产生的结果,使用了消息摘要和签名者的私钥
签名的详细情况取决于 signature: 采用的签名算法
GB/T31503一2015 unsgnedAtrs;是不予签名的属性集合
该域是可选的
一些有用的属性类型,如联合签名 定义见第13章
SignedAttribute和UnsignedAttribute类型中的各个域意义如下 attrType:表示属性的类型,是一个对象标识符
a b)attrVales;构成属性的值的集合
集合中每个值的类型由attrType唯一确定
attrType可 对集合中条目的个数加以限制
7.5消息摘要计算过程 消息摘要计算过程,是对待签名的内容,或内容加上签名属性,计算消息摘要
无论哪种情况,消息 摘要计算过程的初始输人都是待签名的封装内容的“值”
具体来说,初始输人是cencapContenlnto eContentOcTETsTRING
只有构成eContent(CTETSTRING的值的字节才被输人至消息摘要算 法中,而不包括标签或长度字节
消息摘要计算过程的结果取决于signedAttrs域是否存在
当该域不存在时,其结果就是上述内容 的消息摘要
当该域存在时,其结果是signedAttrs域中signedAttrs值的完整DER编码的消息摘要
因为当存在SignedAttrs值时,其应包括内容类型和消息摘要属性,这两个值间接包含在结果中
内容 类型属性不应包含13.5中定义的联合签名-不予签名的属性
为了计算消息摘要,要对signedAttrs域 进行单独编码
DER编码不使用signedAttrs 中的IMPLICIT[0]标签,但要使用EXPLICISETOEF 标签
也就是说,EXPLlIcITsETOF标签的DER编码,而不是IMPLIcIT[o]标签的DER编码,应同 SignedAttributes值的长度和内容字节一起,包含在消息摘要计算中
当signedAttrs域不存在,只有 构成SignedDataeneapContentlnfoeContentOcTETsTRING的值(例如文件内容)的字节,被输人至 消息摘要计算中
其优势是,待签名的内容的长度不需要在签名生成过程之前知道
尽管消息摘要计算中不包括encapContentlnfoeContentOcTETSTRING标签和长度字节,但它 们还是能通过其他方式得到保护
长度字节通过消息摘要算法的特性得到保护,因为要找到消息摘要 值相等的两个任意长度的不同消息内容是计算上不可行的
7.6签名生成过程 签名生成过程的输人包括消息摘要计算过程的结果以及签名者的私钥
签名生成的细节取决于采 用的签名算法
对象标识符和参数共同规定了签名者采用的签名算法,其包含在signatureAlgorithm 域中
签名者生成的签名结果应编码成字节串,并装载在signature域中
7.7签名验证过程 签名验证过程的输人包括消息摘要计算过程的结果和签名者的公钥
接收者可通过任何途径获得 正确的签名者公钥,但是首选的方法是从SignedData的certifieates域中获取证书,然后从证书中获得 公钥
签名者公钥的选择和验证可基于证书路径验证,也可基于其他外部背景,但不在本标准的范围 内
签名验证的细节取决于采用的签名算法
接收者不应依赖任何由生成者计算的消息摘要值
若SignedDat erlnfo包含 )atasigner signedAttributes,那么内容消息摘要应按照7.5中的描述进行计算
接收者计算的消息摘要值应同 SignedDatasignerlnfo中signedAttributes里的消息摘要属性的值相等,签名才可能有效
若SignedDatasignerlnfo包含signedAttributes,则内容类型属性的值应同SignedDataencapCon- tentlnfoeContent的值相匹配
GB/I31503一2015 封装数据内容类型 概述 封装数据内容类型由任意类型的加密内容以及经过加密的内容加密密钥组成
对接收者而言,加 密内容以及经过加密的内容加密密钥组合成一个数字信封
任意类型的内容都可封装给任意数量的接 收者,封装可针对每个接收者使用任何支持的密钥管理技术 封装数据内容类型的典型应用是,将数据内容或签名数据内容类型,封装在一个或多个接收者的数 字信封里 封装数据通过下列步骤构造而成 a)随机生成特定内容加密算法所使用的内容加密密钥
b) 为每个接收者加密内容加密密钥
加密密钥的细节取决于使用的密钥管理算法,有四种支持 的通用技术 1) 密钥传输;使用接收者的公钥加密内容加密密钥; 2)密钥协商使用接收者的公钥和发送者的私钥生成成对的对称密钥,然后用成对的对称密 钥加密内容加密密钥 3)对称密钥加密密钥:使用以前分发的对称密钥加密密钥,加密内容加密密钥 4)口令:使用来源于口令或其他共享秘密值的密钥加密密钥,加密内容加密密钥
对于每个接收者,经过加密的内容加密密钥和其他接收者相关信息收集在Rceipientlnlo值 中,见8.3
使用内容加密密钥加密内容
加密内容可能需要对内容进行填充,达到某分组大小的整数倍 见8.!
所有接收者的Reeipentnfo值同加密内容一起,构成EnvelopedData值,见8.2
e 接收者通过解密经过加密的内容加密密钥,然后使用恢复出的内容加密密钥解密加密内容,从而打 开了数字信封
本章分为4个部分;第一部分描述了顶层类型EnvelopedData;第二部分描述了每个接收者的信息 类型ReeipientInfo;第三和第四部分分别描述了内容加密以及密钥加密的过程 8.2EnvelopedData类型 下列对象标识符标识了封装数据的内容类型 id-e nvelope yedDataOBJECTIDENTIFIER=iso(1memberbody(2) us(840rsadsi(113549pkcs(1)pkes7(7)3 封装数据的内容类型应有AsN.1EnvelopedlData类型 EnvelopedData=SEQUENCE versionESMSVersion" originatornfo[o]IMPLIcITOriginatorlnfoOPTIONAL recipientlnfosRecipientlnfos, encryptedContentlnfoEncryptedContentlnfo, unproteetedAttrs[1]IMPLICITUnprotectedAttributesOPTIONAL =SEQUENCE Originatorlnfo certs[o]IMPLICITCertifieateSet(OPTIONAL. crl[1]IMPLICITRevocationlnfoChoicesOPTIONAL
GB/I31503一2015 ntlnfo Reipennfos=sETsIZE(..MAx)oFRe ecipient En edContentlnfo=SEQUENCE! ncrypte contentT rypeContentType. contentEne ncryptionAlgorithmContentEne neryptionAlgorithmldentifier, OPTIONAL eneryptedContent[o]IMPLICITEncryptedContent OCTETSTRING EaneryprtedContent UnprotectedAttributes=SETSIZE(1.MAXOFAttribute EnvelopedData类型的结构框图如图3所示 封装数据 EnvelopedData 发起者信息 经过加密的内容 版本号 按收者信息集合 不受保护的属性架命 mgmrno recipicnnfos rncyplcdkcomtcnnto umprotectedAtts VersIon 图3EnveopedData类型结构框图 EnvelopedData类型的各个域的意义如下 version:是语法的版本号
version值取决于originatorlnfo,Reeipientlnfo和unprotectedAttrs
version应如下分配: ntAND Foriginatorlnfoispresee (a anycertifieateswith atypeofotherar epresenmt)OR t) anycrlwithatype ofotherarepresent) THENversionis4 EILSE Foriginatorlnfoispresent)AND anyversion2attributecerifieatesarepresent))OR anyReeipientlnfostrueturesineludepwri)OR anyRecipientlnfostructuresincludeori THENversionis3 EL.SE IForiginatornfoisabsent)AND unprotectedAttrsisabsent)AND allRecipientlnfostructuresareversion0 THENversionis0 ELSEversionis2 originatorlno选择性地提供有关发起者的信息
只有当密钥管理算法要求时,该域才存在
b 该域可能包括证书和CRL erts;是证书的集合
cert、可能包含与数个不同的密钥管理算法相关的发起者证书 1 s可能还包含与发起者相关的属性证书
包含的证书是为了让所有接收者足以 certS certs
GB/I31503一2015 建立从信任根或顶级证书机构出发的证书路径
但是,该集合包含的证书可多于这些必 要证书,也可包括从两个或多个独立的顶级证书机构出发的证书路径
如果接收者能通 过其他途径获取必要的证书例如从以前的证书集合中获取),则也可不完全包含这些必 要的证书
2 crl;是CRL的集合
预期该集合包含的信息足以确定certs域中的证书是否有效,但并 非必需满足此条件
集合中包含的CRL可多于必要的CRL,也可少于必要的CRL
reeipientlnfos;是每个接收者的信息的集合
该集合应至少包含一个元素
encryptedContentInfo;是经过加密的内容信息
d unproteetedAttrs;是未经加密的属性的集合
该域是可选的
一些有用属性类型定义于第 13 Encryptedcontentlnfo类的各个域的意义如下 contentType;表明内容的类型 a bcontentEncryptionAlgorithm:标识了用于加密内容的内容加密算法以及任何相关参数
内容 加密过程,见8.4
对于所有接收者,使用相同的内容加密算法和内容加密密钥
encryptedContent;是加密内容的结果
该域是可选的
如果该域不存在,其预期值应由其他 方式提供
由于recipientlnfos域在eneryptedContentlnfo域的前面,所以EnvelopedData的值能单次处理
8.3Reeipientlnfo类型 8.3.1ReeipientInfo类型概述 每个接收者的信息表示在Reeipientnfo类型中
Recipientlnfo对于每个支持的密钥管理技术都 有不同的格式
对于每个相同加密内容的接收者,可以使用任何密钥管理技术
就所有情况而言,经过 加密的内容加密密钥要传送给一个或多个接收者
因为所有实现将支持不了每个可能的密钥管理算法,所以,所有实现在遇到未实现的算法时应处理 得当
实现应支持密钥传输、密钥协商以及以前分发的对称密钥加密密钥,分别用ktri,,kari和kekri表 示
实现也可支持基于口令的密钥管理,用pwri表示
实现也可支持任何其他密钥管理技术,用ori表 示
因为每个接收者可以采用不同的密钥管理技术,而且以后的规范可能会定义另外的密钥管理技术 所以,所有的实现应处理好ReeipientnfoCHOICE中未实现的选项,且所有的实现应处理好Reeipi- entlnfoCHoICE中其他支持选项的未实现版本,所有的实现还应处理好未实现的或未知的ori选项
Reeipientlnfo:=CHoCE ktriKeyTransRecipientlnfo kari[1]KeyAgreeRecipientlnfo. kekri[2]KEKRecipientlnfo, pwri[3]PasswordRecipientinfo ori[4]OtherRecipientlnfo" )CTETSTRING EncryptedKey 8.3.2KeyTransReeipientlnfo类型 使用密钥传输的每个接收者信息表示在kKeyTnsRceipiealn类型中
每个KeyTnsRcsip entlnfo的实例将内容加密密钥传送给一个接收者 KeyTransRecipientInfo=SEQUENCE 10o
GB/T31503一2015 2 versionESMSVe ersion alwayssetto0or2 tldentifier ridRecripenm nAlgorithmldentiier, keyEneryptionANlgorithmKeyEneryptionAlgor edKe udKeyEarype encrypte ey" Recipientldentifier=CHOICE rAndSerialNumberIssuerAndSerialNumber 1sSuer subjectKeyldentifier[0SubjectKeyldentifier KeyTransRecipientlnfo类型的结构框图如图4所示 密钥传输接收者信息 KeyIransRccipicnlnfo 版本号 接收者D 密钥加密算法 经过加密的内容加密密钥 keyEncryptonAgorthm version nd cncypledKey 图4keyIransReeipientlnfo类型结构框图 KeyTransRecipientlnfo类型的各个域的意义如下 是语达的版本号
著Rceipienldenifier是issuerAndserialNumber选项,则版本应 ersIOn 是0
若Recipientldentifier是subjectKeyldentifier选项,则版本应是2
b rid指定了发送者为了保护内容加密密钥,所使用的接收者的证书或密钥
使用接收者的公钥 对内容加密密钥进行加密
Rkeeipientldentifier提供了两种选择,用以指定接收者的证书,进而指 定接收者的公钥
接收者的证书应包含密钥传输公钥
因此,包含密钥用法扩展的接收者 evEncipherment位生效
issuerAndSerialNumber GB/T16264.8一2005版本3证书,应使ke r选项 通过签发者的可辨别名称和证书序列号,标识接收者的证书; ntifier选项则是通 ;subjectKeylder 过密钥标识符,标识接收者的证书
当引用GBy/"T16264.8一2005证书时,密钥标识符与 GB/T16264.8一2005主体密钥标识符的扩展值相匹配
当引用了其他证书格式时,用于规范 证书格式以及ESMS使用的文档,应包括关于密钥标识符与适当证书域匹配的详细说明
对 于接收者的处理,实现应同时支持这两种用于指定接收者证书的选项
对于发送者的处理,实 现应至少支持其中一种选项
keyEneryptionAlgorithm;标识了用于加密内容加密密钥的密钥加密算法以及任何相关参数
加密密钥过程,见8.5
eneryptedKey;是对内容加密密钥进行加密的结果
8.3.3KeyAgreeReeipientnfo类型 使用密钥协商的接收者信息表示在KeyAgreeReeipientnfo类型中
每个KeyAgreeRecipientlnfo 的实例使用相同的密钥协商算法以及算法参数,将内容加密密钥传送给一个或多个接收者 KeyAgreeReceipientlnfo SEQUENCE" versionESMSVersion. alwayssetto3 torldentifierOrKey orgimtor[o]ExPLcIrorigimai ukm [1]EXPLICITUserKeyingMaterialOPTIONAL yyEneryptionAlgorithmKeyEncryption.Algorithmldentifier key 11
GB/I31503一2015 Re reeipientEnerypte edlKeys .ecipientEncryptedKeys OriginatorldentifierOrKey=CHOICE issuerAndSerialNumberIssuerAndSerialNumber, subjeetKeyldentifier[0]SubjectkKeyldentifier originatorkey[1]OriginatorPubickey inatorPublicKey=SEQUENCE oriein algorithmAlgorithmldentifier, publicKeyBITsTRING RecipientEncryptedKeys: SEQUENCEOFRecipientEncryptedKey RecipientEncryptedKey:=SEQUENCE ridKeyAgreeRecipientldentifier encryprtedKeyEneryptcdKey KeyAgreeRecipientldentifier::=cHoCE issuerAndSerialNumberIssuerAndSerialNumber. Keyldentifier rkeyld[O]IMPLICITReeipient RecipientKeyldentifier=SEQUENCE subjectKeyldentifierSubjeetkeyldentifier dateGeneralizedTimeOPTIONAL, otherOtherKeyAttributeOPTIONAL" SubjeetkKeyldentifier:=OcTETSTRING KeyAgreeReeipient lnfo类型的结构框图如图5所示: 密钥协商接收者信息 KAgreeReeipienmlnfo 版本号 发起者 用户惰钥生成材料 钥加密算法 接收者经加密密钥 ukm lSlOn oginator keyEncrptionAlgoriham rccipienEncrypledKeys 图5KeyAgreeReeipientInio类型结构框图 KeyAgreeRecipientlnfo类型的各个域的意义如下 version;是语法的版本号
版本应一直是3
a originator;是CHOICE类型,有三个选项,指定了发送者的密钥协商公钥
发送者使用相应 的私钥以及接收者的公钥,生成成对密钥
用生成的成对密钥加密内容加密密钥
issuer AndseriaINumber选项通过签发者的可辨别名称和证书序列号,标识接收者的证书,进而标识 了发送者的公钥subjeetkeyldentifier选项则是通过密钥标识符,标识接收者的证书,进而标 识了发送者的公钥
当引用GB/T16264.8一2005证书时,密钥标识符与GB/T16264.8一2005 主体密钥标识符的扩展值相匹配
当引用了其他证书格式时,用于规范证书格式以及ESMs 使用的文档,应包括关于密钥标识符与适当证书域匹配的详细说明
originatorKey选项包括 算法标识符以及发送者的密钥协商公钥
此选项允许发起者匿名,因其公钥未经证明
实现 应同时支持这三种用于指定发送者公钥的选项
12
GB/T31503一2015 ukm;是可选的
在有些密钥协商算法中,发送者提供了UKM,以保证相同两方每一次生成 的成对密钥是不同的
实现应能接受包含ukm域的KeyAgreeRecipenlnfoSEQUENCE. 不支持使用了UKM的密钥协商算法的实现,应处理好有UKM的情况
keyEncryptionAlgorithm;标识了用密钥加密密钥来加密内容加密密钥的密钥加密算法以及 任何相关参数
密钥加密的过程,见8.5
recipientEncr neryptedKeys:包括接收者标识符以及给一个或多个接收者的经加密的密钥
Key AgreeRecipientldentifier是CHOCE类型,有两个选项,它指定了接收者的证书,进而指定了 接收者的公钥,发送者用其公钥生成成对的密钥加密密钥
接收者的证书应包含密钥协商公 钥
因此,含有密钥用法扩展的接收者GB/T16264.8一2005版本3证书中,keyAgreement 位 应生效
内容加密密钥用成对的密钥加密密钥进行加密
isserAndSerialNumber选项通过 签发者的可辨别名称和证书序列号,标识了接收者的证书;RecipientKeyldentifier将在下面描 述
eneryptedKey是加密内容加密密钥产生的结果,加密密钥是使用密钥协商算法生成的成 对密钥加密密钥
实现应同时支持这两种用于指定接收者证书的选项
RecipientKeyldentifier类型的各个域的意义如下 subjectKeyIdentifier;通过密钥标识符标识了接收者的证书
当引用GB/T16264.8一2005证 a 书时,密钥标识符与GB/T16264.8一2005主体密钥标识符的扩展值相匹配
当引用了其他 证书格式时,用于规范证书格式以及ESMS使用的文档,应包括关于密钥标识符与适当证书 域匹配的详细说明
bdate;是可选的
当它存在时,指定了发送者所使用的以前发布的接收者UKM
other;是可选的
当它存在时,该域包括接收者用以找出发送者所使用的公共密钥生成材料 的其他信息
8.3.4KEKReeipientlnfo类型 使用以前分发的对称密钥的接收者信息表示在KEKReeipenlnfo类型中
每个 KEKReeipientlnfo的实例将内容加密密钥传送给一个或多个拥有以前分发的密钥加密密钥的接收者
KEKReeipientlnfo:=sSEQUENCE versionESMSVersion, alwayssetto4 kekidKEKldentifier, keyEncryptionAlgorithmKeyEneryptionAlgorithmldentifier, eneryptedKeyEneryptedKey KEKldentifier=SEQUENCE keyldentifierOcTETsTRING iadrimeoPToNAL dateGeneral otherOtherKeyAttributeOPTIONAL." KEKRecipientInfo类型的结构框图如图6所示 以前分发情钥按收者信息 KEKRecipienlnto 密创ID 版本号 密加密算法 经过加密的内容加密密钥 kekid keyEncryptionAigorithm encryptelkey Version 图6EKRecipientlnfo类型结构框图 13
GB/I31503一2015 KEKReeipealao类型的各个域的意义如下 a)version;是语法的版本号
版本号应一直是4
b)kekid指定了以前分发给发送者以及一个或多个接收者的对称密钥加密密钥
keyEneryptionAlgorithm;标识了用密钥加密密钥来加密内容加密密钥的密钥加密算法以及 任何相关参数
密钥加密的过程,见8.5 tedKey:是用密钥加密密钥对内容加密密钥实施加密所形成的结果
encrypt KEKIdentifier类型的各个域的意义如下 keyldentifier:标识了以前分发给发送者以及一个或多个接收者的密钥加密密钥
a b)date;是可选的
当它存在时,它从一组以前分发的密钥加密密钥集合中指定了一个密钥
other:是可选的
当它存在时,该域包括接收者用以确定发送者所使用的密钥加密密钥的其 他信息
8.3.5PasswordReeipientinfo类型 使用口令或共享秘密值的接收者信息表示在PaswordReipientino类型中
每个PasswordlRe eipientinfo的实例将内容加密密钥传送给一个或多个拥有口令或共享秘密值的接收者
PasswordRecipientlnfo:=SEQUENCE versionESMSVersion, Alwayssetto0 keyDerivationAlgorithm[0]KeyDerivationAlgorithmldentiier O)PTI(ONAl, keyEncryptionAlgorithmKeyEncryptionAlgorithmldentifier, eneryptedKeyEncryptedKey PasswordReeipientinlo类型的结构框图如图7所示 口令拨收者信息 PasswordReeipiceninfo 版本号 密钥衍生算法 密钥加密算法 经过加密的内容加密密钥 version keyDeriationAlgorithm keyEncypionAlgorithm encnyptelkey PasswordReeipientinfo类型结构框图 Passwo1 )rdRecipientinfo类型的各个域的意义如下 ;是语法的版本号
版本应一直是0
VerSIon bkeyDerivationAlgorithm;标识了从口令或共享秘密值衍生出密钥加密密钥的密钥衍生算法以 及任何相关参数
若该域不存在,密钥加密密钥则由外部提供,例如硬件密码令牌,如智能卡
keyEncryptionAlgorithm;标识了用密钥加密密钥对内容加密密钥实施加密时所采用的加密 算法以及任何相关参数
eneryptedKey;是用密钥加密密钥加密内容加密密钥产生的结果
8.3.6otherReeipientlnto类型 使用其他密钥管理技术的接收者信息表示在OtherRecipientInfo类型中
OtherReeipientlnfo类 型允许在以后的文档中阐述除密钥传输、密钥协商,以前分发的对称密钥加密密钥以及基于口令的密钥 管理之外的密钥管理技术
对象标识符唯一标识了这类密钥管理技术
OtherReeipientlnfo::=SEQUENCE oriTypeOBECTIDENTIFIER. 14
GB/T31503一2015 oriValue.ANYDEFINEDYoriType OtherReeipientlnfo类型的各个域的意义如下 riType.标识了密钥管理技术 a boriValue;包括了接收者使用经标识的密钥管理技术所需要的协议数据元
8.4内容加密过程 随机生成想要使用的内容加密算法所需的内容加密密钥
将要保护的数据按照下述方法进行填 充,然后使用内容加密密钥加密填充数据
加密操作在内容加密密钥的作用下,将一个任意的字节串 数据)映射为另一个字节串(密文)
将加密过的数据装人EnvelopedDataencryptedContentlnfoen- eryptedContentOCTETSTRING中
有些内容加密算法假定输人长度是人字节的整数倍,>1
对于这些算法,输人应如下处理:在输 人尾端填充k-(lmod)个字节,每个字节的值均为k-(lmod).!是输人的长度
也就是说,用下 列其中一个字节串对输人进行填充: 01--如果1mod人=k一1 0202--如果lmodk=k一2 更k更k--如果modk=0 由于所有输人都做了填充处理,输人值都已经是分组大小的整数倍,而且没有一个填充串是另一个 填充串的后缀,所以可以明确无疑地将填充部分去除
当且仅当k<256时,该填充方法才是定义良 好的 8.5密钥加密过程 密钥加密过程的输人,即提供给接收者密钥加密算法的值,就是内容加密密钥的值
摘要数据内容类型 摘要数据内容类型由任意类型的内容以及内容的消息摘要组成
摘要数据内容类型的典型应用是,用以提供内容完整性,而且其结果通常是封装数据内容类型的 输人 摘要数据按照以下步骤进行构造: 用消息摘要算法对内容计算消息摘要
a b)将消息摘要算法和消息摘要同内容一起收集在DigestedData值中 接收者通过比较收到的消息摘要与自己独立计算的消息摘要是否相等进行验证
下列对象标识符标识了摘要数据内容类型: iddigestedDataOBECTIDENTIFIER=iso(1) memberbody(2) us(840rsadsi113549 <(1pkcs7(75 pke 摘要数据内容类型应有ASN.1DigestedData类型: gestedData sEQUENCE versionESMSVersion, orithmldentifier, digestAgorithmDigest sAlgor pContentlnfoEn edContentlnfo. encap6 ncapsulate digestDigest 15
GB/I31503一2015 Digest=OcTETsTRING sdData类型的结构框图如图8所示: Digested 摘要数据 DigestedData 摘要算法 版本号 摘要计算的内容 摘要计算的结果 ersion digstAgorithm neapContemnnlo digestencrypledKey 图 8 DigestelData类型结构框图 DigestedData类型的各个域的意义如下: version;是语法的版本号
若封装内容类型是iddata,则版本号应是0;此外,版本号应是2
b digestAlgorithm;标识了计算内容摘要所使用的消息摘要算法以及任何相关参数
消息摘要 过程与8.5中在没有签名属性情况下的摘要过程相同
c eneapContentlnfo;是计算摘要的内容,见8.3
d digest:是消息摘要过程产生的结果
digestAlgorithm域,encapContentlnfo域和digest域的顺序关系使得能够以单次通过的方式处理 DigestedData值
10 加密数据内容类型 加密数据内容类型由任何类型的加密内容组成
不同于封装数据内容类型,加密数据内容类型既 没有接收者也没有经过加密的内容加密密钥
密钥应通过其他方式管理
加密数据内容类型的典型应用是,为本地存储加密数据内容类型的内容,加密密钥可能来源于 口令
下列对象标识符标识了加密数据内容类型 id-e tedDataOBJECTIDENTIFIER=iso(1me ember-body(2) -encrypte us(840rsadsi(l13549)pkes(1pkcs7(7)6 tedData类型: 加密数据内容类型应有AsN.1lEnerypt SEQUENCE EneryptedData versionESMSVersion. encryptedContentlnfoEncr tedContentlnfo. rypt unproteetedAttrs[1]IMPLICITUnprotectedAttributesOPTIONAL ptedData类型的结构框图如图9所示: Eaerypr 加密数据 EncryplcdData 版本号 经过加密的内容 不受保护的属性 yersion cncryptedContenno umprotccltcdAtrs g 图 PmerpleDaa类型结构框圈 EneryptedDauta类型的各个域的意义如下 version:是语法的版本号
若un rotectedAttrs不 a lnproteetedAttrs存在,则版本应是2
若npr 16
GB/T31503一2015 存在,则版本应是0
beneryptedContentlnfo;是经过加密的内容信息,见8.2. unproteetedAttrs;是未经加密的属性的集合
该域是可选的
一些有用属性类型见第13章
鉴别数据内容类型 11 11.1概述 鉴别数据内容类型由任意类型的内容,MAc以及经加密的鉴别密钥组成
接收者需要用MAc和 经加密的鉴别密钥以验证内容的完整性
可以为任意数量的接收者保护任意类型的内容的完整性 鉴别数据按照下列步骤进行构造: a)随机生成某个特定消息鉴别算法所使用的消息鉴别密钥
b)为每个接收者加密消息鉴别密钥
加密的细节取决于使用的密钥管理算法
对每个接收者,经加密的消息鉴别密钥以及其他与接收者相关的信息包含在Recipientlnfo值 中,见8.3
发起者使用消息鉴别密钥,对内容计算MAC值
若发起者除内容之外还要鉴别其他任何信 息,见11.3,先对内容计算消息摘要,然后使用消息鉴别密钥对内容的消息摘要以及其他信息 做鉴别运算,结果就是“MAc值” 11.2AuthenticatedDat类型 下列对象标识符标识了鉴别数据内容类型: idctauthDataOBJECTIDENTIFIER:=iso(1 nmemberbody(2) us(840)rsadsi(113549)pkcs(1)pkcs-9(9)smimme(16)ct(12 鉴别数据内容类型应有ASN.1AuthenticatedData类型 AuthenticatedData=SEQUENCE versionESMSVersion. rInfoOPTIONAL, originatorlafo[o1MPL.cIToriginator recipientlnfosRecipientlnfos macAlgorithmMessageAuthenticationCodeAlgorithm, digestAlgorithm[1DigestAlgorithmldentifier)PTI(ONAL pContentlnfoEncapsulatedContentInfo. encap authAt trs[2]IMPLICITAuthAttributesOPTIONAL. macMessageAuthenticationCode, unauthAttrs[3]IMPLIcCITUnauthAttributesOPTIONAL AuthAttributes:=SETSIZE1.MAXOFAttribute UnauthAttributes:=SETSIZE(1..MAX)OFAttribute MessageAuthenticationCode::=OCTETsTRING AuthenticatedData类型的结构框图如图10所示 17
GB/I31503一2015 鉴别效据 AuthenticatedData 发起者信息 接收者信息 MAC算法 摘要算法 鉴别属性消息鉴别码不予鉴别的属性 版本号 待鉴别的内容 vcrsion originatorlnfo recipientlnfos nacAlgorithmigcstAlgorithmcncapContentlnfo authAttrs unauthAttrs 图10AuthenticatedData类型结构框图 AuthenticatedData类型的各个域的意义如下 :是语法的版本号
版本应如下分配: erSion; Foriginatorlnfoispresent)AND ntOR ((a anycertifieateswitha ofotherarepresent atype" anycrlswithatypeofother arepresent)) THENversionis3 ELSE F orlnfoispresentAND (originator 9 2attributecertifieatesarepresent) anyversion THENversionis1 ELSE versionis0 originatorlnfo;选择性地提供关于发起者的信息
只有当密钥管理算法要求时,该域才存在
该域可能包括证书、属性证书和CRL,见8.2
reeipientlnfos;是每个接收者的信息的集合,见8.2
该集合应至少包含一个元素
d maeAlgorithm;是 MAC C算法的标识符
它标识了发起者所使用的MAC算法以及任何相关 参 数
macAlgorithm域的位置有利于接收者单次处理
digestAlgorithm;标识了当存在鉴别属性时,对封装过的内容计算消息摘要所使用的消息摘要 算法以及任何相关参数
消息摘要过程,见11.3
digestAlgorithm域的位置有利于接收者进 行单次处理
如果存在digestAlgorithm域,那么authAttrs域也应存在
encapContentlnfo:是待鉴别的内容,见7.3. authAttrs;是鉴别属性的集合
authAttrs结构是可选的,但是,如果待鉴别的Encapsulated- ContentInfo值的内容类型不是iddata,那么它应存在
AuthAttributes结构应是DER编码, 即使该结构的其他部分是BER编码
些有用属性类型定义于第13章
如果authAttrs域 此 存在,那么它应至少包括下列两个属性 内容类型属性:将待鉴别的EncapsulatedContentInfo值的内容类型作为它的值
13.2定 义了内容类型属性
消息摘要属性;将内容的消息摘要作为它的值
13.3定义了消息摘要属性
2 hmae;是消息鉴别码
;是不予鉴别的属性的集合
该城是可选的
至今为止,还没有属性是定义成术 i unauthAttrs 鉴定属性使用的,但是有一些其他有用属性类型定义于第13章
11.3MAC的生成 MAC计算过程是对待鉴别的内容,或对发起者的鉴别属性同待鉴别的内容的消息摘要一起,计 算MAC 如果authAttrs不存在,MAC计算过程的输人就是encapContentlnfoeContent0CTETSTRING 18
GB/T31503一2015 值
只有构成eContentOCTESTRING值的字节才是MAC算法的输人;而删去了标签和长度字节 其好处是在MAC生成过程之前,不需要知道待鉴别的内容的长度
如果authAttrs存在,应包括内容类型属性和消息摘要属性,见13.2和13.3,而且MAC计算过程 的输人是authAttrs的DER编码
为了MAC的计算,要对authAttrs域单独执行编码
DER编码使 用EXPLICITSETOF标签,但不使用authAttrs域中的IMPLICIT[2]标签
也就是说,SETOF标签 的DER编码,而不是IMPLICIT[2]标签的DER编码,同authAttrs值的长度和内容字节一起,包含在 MAc计算中
消息摘要计算过程对待鉴别的内容计算消息摘要
消息摘要计算过程的初始输人是待鉴别的封装 内容的“值”
具体来说,输人是encapContentlnfoeContent0OCTE:TsTRING
只有构成encapCon tentInfoeContentOcTETsTRING的值的字节才被输人至消息摘要算法中,而不包括标签或长度字 节
其好处是不需要预先知道待鉴别的内容的长度
尽管消息摘要计算中不包括encapContentlnfo eContentOcTETSTRING的标签和长度字节,但它们还是能通过其他方式得到保护
长度字节通过 消息摘要算法的特性得到保护,因为要找到消息摘要值相等的两个任意长度的不同消息内容是计算上 不可行的
MAC计算过程的输人包括上面定义的MAC输人数据以及recipientlnfo结构中传送的鉴别密钥
MAC计算的详细情况取决于使用的MAC算法(如杂凑运算消息鉴别码)
发起者使用的MAC算法由 对象标识符和任意参数共同指定,它们都装载在macAlgorithm域中
最后,发起者生成的MAC值被 编码成字节串,并装人mac域中
11.4MAC的验证 MAC验证过程的输人包括输人数据(根据authAttrs、域是否存在确定输人数据,见11.3),以及 reeipientlnfo结构中传送的鉴别密钥
MAC验证过程的细节取决于使用的MAC算法
接收者不应依赖任何由发起者计算的MAC值或消息摘要值
按照11.3所述对内容进行鉴别
如果发起者包括鉴别属性,那么按照11.3所述对authAttrs的内容进行鉴别
接收者计算的MAc值 应与mac域的值相等,鉴别才算成功
类似的,当authAttrs域存在时,接收者计算的内容消息摘要值 应与authAttrs消息摘要属性中的消息摘要值相等,鉴别才算成功
如果AuthentieatedData包含authAttrs,那么内容类型属性值应要与AuthentieatedDataencap ntentInfoeContentType值相匹配
12 有用类型 12.1 算法标识符类型 所有算法标识符都具有相同的类型:Algorithmldentifer
Algorithmldenifier的定义来自 GB/T16264.82005
每个算法类型都有很多其他的选择
12.1.1DigestAlgorithmldentifier DigestAlgorithmldentifier类型标识了消息摘要算法
消息摘要算法将一个字节串(内容)映射为 另一个字节串(消息摘要. DigestAlgorithmldentifier:=Algorithmldentifier 12.1.2sigmatureAlgorithmldentifier SignatureAlgorithmdentifier类型标识了签名算法,而且还可以标识消息摘要算法
签名算法支 19
GB/I31503一2015 持签名的生成和验证操作
签名生成操作使用了消息摘要和签名者的私钥以生成签名结果
签名验证 操作使用了消息摘要和签名者的公钥以确定签名结果是否有效
通过上下文决定使用哪种操作
Algorithmldentifier SgnatureANleorithmldenifter 12.1.3KeyEnerypt ptiomAlgorithmldentifier KeyEneryptionAlgorithmldentifier类型标识了用于加密内容加密密钥的密钥加密算法
加密操 作在密钥加密密钥的作用下,将一个字节串(密钥)映射为另一个字节串(经加密的密钥
解密操作是 加密操作的逆
通过上下文决定使用哪种操作
加密和解密操作的细节取决于使用的密钥管理算法
有四种支持的密钥管理技术:密钥传输、密钥 协商、以前分发的对称密钥加密密钥以及由口令衍生的对称密钥加密密钥
Algorithmldentifier KeyEneryptionAlgorithmldentifier 12.1.4ContentEncryptionAlgorithmldentifier cmemEmeypionANlkeihmltenf类狠标识了内容加密算法
内容加恍算法支持加密和解常 操作
加密操作在内容加密密钥的作用下,将一个字节串(明文)映射为另一个字节串(密文)
解密操 作是加密操作的逆
通过上下文决定使用哪种操作
ContentEncryptionAlgorithmldentifier: Algorithmldentifier 12.1.5MessageAuthenticationCodeAlgorithm MessageAuthenticationCodeAlgorithm类型标识了消息鉴别码(MAC)算法
MAC算法支持生成 和验证操作
MAC生成和验证操作使用相同的对称密钥
通过上下文决定使用哪种操作
MessageAuthentication(CodeAlgorithm=Algorithmldentifier 12.1.6KeyDerivatiomAlgorithmldentifier KeyDerivationAlgorithmldentifier标识了密钥衍生算法
密钥行生算法将口令或共享秘密值转变 为密钥加密密钥
KeyDerivationAlgorithmldentifier::=Algorithmldentifer 12.2其他有用类型 本条定义了在本标准其他地方使用的类型
下列类型没有特定的顺序
12.2.1Re0eationlnfoChoices RevocationlnfoChoices类型给出一组撤销状态信息选项
预期该集合包含的信息足以确定与该集 合相关的证书和属性证书是否已被撤销
但是,集合中包含的撤销状态信息也可多于必要的信息,或者 少于必要的信息
GB/T16264.8一2005CRL是撤销状态信息的主要来源,但也可支持任何其他撤销 信息格式
该类型提供了OHh herRevocationlnfoFormat选项,用以支持任何其他撤销信息格式,不需要 对ESMS进行修改
例如,可使用OtherRevocationlnfoFormat以支持在线证书状态协议
cerifreatelist可能包括cRL..权威机构撤销列表,增量cRL或属性证书撒销列表
所有这些列 表共用同一语法
CCertifcatelList类型给出了CRI
CRI规定于GB/T16264.8一2005中,并且为了Internet中的使 用,将其描述于GB/T20518一2006中 CertifieatelLis的定义来自GB/T16264.8一2005 RevocationlnfoChoices=SETOFRevocationlnfoChoice 20
GB/T31503一2015 ReocationlnfoChoc=CHocE0 cerlCertificateList, other[1]IMPLICITOtherRevocationlnfoFormat OtherRevocationlnfoFormat=SEQUENCE otherRevInfoFormat tOBCTIDENTIFIER otherRevlnfoANYDEFINEDBYotherRevInfoFornat 12.2.2CertifieateChoices CertificeateChoiees类型给出了GB/T16264.8一2005证书.GB/T16264.8一2005版本1属性证书 2005版本2属性证书,或任何其他证书格式
GB/T16264.8- GB/T16264.8一2005证书的lnternet 概要规定于GB/T205182006
该类型提供了 ohrReoeatiolndoFomit选项,用以支持任何其他 证书格式,不需要对EsMS进行修改
Certificate的定义来自GB/T16264.82005
AttributeCertificate的定义来自GB/T16264.82005
CertificateChoices CHOICE certificateCertificate extendedCertificate[0]IMPLICITExtendedCertiicate, Obsolete 1AttrCert[1]IMPLIcITAttributeCertifieateV1, Obsolete 2AttrCert[2]IMPLIcITAttributeCertificateV2 other[3]IMPL.lIcITOtherCertificateFormat OtherCertificateFormat:=sEQUENCE otherCertFormatOBEcIDENTIFIER. otherCertANYDEFINEDBYotherCertFormat 12.2.3CertifieateSet CertificateSet类型提供了一组证书
预期该集合足以包括从信任根或顶级证书机构到所有与该 集合相关的发送者的证书路径
但是,该集合包含的证书也可多于或少于这些必要证书
证书路径的精确定义不在本标准的范围之内
GB/T20518一2006提供了对GB/T16264.8一2005 证书的定义
有些应用可能对证书路径的长度有上界限制;其他一些应用可能对证书路径内证书的主 体和签发者强加某些关系
CertifcateSet=SETOFCertificateChoices 12.2.4 AndSerialINumber Isser IsuerAndSerialNumber类型通过证书签发者的可辨别名和签发者签发的证书序列号,标识了证 书,从而也标识了实体和公钥
Name的定义来自GB/T16264.2一2008,而CertificeateSerialNumber的定义来自GB/T16264.8一2005.
IssuerAndSerialNumber::=SEQUENCE issuerName, serialNumberCertificateSerialNumber 21
GB/I31503一2015 CertificateSerialNumber:=INTEGER 12.2.5ESMsVersionm ESMsVe 'ersion类型给出了语法版本号,目的是与该规范以后的版本能兼容 ESMSVersion:=INTEGER v0(o),v1(1).v2(2),v3(3),v4(4).v5(5) 12.2.6UserKeyingMaterial UserKeyingMaterial类型对UKM给出了相应的语法
有些密钥协商算法要求UKM以保证每次 相同两方生成的成对密钥都是不同的
发送者提供UKM与特定密钥协商算法一起使用 ingMterial::- UserKeyi OCTETSTRING 12.2.7otherkeyAttribute OtherkKeyAttribute类型对其他密钥属性所包含的内容给出了相应的语法,这些密钥属性允许接 收者选择发送者所使用的密钥
属性对象标识符应与属性本身的语法一起注册
由于该结构可能会有 碍互操作性,所以应避免使用
OtherkKeyAttribute:=SEQUENCE keyAttrldOB]ECTIDENTIFIER. keyAttrANYDEFINEDBYkeyAttrldOPTIONAL. 有用属性 13 概述 13.1 本章定义了签名数据、封装数据、加密数据和鉴别数据中使用的属性
Attribute的语法与 GB/T16264.22008和GB/T20518一2006保持兼容
下列属性没有特定的顺序
13.2内容类型 内容类型属性类型规定了签名数据或鉴别数据中Contentlnfo的内容类型
只要签名数据中存在 签名属性或鉴别数据中存在鉴别属性,内容类型属性类型就应存在
内容类型属性值应与签名数据或 鉴别数据中的encapConten eContentType值相匹配
tnlnlo. 内容类型属性应是签名属性或鉴别属性,不应是不予签名的属性或不予鉴别的属性,或不受保护的 属性
下列对象标识符标识了内容类型属性: d-contentTypeOBECTIDENTIFIER:=iso(1member-body(2 us(840)rsadsi(113549)pkcs(1pkcs9(9)3 内容类型属性值具有AsN.1ContentType类型: ContentType=oBIBcTIDENTIFIER 尽管语法定义为一组AttributeValue的集合,但是内容类型属性应只有单个属性值,不允许有0个 或多个AttributeValue实例
nerlnfo中 signdAtrbte和AuhAtrlbuts语法分别定义为一组AribesVae的集合,sn 的Signe nedAttributes不应包括多个内容类型属性的实例
相同地,AuthenticatedData中的AuthAt tributes 也不应包括多个内容类型属性的实例 心
GB/T31503一2015 13.3消息摘要 apContentInfoeContent 消息摘要属性类型规定了签名数据中待签名的或鉴别数据中待鉴别的encap 0CTETSTRING,见7.5和ll.3
对于签名数据,使用签名者的消息摘要算法计算消息摘要
对于鉴 别数据,则是使用发起者的消息摘要算法计算消息摘要
在签名数据中,当存在任何签名属性时,也应存在消息摘要签名属性类型
在鉴别数据中,当存在 任何鉴别属性时,也应存在消息摘要鉴别属性类型 消息摘要属性应是签名属性或鉴别属性,不应是不予签名的属性、不予鉴别的属性或不受保护的 属性 下列对象标识符标识了消息摘要属性 idmes ssageDigesOBJECTIDENTIFIER=iso(1member-body(2) us(840)rsadsi(113549)pkces(1pkcs9(9)4 消息摘要属性值具有ASN.1MessageDigest类型: MessageDigest=OCTETsTRING 尽管语法定义为一组AttributeValue的集合,但是消息摘要属性应只有单个属性值,不应有0个或 多个AttributeValue实例
sgnedAtrbues和AhAtrbuue语法分别定义为一组AtrbuteValue的集合
sgaelnfo中的 SignedlAtribute只包括单个消息摘要属性的实例
相同地.AuhentieatedData中的AhAtribute也 只包括单个消息摘要属性的实例
13.4签名时间 签名时间属性类型规定了签名者执行签名过程据称的时间
签名时间属性类型是为签名数据中的 使用而提供的 签名时间属性应是签名属性或鉴别属性,不应是不予签名的属性、不予鉴别的属性或不受保护的 属性
下列对象标识符标识了签名时间属性 idsigningTimeOBECTIDENTIFIER:=iso(1memberbody(2) us(840rsadsi(113549)pkes(1pkes9(9)5" 签名时间属性值具有AsN.1SigningTime类型 SigningTime:=Time Time=CH(O1CE utcTimeUTCTime generalizedTime(GeneralizedTime" 注Time的定义与GB/T16264.8一2005中的定义相符
1950年1月1日到2049年12月31日(包括)之间的时期应编码成UTCTime
任何年份在1950年 AT 之前或2049年之后的日期应编码成G eneralized imea UTCTime值应用协调世界时以前称为格林威治时间(GMT)和祖鲁时钟时间)表示,且应包含秒 也就是说,时间值表示为YYMMDDHHMMSSZ),无论秒值是否为0
半夜十二点应表示成“YYM MDD000000Z”
世纪信息是隐性的,而且应如下确定 当YY大于或等于50,年份应解释成19YY
且 b当YY小于50,年份应解释成20YY
GeneralizedTime值应用协调世界时表示,且应包含秒即,时间值表示为YYYYMMDDH 23
GB/I31503一2015 HMMSSZ),无论秒值是否为0
GeneralizedTime值不应包含分数形式的秒值
尽管语法定义为一组AttributeValue的集合,但是签名时间属性应只有单个属性值,不应有0个或 多个AttributeValue实例
SignedAtributes、和AuhAttrlbutes语法分别定义为一组AttribwuteValue的集合
signe erlnfo中 的SignedAttributes不应包括多个签名时间属性的实例
相同地,AuthentieatedData中的AuthAt tributes也不应包括多个签名时间属性的实例
没有针对签名时间正确性的要求,是否接受据称的签名时间由接收者自行决定
但是,有些签名 者,如时间戳服务器,被认为是绝对可信的
13.5联合签名 联合签名属性类型规定了一个或多个对签名数据的Signerlnfo中签名结果字节串的内容字节所进 行的签名
也就是说,消息摘要是对构成字节串的值的字节进行计算,而不包括标签或长度字节
因 此,联合签名是在另一个签名结果上再进行联合签名(串行签名. 联合签名属性应是不予签名的属性,不应是签名属性,鉴别属性、不予鉴别的属性或不受保护的 属性
下列对象标识符标识了联合签名属性: OBJECTIDENTIFIER=iso(1member-body(2 id-countersignature us(840)rsadsi(ll3549pkcs(1pkcs9(96 联合签名属性值具有AsN.1Countersignature类型 Countersignature Signerlnfo 对于普通证书而言,Countersignature值与SignerInfo值具有相同的含义,除了 a)signedAtributes域不应包含内容类型属性,联合签名没有内容类型
如果signedAttributes域包含任何其他属性,则应包含消息摘要属性
b 消息摘要过程的输人是与该属性相关的Signerlnfo值中signatureValue域的DER编码的内 容字节
联合签名属性可有多个属性值
其语法定义为一组AttributeValue的集合,且应有一个或多个 AttributeValue实例 UnsignedAtribus语法定义为一组AtributeValue的集合
sgnerlnlo中的UnsignedlAtrlue可能 包含多个联合证书属性的实例
由于联合证书具有Signerlnfo类型,所以它本身也可包含联合证书属性
因此,可以构造一个任意 级数的联合签名 ASN.1模块 14 ESMISAsN.1模块 14.1 CryptographicMessageSyntax2004 iso(1member-body(2us(840rsadsi113549 pkcs(1pkcs-9(9smime(16nmodules(o)CMs-2004(24 DEFINITIONSIMPLICITTAGS:- BEGIN EXPORTSAll 2
GB/T31503?2015 Thetypesand valuesdefinedinthimoduleare esporedfor use intheotherAsN.1modules.oherapplieaionsmayusethemior theirownpurposes. IMPORTS fromRFC5280 ApendixA.1 lmports AlgorithmldentiierCertificateCertificateList CertiicateSerialNumberName FROMPKIX1Explieit88 iso(1identified-organization(3dod(6 internet(1seeurity(5)mechanisms(5)pkix(7 mod(0pkixl-explicit(18) ImportsfromRFC3281AppendixB AttributeCertificate FROMPKIXAttributeCertificate iso(1identified-organization(3dod(6) iinternet(1security(5mechanisms(5pkix7 mod(0attribute-cert(12 ImportsfromSectionl4.2ofthisdocument AttributeCertificateV1 FROMAttributeCertificateVersionl iso(1member-body(2)us(840)rsadsi(113549) pkes(1pkes-9(9)smime(16nmodules(0) v1AttrCert(15); EncryptionandSignatureMessageSyntax Contentlnfo=SEQUENCE" contentTypeContentType. content[0]EXPLICITANYDEFINEDBYcontentType :=OBECTIDENTIFIER ContentType SignedlData=sEaUENCE versionESMSVersion digestAlgorithmsDigestAlgorithmldentifiers" edContentlnfo eneapContentlnfoEn ncapsulate SetOPTIONAL certificeates[o]IMPLICITCertifieates crls[1]IMPLICITRevocationlnfoChoicesOPTIONAL. signernfossienerlnos 25
GB/I31503?2015 stA lgorithmdentifers:=SETOFDigestAlgorithmldentifier Digest rlnfos=SETOFSignerlnfo Signe EncapsulatedContentInfo=SEQUENCE eContentTypeContentType eContent[oEXPLICITOCTETSTRINGOPTIONAL SignerInfo SEQUENCE versionESMSVersion. sidSignerdentifier digestAlgorithmDigestAlgorithmldentifier signedAttrs[o]IMPLICITSignedAttributesOPTIONAL signatureAlgorithmSignatureAlgorithmldentifier signatureSignatureValue unsignedAttrs1IMPIICITUnsignedAttributesOPTIONAL signerldentifier::=CHOcCE issuerAndSerialNumberIssuerAndSerialNumber subjeetKeyldentifier[0]SubjectKeyldentifier SignedAttributes::=sETs1zE(1...MAx)OFAttribute UnsignedAttributes:=sETS1ZE(1..MAx)OFAttribute Attribute::=SEQUENCE attrTypeOBECTIDENTIFIER. attrValuesSETOFAttributeValue AttributeValue:=ANY SignatureValue:=OcC'TETSTRING EmveopedData:=sEroUENcE versionESMSVer ersion originatorlnfo[o]IMPLICITOriginatorlnfoOPTIONAL recipientlnfosRecipientlnlos, encryptedContenlnloEncryprteldCcontenlno. unproteetedAttrs[1]IMPLICITUnproteetedAtributesOPTIONAL orlnfo=SEQUENCE Origimator [o]IMPLICITCertifieateSetOPTIONAL certS 26
信息安全技术电子文档加密与签名消息语法GB/T31503-2015
电子文档是指以数字形式存储的文档,如电子邮件、电子合同等。与传统纸质文档相比,电子文档更容易被篡改和窃取。因此,在电子文档传输和存储过程中,必须使用加密和签名技术来保证信息的机密性、完整性和可靠性。
加密技术是将明文信息通过特定的算法转换为密文信息,使其只能被授权方解密读取。常见的加密技术有对称加密和非对称加密。对称加密使用相同的密钥进行加密和解密,速度快但存在密钥分发问题;非对称加密使用公钥加密、私钥解密,安全性高但速度较慢。在电子文档加密中,一般采用混合加密方式,即使用对称加密算法加密数据,再使用非对称加密算法加密对称加密算法所使用的密钥。
签名技术是为了保证信息的完整性和可靠性而产生的一种技术。签名技术使用私钥生成签名,并将签名和原始文档一起传输给接收方。接收方使用相应的公钥验证签名是否正确,从而判断文档是否被篡改过。在电子文档签名中,通常需要使用数字证书来实现身份认证和签名验证。
消息语法GB/T31503-2015是我国国家标准化管理委员会发布的一项标准,主要用于规范电子文档加密和签名过程中消息格式的交换。该标准定义了一组XML格式的消息元素,用于描述加密和签名操作所需的参数和结果。通过使用消息语法GB/T31503-2015,可以实现不同软件系统间的互通性。
在电子文档加密与签名过程中,需要根据具体需求选择合适的加密算法、签名算法以及消息语法。同时,还需要注意密钥管理、数字证书的申请和管理等具体实现细节,以保证信息安全。