ofd版式文档技术规范(四)

时间:2021-10-29   访问量:11870

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所示

wps3.jpg 

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) 根据签名信息签名文件列表,逐个读取签名文件明文信息,验证文件杂凑值