ofd版式文档技术规范(六)
加密流程
根据加密方案进行文件加密。流程如下:
a) 调用密钥产生服务生成用于文件加密的对称密钥;
b) 根据加密方案,使用文件加密对称密钥调用对称密码算法加密文件;
c) 根据加密方案,对文件加密对称密钥进行加密;
d) 如果电子文件访问者为多人,则重复步骤c);
e) 按表2所示的数据结构组装加密信息,生成加密描述文件。
解密流程
根据加密方案进行文件解密。流程如下:
a) 根据电子文件访问者身份从加密描述文件的加密信息中获取其加密后的文件加密对称密钥;
b) 根据加密方案,对文件加密对称密钥进行解密;
c) 根据加密方案,调用对称算法和文件加密对称密钥解密文件。
OFD完整性保护协议
协议描述
OFD完整性协议用于保证OFD文档自身的完整性。通过OFD完整性保护文件,可以检测OFD是否被恶意篡改或非法夹带。
签名算法要求
OFD的签名要求如下:
a) OFD的签名算法应采用国家密码管理主管部门的要求;
b) 如果签名算法采用SM2,遵循GB/T 32918和GB/T 3527;如果杂凑算法采用SM3算法,遵循GB/T 32905。
数字证书要求
数字证书是用于OFD数字签名的数字证书,基于SM2算法的证书和CRL格式要求遵循GB/T 20518。
时间戳要求
OFD完整性对时间戳的要求如下:
a) OFD签名可包含时间戳、也可不包含时间戳;
b) 如OFD中包含时间戳签名,签名算法采用SM2时,数字签名格式遵循GB/T 35275;
c) 带时间戳的OFD签名,时间戳格式和使用规范遵循GB/T 20520,时间戳数据应放在PKCS#7数据格式定义的unauthenticatedAttributes中。
数据格式
OFD的完整性保护信息采用XML格式存储,完整性保护描述文件数据格式如图5所示:
图5 完整性保护描述文件数据格式
完整性保护描述文件对应元素说明见表3。
表3 完整性保护描述文件属性
名称 | 类型 | 说明 | 用法 |
DocEntries | 根节点 | 必选 | |
-ID | xs:ID | 序号 | 必选 |
-CreatorName | xs:string | OFD文档创建人/创建单位 | 可选 |
-Version | xs:string | 版本 | 可选 |
-CreationDate | xs:date | 创建时间 | 可选 |
--Provider | 记录本次签名的提供者信息 | 必选 | |
---ProviderName | xs:string | 创建签名时所用的组件的提供者 | 必选 |
---Company | xs:string | 创建签名时所用的组件的制造商 | 可选 |
---Version | xs:string | 创建签名时所用的组件的版本 | 可选 |
--SignatureDateTime | xs:string | 签名时间 | 必选 |
--SignatureMethod | xs:string | 签名方案标识 | 必选 |
-FileList | 必选 | ||
--File | 必选 | ||
---ID | xs:ID | 文件标识 | 必选 |
---FileLoc | xs:string | 包内文件路径 | 必选 |
---CheckValue | xs:base64Binary | 文件杂凑值 | 必选 |
SignedValueLoc | xs:string | 完整性保护文件签名值存放路径。签名值使用PKCS7标准 | 可选 |
签名流程
OFD完整性保护签名流程如下:
a) 确认文件包内的所有文件;
b) 根据签名方案,调用杂凑算法分别计算每个文件的杂凑值;
c) 根据表3中所示的数据结构,组装签名信息;
d) 根据签名方案,使用版式文件合成者的签名私钥对签名信息的杂凑值进行数字签名;
e) 根据表3中所示的数据结构,生成完整性保护描述文件。
验签流程
OFD的数字签对时间戳的要求如下:
a) 读取完整性保护描述文件;
b) 根据签名方案,调用杂凑算法计算完整性保护数据信息的杂凑值;
c) 读取完整性保护文件签名值,进行签名验证;
d) 读取文件包内的文件,并验证文件杂凑值。