收藏本站 网站地图 联系我们
 

数字方远

 


 

基于ATL的Office电子签章COM控件的实现

沈洁  蒋朝惠
(贵州大学 计算机科学与信息学院,贵州 贵阳 550025)
 
    摘  要  针对电子政务系统中经常出现的信息篡改、泄漏、伪造等问题,提出了一种电子签章解决方法。该方法的核心就是利用基于ATL技术编写一个可嵌入Office的电子签章COM控件,通过该控件可以验证Office文档的真实性、完整性和不可否认性。应用结果表明,该方法简单、适用,对保护Office文件的安全非常有效。
    关键词  电子签章;COM;ATL;ActiveX;办公自动化
 

1  引言

    在电子政务中,政府部门的各种数据、文件、档案、社会经济数据都以数字形式存贮于网络服务器中,可通过计算机检索机制快速查询、即用即调。各种信息数据都是宝贵的资源,如果以纸质存贮,其利用率极低,若以数据库文件存储于计算机中,可以从中挖掘出许多有用的知识和信息,服务于政府决策。
    存在于网络上的信息绝大多数都是以Word或者Excel等这些形式存在的。政府很多文件只能政府部门或者相关人员可以查看,一旦泄漏后果无法估量。这样就产生了安全问题,如何保证这些信息的安全呢。
    电子签章技术的产生使得问题有了新的突破,本文是以Word为例来介绍通过ATL实现COM控件对Office的无缝嵌入解决安全问题。
2  ATL技术

2.1  ATL技术

    ATL是ActiveX Template Library 的缩写,它是一套C++模板库。使用ATL能够快速地开发出高效、简洁的代码(Effective and Slim code),同时对COM组件的开发提供最大限度的代码自动生成以及可视化支持。ATL中所使用的基本技术包括COM技术、C++模板类技术(Template)以及C++多继承技术(Multi-Inheritance) 。ATL对COM 开发的任何一个环节和过程都提供了支持,并与COM开发相关的众多工具集成到一个统一的编程环境中,对于COM/ActiveX的各种应用都提供了完善的向导支持,这极大地方便了开发者的实现效率。COM 技术方面的新进展在很短的时间内都会在ATL 中得到反映。这使开发者使用ATL 进行COM编程可以得到与直接使用COM SDK编程同样的灵活性和强大的功能。
2.2  ATL与COM SDK和MFC比较

    在ATL产生以前,开发COM组件的方法主要有两种:一是使用COM SDK直接开发COM组件,另一种方式是通
    过MFC提供的COM支持来实现。
    直接使用COM SDK开发COM组件是最基本也是最灵活的方式。但是,这种开发方式的难度和工作量都很大,一方面,要求开发者对于COM的技术原理具有比较深入的了解,另一方面,直接使用COM SDK要求开发人员自己去实现COM应用的每一个细节,完成大量的重复性工作。
    使用MFC提供的COM支持开发COM应用可以说在使用COM SDK基础上提高了自动化程度,缩短了开发时间。MFC采用面向对象的方式将COM的基本功能封装在若干MFC的C++类中,开发者通过继承这些类得到COM支持功能。但使用MFC开发的COM组件,尤其是ActiveX控件的开发,会产生相当大的代码冗余,而且必须要依赖于MFC的运行时库才能正确地运行。
3  实现电子签章COM控件的技术难点

    电子签章COM控件设计目标是:具有美观的用户界面、Word工具条制作、签章的嵌入、文件的加密、文件的网络传输、文件的验证等。控件开发过程中,电子签章控件主要解决如下技术难点:①Word工具条:如何添加工具条,同时,如何在添加的工具条中添加多个响应按钮;②电子签章的嵌入:如何通过点击工具条上的盖章按键来完成Word文档对签章的透明加载;③文件的加密:如何调用加密算法ECC来对文档进行加密(即对文档的锁定,使得不能对文档进行任何修改。);④文件的网络传输:通过基于WinSock多线程编程技术来实现文件的网络传输;⑤文件的验证:基于公开密钥框架结构的交换认证和认证的管理,通过对受信用户颁发数字证书并且联网相互验证的方式,实现了对用户身份真实性的确认。
4  系统流程设计

    由于使用了Office自动化技术,系统安装后,自动向MS Office(如Word、Excel)等添加工具条按钮。在实际应用中,政府机关的签章功能主要分为两种:一种是对下级提交文件的签章,另一种是对需下发文件的签章。在这两种情况下,用户都只需要插入USBKey并输入密码,点击“盖章”按钮,就可以启动系统底层程序,系统自动搜索USBKey中的印章和私钥,用户可在适当的位置盖章。如果是第一种情况,则系统按照对方身份自动搜索对方的源地址,并从公钥数据库中获取对方公钥,以备签章公文发送之用。用户点击“发送”后,如果是第一种情况,系统自动按获取的源地址向对方发送公文;如果是第二种情况,则系统根据存储在数据库中的部门列表项相应的部门分别发送。而接收方也可直接按“接收”“验证”按钮完成签章公文的接收和验证。在整个过程中,加密和解密步骤对用户来说都是不可见的。系统通过底层接口自动将签章过程和验证过程录入数据库。
    在系统中,选择USBKey作为数字证书的载体。这和传统的智能卡作为证书载体有所不同。加密算法的安全性主要取决于密钥的安全,而非算法的安全保密,智能卡作为一种封闭的安全加密设备,是保存密钥信息的最安全手段之一。但传统智能卡的封装形式需要额外的读卡器设备,因为设备的体积较大不便于携带,所以使用很不方便,另外读卡器设备也增加了整体的成本,而USBKey在完全继承智能卡优点的同时很好的解决了传统封装形式的诸多不足。具体加密和验证过程如图1所示。


图1  签章和验证签章的流程

 
5  电子签章控件的应用

    电子签章控件开发完成后,我们在VC6.0 下利用该控件实现了一个应用,并通过该应用对控件进行了全面的测试。最后,我们还测试了控件在网络环境下的应用效果。结果表明,在office2003上,控件的各项功能均都达到预期要求,控件运行正确和稳定。下面是电子签章的部分测试:
电子签章插件嵌入到Word,可以发现Word多出了一个浮动工具条,如图2所示。

图2  电子签章插件
    点击“签章”按钮,可以加盖印章,如图3所示。盖章后,在未确认签章之前可以随意拖动印章。如果点击“确认签章”按钮,会弹出对话框,提示用户一旦确认签章则不可随意更改,如图4所示。当用户点击“是”后,文档被锁定,无法更改。                             
 
    
图3   签章后的文档                                     图4 弹出的对话框
    接收方收到文件后,使用自己的私钥对文档解密,解密后文档自动打开,点击“验证”按钮,如果文档未被篡改,则弹出对话框,显示通过验证,如图5所示。

图5  文档通过验证
    如果文档内容有改动,则在验证时会弹出对话框提示文档已被篡改,如图6所示。

图6  文档被篡改后的验证结果
6  结论

    通过对电子签章的应用实现,我们对ATL的体系结构有了较为深入的了解,在Windows 底层编程方面有了进一步的提升,也加强了对面向对象理论及COM 和ActiveX技术的理解。我们已经完成了电子签章控件的基本功能,但由于时间和能力的关系,控件还存在许多不够完善之处:签章的透明化存在问题,会出现少许刷屏情况;网络传输过程还存在安全隐患;印章控件还可加入数字水印和时间戳,更可尝试采用先进的生物识别技术,使其更加安全;PKI也只是实现了简单的功能,可以做得更完善,特别是PKI的安全问题值得深入研究。系统模型如果用于移动和无线环境将更加实用。
参考文献

    [1] (美)Bruce Schneier.应用密码学——协议算法与C源程序.北京:机械工业出版社.2004
    [2] 《电脑编程技巧与维护》杂志社.Visual C++编程技巧典型案例解析:网络与通信及计算机安全与维护篇.中国电力出版社,2005.7
    [3] 黄元飞. 信息安全与加密解密核心技术[M]. 上海:浦东电子出版社. 2001:113
    [4] 盛小钢. 基于数字签名的电子签章系统研究与实现[硕士学位论文]. 2005,4:9-11
    [5] 潘爱民. COM原理与应用[M]. 北京:清华大学出版社. 1999,1:58
    [6] 管建和,王绍燕.基于ATL实现通用报表工具COM控件
    收稿日期:10 月 20 日   修改日期:11 月 9 日
    作者简介:沈洁(1984-),男,湖北宜昌人,硕士研究生,研究方向为信息安全;蒋朝惠(1965-),男,贵州贵阳人,教授,硕士生导师,研究方向为网络与信息安全。

 

 

方远集团 | 网站地图 | 联系我们 | 浙ICP备05055128号
友情链接:中国施工企业管理协会