电子签章结构以及规范讲解

news2024/11/15 23:40:53

前言:

安全电子签章是通过采用PKI公钥密码技术,将数字图像处理技术与电子签名技术进行结合,以电子形式对加盖印章图像数据的电子文档进行数字签名,以确保文档来源的真实性以及文档的完整性,防止对文档未经授权的篡改,并确保签章行为的不可否认性。

在使用电子印章对各种文档进行电子签章过程中,签章者通过数字签名对文档数据进行签章处理,从而达到与传统纸质文件盖章操作相同的可视化效果,同时又利用数字签名技术保障了文档数据的真实性、完整性以及签章者行为的不可否认性。

签章数据结构

v4

电子签章数据由签章信息、签章者证书、签名算法标识、签名值、时间戳等组成。

 签章信息由版本号、电子印章、签章时间、原文杂凑值、原文属性、自定义数据等组成

 其中:

version:电子签章版本号,该版本号与电子印章版本号保持一致。

eseal:生成电子签章使用的电子印章。

timeInfo:电子签章对应的时间,可以是GeneralizedTime时间。

dataHash:待签名原文的杂凑值。

propertyInfo:原文数据的属性,如文档ID、日期、段落、原文内容的字节数、指示信息、签名保护范围等,此部分受签名保护,propertyInfo的具体结构可自行定义,但至少应包含签名保护范围。

extDatas:厂商自定义数据。

签章者证书:cert:签章者的数字证书,应符合GB/T 20518的规定,按DER编码格式存放。

签名算法标识

signatureAlgID:签名算法标识,应符合GB/T 33560的规定,应与签章者证书中的算法声明保持一致。

签名值

signature:签章者对签章信息TBS_Sign进行数字签名的结果,注意签名过程中的原文杂凑所采用的算法应与签名算法保持协调,如果签名算法是SM2,则杂凑算法应采用SM3算法

时间戳

timeStamp:对签名值得时间戳,应符合GB/T 20520的规定,时间戳格式按DER编码存放

电子签章生成流程

a) 准备电子印章,并验证电子印章的正确性和有效性,具体步骤如下:

1)验证电子印章正确性和有效性

2)选择拟进行电子签章的签章者证书,并验证该证书的有效性,验证项至少包括:证书信任链、证书有效期验证、证书是否被撤销、密钥用法是否正确。

3)根据电子印章中的签章者证书列表类型,提取电子印章中的签章者证书信息列表,并用来判断步骤2)选择的签章者证书是否在列表中,如果证书信息类型值为1,则直接比对证书,如果值为2,则计算步骤2)中的证书的杂凑再进行比对

如果拟签章者在电子印章的签章者列表中,则进行后续流程;

如果比对失败,返回错误代码并退出签章流程,根据错误代码进一步判断,如果比对失败是因为签章者证书执行更新、重签发等操作而导致,程序应提示重新制作印章。

b) 对原文进行电子签章,具体步骤如下:

1)按照propertyInfo中的签名保护范围来准备待签名原文

2)将待签名原文数据进行杂凑运算,形成原文杂凑值

3)按照电子签章数据格式组成签章信息

4)签章者对签章信息进行数字签名,生成签名值

5)如果需要加盖时间戳,则利用上述签名值产生相应的时间戳

6)将步骤3)4)5)以及签章者信息、签名算法标识组成电子签章数据

电子签章验证流程如下:

a) 验证电子签章数据格式的正确性

1)根据电子印章数据格式来解析电子签章数据。

2)若解析失败,则返回错误代码并退出验证流程。

3)按照电子印章验证流程验证电子签章中的电子印章的正确性。

4)如果电子签章或电子印章数据格式不正确,则返回错误代码并退出验证流程。

b) 验证电子签章签名值是否正确

1)根据步骤a)解析所得的签章信息、签章者证书和签名算法标识,验证电子签章签名值。

2)如果签名值验证失败,则返回错误代码并退出验证流程。

c)验证签章者证书与电子印章的匹配性

1)提取电子印章中的签章者证书信息类型与签章者证书信息列表。

2)如果上述签章者证书信息类型值为1,则需要比对数字证书。将步骤a)解析所得的签章者证书与电子印章中签章者证书信息列表内的证书逐一作二进制比对,若均比对失败,则返回错误代码并退出验证流程。

3)如果上述签章者证书信息类型值为2,则需要比对证书的杂凑值。先计算步骤a)解析所得的签章者证书的杂凑值,再与电子印章中签章者证书信息列表内的杂凑值逐一作比对,若均比对失败,则返回错误代码并退出验证流程。

d)验证电子印章的有效性

1)从签章信息中提取电子印章,按照电子印章验证流程验证印章的有效性,若验证失败,需集合签章信息中的签章时间综合判断。

2)若电子印章失效因制章者证书失效导致,且在签章时间点上制章者证书也是无效的,则应记录为提示信息。

3)若电子印章失效因过期或被撤销所导致,且在签章时间不在电子印章有效期内,或当时电子印章不在正常状态,则返回错误代码并退出验证流程。

4)验证签章时刻,电子印章是否处于正常状态,如不处于正常状态,则返回错误代码并退出验证流程。

e)验证签章者证书有效性

1)从电子签章数据获得签章者证书,验证签章者证书有效性,验证项至少包括:证书信任链验证、证书有效期验证、证书是否被撤销、密钥用法是否正确。

2)若签章者证书有效性验证失败且是由于证书信任链验证或密钥用法不正确导致的,则返回错误代码并退出验证流程。

3)若签章者证书有效性验证失败且是由于证书过期或证书状态已撤销导致的,则按照步骤f)进一步判断

f)验证签章时间的有效性

1)比对签章者证书有效期和签章时间,如果签章时间不在签章者证书有效期内,则签章无效,验证失败,返回错误代码并退出验证流程。

2)如果签章时间处于签章者证书有效期内,则检查对应的撤销列表,如果证书在签章时间处于失效状态,则签章无效,验证失败,返回错误代码并退出验证流程。

g)验证原文杂凑

1)从电子签章数据中提取propertyInfo数据,从propertyInfo中提取签名保护范围提取待验证原文

2)将待验证原文数据进行杂凑运算,形成待验证原文杂凑值。

3)从电子签章数据中提取原文杂凑值,与上述待验证原文杂凑值进行二进制比对,如果比对失败,则电子签章验证失败,返回错误代码并退出验证流程。

h)验证时间戳的有效性

1)如果电子签章数据中包含时间戳,则应进行时间戳的有效性验证。

2)若时间戳验证不通过,则签章无效,返回错误代码并退出验证流程

3)比对时间戳中的时间与签章时间,若签章时间晚于时间戳中的时间,则签章无效,返回错误代码并退出验证流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129419.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法训练 —— 链表(1)

目录 1. LeetCode203.移除链表元素 2. LeetCode21.合并两个有序链表 3. LeetCode206.翻转链表 4. LeetCode707.设计链表 1. LeetCode203.移除链表元素 移除链表元素 题解:通过两个指针来控制,cur和prev;cur指针去找val,prev…

冰冰学习笔记:位图与布隆过滤器

欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正。 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位…

MySQL复制技术方案——半同步复制配置

Google为MySQL和InnoDB设计了一个大规模补丁集以量身打造服务器和存储引擎。其中一个修补程序可用于MySQL5.0版本,是半同步的复制补丁。MySQL已经打上了该补丁并在MySQL5.5中发布了。 半同步复制的理念是在允许更改操作继续执行前,确保更改操作至少被写…

34、基于STM32的电子时钟设计(DS1302)时钟、秒表、倒计时(Proteus仿真+程序)

编号:34 基于STM32的电子时钟设计(DS1302)时钟、秒表、倒计时 功能描述: 本系统由STM32F103系统LCD1602液晶显示按键模块DS1302时钟模块声光报警模块组成。 1、使用LCD1602显示当前日期、时间、星期 2、具有闹钟、倒计时、计时功…

【Java寒假打卡】Java基础-抽象类

【Java寒假打卡】Java基础-抽象类一、概述二、抽象类注意事项三、模板设计模式四、final关键字五、代码块一、概述 抽象方法:将共性的方法抽取到父类之后,发现该方法的实现逻辑无法在父类中给出具体明确,该方法就可定义为抽象方法抽象类&…

【C++初阶8-vector】熟悉的ta

前言 本期看看这位熟悉又陌生的朋友——vector。 博主水平有限,不足之处望请斧正! 是什么 vecotr是序列容器,可变大小的数组。 *vector有矢量、向量的意思,用其命名可能想强调“序列”这个概念。 class template std::vecto…

独占指针 std::unique_ptr

学习智能指针之前需要知道的&#xff1a; 智能指针是原始指针的封装&#xff0c;在头文件<memory>中&#xff0c;优点就是自动分配内存&#xff0c;不用担心潜在的内存泄漏。不是所有的指针都可以封装成智能指针&#xff0c;很多时候原始指针更方便。各指针中&#xff0…

Webpack中常见的Loader?解决了什么问题?

一、是什么 loader 用于对模块的源代码进行转换&#xff0c;在 import 或"加载"模块时预处理文件 webpack做的事情&#xff0c;仅仅是分析出各种模块的依赖关系&#xff0c;然后形成资源列表&#xff0c;最终打包生成到指定的文件中。如下图所示&#xff1a; 在web…

【网络安全】——web渗透的前缀知识

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门 创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座…

ArcGIS基础实验操作100例--实验18合并表格

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 基础编辑篇--实验18 合并表格 目录 一、实验背景 二、实验数据 三、实验步骤 方法一&#xff1a;导出…

whisper

Robust Speech Recognition via Large-Scale Weak Supervision 介绍 大规模弱监督的训练。先前的方法都是通过大量的无监督学习训练&#xff08;无监督的数据容易收集&#xff0c;所以通过大量无监督的学习可以训练出一个质量较好的encoder&#xff09;。但是用的时候还需要找…

Redis配置文件

Redis配置文件 自定义目录 /myreids/redis.conf Units 单位 配置大小单位&#xff0c;开头定义了一些基本的度量单位&#xff0c;只支持bytes&#xff0c;不支持bit。大小写不敏感 INCLUDES 包含 多实例的情况可以把公用的配置文件提取出来 网络配置相关 bind 默认情况…

【WSL】[01] windows subsytem linux 配置和使用 - ubuntu GUI安装

第【1】章前言&#xff1a; AI的训练和设计似乎ubuntu是必要的&#xff0c;而且&#xff0c;GPU的配置似乎也是要在Ubuntu下&#xff0c;某些模式版本才能兼容。单独搞一个编译服务器是个思路&#xff0c;但是&#xff0c;如果资金不够&#xff0c;也许要考虑在Windwos和Linux…

程序员出身备考PMP,如何避开备考误区顺利拿到3A成绩?

还在犹豫2023年如何才能提升自己的职场竞争力吗&#xff1f;PMP项目管理证书值得大家了解。掌握这些备考技巧&#xff0c;让你的PMP学习少走弯路。有计划明年3月参考PMP的小伙伴注意啦&#xff01; 今天小赛邀请了一位程序员出身的小伙伴&#xff0c;一起来看看他是如何在忙碌…

linux下如何使用configure/make/make install命令编译安装卸载程序

源码的安装一般由3个步骤组成&#xff1a;配置&#xff08;configure&#xff09;、编译&#xff08;make&#xff09;、安装&#xff08;make install&#xff09;。安装成功的源码就是所谓的可执行文件&#xff0c;在你不需要的时候&#xff0c;也是可以删除/卸载&#xff08…

leetcode1456. 定长子串中元音的最大数目

给你字符串 s 和整数 k 。 请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。 英文中的 元音字母 为&#xff08;a, e, i, o, u&#xff09;。 示例 1&#xff1a; 输入&#xff1a;s “abciiidef”, k 3 输出&#xff1a;3 解释&#xff1a;子字符串…

Spring的7种事务传播方式

Spring事务传播行为体现在某个service方法调用另一个service方法&#xff0c;事务该如何进行下去。 Spring支持7中事务传播方式&#xff0c;在Propagation类中可以看到&#xff0c;如下&#xff1a; REQUIRED(0), SUPPORTS(1), MANDATORY(2), REQUIRES_NEW(3), NOT_SUPPORTED…

【操作系统】进程的属性及状态(三态五态七态)

文章目录进程的概念进程的属性1、结构性2、共享性3、动态性4、独立性5、制约性6、并发性进程状态1、三态模型2、五态模型3、七态模型进程的概念 程进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程&#xff0c;也是操作系统进行资源分配和保护的基本…

Java中内部类的讲解(Java系列8)

目录 前言&#xff1a; 1.内部类 1.1内部类的概念 1.2内部类的分类 1.2.1实例内部类 1.2.2静态内部类 1.2.3局部内部类 1.2.4匿名内部类 结束语&#xff1a; 前言&#xff1a; 这次小编主要与大家分享一下什么是内部类&#xff0c;那么接下来就和小编一起来见识一下内…

aloam学习笔记(一)

开始学习aloam框架&#xff0c;记录一下最开始运行aloam中出现的各种问题以及解决方式。 1.aloam地址 GitHub - HKUST-Aerial-Robotics/A-LOAM: Advanced implementation of LOAM 2.安装aloam的一些依赖 主要是两个ceres和pcl库 2.1安装ceres ceres官方地址&#xff1a;I…