PDF文件下的无序电子签章方法技术

技术编号:24251843 阅读:67 留言:0更新日期:2020-05-22 23:43
本发明专利技术公开了一种PDF文件下的无序电子签章方法,包括如下步骤:对每个签章端分发一个PDF文件副本进行单独签章处理;获取待合成PDF文件副本;遍历已签章的PDF文件,从已签章的PDF文件副本提取公钥证书、章模、签章位置和签名值;待合成文档副本的文档属性是否有原始文档范围,若有,则以文档属性中的原始文档范围为签名原文,利用提取的公钥证书、章模、签章位置预加盖签章,并填充提取的签名值;若无,则以文档所有数据为签名原文,利用提取的公钥证书、章模、签章位置预加盖签章,并填充提取的签名值,并在文档属性中记录原始文档范围。本发明专利技术实现高效率的并行签章,改善会签场景下的签章性能及用户体验。

Disordered electronic signature method in PDF file

【技术实现步骤摘要】
PDF文件下的无序电子签章方法
本专利技术涉及一种PDF文件下的无序电子签章方法。
技术介绍
在应用中,UKEY作为CA数字证书的一种载体,内部在存放数字证书的同时,也会存放对应的电子印章数据。通过CA的认证介质,能够将电子印章结合数字证书密钥对电子数据进行数字签名,形成有效的签名数据,作用于电子政务、电子商务等多个应用领域,解决了电子化签名的法律问题。以公共资源交易为例,目前普遍采用CA数字证书+电子印章的方式贯穿于整个交易环节。在多个评委对评标结果进行会签场景时,每个评委用自己的UKEY对评标结果电子签章。目前很少采用多个评委对同一份评标结果一个一个的排序进行电子签章的方式进行会签,因为此方式效率最低。通常的解决方式是通过同步锁机制并发进行电子签章,但是由于PDF标准中后面签章的原文中包含前面签章对象,目前各个电子签章厂商的PDF电子签章实现都参照PDF格式规范进行实现,因此PDF文件的多个签章对象间存在前后依赖关系,导致采用副本会签时副本一致性同步控制问题(即多人并发签章,一人对副本签章,其他人能够立即看到修改),此控制类似多核CPU的缓存一致性控制问题,实现甚至更复杂,导致系统不稳定,而且在并发签章一个评委签章处理锁定期间,如果在输入PIN码等阻塞操作不及时处理会严重阻塞其它评委的处理,导致效率低下,体验性不佳。如何有效的提高会签的效率,实现基于PDF文件的会签场景下的多人无序签章已成为了迫切需要破解的难题。
技术实现思路
为了解决上述问题,本专利技术提出一种实现高效率的并行签章,改善会签场景下的签章性能及用户体验,最终实现会签场景下的无序电子签章的PDF文件下的无序电子签章方法。本专利技术的技术方案为:PDF文件下的无序电子签章方法,包括如下签章合成的步骤:对每个签章端分发一个PDF文件副本进行单独签章处理,每个签章端可以并行签章;获取待合成PDF文件副本;遍历已签章的PDF文件,从已签章的PDF文件副本提取公钥证书、章模、签章位置和签名值;待合成文档副本的文档属性是否有原始文档范围,若有,则以文档属性中的原始文档范围为签名原文,利用提取的公钥证书、章模、签章位置预加盖签章,并填充提取的签名值;若无,则以文档所有数据为签名原文,利用提取的公钥证书、章模、签章位置预加盖签章,并填充提取的签名值,并在文档属性中记录原始文档范围。该签章方法还包括如下验证步骤:获取待验证签章对象的ByteRange(原始文档范围)和Contents(签名值);根据ByteRange(原始文档范围)指示的签章原文范围获取签章原文;根据签章原文计算文档哈希值Hash;根据Contents(签名值)获取PKCS7签章结果;验证PKCS7签章结果的完整性;验证通过,则在PKCS7签章结果中获取文档哈希值Hash2;Hash与Hash2比对,比对一致则验证通过,比对不一致则验证失败。有益效果:本专利技术通过改进PDF电子签章的文档保护范围,去除签章之间的先后依赖关系,进而可以使用文档可以根据提取签章信息无序的加盖合成,并且前端多人签章可以并发进行,而不依赖于其它签章人,后端再通过提取合成签章方式实现会签到同一PDF文件上,既保证文档安全性,又避开了复杂的同步控制处理。通过改进,可以避免复杂的同步控制,从而降低了系统复杂度,提高系统稳定性,也提升了可用性和用户体验。附图说明图1为本专利技术的签章合成流程图;图2为本专利技术的验证流程图;图3为本专利技术的签章原理图;图4为本专利技术改进前后多人会签签章并发处理对比图;、图5为本专利技术改进前后PDF签章追加方式和签章依赖关系对比图。具体实施方式下面结合附图1-5对本专利技术做详细介绍:本专利技术签章合成时,遍历已签章PDF文件副本、从已签章PDF文件副本中提取公钥证书、印模、签章位置、签名值等信息,使用公钥证书、印模、签章位置预加盖签章,并用提取的签名值直接填充到签名值位置。在合成首个签章时,在文档属性中记录原始文档范围,后续合成签章原文范围使用文档属性记录的原始文档范围作为签名原文。如图1所示,签章合成流程如下:第一步,对每个签章端分发一个PDF文件副本进行单独签章处理,每个签章端可以并行签章。第二步,获取待合成PDF文件副本。第三步,遍历已签章的PDF文件,从已签章的PDF文件副本提取公钥证书、章模、签章位置和签名值。第四步,判断待合成文档副本的文档属性是否有原始文档范围;若有原始文档范围,则以文档属性中的原始文档范围为签名原文,利用提取的公钥证书、章模、签章位置预加盖签章,并填充提取的签名值;若无原始文档范围,则以文档所有数据为签名原文,利用提取的公钥证书、章模、签章位置预加盖签章,并填充提取的签名值,并在文档属性中记录原始文档范围。验证时,根据签章结构中记录的签名范围、签名结果相关信息验证即可验证PKCS7签名结果完整性,并比对签名范围指定的签名原文摘要与PKCS7中保存的摘要进行比对是否一致,两者都验证通过,则签章验证通过,否则签章验证失败。具体的验证步骤如图2所示:第一步,获取待验证签章对象的ByteRange(原始文档范围)和Contents(签名值);第二步,根据ByteRange(原始文档范围)指示的签章原文范围获取签章原文;第三步,根据签章原文计算文档哈希值Hash;第四步,根据Contents(签名值)获取PKCS7签章结果;第五步,验证PKCS7签章结果的完整性;第六步,验证通过,则在PKCS7签章结果中获取文档哈希值Hash2;第七步,Hash与Hash2比对,比对一致则验证通过,比对不一致则验证失败。PDF电子签章是以增量方式更新文件,即签章对文件的修改都是在文件最后直接追加,原始文档范围内容不会做任何修改,通过改变签章对象的原文保护范围,使签章对象签名原文只依赖于原始的PDF文档范围(即在首次签章时文档中记录最原始的文档范围,使PDF文档自己知道自己的原始文档范围),去除签章之间的前后依赖关系,使PDF文件中的签章可以提取签章信息,并可以使用提取的签章信息合成签章到相同的副本上。这样由于签名原文是一样的,直接用提取的签章信息中的签名值去合成签章,合成后文档就可以正确的验证通过,无需再重新计算签名值,去除合成签章时对UKEY的依赖。本专利技术的PDF签章实现会签场景下的无序电子签章应满足以下几个基础条件:(1)PDF首次签章时在文档扩展字段中记录文档的原始范围。(2)PDF电子签章对象间去依赖,每个电子签章只依赖原始文档。(3)每个签章信息可以提取、并在副本合成。(4)提取时提取签章必要信息,合成时重新加盖并填充提取信息。(5)签章信息合成时,不再重新计算签名,直接合成就能验证。对于多人签章情况,需要采用并发本文档来自技高网...

【技术保护点】
1.PDF文件下的无序电子签章方法,其特征在于,包括如下签章合成的步骤:/n对每个签章端分发一个PDF文件副本进行单独签章处理,每个签章端可以并行签章;/n获取待合成PDF文件副本;/n遍历已签章的PDF文件,从已签章的PDF文件副本提取公钥证书、章模、签章位置和签名值;/n待合成文档副本的文档属性是否有原始文档范围,若有,则以文档属性中的原始文档范围为签名原文,利用提取的公钥证书、章模、签章位置预加盖签章,并填充提取的签名值;若无,则以文档所有数据为签名原文,利用提取的公钥证书、章模、签章位置预加盖签章,并填充提取的签名值,并在文档属性中记录原始文档范围。/n

【技术特征摘要】
1.PDF文件下的无序电子签章方法,其特征在于,包括如下签章合成的步骤:
对每个签章端分发一个PDF文件副本进行单独签章处理,每个签章端可以并行签章;
获取待合成PDF文件副本;
遍历已签章的PDF文件,从已签章的PDF文件副本提取公钥证书、章模、签章位置和签名值;
待合成文档副本的文档属性是否有原始文档范围,若有,则以文档属性中的原始文档范围为签名原文,利用提取的公钥证书、章模、签章位置预加盖签章,并填充提取的签名值;若无,则以文档所有数据为签名原文,利用提取的公钥证书、章模、签章位置预加盖签章,并填充提取的签名值,并在文档属性中记录原始文档范...

【专利技术属性】
技术研发人员:孙建山董甲彬王珂王永起
申请(专利权)人:山东同智伟业软件股份有限公司山东省公共资源交易中心
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1