GB/T 25064-2010 信息安全技术 公钥基础设施 电子签名格式规范
- 名 称:GB/T 25064-2010 信息安全技术 公钥基础设施 电子签名格式规范 - 下载地址1
- 下载地址:[下载地址1]
- 提 取 码:
- 浏览次数:3
发表评论
加入收藏夹
错误报告
目录| 新闻评论(共有 0 条评论) |
资料介绍
ICS 35. 040 L 80
中 华 人 民 共 和 国 国 家 标 准
GB/T 25064—2010
信息安全技术 公钥基础设施
电子签名格式规范
Information securitytechnology—Publickeyinfrastructure—
Electronicsignature formatsspecification
2010-09-02发布 2011-02-01实施
中华人民共和国国家质量监督检验检疫总局中 国 国 家 标 准 化 管 理 委 员 会
发
布
GB/T 25064—2010
目 次
前言 Ⅰ
引言 Ⅱ
1 范围 1
2 规范性引用文件 1
3 术语和定义 1
4 缩略语 2
5 电子签名组成 2
5. 1 电子签名的主要参与方 2
5. 2 电子签名的类型 2
5. 3 电子签名的验证 7
6 电子签名的数据格式 10
6. 1 基本数据格式 10
6. 2 验证数据格式 15
6. 3 签名策略要求 19
附录 A (规范性附录) 电子签名格式的抽象语法记法一(ASN. 1)表示 27
附录 B (规范性附录) 签名策略的抽象语法记法一(ASN. 1)表示 34
参考文献 39
GB/T 25064—2010
前 言
本标准的附录 A 和附录 B为规范性附录 。
本标准由全国信息安全标准化技术委员会(SAC/TC260)提出并归 口 。
本标准起草单位 : 中国科学院软件研究所信息安全国家重点实验室 、信息安全共性技术国家工程研究中心 。
本标准主要起草人 :张凡 、冯登国 、庄涌 、张立武 、路晓明 、杨婧 。
Ⅰ
GB/T 25064—2010
引 言
电子商务作为跨越本地 、广域 、全球网络的新型商务模式 , 可信对于其成功和连续进行至关重要 。以电子方式进行商务活动的公司必须有适合的安全控制机制来保护他们的交易并确保交易方的安全 ,而电子签名对于保护信息和提供电子商务中的信任是一项重要的安全措施 。
本标准主要参考了 ETSITS101733V1. 2. 2 (2000-12) ,并以我国电子签名法为纲 ,针对各种类型的电子签名 ,可以应用于各种业务 ,包括个人与公司 、公司与公司 、个人与政府 。本标准独立于应用环境 ,可以应用在智能卡 、GSM SIM卡 、电子签名的特殊应用等各种环境中 。 根据本标准生成的电子签名并满足《中华人民共和国电子签名法》第十三条规定 , 即认为是可靠的电子签名 。
本标准凡涉及密码算法相关内容 ,按国家密码管理部门相关规定执行 。
本标准例子中提及的密码算法如 SHA-1算法均为举例性说明 ,具体使用时均须采用国家密码管理部门批准的相应算法 。
Ⅱ
GB/T 25064—2010
信息安全技术 公钥基础设施
电子签名格式规范
1 范围
本标准针对基于公钥密码学生成的数字签名类型的电子签名 ,定义了电子签名与验证的主要参与方 、电子签名的类型 、验证和仲裁要求 。本标准还规范了电子签名的数据格式 ,包括基本数据格式 、验证数据格式 、签名策略格式等 。
本标准适用于电子签名产品的设计和实现 , 同时相关产品的测试 、评估和采购亦可参照使用 。
2 规范性引用文件
下列文件中的条款通过本标准的引用而成为本标准的条款 。凡是注 日期的引用文件 ,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准 ,然而 ,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本 。凡是不注日期的引用文件 ,其最新版本适用于本标准 。
GB/T 16264. 8—2005 信息技术 开放系统互连 目录 第 8 部分 :公钥和属性证书框架(ISO/ IEC 9594-8:2001,IDT)
GB/T 16262. 1—2006 信息技术 抽 象 语 法 记 法 一(ASN. 1) 第 1 部 分 : 基 本 记 法 规 范(ISO/ IEC 8824-1:2002,IDT)
GB/T 19713—2005 信息技术 安全技术 公钥基础设施 在线证书状态协议
GB/T 20518—2006 信息安全技术 公钥基础设施 数字证书格式
GB/T 20520—2006 信息安全技术 公钥基础设施 时间戳规范
RFC2630 加密消息语法
RFC2634 S/MIME的增强安全服务
3 术语和定义
下列术语和定义适用于本标准 。
3. 1
签名者 signer
电子签名人 ,创建电子签名的实体 。
3. 2
验证者 verifier
电子签名依赖方 ,对电子签名进行合法性验证的实体 。
3. 3
仲裁者 arbitrator
当数字签名的有效性发生争议时 ,对签名者和验证者之间的争议进行仲裁的实体 。
3. 4
可信服务提供者 trusted serviceprovider
帮助签名者和验证者建立信任关系的一个或多个实体 。
3. 5
时间戳 timestamp
使用数字签名技术产生的数据 ,签名的对象包括了原始文件信息 、签名参数 、签名时间等信息 。 时
1
GB/T 25064—2010
间戳机构对此对象进行数字签名产生时间戳 , 以证明原始文件在签名时间之前已经存在 。 3. 6
签名策略 signaturepolicy
创建和验证电子签名的一套规则 ,可以在签名策略的指导下决定一个电子签名是否合法 。
4 缩略语
下列缩略语适用于本标准 :
CA
认证机构 (Certification Authority)
CRL
证书撤销列表(Certificate Revocation List)
ES
电子签名(Electronic Signature)
BES
基本电子签名(Basis Electronic Signature)
ES-A
带归档验证数据的电子签名(ES with Archive Validation Data)
ES-C
带完全验证数据的电子签名(ES with Complete Validation Data)
ES-T
带时间戳的电子签名(ES with Timestamp)
ES-X
带扩展验证数据的电子签名(ES with Extended Validation Data)
OCSP
在线证书状态协议(Online Certificate Status Protocol)
RA
注册机构(Registration Authority)
TSA
时间戳机构(TimeStamp Authority)
TSP
可信服务提供者(Trusted Service Provider)
CMS
加密消息语法(Cryptographic Message Syntax)
ESS
增强安全服务(Enhanced Security Services)
5 电子签名组成
5. 1 电子签名的主要参与方
电子签名在其产生和使用的过程中 ,要涉及多方面的机构和角色 ,下面列出了本标准定义的四个电子签名主要参与方 :
a) 签名者 。签名者是指创建电子签名的实体 , 当签名者使用预定义的格式对数据进行数字签名时 ,就代表了它对被签名数据的一种承诺 。
b) 验证者 。验证者是指对电子签名进行合法性验证的实体 , 它可以是单个实体 ,也可以是多个实体 。
c) 可信服务提供者(TSP) 。可信服务提供者是指帮助签名者和验证者建立信任关系的一个或多个实体 。它们为签名者和验证者提供了建立信任关系的可信服务 ,例如证书 、交叉证书 、时间戳 、证书撤销列表 、在线证书查询等等 。 以下列表列出了一些主要的 TSP:
1) 认证机构(CA) ,为用户提供公钥证书 ;
2) 注册机构(RA) ,在 CA 给用户颁发证书前 ,对用户进行认证和注册 ;
3) 时间戳机构(TSA) ,证明数据在某个确定时间前产生 ;
d) 仲裁者 。 仲裁者是指在签名者和验证者之间发生争论时 ,进行裁决的实体 。
5. 2 电子签名的类型
5. 2. 1 基本电子签名(BES)
基本电子签名(BES)是指包括了签名的基本数据信息的电子签名 ,这些基本数据信息主要包括以下 3项 :
a) 签名策略 。签名策略定义了在电子签名产生和验证过程中的技术和程序要求 , 目 的是为了满足特定场合的需要 。 电子签名的参与者应识别其策略 ,并满足策略的要求 。
b) 数字签名 。数字签名是签名者对以下各项信息的综合数据进行的数字签名 ,信息主要包括 :
2
GB/T 25064—2010
被签名数据的杂凑值 ;签名策略标识符 ;其他签名属性 。
c) 签名者提供的其他签名属性 。其他签名属性是签名者为了满足签名策略要求或者标准要求而提供的其他属性信息 。
BES的基本组成结构如图 1所示 :
图 1 BES组成结构
5. 2. 2 验证数据
根据电子签名所使用的不同策略 ,签名者应收集不同的验证数据添加到电子签名中 ,验证者同样也需要收集与之相联系的验证信息 。这些验证数据类型包括 :
a) 数字证书 ;
b) 证书撤销信息 ,如证书撤销列表或在线查询的证书状态信息等 ;
c) 时间戳或其他可以用来证明事件发生时间的数据 ,但作为最小要求 ,签名者和验证者获得的时间戳必须能够维持完整性 ,对其的任何修改都可以被检测出来 ,使得各个参与方都能获得电子签名的准确产生时间 。
根据电子签名中添加的验证信息的类型和数量 , 电子签名的安全强度也可以得到不同程度的加强 ,根据这些验证数据 , 电子签名可以分为多种类型 。
5. 2. 3 带验证数据的电子签名
5. 2. 3. 1 分类总述
电子签名可以有以下 5 种格式类型 :
a) 基本电子签名(BES) ,这类电子签名主要包含数字签名和其他签名者提供的基本信息 。
b) 带时间戳的电子签名(ES-T) ,这类电子签名在基本电子签名的基础上添加了时间戳 ,其目的是保证一定程度的长时间的有效性 。
c) 带完全验证数据的电子签名(ES-C) ,这类电子签名在 ES-T 的基础上 ,添加了一套完整的用来验证电子签名的数据 ,例如证书撤销参考信息等等 。但其中可能包括了一些参考信息 ,如一个网址,需要验证者去该网址获得具体数据 。
d) 带扩展的验证数据的电子签名(ES-X) , 这类电子签名在 ES-C 的基础上 , 添加了一些额外数据 , 以适应一些特殊情况 。
e) 带归档时间戳的电子签名(ES-A) ,这类电子签名是在上述各种电子签名基础上形成的 , 主要是为长期归档保存电子签名 ,所以对整个电子签名添加时间戳 , 以保证长期安全性 。
签名者在提交电子签名时 ,至少应给出 BES格式的签名 ,在某些情况下可以决定是否提供 ES-T格式的电子签名 ,在某些极端情况下可以提供 ES-C格式的电子签名 。如果签名者没有提供 ES-T,则验证者可在收到电子签名时立即 自行创建一个 ES-T,或者保存一个接收签名时间的安全记录 。验证者的这二种方法都可以为验证时间提供一个独立的证据 ,而验证时间实际上应接近电子签名的创建时间 ,使得其可以有足够证据来防止对签名的否认 。如果签名者没有提供 ES-C,验证者可在 BES基础上 自行创建一个 ES-C,前提是其可以获得相应的验证数据 。 除此三种外 ,ES-X和 ES-A均为可选支持格式 。
5. 2. 3. 2 带时间戳的电子签名(ES-T)
ES-T 中的时间戳所记录的时间应尽可能地接近 BES的实际创建时间 , 以提供最大程度的安全保护 。如果签名者没有提供 ES-T,则验证者可在收到电子签名时立即 自行创建一个 ES-T。
3
GB/T 25064—2010
ES-T 的基本组成结构如图 2所示 :
图 2 ES-T组成结构
需要注意 , 当某些验证数据的安全性受到威胁的时候 ,数字签名上的时间戳或者一个安全的时间记录都可以帮助保护签名的有效性 ,只要这些安全性威胁是在签名产生以后发生的 。 因为时间戳和安全时间记录可以有效证明一份电子签名是在这些安全威胁产生前创建的 ,所以这份电子签名就仍然可以保持其有效性 。
5. 2. 3. 3 带完全验证数据的电子签名(ES-C)
ES-C格式的电子签名不容易与 BES同时被创建 , 因为签名者需要去收集相关的证书信息和证书撤销信息 。如果发现一份证书已经被暂停使用 ,则必须等待到证书暂停期结束 。从 BES被创建到 ES- C被创建可能需要等待一段足够长的时间 ,签名者只有满足上述这种情况才能创建一个完整的 ES-C。这样带来的好处是验证者可以获得完整的用来验证 BES的的数据支持 。
如果签名者没有提供 ES-C,验证者可在 BES基础上自行创建一个 ES-C,前提是其可以获得相应的验证数据 。
ES-C 的基本组成结构如图 3所示 :
图 3 ES-C组成结构
这里所提到的证书和证书撤销参考信息 ,是指验证者可以根据这些参考信息 ,通过指定的途径获得最终需要的证书和证书撤销信息 。
如果在实际应用中 ,不需要对数字签名加盖时间戳 ,则可以使用下面图 4 的 ES-C1组成结构 。但是 ,这种情况下应保存验证时间的一个安全记录 。
图 4 ES-C1组成结构
4
GB/T 25064—2010
5. 2. 3. 4 带扩展验证数据的电子签名(ES-X)
5. 2. 3. 3所描述的 ES-C可以扩展成一种新的 ES-X格式 ,其目的是为了适应以下需求 :
a) 如果验证者无法从其他途径获得以下数据 ,则这些数据可以被添加进电子签名 ,这种扩展格式称为扩展长验证数据 ES-X0格式(图 5) :
1) 签名者的证书 ;
2) 构成 CA证书链所需要的 CA证书 ;
3) 需要的具体证书撤销信息 。
b) 如果 CA证书链中的任意一个 CA密钥的安全性可能受到威胁 ,就有必要添加一个额外的时间戳 ,统称为扩展时间戳验证数据 。这种情况可以使用下面两种格式 :
1) 在 ES-C 的基础上 ,为整个 ES-C产生一个时间戳 ,并添加到电子签名中 。 这种扩展格式称为 ES-X1格式(图 6) ;
2) 在 ES-C 的基础上 ,仅仅对 ES-C添加的 “证书和证书撤销参考信息 ”产生时间戳 ,并添加到电子签名中 。这种扩展格式称为 ES-X2格式(图 7) 。
c) 如果以上二种情况同时发生 ,则需要同时在电 子 签 名中 添 加 二 类 数 据 。 根 据 b) 中 的 不 同 格
式 ,可以产生 ES-X3格式(图 8)和 ES-X4格式(图 9) ,统称为扩展时间戳长验证数据 。
本标准定义的各种 ES-X格式仅为可选格式 ,是否对其支持也是可选的 。
ES-X0的组成结构如图 5所示 :
图 5 ES-X0组成结构
ES-X1的组成结构如图 6所示 :
图 6 ES-X1组成结构
5
GB/T 25064—2010
ES-X2的组成结构如图 7所示 :
图 7 ES-X2组成结构
ES-X3所包含的内容包括完整的证书和证书撤销数据 , 以及针对所有内容的时间戳 ,其基本结构如图 8所示 :
图 8 ES-X3组成结构
ES-X4所包含的内容主要有完整的证书和证书撤销数据 , 以及对 “完整的证书和证书撤销数据 ”上的时间戳 ,其基本组成结构如图 9所示 :
图 9 ES-X4组成结构
5. 2. 3. 5 带归档时间戳的电子签名(ES-A)
各种算法 、密钥 、加密数据 、加密函数都会随着时间而逐渐降低其安全性 ,各种证书也会随着时间而纷纷失效 ,如果要长期保存一个电子签名 ,就需要在这些成分的安全性降低前对整个电子签名加盖一次时间戳 。新加的时间戳尽可能使用比老时间戳更强的算法和密钥 。这类额外添加的验证数据称为归档验证数据 。
考虑到时间戳所使用的证书 、算法和密钥也会随着时间而失效或降低安全性 ,在这种情况发生前 ,必须加盖新的时间戳 。 因此 ,一个 ES-A可能嵌套了多重时间戳 。
本标准定义的 ES-A是可选格式 ,对其的支持也是可选的 。
6
GB/T 25064—2010
ES-A 的基本组成结构如图 10所示 :
图 10 ES-A基本结构
5. 3 电子签名的验证
5. 3. 1 验证目标
对电子签名的验证必须符合电子签名策略 ,验证的结果有 3种情况 :
a) 签名有效 。这个结果意味着该电子签名通过了验证 ,并且符合电子签名策略的所有要求 ;
b) 签名无效 。签名无效基于以下二种情况 :
1) 电子签名的格式错误 ;
2) 数字签名验证失败 ,例如 :数字签名完整性检测失败 ;验证过程中所使用的数字证书已经无效或者被撤销 ;
c) 不完全验证 。这个结果意味着电子签名的格式没有错误 ,数字签名也已经通过验证 ,但是没有足够的信息判断该电子签名是否符合其签名策略的要求 。例如 ,签名策略需要一些附加信息 ,这些信息对数字签名的有效性没有任何影响 ,但是现在因为无法获得 ,所以无法判断是否符合签名策略 。在这种情况下 ,验证者应根据策略要求用户 自行处理 “部分正确 ”的电子签名 ,也可在信息足够时再度对电子签名进行验证 。
5. 3. 2 验证过程
如 5. 2. 2所述 ,签名者和验证者都可以收集所有的额外数据来完成一个电子签名的创建和验证 , 图11描述了如何完成一个 ES-C验证的过程 。
图 11 ES-C 的验证过程
7
GB/T 25064—2010
a) 在收到签名者的 BES以后 ,验证者根据被签名数据和 BES,首先验证数字签名的正确性 、完整性和有效性 。
b) 验证者根据电子签名以及 TSP提供的数据 ,检查签名是否符合签名策略的要求 。
c) 如果签名者没有提供时间戳或者没有提供可以信任的时间戳 ,则验证者此时应自行添加一个时间戳 。 因此到这一步截止 ,至少应产生一个 ES-T 电子签名 。
d) 如果签名者没有提供证书和证书撤销参考信息 ,则验证者需要收集所有必需的证书和证书撤销信息 ,并在这些数据可以使用后 ,完成所有的验证过程 。然后记录一个完整的证书和证书撤销参考信息 ,创建 ES-C 电子签名 。
e) 验证者输出验证结果 。
ES-C是 标 准 中 必 须 支 持 的 格 式 , 但 是 验 证 者 可 以 进 一 步 扩 展 成 需 要 的 ES-X 或 者 ES-A 可 选格式 。
如 果 签 名 者 没 有 提 供 ES-X, 则 在 验 证 者 完 成 ES-C 以 后 , 验 证 者 将 可 以 提 供 或 记 录 在 ES-C 中使 用 的 完 整 的 证 书 和 证 书 撤 销 数 据 (图 12 中 的 步 骤 f)) , 从 而 形 成 ES-X0 格 式 , 过 程 如 图 12所 示 :
图 12 验证者创建 ES-X0
根据验证者的选择和实际情况 ,也可以创建一个 ES-X1 电子签名 ,在整个 ES-C上加盖时间戳(图13中步骤 g)) ,过程如图 13所示 :
8
GB/T 25064—2010
图 13 验证者创建 ES-X1
验证者也可以创建一个 ES-X2电子签名 ,只在 “证书和证书撤销参考信息 ”上加盖时间戳(图 14 中步骤 g′)) ,过程如图 14所示 :
图 14 验证者创建 ES-X2
最后 ,验证者有必要针对需要长期保存的电子签名创建 ES-A格式 ,这种格式不需要马上创建 ,但应在电子签名中任何一项元素(如算法 、密钥 、证书等)的安全性受威胁前创建 。创建时 ,验证者需要针对整个电子签名的所有内容加盖时间戳(图 15 中步骤 h)) ,过程如图 15所示 :
9
GB/T 25064—2010
图 15 验证者创建 ES-A
5. 3. 3 仲裁
如果签名者和验证者发生争执 ,则需要提请仲裁者进行仲裁 。针对提请仲裁的电子签名类型 ,有以下这些考虑 :
ES-C签名可以作为仲裁使用的签名类型 ,但必须符合下面 3个条件 :
a) 仲裁者知道如何获得签名者的证书 、所有的交叉认证证书 、需要的 CRL 以及 ES-C可能提到的 OCSP查询 ;
b) 签名所使用的整个证书链都是安全的 ,链上每个证书密钥的安全性都还未受到威胁 ;
c) 在 ES-C创建时所使用的各种密码学技术 ,在仲裁时仍然是安全的 。
如果条件 a)不满足 ,则原告方需要提供 ES-X0电子签名 。
如果条件 b)不满足 ,则原告方需要提供 ES-X1或者 ES-X2电子签名 。
如果条件 c)不满足 ,则原告方需要提供 ES-A 电子签名 。
6 电子签名的数据格式
6. 1 基本数据格式
本标准中数据格式 、语法结构等均采用 GB/T 16262. 1—2006规定的 ASN. 1 表示描述 。本条中的数据格式定义以 RFC2630中定义的加密消息语法(CMS)和 RFC2634中定义的增强安全服务(ESS)为基础 。对于 RFC2630和 RFC2634中已定义的语法结构 ,本标准直接引用不再给出具体定义 。
6. 1. 1 总体语法结构
电子签名的总体语法结构见 RFC2630中的定义 。
6. 1. 2 数据内容类型
电子签名中的数据内容类型的语法结构和要求见 RFC2630。
6. 1. 3 签名数据内容类型
电子签名中的签名数据内容类型的语法结构和要求见 RFC2630。
为了确保签名验证方能够正确地使用签名者公钥进行验证 ,本标准中规定 ,签名证书属性(Signed
10
GB/T 25064—2010
Attribute)应包含签名者的签名认证证书的杂凑值 ,签名证书属性的定义见 RFC2634。
6. 1. 4 签名数据类型
电子签名中的签名数据类型的语法结构和要求除了符合 RFC2630的规定外 ,还应满足以下 3 点 :
a) 版本号须设置为 3;
b) 用于签名的签名者证书的标识须经过签名 ;
c) 签名数据中必须至少有一个签名者信息 。
6. 1. 5 封装数据内容信息类型
电子签名中的封装数据内容信息类型的语法结构和要求见 RFC2630。其中各字段的含义和要求与 RFC2630中一致 ,另外还要求字段中必须至少有一个签名者信息 。
6. 1. 6 签名者信息类型
电子签名中的签名者信息类型的语法结构和要求见 RFC2630。 每个签名者的信息都用一个签名者信息类型的数据结构表示 ,对有多个独立签名者的情况 ,每个签名者都使用一个签名者信息类型的数据结构表示 。
签名者信息类型中各字段的含义和要求与 RFC2630中相同 ,但被签名属性中须包含以下属性 :
a) 内容类型 ;
b) 消息摘要 ;
c) 签名时间 ;
d) 签名证书 ;
e) 签名策略标识 。
其消息摘要的计算流程 、消息签名的生成流程见 RFC2630中的相关规定 。消息签名的验证流程除了 RFC2630中规定的内容外 ,还应满足以下要求 :
用于验证签名的签名者的公钥的真实性须使用 ESS规定的或其他的签名证书属性来验证 。
6. 1. 7 RFC2630中引入的强制属性
在本标准所规定的电子签名中 ,下列几种 RFC2630中定义的属性必须与签名数据一同出现 :
a) 内容类型属性(content-type attribute) ,其语法结构定义见 RFC2630;
b) 消息摘要属性(message-digestattribute) ,其语法结构定义见 RFC2630;
c) 签名时间属性(signing-time attribute) ,其语法结构定义见 RFC2630。该属性中的时间值应是签名者声称已经完成签名过程的时间 ,本标准中建议时间格式采用 Generalized Time类型 。
6. 1. 8 可替代的签名证书属性
6. 1. 8. 1 签名证书属性选择标准
符合本标准的电子签名应在签名数据中包含下面两个可选签名证书属性中的一个 , 而且仅包含 一个 。选择的依据是 : 当使用的杂凑函数为 SHA-1时使用 ESS签名证书属性 , 当使用其他杂凑函数时 ,使用其他签名证书属性 。
6. 1. 8. 2 ESS签名证书属性
ESS签名证书属性的语法结构定义和要求见 RFC2634。各字段的含义和用法除了 RFC2634 中规定的以外还须满足以下几点 :
a) ESS签名证书属性必须是被签名属性 ,而且不能为空 。用于验证签名的证书的标识必须包含在该属性中 。
b) 用 于 验 证 签 名 的 证 书 所 对 应 的 ESS 签 名证 书 属 性 中 ESSCertID 字 段 的 编 码 应 包 含 issureSerial字段 , 而且 issureSerial字段内容应该与 SignerInfo 中的 issuerAndSerialNumber字段内容相符 。在签名验证过程中 ,应检查所使用的验证证书的杂凑值与上述字段中的相应内容是否一致 ,如不一致 ,应认定该签名无效 。
11
GB/T 25064—2010
6. 1. 8. 3 其他签名证书属性
该属性的结构与 ESS签名证书属性相同 ,但该属性可以在杂凑函数非 SHA-1 的情况下使用 。对ESS签名证书属性的使用要求同样适用于该属性 。
该属性的对象标识符(OID,ObjectIdentifier)如下 :
(1135(i)4(d)-9(a)-pk(ets)c-s(o)1(h)rpk(Si)c(g)s(C)9(e)9(t))s(O)mim(BJE)e(C)6(I)id(E)N-aa(T)2(F)1(E)9(R) }∷ = { iso(1) member-body(2) us(840) rsadsi
该属性(OtherSigningCertificate)的语法结构 ASN. 1 描述如下 :
certs SEQUENCE OF OtherCertID,
OtherSigningCertificate ∷ = SEQUENCE {
}
otherCertHash OtherHash,
OtherCertID ∷ = SEQUENCE {
sha1Hash OtherHashValue, - - 该字段包含一个 SHA-1的杂凑值
issuerSerialIssuerSerial OPTIONAL } OtherHash ∷ = CHOICE {
otherHash OtherHashAlgAndValue}
Othe(Othe)lA(u)il(l)ef(I)iCE {
hashValue OtherHashValue }
6. 1. 9 其他强制属性
本标准要求在签名数据(SignedData)中必须包含一个对签名策略的引用 。这个引用可以被显式地标识出来 ,也可以是通过签名内容或其他外部数据隐式的给出 。签名策略定义了产生并验证一个签名的规则 ,应在每个签名的被签名属性中都包含 。签名策略标识属性应为被签名属性 。签名策略标识的对象标识符为 :
(1135(i)4(d)-9(a)-pk(ets)c-s(s)1(g)P)op(l)ik(c)c(y)s(I)9(d)(9(O)m(JE)ime(CT)(16(ID)id(N)T-a(I)a(F)(2(IE))R15∷} = { iso(1) member-body(2) us(840) rsadsi
其语法结构的 ASN. 1 描述为 :
Signature-policy-identifier attribute values have ASN. 1 type SignaturePolicyIdentifier.
SignaturePolicyIdSignaturePolicyId,
SignaturePolicyIdentifier ∷ = CHOICE{
sigPolicyIdSigPolicyId,
SignaturePolicyImplied SignaturePolicyImplied} SignaturePolicyId ∷ = SEQUENCE {
sigPolicyHash SigPolicyHash,
sigPolicyQualifiers SEQUENCE SIZE (1. . MAX) OF SigPolicyQualifierInfo OPTIONAL}
Signat(Signat)u(u)rePol(rePo)ic(li)yImp(cyIm)li(p)e(l)d为(ied)LL类型(NULL)表明了 ,签名策略是在签名内容或 其 他 外 部 数 据 中 隐 式 的 给
出的 。
SigPolicyId字段包含了一个能够唯一标识某个签名策略的对象标识符 ,其语法结构为 :
SigPolicyH(SigPolicyId)ash(∷)段包含了(OBJECT)杂( ID)凑算法的标(ENTIFIER)识符和对签名策略的杂凑运算结果 。
12
GB/T 25064—2010
如果签名策略是用 ASN. 1定义的 ,则其杂凑值是对其编码中除去外部类型和长度的部分做杂凑运算的结果 ,而且杂凑函数算法应在 SignPolicyHshAlg字段中给出 。
如果签名策略是用其他语法结构定义的 ,则其语法结构的类型以及使用的杂凑函数应作为签名策略的一部分给出 ,或使用签名策略限定符(signature policy qualifier)标明 。
签(S)i名策(gPo)li略标(cyH)a识(sh)符应(∷)过签名策(OtherHa)s略(h)限(A)l定符的其(gAndVa)lu他(e)相关信息限定 。签名策略限定符的语义及语法结构
是与 SigPolicyQualifierId字段中的对象标识符相关联的 ,其语法定义如下 :
sigPolicyQualifierIdSigPolicyQualifierId,
SigPolicyQualifierInfo ∷ = SEQUENCE {
sigQualifier ANY DEFINED BY sigPolicyQualifierId }本标准给出两种限定符 :
a) spuri:包含了指向签名策略的 URI或 URL;
b) spUserNotice: 包含一个用户通知 , 当验证签名时该通知应被显示给验证者 。
SigPolicyQualifierId ∷ = OBJECT IDENTIFIER
pkcs(1) pkcs9(9) smime(16) id-spq(5) 1 }
id-spq-ets-uriOBJECT IDENTIFIER ∷ = { iso(1) member-body(2) us(840) rsadsi(113549)
SPuri∷ = IA5String
(1135(i)4(d)-9(s)p(q)-kcs(ets)-n)op(t)ikc(ce)s9(O)(9(B)J)Esm(CT)imIe(D)(16(EN))Tid(IF)-spq(IER)(5∷)2=} { iso( 1) member-body(2) us(840) rsadsi
noticeRefNoticeReference OPTIONAL,
SPUserNotice ∷ = SEQUENCE {
organization DisplayText,
explicitTextDisplayTextOPTIONAL} NoticeReference ∷ = SEQUENCE {
visibleString VisibleString (SIZE (1. . 200)) ,
noticeNumbers SEQUENCE OF INTEGER } DisplayText ∷ = CHOICE {
bmpString BMPString (SIZE (1. . 200)) ,
utf8String UTF8String (SIZE (1. . 200)) }
6. 1. 10 RFC2630中引入的可选属性
联署签名属性(countersignature attribute) 。其语法结构定义见 RFC2630。联署签名属性在使用时应为未签名属性(UnsignedAttribute) 。
6. 1. 11 RFC2634中引入的可选属性
RFC2634中引入的可选属性包含以下属性 :
a) 签名内容引用属性(Signed ContentReference Attribute) 。该属性把一个签名数据链接到另一个 。可以用于把对消息的回复同原消息联系起来 , 或者把一个签名数据并入其他签名数据中 。该属性应为被签名属性 。其语法结构定义见 RFC2634。
b) 内容标识属性(ContentIdentifier Attribute) 。 内容标识属性提供一个被签名内容的标识 ,该标识可在以后需要 对 该 内 容 进 行 引 用 时 使 用 。该 属 性 的 语 法 结 构 定 义 见 RFC2634, 在 使 用时 ,该属性应为被签名属性 。
c) 内容提示属性(ContentHintAttribute) 。 内容提示属性用于提供被签名内容的格式信息 。可以用于签名者向验证者指明被签名内容的格式 。 当被签名内容必须显示给验证方看时 ,该属性必须包含在签名数据中 。其语法结构定义见 RFC2634。
13
GB/T 25064—2010
6. 1. 12 其他可选属性
其他可选属性包括以下属性 :
6. 1. 12. 1 承诺类型标识属性
在某些情况下 ,签名者希望通过显式的向验证者表明 ,签名数据代表了签名者某种承诺 。承诺类型标识属性(CommitmentType Indication Attribute)用于传达这种信息 。该属性应为被签名属性 。
承诺类型应是签名策略的一部分 ,或者是一个已经注册的类型 。
签名策略规定了一个其承认的属性集合 。这个承认的属性集合中包含了所有该策略承认的承诺类型 。 只有承认的承诺类型才允许出现在该属性字段中 。
该属性的对象标识符定义为 :
rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 16}
id-aa-ets-commitmentType OBJECT IDENTIFIER ∷ = { iso(1) member-body(2) us(840)
该属性的语法结构 ASN. 1定义为 :
commitmentTypeIdCommitmentTypeIdentifier,
CommitmentTypeIndication ∷ = SEQUENCE {
commitmentTypeQualifier SEQUENCE SIZE (1. . MAX) OF CommitmentTypeQualifier OPTIONAL}
commitmentTypeIdentifier CommitmentTypeIdentifier,
CommitmentTypeQual(CommitmentTypeIdent)if(if)iie(e)r(r) SEQUE(OBJEC)N(T)CE(ID)E{NTIFIER
qualifier ANY DEFINED BY commitmentTypeIdentifier}本标准给出几种承诺类型 :
(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 1}
(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 2}
id-cti-ets-proofOfOrigin OBJECT IDENTIFIER ∷ = { iso(1) member-body(2) us(840) rsadsi
id-cti-ets-proofOfReceiptOBJECT IDENTIFIER ∷ = { iso(1) member-body(2) us(840) rsadsi
(1135(i)4(d)-9(c)i-p(e)kc(ts)p(1(r)o)opk(fO)c(f)s(D)-e9li(9(v)e)rs(y)m(O)im(BJ)e(E)(16(CT)) Icti(DE)(6(N)3(I)F}IER ∷ = { iso(1) member-body(2) us(840) rsadsi (1135(i)4(d)-9(c)i-p(e)kc(ts)p(1(r)o)opk(fO)c(f)s(S)-e9(n)9(e)sm(OB)im(JE)e(C)(1(T)6I)Dcti(EN)(6(T))I4(F)I}ER ∷ = { iso(1) member-body(2) us(840) rsadsi
(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 5}
(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 6}
id-cti-ets-proofOfApproval OBJECT IDENTIFIER ∷ = { iso(1) member-body(2) us(840) rsadsi
id-cti-ets-proofOfCreation OBJECT IDENTIFIER ∷ = { iso(1) member-body(2) us(840) rsadsi
这些承诺类型含义如下 :
1) Proofoforigin:表明签名者承认其曾生成 、认同并发送了该消息 ;
2) Proofof receipt: 表明签名者承认其曾接受到该内容的消息 ;
3) Proofof delivery:表明提供该承诺的可信服务提供者已经把某消息传送给了接受者可访问的本地存储中 ;
4) Proofof sender: 表明提供该承诺的实体发送过这个消息(但不一定创建了该消息) ;
5) Proofof approval: 表明签名者认同该消息的内容 ;
6) Proofof creation: 表明签名者创建了该消息(但并不一定认同或发送过该消息) 。
6. 1. 12. 2 签名者位置属性
签名者位置属性(Signer Location)用于指定一个表明签名者所处地理位置的助记符 。这个助记符
14
GB/T 25064—2010
应在签名者所在的国家注册 ,并在公共电报服务(Public Telegram Service)中使用 。该属性应为被签名属性 。
该属性的对象标识符为 :
(1135(i)4(d)-9(a)-pk(ets)c-s(s)1(g)n)epkcs(rLoc)-a9ti(9(o)n) s(O)mim(BJE)e(C)6(I)id(E)N-aa(T)2(F)1(E)7(R)}∷ = { iso(1) member-body(2) us(840) rsadsi
该属性的语法结构 ASN. 1定义为 :
countryName [0] DirectoryString OPTIONAL,
SignerLocation ∷ = SEQUENCE { — 下列的内容应至少有一项出现
localityName [1] DirectoryString OPTIONAL,
postalAdddress [2] PostalAddress OPTIONAL }
6. 1. 1(P)2(o)s3(t)al签名者(Addres)s属∷性= SEQUENCE SIZE(1. . 6) OF DirectoryString
签名者属性(SignerAttributes)用于表示签名者的其他信息 ,包括签名者宣称的属性和签名者被证明的属性 。该属性应为被签名属性 。
该属性的对象标识符为 :
(1135(i)4(d)-9(a)-pk(ets)c-s(s)1(g)n)epkcs(rAtt)-r9O(Jsmime(ECTI)D(16(E)N) id(TI)-FaI2(R)) 1(∷)8=} { iso(1) member-body(2) us(840) rsadsi
该属性语法结构的 ASN. 1 描述为 :
claimedAttributes [0] ClaimedAttributes,
SignerAttribute ∷ = SEQUENCE OF CHOICE {
certifiedAttributes [1] CertifiedAttributes }
ClaimedAttributes ∷ = SEQUENCE OF Attribute
6. 1. 12(C)er4(t)ifie内容(dAt)t时(r)i间戳(bute)s ∷ = AttributeCertificate — 见 GB/T 16264. 8—2005 中定义 。
内容时间戳(ContentTimestamp)属性是被签名内容在签名前的一个时间戳 。该属性应为被签名属性 。其对象标识符为 :
rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 20}
id-aa-ets-contentTimestamp OBJECT IDENTIFIER ∷ = { iso(1) member-body(2) us(840)
其语法结构的 ASN. 1 描述为 :
ContentTimestamp∷= TimeStampToken
TimeStampToken定义见 GB/T 20520—2006。TimeStampToken 中的 messageImprint字段的值应为电子签名中 signedData中的 encapContentInfo 中的 eContent字段的内容的杂凑值 。
6. 1. 13 对多签名的支持
对多签名的支持包含以下方法 :
a) 独立签名 。多方独立签名可通过对每个签名者使用一个 SignerInfo 实现 。 每个 SignerInfo 都应包括本标准中规定的所有属性 。签名验证者应对每个 SignerInfo都单独验证 。
b) 嵌入 签 名 。 对 方 嵌 入 签 名 可 通 过 使 用 未 签 名 的 联 署 签 名 属 性 (counter-signature unsigned attribute)实现 。每个 联 署 签 名 结 果 都 应 放 在 签 名 结 果 的 SignerInfo 的 一 个 联 署 签 名 属 性(Countersignature)中 。
6. 2 验证数据格式
6. 2. 1 导引
本条规定了电子签名的验证数据格式 ,包括时间戳和完全验证数据 。 时间戳应用于电子签名的值 ,完全验证数据包含签名值的时间戳 、用于电子签名完全验证的所有证书和撤销信息 。
15
GB/T 25064—2010
本条还规定验证数据的扩展格式 。 时间戳包含 ES-C 的时间戳 , 而扩展时间戳包含验证路径引用和撤销信息引用的时间戳以支持 ES-C。扩展长验证数据包含完全验证数据和使用在 ES-C 中的所有证书和撤销信息的实际值 。扩展时间戳长验证数据包含时间戳或扩展时间戳 , 和使用在 ES-C 中的所有证书和撤销信息的实际值 。
本条还规定了归档验证数据的数据格式 。归档验证数据包含完全验证数据 、证书和撤销信息 、扩展时间戳 、签名用户数据和所有这些数据的归档时间戳 。归档时间戳可以在一个长周期后重新申请 ,在电子签名和时间戳算法弱化时以维持有效性 。
本条下面定义的所有数据都是非签名类型 。
6. 2. 2 电子签名时间戳
一个电子签名可以从不同的时间戳机构得到多个电子签名时间戳实例 。 以下的对象标识符标识了签名时间戳属性 :
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 14}
id-aa-signatureTimeStampToken OBJECT IDENTIFIER ∷ = { iso(1) member-body(2)
签名时间戳属性值的 ASN. 1语法为 :
T(S)iimeStamp(gnatureT)iT(m)o(e)ken中的(StampT)om(k)e(en)ssa(∷)gmp(T)irint域的 值(meStampT)o应(k)e为(n)用 于 对 signedData进 行 时 间 戳 的 SignerInfo
中的签名域值的杂凑值 。
6. 2. 3 完全验证数据
6. 2. 3. 1 完全验证数据内容
完全验证数据最少应包括签名时间戳属性 、完全证书引用 、完全撤销引用 。
6. 2. 3. 2 完全证书引用属性
完全证书引用引用了 CA证书的全集 ,这些证书被用于验证 ES-C。一个电子签名只可以有一个完全证书引用实例 。 以下的对象标识符标识了完全证书引用属性 :
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 21}
id-aa-ets-certificateRefs OBJECT IDENTIFIER ∷ = { iso(1) member-body(2)
完全证书引用属性值的 ASN. 1语法为 :
其中 OtherCertID 中应出现 IssuerSerial,certHash应与证书引用的杂凑值匹配 。
CompleteCertificateRefs ∷ = SEQUENCE OF OtherCertID
6. 2. 3. 3 完全撤销引用属性
完全撤销引用引用了 CRL或 OCSP 响应的全集 ,这些 CRL或 OCSP 响应被用于验证 ES-C 中使用的签名者和 CA证书 。一个电子签名只可以有一个完全撤销引用实例 。 以下的对象标识符标识了完全撤销引用属性 :
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 22}
id-aa-ets-revocationRefs OBJECT IDENTIFIER ∷ = { iso(1) member-body(2)
完全撤销引用属性值的 ASN. 1语法为 :
crlids [0] CRLListID OPTIONAL,
Cr(Co)lO(m)c(p)s(l)pRe(eteR)f(e)tiSEQ(onR)eU(f)sEN(∷)S{EQUENCE OFCrlOcspRef
ocspids [1] OcspListID OPTIONAL,
otherRev [2] OtherRevRefs OPTIONAL}
CompleteRevocationRefs应包含签 名 证 书 的 一 个 CrlOcspRef、CompleteCertificateRefs 属 性 中 每个 OtherCertID 的 CrlOcspRef,这些 CrlOcspRef应与相关的 OtherCertID次序保持一致 。
16
CRLListID ∷ = SEQUENCE {
GB/T 25064—2010
crls SEQUENCE OFCrlValidatedID}
crlHash OtherHash,
CrlValidatedID ∷ = SEQUENCE {
crlissuer Name,
crlIdentifier CrlIdentifier OPTIONAL} CrlIdentifier ∷ = SEQUENCE {
crlIssuedTime UTCTime,
ocspResponses SEQUENCE OF OcspResponsesID} OcspResponsesID ∷ = SEQUENCE {
crlNumber INTEGER OPTIONAL} OcspListID ∷ = SEQUENCE {
ocspIdentifier OcspIdentifier,
ocspResponderID ResponderID,
ocspRepHash OtherHash OPTIONAL} OcspIdentifier ∷ = SEQUENCE {
producedAtGeneralizedTime}
创建 crlValidatedID 时 ,在包含签名的完整的 DER 编码的 CRL上 crlHash 被计算出 。 除非 CRL可以从其他信息中推断出 ,crlIdentifier一般都要出现 。crlIdentifier用颁发者名字和 CRL颁发时间来标识 CRL,其中 CRL颁发时间 对 应 着 CRL 中 的 “thisUpdate”时 间 。 当 标 识 的 CRL是 增 量 CRL 时 , crlListID应包含 CRL集合的引用以提供完全的撤销列表 。
OcspIdentifier用颁发者名字和 OCSP响应颁发时间来标识 OCSP响应 ,其中 OCSP响应颁发时间对应着 OCSP响应中的“producedAt”时间 。 由于可能需要在同一 秒 内 区 别 收 到 的 两 个 不 同 的 OCSP响应 ,OcspResponsesID 中的响应杂凑值被用于解决这种混淆 。
otherRevRefType OtherRevRefType,
OtherRevRefs ∷ = SEQUENCE {
其他撤销引用的语法和语意不在本规范描述 。
otherRevRefs ANY DEFINED BY otherRevRefType} OtherRevRefType ∷ = OBJECT IDENTIFIER
6. 2. 4 扩展验证数据
6. 2. 4. 1 证书值属性
证书值属性含有完全证书引用属性中引用的证书值 。 一个电子签名只可以有一个证书值属性实例 。 以下的对象标识符标识了证书值属性 :
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 23}
id-aa-ets-certValues OBJECT IDENTIFIER ∷ = { iso(1) member-body(2)
证书值属性值的 ASN. 1语法为 :
6. 2. 4(C)e2(r)tifi撤(c)a销值(teV)a属lu性(es) ∷ = SEQUENCE OF Certificate
撤销值属性含有完全撤销引用属性中引用的 CRL和 OCSP 的值 。一个电子签名只可以有一个撤销值属性实例 。 以下的对象标识符标识了撤销值属性 :
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 24}
id-aa-ets-revocationValues OBJECT IDENTIFIER ∷ = { iso(1) member-body(2)
撤销值属性值的 ASN. 1语法为 :
17
RevocationValues ∷ = SEQUENCE {
GB/T 25064—2010
crlVals [0] SEQUENCE OF CertificateListOPTIONAL,
ocspVals [1] SEQUENCE OF BasicOCSPResponse OPTIONAL,
otherRevValType OtherRevValType,
otherRevVals [2] OtherRevVals } OtherRevVals ∷ = SEQUENCE {
otherRevVals ANY DEFINED BY OtherRevValType}
其中(Oth)eC(rR)ert(ev)if(V)ic(a)a(l)teL(Typ)is(e)tGB(O)/(B)T205(JECT)18(I)D—E2006中定(NTIFIER)义 ,BasicOCSPResponse参见 GB/T 19713— 2005
中的定义 。
6. 2. 4. 3 ES-C 时间戳属性
ES-C时间戳属性是电子签名和完全验证数据的杂凑值的时间戳 。一个电子签名可以从不同的时
间戳机构得到多个 ES-C时间戳属性实例 。 以下的对象标识符标识了 ES-C时间戳属性 :
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 25}
id-aa-ets-escTimeStamp OBJECT IDENTIFIER ∷ = { iso(1) member-body(2)
ES-C时间戳属性值的 ASN. 1语法为 :
ESCTimeStampToken ∷ = TimeStampToken
TimeStampToken 中的 messageImprint域的值应为出现在 ES-C 中的以下数据对象的连接值的杂凑值 :
a) SignerInfo 中的签名域 ;
b) 签名时间戳属性 ;
c) 完全证书引用属性 ;
d) 完全撤销引用属性 。
6. 2. 4. 4 时间戳证书和 CRL属性
时间戳证书和 CRL属性是相关证书和 OCSP响应/CRL的一个列表 ,这个列表被加了时间戳来保护 CA安全 。 以下的对象标识符标识了时间戳证书和 CRL属性 :
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 26}
id-aa-ets-certCRLTimestamp OBJECT IDENTIFIER ∷ = { iso(1) member-body(2)
时间戳证书和 CRL属性值的 ASN. 1语法为 :
TimeS(Times)t(t)ampTok(ampedC)ee(r)n(t)s中的(CRL)m(s)e(∷)sgeImpr(TimeS)int域(tamp)的(T)o值(k)e应(n)为出现在 ES-C 中的以下数据对象的连接值的杂
凑值 :
a) 完全证书引用属性 ;
b) 完全撤销引用属性 。
6. 2. 5 归档验证数据
当需要一个非常长时间的电子签名 ,可能会因为算法的弱化或 TSA证书的有效期限制 , 电子签名的时间戳可能会变得危险 ,这时需要多次申请电子签名的时间戳 。归档时间戳用于解决这个问题 ,时间戳可以每过一定周期反复应用 。
归档时间戳属性是用户数据和整个电子签名的时间戳 。一个电子签名可以从不同的时间戳机构随着时间的流逝得到多个归档时间戳属性实例 。 以下的对象标识符标识了嵌套归档时间戳属性 :
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 27}
id-aa-ets-archiveTimestamp OBJECT IDENTIFIER ∷ = { iso(1) member-body(2)
归档时间戳属性值的 ASN. 1语法为 :
18
ArchiveTimeStampToken ∷ = TimeStampToken
GB/T 25064—2010
TimeStampToken 中的 messageImprint域的值应为出现在电子签名中的以下数据对象的连接值的杂凑值 :
a) encapContentInfo eContentOCTET STRING;
b) signedAttributes;
c) signature field within SignerInfo;
d) SignatureTimeStampToken attribute;
e) CompleteCertificateRefs attribute;
f) CompleteRevocationData attribute;
g) CertificateValues attribute(如果不存在 ,这个信息就应该包含在 ES-A 中) ;
h) RevocationValues attribute(如果不存在 ,这个信息就应该包含在 ES-A 中) ;
i) ESCTimeStampToken attribute ifpresent;
j) TimestampedCertsCRLs attribute ifpresent;
k) any previous ArchiveTimeStampToken attributes。
归档时间戳应该比普通 电 子 签 名 和 弱 算 法(密 钥 长 度) 时 间 戳 使 用 更 强 的 算 法(或 更 长 的 密 钥 长度) 。
6. 3 签名策略要求
对于签名策略 ,本标准要求 :
a) 签名者和验证者应按照签名策略属性中给出的签名策略来产生和验证签名 ;
b) 显式给出的签名策略应使用对象表述符标识 ;
c) 应有一个对应签名策略的策略说明 ;
d) 对一个显式给出的策略 ,应有一个确定的策略说明格式 ,并且该格式有唯一的二进制编码 ;
e) 对于确定的并且显式给出的签名策略说明 ,应有一个使用合法算法做的杂凑运算结果 ,签名者应向验证者提供该杂凑运算结果 ,验证者应检查该结果的正确性 。
签名策略说明主要包 括 关 于 该 策 略 的 一 般 性 信 息 , 验 证 该 策 略 的 规 则 以 及 其 他 的 签 名 策 略 相 关信息 。
6. 3. 1 ASN. 1 总体结构
本标准给出的 ASN. 1语法结构使用 DER 编码格式 。
签名策略的 ASN. 1语法结构描述如下 :
signPolicyHashAlg AlgorithmIdentifier,
SignaturePolicy ∷ = SEQUENCE {
signPolicyInfo SignPolicyInfo,
signPolicyHash SignPolicyHash OPTIONAL }
signPolicyIdentifier SignPolicyId,
SignPolicyInfo(SignPolicyHas)h∷∷==SEQUEN(OCTET)C(S)E(T)R{ING
dateOfIssue GeneralizedTime,
policyIssuerName PolicyIssuerName,
fieldOfApplication FieldOfApplication,
signatureValidationPolicy SignatureValidationPolicy,
signPolExtensions SignPolExtensions OPTIONAL}
P(S)o(ig)licyI(nPo)s(l)is(c)u(y)e(I)r(d)Na(∷)e字段使用 Genera(OBJECTIDENT)lINam(FIER)e; 的方式标识策略颁发者 ,ASN. 1定义如下 :
19
PolicyIssuerName ∷ = GeneralNames;
GB/T 25064—2010
fieldofApplication字段描述该策略的期望应用领域 ,ASN. 1定义如下 :
6. 3. 2(F)iel签名验证(dOfApp)li策略(cat)ion ∷ = DirectoryString;
对于签名者 ,签名验证策略(Signature Validation Policy)规定了电子签名中应包含的数据单元 ;对于签名验证者 ,签名验证策略规定了根据签名策略的要求 , 电子签名中应含有哪些数据单元才有可能验证通过 。
签名验证策略的语法结构定义如下 :
signingPeriod SigningPeriod,
SignatureValidationPolicy ∷ = SEQUENCE {
commonRules CommonRules,
commitmentRules CommitmentRules,
signPolExtensions SignPolExtensions OPTIONAL}
其中 signingPeriod字段用于给出该签名策略有效期的起始日期和时间 ,另外该字段还有一个可选项用于给出该签名策略有效期的终止日期和时间 。该字段的语法结构如下 :
notBefore GeneralizedTime,
SigningPeriod ∷ = SEQUENCE {
notAfter GeneralizedTime OPTIONAL }
6. 3. 3 通用规则
通用规则(Common Rules) 是 对 所 有 的 承 诺 类 型(commitment types) 都 适 用 的 规 则 。 其 ASN. 1语法结构定义如下 :
signerAndVeriferRules [0] SignerAndVerifierRules OPTIONAL,
CommonRules ∷ = SEQUENCE {
signingCertTrustCondition [1] SigningCertTrustCondition OPTIONAL,
timeStampTrustCondition [2] TimestampTrustCondition OPTIONAL,
attributeTrustCondition [3] AttributeTrustCondition OPTIONAL,
algorithmConstraintSet[4] AlgorithmConstraintSetOPTIONAL,
signPolExtensions[5] SignPolExtensions OPTIONAL}
如果某个字段在 CommonRules 中出现 ,则相应的字段也应在 CommitmentRules 中出现 。如果下列的某个字段在 CommonRules 中没有出现 ,则在每个 CommitmentRule 中都应给出 :
a) signerAndVerifierRules;
b) signingCertTrustCondition;
c) timeStampTrustCondition。
6. 3. 4 承诺规则
CommitmentRule 的定义如下 :
承诺规则(CommitmentRules)中包含了对给定承诺类型的验证规则 ,其 ASN. 1定义如下 : CommitmentRules ∷ = SEQUENCE OF CommitmentRule
selCommitmentTypes SelectedCommitmentTypes,
CommitmentRule ∷ = SEQUENCE {
signerAndVeriferRules [0] SignerAndVerifierRules OPTIONAL,
signingCertTrustCondition [1] SigningCertTrustCondition OPTIONAL,
timeStampTrustCondition [2] TimestampTrustCondition OPTIONAL,
attributeTrustCondition [3] AttributeTrustCondition OPTIONAL,
algorithmConstraintSet[4] AlgorithmConstraintSetOPTIONAL,
20
GB/T 25064—2010
signPolExtensions[5] SignPolExtensions OPTIONAL} SelectedCommitmentTypes ∷ = SEQUENCE OF CHOICE {
empty NULL,
recognizedCommitmentType CommitmentType}
如果 SelectedCommitmentTypes中选择 的 是 empty,则 该 规 则 适 用 于 没 有 指 定 承 诺 类 型 的 情 况(即承诺类型通 过 消 息 的 语 义 内 容 指 定) 。 否 则 , 即 SelectedCommitmentTypes选 择 的 是 recognized- CommitmentType,则该规则适 用 于 recognizedCommitmentType给 出 的 某 个 承 诺 类 型 。 一 种 承 诺 类型应至多有一个承诺规则 。承诺类型的 ASN. 1语法结构定义如下 :
identifier CommitmentTypeIdentifier,
CommitmentType ∷ = SEQUENCE {
fieldOfApplication[0] FieldOfApplication OPTIONAL,
semantics[1] DirectoryString OPTIONAL }
其中 fieldOfApplication字段 和 semantics字段定义了该承诺类型在签名策略规定的总的应用领域中的具体用法和含义 。
6. 3. 5 签名者和验证者规则
6. 3. 5. 1 导引
签名者和验 证 者 规 则 (Singer and Verifier Rules) 包 含 了 一 个 签 名 者 规 则 和 一 个 验 证 规 则 , 其ASN. 1语法结构定义如下 :
signerRules SignerRules,
SignerAndVerifierRules ∷ = SEQUENCE {
verifierRules VerifierRules }
6. 3. 5. 2 签名者规则
签名者规则用于标识 :
a) eContent字段是否为空 , 以及签名值是否是对 CMS结构以外的数据的杂凑值做的签名结果 ;
b) 根据该签名策略签名者应提供的 CMS被签名属性 ;
c) 根据该签名策略签名者应提供的 CMS未被签名属性 ;
d) 在 SigningCertificate属性中 ,是否需要包含从认证路径到信任锚点(trust point) 的所有证书的标识符 ;
e) 在 SignedData的 certificates字段中 ,是仅需要包含签名者的证书还是需要从认证路径到信任锚点的所有证书 。
签名者规则的 ASN. 1语法结构定义如下 :
externalSignedData BOOLEAN OPTIONAL,
SignerRules ∷ = SEQUENCE {
— 如果被签名数据是 CMS结构以外的 ,则为真
— 如果被签名数据是 CMS结构中的一部分 ,则为假
— 如果两者都允许则该字段不出现
mandatedSignedAttr CMSAttrs,
mandatedUnsignedAttr CMSAttrs,
mandatedCertificateRef [0] CertRefReqDEFAULT signerOnly, mandatedCertificateInfo [1] CertInfoReqDEFAULT none,
signPolExtensions[2] SignPolExtensions OPTIONAL}
其中(CMS)A,m(t)an(trs)dat(∷)Sig(SE)ne(Q)dAttr字(UENCE)段(O)需要包括所有本标准中规(FOBJECTIDENTIFIER)定的以及该策略规定的被签名属性的对
21
GB/T 25064—2010
象标识符 。mandatedUnsignedAttr字段则应包括所有本标准中规定的以及该策略规定的未被签名属性的对象标识符 。
mandatedCertificateRef用于说明是签名者仅需要提供签名者的证书还是需要提供证书路径上的所有证书 。其 ASN. 1语法结构定义如下 :
signerOnly(1) , — 仅需要提供签名者证书
CertRefReq ∷ = ENUMERATED {
fullPath (2)} — 要求整个证书路径上所有证书
mandatedCertificateInfo字段用于说明在 SignedData的 certificates字段中 ,是仅需要包含签名者的证书还是需要从认 证 路 径 到 信 任 锚 点 的 所 有 证 书 是 签 名 者 的 证 书 。 其 ASN. 1 语 法 结 构 定 义如下 :
none (0) , — 没有强制要求
CertInfoReq ∷ = ENUMERATED {
signerOnly(1) , — 仅要求签名者证书
fullPath (2)} — 要求证书路径上的所有证书
6. 3. 5. 3 验证者规则
验证者规则用于说明根据该规则 ,签名中应有的 CMS未签名属性 , 以及如果签名者没有给出验证者需要补充的未签名属性 。验证者规则的 ASN. 1语法结构定义如下 :
mandatedUnsignedAttr MandatedUnsignedAttr,
VerifierRules ∷ = SEQUENCE {
signPolExtensions SignPolExtensions OPTIONAL}
6. 3. 6(M)a证书(ndat)e及撤销(dUns)i要(gn)e求(d)Attr ∷ = CMSAttrs
6. 3. 6. 1 证书要求
certificateTrustTrees给出了一组自签名证书 ,信任锚点使用这些自签名证书作为证书路径处理的起点 。其 ASN. 1语法结构定义如下 :
trustpointCertificate, — 自签名证书
CertificateTrustPoi(CertificateTrustTre)n(e)t(s) S(S)E(E)QU(QU)E(E)N(N)C(C)E(E){OF CertificateTrustPoint
pathLenConstraint[0] PathLenConstraintOPTIONAL,
acceptablePolicySet[1] AcceptablePolicySetOPTIONAL, — 如果该字段不出现表示所有策略
nameConstraints[2] NameConstraints OPTIONAL,
policyConstraints[3] PolicyConstraints OPTIONAL }
trustPoint字段中给出在证书路径处理中作为信任锚点的 CA 自签名证书 。
pathLenConstraint字段给出从信任锚点开始的证书路径中 CA证书的最大数量 。该值为零时 ,证书路径中应仅有信任锚点证书和终端实体证书 。如果该字段出现则其值应不小于零 。如果该字段不出现 ,则对证书路径的长度不限制 。
pathLenConstraint ∷ = INTEGER (0. . MAX)
acceptablePolicySet字段给出了根据该签名策略所有可接受的证书策略 。其 ASN. 1 语法结构定义如下 :
nameConstraints字段给出了证书路径中所有证书主体名允许的名字空间 。对名字的要求适用于
CertPol(Accepta)ic(b)yId(leP)ocOBJ(et∷)T(S)I(E)DE(QU)N(E)TIFI(NCE)ER(O)FCertPolicyId
22
GB/T 25064—2010
subjectdistinguished name 和 subjectalternative name。这些限制要求包括允许的名字子树和不允许的名字子树 。其 ASN. 1语法结构定义如下 :
permittedSubtrees[0] GeneralSubtrees OPTIONAL,
NameConstraints ∷ = SEQUENCE {
excludedSubtrees[1] GeneralSubtrees OPTIONAL }
Geneba(ra)s(l)e(S)uGen(btr)e(e)r(e)al(∷)mSeE,QUENCE {
minimum [0] BaseDistance DEFAULT 0,
maximum [1] BaseDistance OPTIONAL }
GeneralSubtrees ∷ = SEQUENCE SIZE (1. . MAX) OF GeneralSubtree
Pol(Bas)ic(e)yConstr(Distance)ain(∷)t的( I)ASN 1(NTEGE)语(R).结.构(M)定(AX)义)如下 :
requireExplicitPolicy[0] SkipCerts OPTIONAL,
PolicyConstraints ∷ = SEQUENCE {
inhibitPolicyMapping[1] SkipCerts OPTIONAL }
如果 i(S)n(k)h(ip)ib(C)itPo(erts)lic(∷)ya( I)pping字段(NTEGER)存(0在.. ,则该(MAX)值) 用于表示在策略映射不再允许前证书路径中其他证
书的数量(包括信任锚点的自签名证书) 。
如 果 requireExplicitPolicy 字 段 存 在 , 后 续 的 证 书 中 应 包 含 可 接 受 的 策 略 标 识 符 。 requireExplicitPolicy字段的值用于表示在需要显式策略时 ,证书路径中其他证书的数量 。
6. 3. 6. 2 撤销要求
RevocRequirements字段定义了对从 CRL和/或 OCSP响应消息中获得的用于验证证书状态的撤销信息的最小要求 。其 ASN. 1语法结构定义如下 :
endCertRevReqRevReq,
CertRevReq ∷ = SEQUENCE {
caCerts [0] RevReq}
证书撤销要求包含以下内容 :
endCertRevReq:终端证书(签名证书 ,属性证书和 TSA证书) ;
caCerts: CA证书 ;
RevReq ∷ = SEQUENCE {
enuRevReqEnuRevReq,
clrCheck (0) ,
exRevReq SignPolExtensions OPTIONAL} EnuRevReq ∷ = ENUMERATED {
ocspCheck (1) ,
bothCheck (2) ,
eitherCheck (3) ,
noCheck (4) ,
other (5) }
撤销要求定义了以下内容 :
a) clrCheck: 应根据当前的 CRL或 ARL进行检查 ;
b) ocspCheck:应适用 OCSP(见 RFC2450)检查撤销状态 ;
c) bothCheck:应同时做 OCSP和 CRL检查 ;
23
GB/T 25064—2010
d) eitherCheck:既可以做 OCSP也可以做 CRL检查 ;
e) noCheck: 不要求检查 。
6. 3. 7 签名证书信任条件
签名证书信任条 件(SigningCertTrustCondition) 规 定 了 验 证 签 名 证 书 时 处 理 证 书 路 径 的 信 任 条件 。其 ASN. 1语法结构定义如下 :
signerTrustTrees CertificateTrustTrees,
SigningCertTrustCondition ∷ = SEQUENCE {
signerRevReqCertRevReq} 6. 3. 8 时间戳信任条件
时间戳信任条件(TimeStampCondition)规定了用于认证时间戳机构的真实性时验证证书路径的信任条件以及对时间戳机构的名字限制 。这些信任条件和限制应用于 ES-T签名中的时间戳 。
ttsCertificateTrustTrees[0] CertificateTrustTrees OPTIONAL,
TimestampTrustCondition ∷ = SEQUENCE {
ttsRevReq [1] CertRevReq OPTIONAL,
ttsNameConstraints[2] NameConstraints OPTIONAL,
cautionPeriod [3] DeltaTime OPTIONAL,
signatureTimestampDelay [4] DeltaTime OPTIONAL }
DeltdeltaS(aTime)ec(∷)od, {
deltaMinutes INTEGER,
deltaHours INTEGER,
deltaDays INTEGER }
如果 ttsCertificateTrustTrees不存在 ,则 certificateTrustCondition中规定的规则适用于认证时间戳机构的公钥 。
相关推荐
- GB/T 16273.5-2002 设备用图形符号 第5部分:塑料机械通用符号
- GB/T 13288.3-2009 涂覆涂料前钢材表面处理 喷射清理后的钢材表面粗糙度特性 第3部分:ISO表面粗糙
- GB∕T 18993.3-2020 冷热水用氯化聚氯乙烯(PVC-C)管道系统 第3部分:管件
- GB/T 43144-2023 无损检测 声发射检测 钢筋混凝土梁损伤评定的检测方法 正式版
- GB/T 18685-2017 普通螺纹搓制和滚制前的毛坯直径
- GB/T 33193.1-2016 铁道车辆空调 第1部分:舒适度参数
- GB/T 2659.1-2022 世界各国和地区及其行政区划名称代码 第1部分:国家和地区代码
- GB/T 34484.1-2017 热处理钢 第1部分:非合金钢
- GB/T 51071-2014 330kV~750kV智能变电站设计规范 高清晰版
- GB/T 17450-1998 技术制图 图线

