可视化的电子签名及验证方法
技术领域
本发明属于电子签名及认证技术领域,具体涉及一种可视化的电子签名及验证方法。
背景技术
对电子文件进行签名的技术已经很成熟,2004年《电子签名法》正式实施后,电子文件被签名后,可以作为法律证据使用。目前电子签名技术主要用于身份认证和信息完整性的校对,广泛适用于电子商务和电子政务等领域。但电子签名的可视化及与实际纸制文件的相互认证却非常薄弱,在电子商务和电子政务还不能覆盖所有领域的前提下,如何保证电子文件的电子签名可视化和纸制文件互相认证尤为重要。
现有技术中,对电子文件的电子签名可视化和纸制文件的相互认证已有一些解决方法,在中国专利申请“电子签名的防伪方法及装置”(申请号01139001.8,公开日2002年5月15日)中公开了一种方法,该方法包括以下步骤:(1)接受明文,(2)对明文信息进行处理形成摘要,(3)用私钥对摘要进行加密形成签名,(4)对明文和签名分别形成明文条形码和签名条形码,(5)对明文和明文条形码及签名条形码一起形成网页。上述方法主要是针对网页的内容进行摘要,然后对摘要结果进行签名,摘要结果和签名结果通过条形码展现在html页面(网页)中从而实现电子签名的可视化,使用者打印网页面,则可以通过两个条形码来验证打印的网页上的文字内容,验证纸制内容的正确性。但是,该方法存在以下不足:
(1)所述的条形码为一维条形码,如图1所示。一维条形码只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息,其一定的高度通常是为了便于阅读器的对准。一维条形码的应用可以提高信息录入的速度,减少差错率,但是一维条形码也存在一些不足之处:数据容量较小(只能存储30个字符左右),只能包含字母和数字,条形码尺寸相对较大(空间利用率较低),条形码遭到损坏后便不能阅读。
(2)只能适用于如图3所示的内容相对简单的网页这种文件格式,不能支持如图4所示的其他格式的电子公文和电子合同的显示。
(3)网页打印可能有多页,而条形码只能打印在网页的最后一页,所以解决不了拆分页面时造成歧义的问题。
由于一维条形码的信息容量很小,如商品上的条形码仅能容纳几位或者几十位阿拉伯数字或字母,商品的详细描述只能依赖数据库提供,离开了预先建立的数据库,一维条形码的使用就受到了局限。基于这个原因,人们迫切希望发明一种新的码制,除具备一维条形码的优点外,同时还有信息容量大、可靠性高、保密防伪性强等优点。为了满足人们的这种需求,美国Symbol公司经过几年的努力,于1991年正式推出如图2所示的名为PDF417的二维条形码,简称为PDF417条形码,即“便携式数据文件”。
PDF417条形码是一种高密度、高信息含量的便携式数据文件,是实现证件及卡片等大容量、高可靠性信息自动存储、携带并可用机器自动识读的理想手段。PDF417条形码具有如下特点:
1.信息容量大
根据不同的条空比例每平方英寸可以容纳250到1100个字符。在国际标准的证卡有效面积上(相当于信用卡面积的2/3,约为76mm*25mm),PDF417条形码可以容纳1848个字母字符或2729个数字字符,约500个汉字信息。这种二维条形码比普通条形码信息容量高几十倍。
2.编码范围广
PDF417条形码可以将照片、指纹、掌纹、签字、声音、文字等凡可数字化的信息进行编码。
3.保密、防伪性能好
PDF417条形码具有多重防伪特性,它可以采用密码防伪、软件加密及利用所包含的信息如指纹、照片等进行防伪,因此具有极强的保密防伪性能。
4.译码可靠性高
普通条形码的译码错误率约为百万分之二左右,而PDF417条形码的误码率不超过千万分之一,译码可靠性极高。
5.修正错误能力强
PDF417条形码采用了世界上最先进的数学纠错理论,如果破损面积不超过50%,条形码由于沾污、破损等所丢失的信息,可以照常破译出丢失的信息。
6.容易制作且成本低
利用现有的点阵、激光、喷墨、热敏/热转印、制卡机等打印技术,即可在纸张、卡片、PVC、甚至金属表面上印出PDF417二维条形码。由此所增加的费用仅是油墨的成本,因此人们又称PDF417是“零成本”技术。
7.条形码符号的形状可变
同样的信息量,PDF417条形码的形状可以根据载体面积及美工设计等 进行自我调整。
发明内容
针对现有技术中存在的缺陷,本发明的目的是提供一种电子签名的可视化方法。该方法能够使各种复杂格式的版式文件的电子签名可视化和纸制化,并能实现多页电子文件中每一页的签名,更进一步,本发明还能够用二维条形码存储签名结果从而提高信息存储量。本发明的目的还在于提供一种电子签名的验证方法来验证纸制文件的合法性及追查打印的出处。
为达到以上目的,本发明采用的技术方案是:一种可视化的电子签名方法,包括以下步骤:
(1)判断电子文件是否是版式文件,如果不是,则将电子文件转换成版式文件;
(2)对步骤(1)得到的版式文件进行签名,具体包括如下步骤:
1)对版式文件进行比特流签名;
将整个版式文件的比特流作为明文信息,对明文信息进行摘要,用私钥对摘要结果加密,加密结果E和私钥对应的公钥证书标识D一起,形成签名结果S0;
2)对版式文件的页面内容进行逐页签名;
对版式文件的某一页提取文字内容,提取的文字内容验证通过以后,作为签名的输入形成摘要,用私钥对摘要结果加密,加密结果Ei、私钥对应的公钥证书标识D一起,形成签名结果Si,i表示页号,i为正整数;
上述步骤1)和步骤2)中两种签名的结果和电子文件保存在一起或是分开保存;
(3)将步骤(2)中签名后的电子文件打印成纸制文件,在打印输出固定页前,自动把当前页的签名结果Si以条形码的形式输出到页面的空白区域。
进一步,在步骤(3)打印过程中,同时把当前页的签名结果,使用打印者私钥签名,签名结果使用条形码输出到页面的空白区域。
再进一步,步骤(3)中所述的条形码最好是二维条形码。
进一步,步骤(1)中所述的版式文件是PDF或CEB电子格式的文件。版式文件有页的概念,不会因为机器和阅读版本的不同,而改变电子文件的版面,能够保证电子文件在屏幕显示的效果和输出到纸张上的效果保持一致,重复性好。
再进一步,为使本发明获得更好的发明效果,步骤(2)中提取电子版式文件或纸制文件中某一页面中的文字内容时,可以对提取的文字内容是否正确进行验证,具体采用如下方法:
1)将自动提取的文字输出成图片,和原有电子文件的文字输出的图片进行比较;
2)如果一致,则把电子文件中文字输出的位置使用黑块覆盖,表示验证通过;
3)如果不一致,则进行反选,提示使用者,存在差异,需要干预;
4)使用者对不一致的地方进行修改;
5)最后由使用者确认验证成功。
进一步,为使本发明获得更好的发明效果,步骤(3)中所述的页面的空白区域是指页眉、页脚的固定空白区域。
一种验证由上述的可视化的电子签名方法得到的电子签名的验证方法,包括以下步骤:
a.扫描纸制文件,验证时首先对纸制文件的页面内容进行摘要,获取摘要结果M;
b.从当前页的二维条形码里面保存的签名结果中的私钥对应的公钥证书标识D,获取对应的公钥;
c.使用公钥对当前页的签名结果进行解密,得到解密结果M1,比较M和M1,如果相同,则表示验证纸制文件通过。
进一步,步骤a包括以下步骤:
(1)将纸制文件扫描成图像格式;
(2)从图像中识别出所有文字内容,和它们相对应的矩形框;
(3)对文字进行排序;
(4)将排序后的文字内容作为进行摘要的明文;
(5)对明文进行摘要,获取摘要结果M。
步骤b包括以下步骤:
(6)从图像中自动识别出二维条形码;
(7)对二维条形码进行解码,获取到签名的编码结果;
(8)进行反编码获取签名结果Si;
(9)从Si中获取私钥对应的公钥证书标识D;
(10)通过公钥证书标识D获得公钥证书;
(11)从公钥证书中获取公钥。
进一步,对纸制文件验证通过后,进一步对纸制文件出处进行验证。对纸制文件出处进行验证时包括以下步骤:
(1)把纸制文件的最后一页扫描成图像格式;
(2)识别出图像中存在两个二维条形码B1和B2,其中B1是代表页面内容的签名结果,B2是代表打印出处的签名结果;B2是在打印过程中,将当前页的签名结果,使用打印者私钥签名后形成的签名结果;
(3)对B1进行反解码得到反解码后的页面内容的签名结果Si;
(4)验证纸制文件的正确性;
(5)对Si进行摘要;
(6)对B2进行反解码,获得打印出处的签名结果的与打印者私钥对应的公钥证书标识和摘要的加密内容;
(7)通过与打印者私钥对应的公钥证书标识获取证书,对摘要的密文进行解密;
(8)解密结果和步骤(5)得到的摘要进行比较;
(9)如果相同且步骤(4)验证纸制文件正确,则验证纸制文件出处成功。
本发明的效果在于:采用本发明所述的方法,能够使各种复杂格式的版式文件的电子签名可视化和纸制化,并能实现多页电子文件中每一页的签名。而且,本发明还可以用二维条形码存储签名结果从而提高信息存储量。采用本发明所述的方法,还可以通过验证电子签名的方法来验证纸制文件的合法性及追查打印的出处。
本发明之所以具有上述发明效果,是因为本发明有如下特点:
(1)版式文件是以页为逻辑组成的,显示效果和纸制文件一致,不会 因为设备的不同而显示不同;
(2)采用二维条形码作为电子签名的显示方式,二维条形码的信息容量大,除了包含签名信息以外,还可以包含一些控制信息,使验证纸制文件的过程更加自动化;
(3)二维条形码中包含了签名的证书标识、签名的方法和页面内容的签名结果;
(4)电子文件的每一页面都进行签名,签名对应的二维条形码自动放在页面的空白处,如页眉、页脚;
(5)提取纸制页面上文本的方法和提取电子文件页面上文本的方法无二义性,得到的文本一致;
(6)提取纸制页面上文本的过程可以通过OCR来实现,也可以通过人工的方法来实现;
(7)二维条形码只存在纸制文件上,不在电子文件中保存,签过名的电子文件通过特殊的打印方式输出出来;
(8)打印出来的纸制文件,可以通过二维条形码来找到它的出处。
附图说明
图1是一维条形码示意图;
图2是二维条形码示意图;
图3是普通网页示意图;
图4是复杂公文示意图;
图5是本发明所述可视化电子签名方法的流程图;
图6是对电子文件逐页签名的流程图;
图7是对页面内容进行签名的流程图;
图8是对可视化电子签名进行验证的流程图;
图9是对当前页内容进行可视化电子签名后打印出的文件示意图;
图10是对文件的内容及打印出处分别进行电子签名后打印出的文件示意图。
具体实施方式
下面结合实施例及附图对本发明做进一步的描述:
如图5所示,一种可视化的电子签名方法,包括以下步骤:
(1)将电子文件转换成版式文件,本实施例中的版式文件是CEB文件;
常用的Word、Excel、WPS等电子文件,在本实施例中通过方正阿帕比制作软件,转换成CEB(Chinese E-Document Basic)文件,CEB文件是方正自主开发的版式文件,转换后的CEB文件的显示效果和转换前的电子文件显示保持一致,CEB文件不会因为不同的机器上和不同Windows操作系统上而发生显示结果差异。
(2)对步骤(1)得到的版式文件即CEB文件进行签名,具体包括如下方法:
1)对CEB文件进行比特流签名
(a)CEB文件的比特流作为明文信息;
(b)对明文信息进行摘要;
(c)使用私钥对摘要进行加密形成签名结果H;
(d)签名结果中包含验证签名的公钥证书标识和摘要的密文;
2)如图6和图7所示,对CEB文件的页面内容进行逐页签名;
(a)对CEB文件的第i页进行处理;
(b)获取第i页上所有文字和它对应的外接矩形框;
(c)对得到的集合进行排序,排序方法如下:
电子文件采用屏幕坐标系,即x方向从左到右为正方向,y方向从上到下为正方向;
电子版式文件和纸制文件都采用屏幕坐标系,即x方向从左到右为正方向,y方向从上到下为正方向;
对页面中的字符即文字内容提取的方法包括以下步骤:
A.获取页面中的字符和它的位置,字符集合为T={T1,T2,....Tn},字符对应的外接轮廓矩形集合为R={R1(l1,r1,t1,b1),R2(l2,r2,t2,b2),.....Rn(ln,rn,tn,bn)},其中n为正整数;
B.对字符集合进行分组:将字符集合分成{S1,S2,...Sm},m≤n;定义关系:
a)如果Ti和Tj存在一条横线扫描线穿过,则Ti和Tj存在关系;其中i,j∈[1,n]
b)如果Ti和Tj存在关系,Tj和Tk存在关系,则Ti和Tk 也存在关系;
Sk的定义如下:
c)Sk中的任何一个字符和非Sk中的字符不存在关系;
d)一个Sk中包含至少一个字符,即Sk={Tk1,Tk2,...Tkp}p≥1。
e)Sk中的元素个数如果大于等于2,则任何两个元素都存在关系。
所以任何两个集合Si、Sj没有交集,S1,...Sm的合集等于{T1,T2,....Tn};
分组的集合是有顺序关系的,如果i<j,则Si外接矩形在Sj的外接矩形的上面;则Si中的字符排在Sj中字符的前面。
C.对Sk中的字符进行排序;
定义直接关系:如果Ti和Tj存在一条横线扫描线穿过,则Ti和Tj存在直接关系;
a.对Sk中的字符进行排序,排序规则如下:以字符轮廓的最左边为基准进行排序,靠左边的排在前面,得到序列(Tk1,Tk2,...Tkp};
b.最终排序集合S1{Tt1,Tt2,...Ttq},初始为空,即q=0;
c.如果S集合为空,则直接进入步骤L;
d.从S集合中取出第一个元素Tkj;
e.设置i为q,如果i=0,则跳转到j;
f.从S中取出第元素Tki;
g.比较Tkj和Tki,如果Tki和Tkj是直接关系,跳转到步骤j
h.如果Tkj的矩形在Tki的上面,i=i-1,跳转到步骤e;
i.如果Tkj的矩形在Tki的下面,i=i+1,跳转到步骤e;
j.则把Tkj插入到S1中的i位置;
k.从S集合中删除Tkj;
L.排序结束,S1集合即为排序的结果。
(d)按照集合的排序顺序,组织明文信息
(e)对明文信息进行摘要
(f)使用私钥对摘要进行加密形成签名结果Hi
(e)签名结果中包含验证签名的公钥证书标识和摘要的密文和对应的页号i。
3)两种签名结果H和{H1,H2,...Hn}保存在CEB文件中
(3)将步骤(2)中签名后的电子文件打印成纸制文件,在打印输出 固定页前,自动把当页的签名结果以如图2所示的二维条形码的形式输出到页面的空白区域,如图9所示;在打印过程中,同时把当前页的签名结果,使用打印者私钥签名,签名结果使用条形码输出到页面的空白区域,如图10所示。
本实施例中具体实施内容如下:
1)打印CEB内容;
CEB版面的内容可以打印到各种打印设备;
2)打印签名对应的二维条形码;
在打印CEB文件的第i页时:
(a)获取当前页的签名结果Hi;
(b)Hi进行编码,变成可显示字符;
(c)根据编码结果生成二维条形码;
(d)打印CEB的版面内容;
(e)二维条形码输出到纸张的底部,和CEB的版面内容不重叠;
3)打印控制;
(a)把最后一页的签名结果Hn作为明文;
(b)对明文进行摘要;
(c)使用打印者的私钥进行加密,形成签名结果;
(d)签名结果包括验证签名的公钥证书标识、摘要的密文;
(e)签名结果进行编码,变成可显示字符;
(f)根据编码结果生成二维条形码;
(g)二维条形码输出到最后一页的底部,和CEB的版面内容不重叠,与其他二维条形码也不重叠。
如图8所示,一种验证上述的可视化的电子签名的验证方法,包括以下步骤:
a.扫描纸制文件,验证时首先对纸制文件的页面内容进行摘要,获取摘要结果M;
b.从当前页的二维条形码里面保存的签名结果中的私钥标识,获取对应的公钥;
c.使用公钥对签名结果进行解密的得到M1,比较M和M1,如果相同,则表示验证纸制文件通过。
本实施例中具体采用如下方法:
1)获取CEB文件中的签名H;
2)从H中获取公钥证书标识;
3)通过公钥证书标识获得公钥证书;
4)从公钥证书中获取公钥;
5)对CEB文件的比特流(除去签名部分)作为明文信息;
6)使用同样方法对明文进行摘要;
7)使用公钥对签名H中的摘要密文解密;
8)比较摘要和解密的摘要,验证签名结果。
对得到的纸制文件进行验证时,首先对纸制文件的页面内容进行摘要,获取摘要结果M,从当前页的二维条形码里面保存的签名结果中的私钥标识,获取对应的公钥,使用公钥对签名结果进行解密的得到M1,比较M和M1,如果相同,则表示验证纸制文件通过;本实施例中具体采用如下方法:
1)纸制文件扫描成图像格式;
2)从图像中自动识别出二维条形码;
3)对二维条形码进行解码,获取到签名的编码结果;
4)进行反编码获取签名结果Hi;
5)从图像中识别出所有文字内容,和它们相对应的矩形框;
6)按照前面所述的对文字排序的方法,对文字进行排序;
7)排序后的文字内容,作为进行摘要的明文;
8)对明文进行摘要;
9)从Hi中获取公钥证书标识;
10)通过公钥证书标识获得公钥证书;
11)从公钥证书中获取公钥;
12)使用公钥对Hi中的摘要密文进行解密;
13)解密结果和新生成的摘要进行比对;
14)如果相同表示验证通过。
对得到的纸制文件出处进行验证时,本实施例中具体采用如下方法:
1)把纸制文件的最后一页扫描成图像格式,如图10所示;
2)识别出图像中的两个二维条形码B1和B2(如图10中的附图标记1和2所示),其中条形码B1是代表页面内容的签名结果,条形码B2是代表打印出处的签名结果;
3)B1进行反解码得到Hn;
4)验证纸制文件的正确性,方法如前所述;
5)对Hn进行摘要;
6)B2进行反解码,获得签名的公钥证书标识和摘要的加密内容;
7)通过公钥证书标识获取证书,对摘要的密文进行解密;
8)解密结果和步骤5)得到的摘要进行比较;
9)如果相同且步骤4)验证纸制文件正确,则验证纸制文件出处成功。