基于Linux平台的面向PDF的电子印章系统

2019-07-16 03:14姚铭业王华彬张瑞霞
电脑知识与技术 2019年15期
关键词:数字证书

姚铭业 王华彬 张瑞霞

摘要:该系统设计实现了一个面向PDF文档的电子印章系统,在本系统中,数字证书与电子印章进行关联来保证电子印章的有效性与安全性。主要关联方式为把数字证书认为是电子印章的一部分。通过数字证书来认证盖章人的身份,并通过电子印章中的信息摘要来验证PDF文档的完整性。经过在Linux系统平台的测试,实现了电子印章的制作、盖章、撤章、以及验证等功能。

关键词:PDF;电子印章;数字证书;Linux

中图分类号:TP311        文献标识码:A

文章编号:1009-3044(2019)15-0124-03

1 背景

我国于2005年4月1日正式实施《电子签名法》,对电子印章进行了详细的定义。电子印章是电子形式的数据,是用来识别签名人的身份和表明签名人认可该数据电文内容的数据。与物理印章不同的是,电子印章还具有防篡改、安全、保密等特性[1]。PDF文档遵守PDF格式的文件,所以PDF文档与平台无关,传统的印章主要用于对文档进行身份的验证,传统印章经过几千年的发展已经有了一套非常完善的印章真伪验证体系。如今,计算机慢慢融入人们的生活,政府机关和社会上不可避免地开始使用电子文档作为主要信息传输媒介。而电子文档的安全验证就成了不可避免的问题。传统印章无法在电子文档上盖章,这一现状限制了电子文档的发展。而PDF文档能够很好地解决这一问题,也就是说无论是Windows平台,Linux还是Android。所有平台上的PDF文档格式都相同,解析器只需要按照PDF的渲染格式来渲染PDF就好,也就是说无论什么平台上的PDF文档所看到的结果都一样[2]。

2 系统的总体设计

系统的整体模块层次图,如图1所示。

PDF文档操作模块的接口主要3种,分别是PDF文档的打开和关闭、PDF文档页面的缩放和PDF文档页面跳转。PDF印章操作模块有4种,分别是制作电子印章、盖章、验证印章和撤章。

3 系统的详细设计与实现

3.1 PDF文档操作模块

1)设计

用于对PDF文档进行基本操作,主要包括打开文件、关闭文件、对文件页面进行调整、定位页码、保存文档。对这些基本操作进行设计,包括时序图和协作图。基于篇幅,本节主要给出打开文件时序图和打开文件协作图,分别如图2和图3所示。

2)实现

基于开源库Poppler实现对PDF文档的加载和提取图片映射,使得pdf文档能与图片的形式显示。在打开文档的同时,新建一个线程用于文件目录的加载。将已读的页面进行缓存,可减少对重复页面的加载,在进行页面跳转的时候首先检查是否有页面图片已缓存,若已有缓存则从中进行加载显示,若没有则调用Poppler库的类和方法进行加载。页面的缩放功能则是通过设置图片大小重新在显示界面进行显示。文档的保存是通过Poppler库进行文档备份的创建,然后将备份输出到指定文件目录下。

3.2 电子印章操作模块

电子印章操作模块主要通过CA证书来管理电子印章。利用CA证书来确保用户信息的有效性。将电子印章与PDF文档的信息摘要组织成电子签章。信息摘要以及用户密码利用哈希算法来获取,可以保证用户密码以及信息摘要不被破解,保证了电子印章的有效性以及PDF文档的完整性。电子印章的有效性以及安全性同時通过RSA算法来保证。将电子印章的基本信息利用RSA算法加密,在对证书信息使用私钥加密后必须要对应的公钥来解密。验证者不需要知道电子印章的公钥具体信息,从而保证了电子印章的安全性。

通过对PDF文档的分析,知道其是通过交叉引用表实现对文档间接对象的查找和读取,通过增量更新来实现对文档的修改。根据这两点,我们决定通过交叉引用表和文件尾获取到PDF文件的目录结构,通过获取到的目录和交叉引用表的结合获取要盖章页面的间接对象。然后通过重写页面间接对象的Contents属性和/XObject属性,将原Contents中的间接对象取出,用自己新建的间接对象代替,该间接对象用于存放原内容间接对象和新增的印章间接对象。在/XObject的字典中添加一项/Seal属性用于引用印章图片的间接对象,构造完这些间接对象后写一个增量更新的交叉引用表用于给PDF阅读器正常读取文件;之后在文件尾的%%EOF后另起一行写入印章的信息。由于印章信息并没有设置任何间接对向,不会对PDF文档本身造成影响,只要修改文件尾的文件总长度包含证书信息即可。

对于撤章功能则采用增量更新的方式实现,这样可以保证随意撤除任意印章,为了能修改印章的是否可读取编号,采用将文档信息和已有印章信息读取出来,修改后重新写会去,这也确保了盖章后的印章不能用增量更新的方式修改,如果用增量更新的方式修改,在撤章的时候就会被抹掉。

PDF印章各个操作模块设计采用时序图和关系图,图4和图5分别给出了制作电子印章的时序图和关系图。

4 系统测试

进入软件后用户点击打开文件按钮即可选择PDF文件所在位置,盖章成功后的主界面,如图6所示。验证印章如图7所示。

5 总结

本系统使得Linux系统也有了相应的PDF文档的电子印章制作及应用系统,但同时由于印章的写入方法,与Adobe公司的规范不同,使用其他公司的PDF阅读器只能看到印章,而不能对印章进行任何操作,只有使用本软件才能对印章进行验证和撤除。开发软件的进阶版即区块链版本,盖章的记录都是公众可以查询到的,也确保其公开透明,容易获得公众的认可。

参考文献:

[1] 国务院.《电子签名法》工业和信息化部[EB/OL] .(2015-08-31)[2018-11-25]http://www.miit.gov.cn/n1146285/n1146352/n3054355/n3057254/n3057259/c3868973/content.html.

[2] 国际化标准组织. PDF format become ISO standard[EB/OL].(2010-01-01)[2018-11-25]. https://www.iso.org/news/2008/07/Ref1141.html.

【通联编辑:代影】

猜你喜欢
数字证书
国家发改委:推动矿业权出让应用网络共享数字证书
当心黑客利用数字证书的漏洞
基于数字证书的军事信息系统安全防护方案
以数字证书为核心的信息安全技术之研究
管理好系统中的数字证书
吉林省支付清算系统参与者数字证书使用现状调查与现存问题分析及建议