ofd版式文档技术规范(四)
7 密码应用协议
7.1 概述
OFD的安全性由签名、加密和完整性保护三个协议共同保证,分别保护文件的真实性和不可否认性、机密性、完整性。
在本标准中,对文档进行签名和加密运算时,使用的签名方案标识和加密方案标识以及对应的签名和加密方案相关内容见附录A。
7.2 OFD签名协议
7.2.1 协议描述
OFD签名协议用于保证OFD文档的真实性和签名人对签名行为的不可否认性。OFD签名主要包括两种类型:一种是电子签章,遵循GM/T 0031;其他,遵循GM/T 0010。
7.2.2 签名算法要求
OFD的数字签对时间戳的要求如下:
a) OFD的签名算法应符合国家密码管理主管部门的要求;
b) 如果签名算法使用SM2,遵循GB/T 32918和GB/T 35276;如果杂凑算法使用SM3算法,遵循GB/T 32905。
7.2.3 数字证书要求
数字证书是用于OFD数字签名的数字证书。如果使用基于SM2算法的证书和CRL格式要求,遵循GB/T 20518。
7.2.4 时间戳要求
OFD的数字签对时间戳的要求如下:
a) OFD签名可包含时间戳、也可不包含时间戳;
b) 如OFD中包含时间戳签名,签名算法采用SM2时,数字签名格式遵循GB/T 35275;
c) 带时间戳的OFD签名,时间戳格式和使用规范遵循GB/T 20520,时间戳数据应放在PKCS#7数据格式定义的unauthenticatedAttributes中。
7.2.5 数据格式
OFD的数字签名信息采用XML格式存储,签名描述文件数据格式如图3所示:
图3 签名描述文件数据格式
签名描述文件对应元素说明见表1。
表1 签名描述文件对应元素说明
名称 | 类型 | 说明 | 备注 |
Signature | 签名描述文件的根节点 | 必选 | |
-SignedInfo | 签名信息,签名要保护的原文及本次签名相关的信息 | 必选 | |
--Provider | 记录本次签名的提供者信息 | 必选 | |
---ProviderName | xs:string | 创建签名时所用的签章组件的提供者 | 必选 |
---Company | xs:string | 创建签名时所用的签章组件的制造商 | 可选 |
---Version | xs:string | 创建签名时所用的签章组件的版本 | 可选 |
---ExtendData | xs:base64Binary | 创建签名时所用的签章组件的扩展信息 | 可选 |
--SignatureDateTime | xs:string | 签名时间 | 必选 |
--SignatureMethod | xs:string | 签名方案标识 | 必选 |
--References | 本次签名所对应的包内文件及其杂凑值 | 必选 | |
---CheckMethod | xs:string | 摘要方法,视应用场景的不同使用不同的摘要方法,用于各行业应用时,应使用符合该行业标准的算法。 | |
--- Reference | 本次签名的摘要节点 | ||
----FileRef | ST_Loc | 本次签名文件路径 | |
----CheckValue | xs:base64Binary | 对包内文件进行摘要计算,对所得的二进制摘要值进行base64编码所得结果 | |
--StampAnnot | 本签名关联的外观,如果一次签名或签章在多页上存在多个外观,该节点可出现多次。 | 可选 | |
---ID | xs:ID | 签名或签章标识 | |
---PageRef | ST_RefID | 引用外观注释所在的页面标识 | |
---Boundary | ST_Box | 签名签章注释的外观外边框位置,可用于签章注释在页面内的位置 | |
---Clip | ST_Box | 签名签章注释的外观裁减位置 | |
--Seal | 签章信息 | ||
---BaseLoc | ST_Loc | 签章信息文件路径 | |
---ImageLoc | ST_Box | 签章图片存储路径 | |
-SignedValue | xs:string | 存储数字签名文件对应的包内路径 | 必选 |
7.2.6 签名范围
参与签名的文件应包括但不限于描述参与签名页面的各个文件,如签名描述文件、注释描述文件、图像描述文件、图形描述文件、文字描述文件等,不应包括存放数据签名结果的文件。
7.2.7 签名流程
根据签名方案进行数字签名。流程如下:
a) 确认参与签名的文件列表;
b) 根据签名方案,调用杂凑算法分别计算每个文件的杂凑值;
c) 根据表1所示的数据结构,组装签名信息;
d) 调用杂凑算法计算签名信息的杂凑值;
e) 根据签名方案,使用操作人签名私钥对签名信息的杂凑值进行数字签名或电子签章;
f) 根据表1所示结构的数据结构生成签名描述文件。
7.2.8 验签流程
验证签名流程如下:
a) 根据签名描述文件中的签名方案,调用杂凑算法计算签名信息的杂凑值;
b) 根据签名方案,进行签名验证或签章验证,签章验证流程遵循GM/T 0031;
c) 根据签名信息中的签名文件列表,逐个读取签名文件明文信息,并验证文件杂凑值。
上一篇:ofd版式文档技术规范(三)
下一篇:ofd版式文档技术规范(五)