多重数字签名的电子签章制作及实现

时间:2022-07-27 12:46:13

多重数字签名的电子签章制作及实现

在电子政务中,公文流转系统极大推进了政府部门办公自动化、网络化、电子化,不仅突破了时间与地域限制,而且提高了工作效率。与传统书面信息传递中保证有效性的签字、盖章不同,公文流转中电子签章技术可以在虚拟的网络环境中提供有效性、完整性的安全保障。随着技术的发展,一些实用的电子签章方案已经出现,如文献[1-6]中提到的系统。但是,在一些特定的应用下,某些重要文件需要经过多方签署确认才可生效。根据该需求,电子公文需要多个部门进行签章认证,共同认可公文的有效性和完整性,并且需要用户对多个签章认可。但是,目前现有电子签章系统全部面向单用户,不能解决多签章问题,即使可以改造,原有系统在印章管理及计算量上仍然存在很大问题。针对这一问题,本文在电子公文系统中引入多重数字签名技术,设计一种新的签章系统,使得公文流转系统能够方便的解决多用户签章问题,具有很强的实用性。

1多重数字签名与多重电子签章方案

1.1多重数字签名

多重数字签名[7-10]是由多个签名者对同一份文件进行签名的特殊数字签名,目前主要有两种形式:有序多重签名(sequentialmultisignature)和广播多重签名(broad-castingmultisignature)。有序多重签名是按照一定顺序将电子文件依次发送给签名者,除第一位签名者外,每一位签名者收到文件后需要验证之前签名的有效性。签名有效的情况下继续签名,并将签名后的文件继续传递,并最终将签名传给签名收集者。如果签名过程中出现无效签名,签名过程立即中止。广播多重签名是将电子文件同时发送每一位签名者独立签名,并将签名后的文件发送给签名收集者,由签名收集者对签名文件进行整理并发送给签名验证者,签名验证者验证多重签名的有效性。多重签名的过程一般分为系统建立、签名和验证3个阶段。其中,系统建立阶段主要是建立一个签名系统,同时各成员生成自己的密钥与公钥;而签名阶段则是对消息进行签名的过程。验证阶段所做的工作是对各个成员的签名进行验证,判断签名是否合法。

1.2多重电子签章方案

自多重数字签名提出以来,专家学者已经提出很多的多重签名方案,参见文献[8-13]。在众多的数字签名算法中,RSA算法是应用最为广泛的数字签名算法之一。在1989年,Harn和Kiesler给出基于RSA的多重签名模型,允许任意个数的人对同一文档签名,但需要多次处理且认证效率依赖于签名者的个数。2003年,张键红等基于RSA和Hash函数求逆的困难性提出了一种有序多重数字签名方案,王天银等在文献[13]中给出张键红等提出的签名方案和计算过程。文献[13]同时指出,该签名方案存在伪造攻击,并在分析其原因后给出对隐患的改进方案。因为张键红等所提出签名方案具有签名的长度不随签名人数的增加而增加、计算量少、通信量低、速度快等特点,同时考虑到多用户签章的应用及签名方案的实用性,本文仍以张键红等给出的签名方案为原型,对已知安全隐患进行改造的基础上进行多用户电子签章方案设计,主要包括颁发印章、用户签章、验证签章3个过程。

(1)颁发印章:基于RSA公钥密码算法,服务器为每位用户生成一个签名密钥对;服务器在印章图像库中为用户选择一个印章图像,并按照用户名制作电子印章;同时,服务器为用户及电子印章分别产生唯一身份标识:用户标识UID和印章标识SID,并将标识信息写入服务器端的印章数据库。另一方面,服务器按照既定算法,将用户标识与印章标识作为水印信息嵌入到印章图像中;并将嵌入水印信息的印章图像、用户签名私钥、用户标识、服务器公钥等相关信息写入用户的eKey中。

(2)用户签章:根据系统提供的待签章人员列表,服务器将待签章用户的印章标识SID生成一个待签章序列,并按照印章标识SID将待签章电子文档及待签章序列发送给签章用户。用户完成签章操作后,按照待签章序列中的顺序依次将签章后的电子文档发送给下一位签章用户。所有用户签章完毕后将电子文档上传到服务器。用户所执行的签章操作包括两个过程:计算签名和加盖印章。计算签名:提取待签章电子文档中的内容信息M,并按照签名方案计算签名信息S。加盖印章:按照系统设定的脆弱性强的数字水印算法,将包含电子文档指纹的签名信息S作为数字水印嵌入印章图像,同时将印章图像添加到待签章电子文档中。

(3)验证签章:对于待签章人员列表中的第一个签章用户而言,只需要完成自己的签章操作即可。其他签章用户在进行签章操作之前首先需要验证上一个签章的真实性、可靠性及电子文档的完整性,验证通过后才可以继续进行签章操作。当电子文档的最终用户在打开文档进行访问时,同样需要验证所有用户的签章合法性。验证签章过程包括3个部分:提取水印、验证印章和验证签名。提取水印:按照系统设定的数字水印算法,从印章图像中提取两层水印信息W1、W2。验证印章:从W1中取得用户标识UID和印章标识SID,并通过比对UID和SID检验印章的合法性与真实性。验证签名:从W2中取得电子文档的签名信息,并按照签名方案验证电子文档的完整性和真实性。

2电子签章系统组成

电子签章系统包括印章服务器、密钥服务器、客户端控件3部分,系统框架如图1所示。印章服务器负责对用户电子印章申请进行审核,按照用户要求制作和颁发电子印章;密钥服务器承担部分CA功能,即为用户生成签名密钥对,并制作与颁发数字证书;客户端控件提供电子印章的盖章与验证功能。在实现中,电子签章系统分为应用层、密码服务层和设备层,体系结构如图2所示。应用层:包含客户端印章控件和服务器端管理程序。印章控件是电子签章系统的业务逻辑实现模块,主要负责对电子文档进行盖章以及对已经签章的电子文档进行验证,保证电子文档在公文流转系统中的完整性,同时保证签名的不可抵赖性。服务器端管理程序负责生成电子印章,并对电子印章的相关信息进行维护,如申请人信息的审核,制作电子印章,为用户生成签名密钥对等。密码服务层:应用层在进行摘要计算、数字签名和签名验证、密钥对生成等操作时,需要进行大量密码方面的计算。密码服务层采用OpenSSL提供的密码算法库,并将与密码相关的操作进行二次封装,以函数接口的形式为应用层提供相关密码服务。设备层:应用层产生的密钥对、电子印章等信息,需要写入安全载体中保存和使用。考虑到eKey的功能和性能,印章服务器将电子印章和用户标识SID等进行签名后与印章图像一起写入eKey。并且,当使用电子印章进行签章操作时,eKey是用户身份认证的要素之一。eKey设备的加密、认证、安全存储一体化的功能,为密码服务层提供有力支撑。

3系统实现关键技术

3.1两层数字水印

在电子签章系统中,用户标识UID与印章标识SID建立起用户与印章之间的关联,而印章图像是将两者紧密联系的重要载体,并且是持有印章用户的重要表现。如果没有这些紧密的关联,电子印章可以被任意伪造和盗用,进而丧失印章原有的权威性与可靠性。同时,电子文档的签名信息是文档的指纹,而印章图像作为指纹的载体与电子文档紧密结合。所以,签章后的电子文档正是因为印章使得其完整性、合法性得以保障。在数字水印技术[14]中,鲁棒性数字水印可以实现鉴别,脆弱性数字水印用于完整性保护。多重水印的设计思想可以在不影响载体使用价值的情况下,嵌入不同类型的水印信息,实现资料真伪的鉴别。电子签章系统将用户标识UID发送给印章服务器,与印章标识SID一起进行数字签名,并将签名后的数据采用不可见的、鲁棒性强的变换域水印算法嵌入印章图像DCT(discretecosinetransform)域的中频分量中。当印章图像遭到篡改时,电子签章系统仍然能够提取到完整的UID和SID信息,从而确定印章的真正拥有者,保证验证印章的可靠性与唯一性。这里标识信息与鲁棒性水印起到印章防伪的效果。同时,将电子文档的签名信息采用脆弱性空间域水印算法嵌入印章图像的最低有效位LSB(leastsignificantbit)。考虑到该脆弱性水印的易碎性,当电子文档的完整性遭到破坏时,比如内容被篡改、被删除等,在感观上可以通过印章图像直接验证。当电子印章非法复制、使用时,由于其内嵌有原始文档的签名信息,在与当前文档的签名信息进行比较时,电子签章系统能够及时检测出这种非法操作,保证印章图像的真实性。考虑到两种水印算法的不同特点,必须先嵌入鲁棒性水印再嵌入脆弱性水印。

3.2eKey技术

eKey是一种将USB读卡器与智能卡两者相结合的硬件设备,主要由USB接口(数据传输模块)和智能卡芯片(智能卡模块)构成。数据传输模块负责PC机与智能卡模块之间的通信,数据传输模块与PC机之间按照USB协议进行数据传输,而数据传输模块与智能卡模块之间的通信遵循ISO7816规范。eKey对安全问题在设计上有针对性考虑。①由于eKey在硬件电路中采用了安全存储介质,任何试图对安全区域内容的访问操作都经过COS(chipoperatingsystem)处理,外部用户无法绕过COS直接通过eKey的接口读取数据。②一般情况下eKey中都固化一些密码算法,如随机数生成算法、对称密码DES算法、公钥密码RSA算法,这些算法为加密、签名等操作提供支持。③eKey通过自身提供的硬件PIN码保护机制和文件安全属性机制,对用户访问文件进行限制。只有知道PIN码的用户才能达到权限,实现对文件的访问操作;对于不知道PIN码的用户,即使其获得eKey硬件也无法使用。从某种意义上说,eKey为用户身份识别、数据加密和签名等操作提供了安全可信的硬件平台。eKey作为用户身份认证的有效方式和安全存储的重要部件[15],在电子签章系统中也承担认证与存储的功能。作为签章用户,必须通过eKey的身份认证后才可以进行签章的操作,并且用户的电子印章、服务器公钥、用户私钥等信息全部存储于eKey中,只有取得eKey的使用权才可以进行后续的验证、签名等操作。设计中,将eKey的存储空间分为两种类型:公开空间和私有空间,并通过口令将空间的访问进行区分。公开空间中存储任何用户都可以访问的eKey标识、用途、公钥等信息,私有空间中存储需要保护的电子印章、用户私钥等信息。当用户进行签章时,检测eKey与系统是否连接;在连接的情况下读取eKey公开空间中的标识信息,检测是否是电子签章eKey;向eKey认证命令。在此过程中,应用系统通过密码服务接口与eKey交互,能够保障交互过程中的安全。

3.3ActiveX控件

电子签章系统中,电子印章利用ActiveX控件嵌入文档,并提供两种功能:验证签章和存储数据。ActiveX控件设计有更新对象数据IUpdataObjectData和读取对象数据IGetObjectData两种接口,并设计多个存储数据对象,包括印章图像、印章标识、数据、状态信息等。同时,控件定义有两种状态:激活(Active)与非激活(NoActive)。由于同一电子文档中存在多个用户签章,按照签章方案,只需要验证最后的签章便可以完成对所有签章的验证。所以将最后一个有效签章设置为激活状态,其余签章为非激活状态。

打开电子文档时,处于激活状态的控件通过印章标识SID遍历文档中所有印章控件,并从每个印章图像中提取分量值。按照电子签章方案,从激活状态的控件中读取印章图像数据,并从中提取嵌入的水印信息,进行电子印章真实性和签名信息正确性的验证。当进行签章操作时,在确认用户身份后,系统使用eKey中的私钥对电子文档进行签名运算;从eKey中读出印章图像,并将签名信息嵌入印章图像;通过IUpdataOb-jectData接口更新控件中印章图像数据,更新印章控件中分量值;通过调用AddOLEControl方法将印章控件嵌入到电子文档中。最后,更新原控件状态为非激活状态,并设置新印章控件的状态为激活状态。当电子文档加载时,只有具有激活状态的印章控件进行运算,其他控件保持休眠。这样,即使在没有安装电子签章系统的平台上在控件的作用下用户也能正常的打开文档,极大的提高了易用性和透明性。

4实验测试

电子签章系统客户端完成多用户的签章和验证操作,同时,也最容易遭受电子文档篡改、电子印章伪造和盗用等方面的攻击。正常情况下,用户可以按照流程进行顺序签章,签章后的电子文档片段如图3所示。由于电子印章图像及用户私钥存储在eKey中,如果缺少eKey和eKey的认证口令,攻击者无法进行签章操作。如果攻击者模仿合法电子印章图像伪造非法印章,并将伪造后的印章图像插入电子文档中。由于电子文档中处于激活状态的控件中保存有合法签章,并且电子文档中增加了伪造印章图像数据,相当于对文档内容进行了修改。

所以,当用户打开文档时,其结果与图4所示类似。如果伪造发生在多用户签章过程中的某个环节,则后续签章操作中止。如果电子文档已经具有完整的签章,则当前电子文档不可信。假设攻击者截获一份已签章电子文档,从中成功提取出电子印章。当攻击者试图对电子文档进行签章操作时,由于缺少保存在eKey中的用户私钥,攻击者仍然无法真正完成签章操作。并且由于盗用的电子印章中嵌入有原文档的指纹签名信息,在插入盗用印章的新文档打开时,同样会出现验证失败的结果,如图5所示。通过以上实验表明:由于电子签章系统对电子文档内容进行了摘要运算,并利用eKey中存储的用户私钥进行数字签名,攻击者无法获得私钥时也就无法伪造签名信息,系统很容易检测出文档的真实性与完整性;由于伪造的电子印章图像缺少嵌入的水印信息,并且缺少控件的功能,无法通过系统的验证;虽然盗用的电子印章仍然嵌有水印信息,但是水印是基于原文档产生,与当前文档内容无关,仍然无法通过验证。综上,无论是对电子文档内容的攻击还是针对电子印章的攻击,电子签章系统都能很好检测出这种攻击行为,满足电子签章系统对文档的安全性要求。

5结束语

本文根据电子公文进行多用户签章的需求特点,结合基于RSA的有序多重签名算法,应用数字水印、eKey、ActiveX等技术,设计出一个多用户电子签章方案。方案中,每个签名者都验证上一个签章者所进行签章的合法性、真实性后才进行后续签章操作;应用数字水印技术保证电子印章的完整性与唯一性、文档的完整性;使用eKey进行用户身份的验证并安全存储电子印章图像;利用ActiveX控件技术存储签章后的电子印章,在不改变原始电子文档结构的基础上实现多用户签章。多用户电子签章系统实现多个用户顺序签章,并且可以由公文流转系统灵活控制签章顺序,因此具有良好的应用前景。

上一篇:序列号的二维条码消费券系统制作 下一篇:电子军务中T-RBAC访问控制组件的制作及尝试