1、望ICS 35.040 L 80 共和国国家标准中华人民GB/T 31503-. 2015 信息安全技术电子文档加密与签名消息语法. , Information security technology一Encryption and signature message syntax for electronic document 2016-01-01实施2015-05田15发布 . 发布中华人民共和国国家质量监督检验检蛮总局中国国家标准化管理委员会h战俨TU町飞Mr盟lfe衣辄川agu币鸥GB/T 31503-2015 目次前言. . . . I 引言. . . . rr l 范围. . 2 规
2、范性引用文件-3 术语和定义. . . . 4 缩略语. . 5 通用语法. . . . . . . . 2 6 数据内容类型. . . . . . 2 7 签名数据内容类型. . . . 2 8 封装数据内容类型. . . . . . . . . . . . . 8 9 摘要数据内容类型. 10 加密数据内容类型. . . . . 16 11 鉴别数据内容类型. . . 12 有用类型. . . . . . . 19 13 有用属性. . . . . . 22 14 ASN.1摸块. . . . 24 15 安全事宜. . . . . . . . . . . . 33 GB/T 31503-
3、2015 前言本标准按照GB/T1.1-2009给出的规则起草。本标准由全国信息安全标准化技术委员会(SAC/TC260)提出并归口。本标准起草单位z中国科学院数据与通信保护研究教育中心、北京数字认证股份有限公司、上海普华诚信信息技术有限公司、赞嘉电子科技有限公司。本标准主要起草人z向继、汪娟、王雷、荆继武、高能、林璋锵、管乐、马存庆、查达仁、詹榜华、梁佐泉、张嘉纯。I GB/T 31503-2015 引本标准主要参考IETF(互联网工程特别工作组)RFC5652文件制定。本标准规定了用于电子文档密码保护的封装语法。它支持数字签名和加密。该语法允许多重封装,一个封装信封可以嵌套在另一个封装信封
4、之内,同样,一方可以对以前封装过的数据再进行数字签名。它也允许任意属性,如签名时间,同消息内容一起签名,并且提供其他属性如联合签名,同签名关联在一起。本标准描述的电子文档加密与签名消息语法支持各种基于证书的密钥管理架构。该语法使用抽象语法记法ASN.l,并采用BER编码生成值。这些值通常表示成字节串的形式。虽然很多系统都能够可靠地传输字节串,但仍有很多电子邮件系统不行。本标准不提供字节串编码机制以保证这种环境下的可靠传输。E GB/T 31503-2015 信息安全技术电子文档加密与签名消息语法1 范围本标准规定了电子文档加密与签名消息语法,此语法可用于对任意消息内容进行数字签名、摘要、鉴别或
5、加密。本标准适用于电子商务和电子政务中电子文档加密与签名消息的产生、处理以及验证。2 规范性引用文件下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GB/T 16262.1-2006 信息技术抽象语法记法一(ASN.l)第1部分z基本记法规范GB/T 16263.1-2006信息技术ASN.1编码规则第1部分z基本编码规则(BER)、正则编码规则(CER)和非典型编码规则(DER)规范GB/T 16264.2-2008信息技术开放系统互连目录第2部分z模型GB/T 16264.8一200
6、5信息技术开放系统互连目录第8部分z公钥和属性证书框架GB/T 19714-2005信息技术安全技术公钥基础设施证书管理协议GB/T 20518-2006信息安全技术公钥基础设施数字证书格式RFC 3281 用于授权的因特网属性证书框架(AnInternet Attribute Certificate Profile for Au thorization) RFC 5280 因特网X.509公钥基础设施证书和证书撤销列表轮廓(InternetX.509 Public Key ln frastructure Certificate and Certificate Revocation List
7、(CRL) Profile) 3 术语和定义3.1 3.2 GB/T 19714-2005、GB/T20518-2006界定的以及下列术语和定义适用于本文件。算法标识符algorithm identifier 通过对象标识符标识算法的类型。属性attribote 包括属性类型以及一个或多个属性值,属性类型由对象标识符指定。4 锚暗语下列缩略语适用于本文件。ASN.1:抽象语法记法(Abstract Syntax Notation one) BER:基本编码规则(BasicEncoding Rules) 1 GB/T 31503-2015 CRL:证书撤销列表(CertificateRevoca
8、tion List) DER:可辨别编码规则(DistinguishedEncoding Rules) ESMS:电子文档加密与签名消息语法(Encryptionand Signature Message Syntax for Electronic Document) MAC:消息鉴别码(MessageAuthentication Code) PRNG:伪随机数生成器(Pseudo-randomNumber Generator) UKM:用户密钥生成材料(UserKeying MateriaD 5 通用语法下列对象标识符(objectidentifier)标识了内容信息类型zid-ct-con
9、tentInfo OSJECT IDENTIFIER : = iso(1) member-body(2) us(840) rsadsf(113549) pkcs(l) pkcs9(9) smime(6) ct(1) 6 ESMS将内容类型标识符与内容关联起来。语法中应含有ASN.l(见GB/T16262.1-2006) Con tentInfo类型zContentInfo :口SEQUENCE contentType ContentType, content oJ EXPLICIT ANY DEFINED BY contentType OPTIONAL ContentType : = OBJE
10、CT lDENTIFIER ContentInfo中各个域的意义如下za) contentType:表示关联内容的类型,是一个对象标识符,由权威机构分配,用于定义内容类型的唯一整数串。b) content表示关联内容。内容的类型由contentTyp唯一确定。本标准定义了6种内容类型z数据、签名数据、封装数据、摘要数据、加密数据以及鉴别数据。如果在其他文挡中定义了其他内容类型,定义的ASN.1类型不应是CHOICE类型。6 数据内容类型下列对象标识符标识了数据内容类型zid-data OBJECT IDENTIFIER : = iso(l) member-body(2) us(840) rsa
11、dsi(113549) pkcs(l) pkcs7(7) 1 数据内容类型用于表示任意字节串,例如ASCII文本文件E具体应用具体解释。这类串不需要任何的内部结构,它们可能有自己的ASN.1定义或其他结构。数据内容类型一般装在签名数据、封装数据、摘要数据、加密数据或鉴别数据的内容类型中。7 签名鼓据内容类型7.1 概述签名数据内容类型包括任何类型的内容,以及零个或多个签名结果。任意数量的签名者可并行地对任意类型的内容进行签名。2 GB/T 31503-2015 签名数据内容类型的典型应用是,签名者对数据内容类型的内容进行数字签名。另一个典型应用是分发证书和CRL.构造签名数据的步骤如下za)
12、对于每个签名者,使用签名者指定的消息摘要算法计算出内容的消息摘要值。如果签名者要对除内容之外的其他信息进行签名,那么使用签名者的消息摘要算法对内容摘要值和其他信息一起计算摘要,得到的结果为消息摘要。b) 对于每个签名者,使用签名者的私钥对消息摘要进行数字签名。c) 对于每个签名者,签名结果和其他签名者指定的信息放在SignerInfo值中,见7.4。每个签名者所对应的证书和CRL,以及其他不对应于任何签名者的信息,都在这一步收集。d) 所有签名者的消息摘要算法和SignerInfo值,同内容一起放入SignedData值中,见7.2。接收者独立地计算消息摘要,利用消息摘要以及签名者的公钥验证签
13、名结果。签名者的公钥可以通过两种途径查询z签发者的可辨别名称以及该签发者的签名证书序列号唯一标识了一张证书,证书中包含公钥p或者通过主体密钥标识符,同时适合认证的和未经认证的公钥。签名者的证书可包含在SignedData里的证书域中,但并非必须包括。当存在多个签名时,成功验证某个给定签名者的签名,通常视为该签名者签名成功。但是,也有些应用环境需要其他的规则。若某个应用除了每个签名者对应一个有效签名外,还采用了别的规则,则应阐明这些规则。此外,只匹配签名者标识符并不足以确定这些签名是否由该签名者生成,在应用说明中应描述如何确定哪个签名是由该签名者生成的。签名者选择包含多个签名的主要原因是为了支持
14、多个不同的接收者群体。本章分为6个部分E第一部分描述了顶层类型SignedData;第二部分描述了EncapsulatedContentlnfo;第三部分描述了每个签名者信息的类型SignerInfo;第四、第五和第六部分分别描述了消息摘要的计算、签名的生成以及签名的验证过程。7.2 SignedData类型下列对象标识符Cobjectidentifier)标识了签名数据的内容类型Eid-signedData OBJECT IDENTIFIER : = iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 签名数据的内容
15、类型应有ASN.lSignedData类型zSignedData : = SEQUENCE version ESMSVersion, digestAlgorithms DigestAlgorithmldentifiers, encapContentInfo EncapsulatedContentInfo , certificates OJ IMPLICIT CertificateSet OPTIONAL, crls lJ IMPLICIT RevocationInfoChoices OPTIONAL, signerInfos SignerInfos DigestAlgorithmIdentif
16、iers : = SET OF DigestAlgorithmIdentifier SignerInfos : = SET OF SignerInfo SignedData类型的结构框图,如图1所示z3 GB/T 31503-2015 4 签名数据SignedData 图1SignedData类型结构框圈SignedData类型的各个域的意义如下za) version:是语法的版本号.version值取决于certificates,eContentType和SignerInfo.version应如下分配zIF (certificates. 1;s pres臼扰)AND (any certifi
17、cates with a type of other are present) OR (crls is presat) AND (any crls with a type of other町epresent) THEN version MUST be 5 ELSE IF (certificates is present) AND (any versiotl 2 attribute certificates are present) THEN version MUST be 4 ELSE IF (certincates is present) AND (any version 1 attribu
18、te certificates are present) OR (any Signerlnfo structures are version 3) OR (encapContentInfo eContentType is other than id-data) THE version MUST be 3 ELSE version MUST be 1 b) digestAlgorithtns:是精息摘要算法标识符的集合,集合中可有任意个元素,包括零个。每个元素标识了一个或、多个签名者所使用的消息捕要算法及其相关参数二该集合旨在列出所有签名者能使用的消息摘要算法。该集合是元序的,以便单次签名验证。
19、应用中签名若使用了不在该集合内的摘要算法,则签名验证可能会失败B消息摘要的过程描述,见7.5。c) encapContentInfo:是待签名的内容,包括内容类型标识符以及内容本身。EncapsulatedContentlnfo类型具体描述,见7.3。d) certificates:是证书集合。预期证书集合包括从信任根或顶级证书机构到signerInfos域中所有签名者的证书路径。该集合包含的证书可多于这些必要证书,也可包括从两个或多个独立的顶级证书机构出发的证书路径。如果接收者能通过其他途径获取必要的证书(例如从以前的证书集合中获取),则可不完全包含这些必要的证书。强烈禁止使用版本1属性证书
20、。e) crls:是撤销状态信息集合。预期该集合包含的信息足以确定certificates域中的证书是否有效,但并非必须满足此条件。CRL是撤销状态信息的主要来源。集合中包含的CRL可多于必要的CRL,也可少于必要的CRL。f) signerInfos:是每个签名者信息的集合,可包含任意个元素,包括零个。当该集合含有多个证书时,若能成功验证给定签名者的其中一个签名,应认为该签名者签名成功。但是,一些应用环境也可能需要其他的规则。SignerInfo类型具体描述,见7.4。由于每个签名者可采用不同GB/T 31503-2015 的数字签名技术,而且以后的规范可能会更新语法,所以,所有实现应处理好
21、它们未实现的Signerlnfo版本。进一步的说,由于所有实现将支持不了每个可能的签名算法,所以,所有实现在遇到未实现的签名算法时应处理得当。7.3 EncapsulatedContentInfo类型EncapsulatedContentInfo类型中的内容如下表示zEncapsulatedContentInfo : = SEQUENCE eContentType ContentType, eContent OJ EXPLICIT OCTET STRING OPTIONAL ContentType : = OBJECT IDENTIFIER EncapsulatedContentInfo类型各
22、个域的意义如下za) eContentType:是对象标识符。该对象标识符唯一指定了内容类型。b) eContent:是内容本身,由字节串表示。eContent不需要DER编码。可选择省略EncapsulatedContentInfo域中的eContent,从而能够构造外部签名。在有外部签名的情况下,包含在签名数据的内容类型中的EncapsulatedContentInfo值将缺少签名内容。如果EncapsulatedContentInfo中没有eContent值,照常计算signatureValue并分配eContentType,同eContent值存在一样。在没有签名者的情况下,待签名的E
23、ncapsulatedContentInfo值是无关紧要的。这种情况下,EncapsulatedContentInfo值中的内容类型应是id-data,见第6章,而且EncapsulatedContentInfo值中的内容域应省略。7.4 SignerInfo类型每个签名者的信息包含在Signerlnfo类型中=Signerlnfo : = SEQUENCE version ESMSVersion, sid Signerldentifier, digestAlgorithm DigestAlgorithmldentifier, signedAttrs OJ IMPLICIT SignedAtt
24、ributes OPTIONAL, signatureAlgorithm SignatureAlgorithmldentifier, signature Signature Value, unsignedAttrs lJ IMPLICIT UnsignedAttributes OPTIONAL Signerldentifier : = CHOICE issuer AndSerialN um ber Issuer AndSerialN umber, subjectKeyldentifier OJ SubjectKeyldentifier SignedAttributes : = SET SIZE
25、 (1.MAX) OF Attribute UnsignedAttributes : = SET SIZE C1.MAX) OF Attribute 5 G/T 31503-2015 6 Attribute : = SEQUENCE attrType OBECT IDENTIFIER, attrValues SET OF AttributeValue AttributeValue : = ANY SignatureValue : = OCTET STRING Signerlnfo类型的结构框如图2所示z图2Si伊erInfo类型结构框圄SignerInfo类型各个域的意义如下za) versi
26、on:是语法的版本号。若SignerIdentifier是issuerAndSerialN umber选项,那么版本应为1。若SignerIdentifier是subjectKeyldentifier选项,那么版本应为3。b) sid:指定了签名者的证书,从而指定了签名者的公钥。接收者需要签名者的公钥以验证签名。Signer Iden tifier提供了两种选择用以指定签名者公钥。issuerAndSerialNumber选项通过签发者的可辨别名称和证书序列号,标识签名者的证书;subjectKeyldentifier选项则是通过密钥标识符,标识签名者的证书。当引用GB/T16264.8-20
27、05证书时,密钥标识符与GB/T 16264.8-2005主体密钥标识符的扩展值相匹配。当引用了其他证书格式时,用于规范证书格式以及ESMS使用的文档,应包括关于密钥标识符与适当证书域匹配的详细说明。实现应同时支持SignerIdentifier的issuerAndSerialN umber和subjectKey Identifier两种类型的接收。当生成SignerIdentifier时,实现可支持其中一种类型(issuerAndSerialNumber或subjectKeyldentifier) ,并一直使用这种类型,或者实现也可将两种类型任意混合使用。c) digestAlgorithm
28、:标识了签名者使用的消息摘要算法以及任何相关参数。消息摘要是通过计算待签名的内容或者内容加上签名属性而得到的,消息摘要的计算过程见7.5.消息摘要算法应包含相关SignedData的digestAlgorithms域中列出的算法中。若签名使用了不在SignedData digestAlgorithms集合里的摘要算法,实现验证这些签名可能会失败。d) signedAttrs:是要签名的属性集合,该域是可选的,但是,如果待签名的EncapsulatedContentInfo值中的内容类型不是id-data,则该域应存在。SignedAttributes应是DER编码见GB/T 16263.1-2
29、006),即使该结构的其他部分是BER编码(见GB/T16263.1200的。一些有用的属性类型,如签名时间,见第13章。如果该域存在,则应至少包括下列两个属性z1) 内容类型属性z将待签名的EncapsulatedContentlnfo值的内容类型作为它的值。13.2定义了内容类型属性,但是,内容类型属性不应作为联合签名-不予签名属性的一部分使用,联合签名-不予签名属性,见13.5。2) 消息摘要属性z将内容的消息摘要作为它的值。13.3定义了消息摘要属性。e) signatureAlgorithm:标识了签名者生成数字签名所使用的签名算法以及任何相关参数af) signature:是数字签
30、名产生的结果,使用了消息摘要和签名者的私钥。签名的详细情况取决于采用的签名算法。GB/T 31503-2015 g) unsignedAttrs:是不予签名的属性集合。该域是可选的。一些有用的属性类型,如联合签名,定义见第13章。SignedAttribute和UnsignedAttribute类型中的各个域意义如下za) attrTypel表示属性的类型,是一个对象标识符。b) attrValues:构成属性的值的集合。集合中每个值的类型由attrType唯一确定。attrType可对集合中条目的个数加以限制,7.5 消息摘要计算过程消息摘要计算过程,是对待签名的内容,或内容加上签名属性,计
31、算消息摘要。无论哪种情况,消息摘要计算过程的初始输人都是待签名的封装内容的值。具体来说,初始输入是encapContentInfoeContent OCTET STRING。只有构成eContentOCTET STRING的值的字节才被输入至消息摘要算法中,而不包括标签或长度字节。消息摘要计算过程的结果取决于signedAttrs域是否存在。当该域不存在时,其结果就是上述内容的消息摘要。当该域存在时,其结果是signedAttrs域中SignedAttrs值的完整DER编码的消息摘要。因为当存在SignedAttrs值时,其应包括内容类型和消息摘要属性,这两个值间接包含在结果中。内容类型属性不
32、应包含13.5中定义的联合签名-不予签名的属性。为了计算消息摘要,要对signedAttrs域进行单独编码。DER编码不使用signedAttrs中的IMPLICIT0 标签,但要使用EXPLICITSET OF 标签。也就是说,EXPLICITSET OF标签的DER编码,而不是IMPLICITOJ标签的DER编码,应同SignedA ttri bu tes值的长度和内容字节一起,包含在消息摘要计算中。当signedAttrs域不存在,只有构成SignedDataencapContentInfo eContent OCTET STRING的值(例如文件内容)的字节,被输入至消息摘要计算中。其
33、优势是,待签名的内容的长度不需要在签名生成过程之前知道。尽管消息摘要计算中不包括encapContentInfoeContent OCTET STRING标签和长度字节,但它们还是能通过其他方式得到保护。长度字节通过消息摘要算法的特性得到保护,因为要找到消息摘要值相等的两个任意长度的不同消息内容是计算上不可行的。7.6 签名生成过程签名生成过程的输入包括消息摘要计算过程的结果以及签名者的私钥。签名生成的细节取决于采用的签名算法。对象标识符和参数共同规定了签名者采用的签名算法,其包含在signatureAlgorithm域中。签名者生成的签名结果应编码成字节串,并装载在signature域中。7
34、.7 签名验证过程签名验证过程的输入包括消息摘要计算过程的结果和签名者的公钥。接收者可通过任何途径获得正确的签名者公钥,但是首选的方法是从SignedData的certificates域中获取证书,然后从证书中获得公钥.签名者公钥的选择和验证可基于证书路径验证,也可基于其他外部背景,但不在本标准的范围内。签名验证的细节取决于采用的签名算法。接收者不应依赖任何由生成者计算的消息摘要值。若SignedDatasignerlnfo包含signedAttributes,那么内容消息摘要应按照7.5中的描述进行计算。接收者计算的消息摘要值应同SignedDa ta signer Info中signedA
35、ttributes里的消息摘要属性的值相等,签名才可能有效。若SignedDatasignerlnfo包含signedAttributes,Jiltl内容类型属性的值应同SignedDataencapCon tentInfo eContent的值相匹配。7 GB/T 31503-2015 8 封装数据内窑类型8.1 概述封装数据内容类型由任意类型的加密内容以及经过加密的内容加密密钥组成。对接收者而言,加密内容以及经过加密的内容加密密钥组合成一个数字信封。任意类型的内容都可封装给任意数量的接收者,封装可针对每个接收者使用任何支持的密钥管理技术。封装数据内容类型的典型应用是,将数据内容或签名数据内
36、容类型,封装在一个或多个接收者的数字信封里。封装数据通过下列步骤构造而成za) 随机生成特定内容加密算法所使用的内容加密密钥。b) 为每个接收者加密内容加密密钥。加密密钥的细节取决于使用的密钥管理算法,有四种支持的通用技术z1) 密钥传输E使用接收者的公钥加密内容加密密钥p2) 密钥协商z使用接收者的公钥和发送者的私钥生成成对的对称密钥,然后用成对的对称密钥加密内容加密密钥z3) 对称密钥加密密钥E使用以前分发的对称密钥加密密钥,加密内容加密密钥g的口令z使用来源于口令或其他共享秘密值的密钥加密密钥,加密内容加密密钥。c) 对于每个接收者,经过加密的内容加密密钥和其他接收者相关信息收集在Rec
37、ipientInfo值中,见8.3.d) 使用内容加密密钥加密内容。加密内容可能需要对内容进行填充,达到某分组大小的整数倍,见8.4。e) 所有接收者的RecipientInfo值同加密内容一起,构成EnvelopedData值,见8.2.接收者通过解密经过加密的内容加密密钥,然后使用恢复出的内容加密密钥解密加密内容,从而打开了数字信封。本章分为4个部分z第一部分描述了顶层类型EnvelopedData;第二部分描述了每个接收者的信息类型Recipientlnfo;第三和第四部分分别描述了内容加密以及密钥加密的过程。8.2 EnvelopedData类型8 下列对象标识符标识了封装数据的内容类
38、型zid-envelopedData OBJECT IDENTIFIER : = iso(l) member-body(2) us(840) rsadsi(l13549) pkcs(1) pkcs7(7) 3 封装数据的内容类型应有ASN.1EnvelopedData类型zEnvelopedData : = SEQUENCE version ESMSVersion, originatorInfo OJ IMPLICIT OriginatorInfo OPTIONAL, recipientlnfos RecipientInfos , encryptedContentInfo EncryptedC
39、ontentInfo , unprotectedAttrs lJ IMPLICIT UnprotectedAttributes OPTIONAL OriginatorInfo : = SEQUENCE certs OJ IMPLICIT CertificateSet OPTIONAL, crls lJ IMPLICIT RevocationlnfoChoices OPTIONAL RecipientInfos : = SET SIZE (1.MAX) OF RecipientInfo EncryptedContentInfo : = SEQUENCE contentType ContentTy
40、pe. contentEncryptionAlgorithm ContentEncryptionAlgorithmldentifier. encryptedContent OJ IMPLICIT EncryptedContent OPTIONAL EncryptedContent : = OCTET STRING UnprotectedAttributes : = SET SIZE (1.MAX) OF Attribute EnvelopedData类型的结构框图如图3所示:recipientlnfos 圄3EnvelopedData类型结构框图En velopedDa ta类型的各个域的意义
41、如下:GB/T 31503-2015 a) version:是语法的版本号。version值取决于originatorInfo.RecipientInfo和unprotectedAttrs0 version应如下分配zIF (originatorInfo is present) AND (any certificates with a type of other are present) OR (any crls with a type of other are present) THEN version is 4 ELSE IF (originatorInfo is present) AND
42、 (any version 2 attribute certificates are present) OR (any RecipientInfo structures include pwri) OR (any RecipientInfo structures include ori) THEN version is 3 ELSE IF (originatorInfo is absent) AND (unprotectedAttrs is absent) AND (all RecipientInfo structures are version 0) THEN version is 0 EL
43、SE version is 2 b) originatorInfo:选择性地提供有关发起者的信息。只有当密钥管理算法要求时,该域才存在。该域可能包括证书和CRL:1) certs:是证书的集合。certs可能包含与数个不同的密钥管理算法相关的发起者证书。certs可能还包含与发起者相关的属性证书。certs包含的证书是为了让所有接收者足以GB/T 31503-2015 建立从信任根或顶级证书机构出发的证书路径。但是,该集合包含的证书可多于这些必要证书,也可包括从两个或多个独立的顶级证书机构出发的证书路径。如果接收者能通过其他途径获取必要的证书(例如从以前的证书集合中获取),则也可不完全包含这些
44、必要的证书。2) crll是CRL的集合。预期该集合包含的信息足以确定certs域中的证书是否有效,但并非必需满足此条件。集合中包含的CRL可多于必要的CRL,也可少于必要的CRL.c) recipientInfos:是每个接收者的信息的集合。该集合应至少包含一个元素。d) encryptedContentInfo:是经过加密的内容信息。e) unprotectedAttrs:是未经加密的属性的集合。该域是可选的。一些有用属性类型定义于第13章,EncryptedContentInfo类的各个域的意义如下za) contentType:表明内容的类型。b) contentEncryptionA
45、lgorithm:标识了用于加密内容的内容加密算法以及任何相关参数。内容加密过程,见8.49对于所有接收者,使用相同的内容加密算法和内容加密密钥。c) encryptedContent:是加密内容的结果。该域是可选的。如果该域不存在,其预期值应由其他方式提供。由于recipientInfos域在encryptedContentlnfo域的前面,所以EnvelopedData的值能单次处理。8.3 Recipie副II由类型8.3.1 Recipien.tInfo类型概述每个接收者的信息表示在RecipientInfo类型中。RecipientInfo对于每个支持的密钥管理技术都有不同的格式,对于每个相同加密内容的接收者,可以使用任何密钥管理技术。就所有情况而言,经过加密的内容加密密钥要传送给一个或多个接收者。因为所有实现将支持不了每个可能的密钥管理算法,所