收稿日期:2007-10-29电子商务签名、加密中间件的一种Java 实现方式
刘梦飞1),2)
(1)山东师范大学管理与经济学院,250014,济南; 2)山东英才职业技术学院计算机学院,250104,济南∥30岁,女,讲师)摘要 对电子商务中涉及信息安全的操作进行了讨论,设计了中间件层次构架,并在此基础上实现了签名、加密中间件,从
而通过硬件设备提高电子商务的效率并降低了开发难度.
关键词
中间件; 电子商务; Applet ; CryptoAPI ; SunMSCAPI 中图分类号 TP 309
1 开发背景
随着因特网的普及程度越来越高,电子商务已经迅猛的发展起来.电子商务是采用数字化电子方式进行商务数据交换,开展商务业务活动.电子商务系统就是商务活动的各方,包括商家、消费者、银行或金融机构、信息公司或证券公司和政府等,利用计算机网络技术全面实现在线交易电子化的过程.由于电子商务在Internet 等网络上进行,因此信息传输的安全性是电子商务要解决的首要问题.
电子商务中的安全性主要包括:数据的机密性(C on fidentiality )、完整性(Integrity )以及真实性(Authentication ).数据的机密性,指的是保证在开放的网络中传输的数据,不被其他人非法窃取、窥探、篡改和破坏,这就要求对明文数据进行加密.数据的完整性和真实性,指的是要保证通信双方完成传送后,接收方获得的数据要完整、未被更改,并且发送方不可抵赖,实现这个方面需要依靠公要基础设施(Public -key In frastructure ,PKI ),其核心就是证书和密钥的管理
.
中间件(M iddleware )是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信.中间件是基础软件的一大类,属于可复用软件的范畴.顾名思义,中间件处于操作系统软件与用户应用软件的中间.中间件在应用软件的下层,但在操作系统、网络和数据库之上,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件.
本文中,我们建立了一个简单的三层构架,在客户端、服务器和底层的安全操作之间插入了中间件层次,从而满足电子商务中对信息安全方面的要求,并通过统一的接口,减轻和简化了开发电子商务平台时在不同系统、不同客户端软件上重复的开发工作.
2 中间件逻辑构架
本文提到的中间件基于三层构架结构,它的逻辑框图如图1所示.
在三层结构中,电子商务的开发者不需要考虑安全操作的底层细
节,以及操作系统,客户端软件之间的差别.只需要在中间件的上层直
接开发业务流程,中间件负责完成所需要的相应安全操作.
电子商务中客户端大多使用浏览器,本文提供的中间件通过表单
签名的形式,从而确保敏感数据的机密性、完整性、真实性.中间件屏
蔽了在安全性操作中,各软件、各硬件、各平台的差异,通过统一的API
提供给开发者,简化开发过程.java加密方式有哪些
图1 中间件逻辑构架 在客户端可选用IC 卡,US B K ey ,加密卡等硬件设备,服务器端为了保证系统的性能不出现瓶颈,应使用高端的加密服务
器等.
中间件通过硬件设备在通信双方之间进行身份认证,验证客户端和服务器端证书的有效性、合法性.对于敏感数据进行加密,在网络中仅传输密文,保证敏感数据的机密性.对需要加密的数据运用散列函数,从而确保数据的完整性.
中间件应能够实现对不同浏览器,不同操作系统,不同设备接口标准的兼容.例如在客户端可以使用MS CryptoAPI 、PK CS #11、JCE (Java Cryptography Extension )等等接口,可以使用IE 、Netscape 等浏览器.由于服务器端的操作系统平台比较复杂,可能
9
32008年3月
第23卷 第1期山东师范大学学报(自然科学版)Journal of Shandong N ormal University (Natural Science )Mar.2008V ol.23N o.1
第23卷山东师范大学学报(自然科学版)第1期
需要支持Windows,unix,Linux等等,所以为了便于在多平台之间实现移植,服务器端以纯Java接口形式提供为宜(本文推荐使用JCE接口).
客户端主要是以MS CryptoAPI接口为重点,因为这种接口的调用过程比较复杂,其他可以类似的实现.服务器端我们主要讨论使用Java语言的JavaBean形式的实现.
3 功能设计
本文中设计的中间件主要功能包括,登录、登出、消息加密、消息签名、消息签名并加密等.现对主要功能进行简要描述. 3.1 登录(Login) 客户端申请登录网址,服务器生成一个随机数发送到客户端,客户端applet使用SunMSC API的Provider,实现对CryptoAPI的调用,将服务器发送的随机数签名,通过表单将签名的结果以及applet获得的客户端证书提交给服务器(以PK CS#7的格式提交).由服务器端JSP脚本调用JavaBean,验证客户端证书的正确性以及证书时间、证书吊销列表(CR L)等,如果验
证通过,服务器JSP脚本中通过JavaBean,使用客户端证书验证客户端对随机数的签名,如果验证通过,则验证客户身份的工作完成,可以确定为合法用户,生成C ookie文件,并在其中写入服务器对cookie信息的签名值,将cookie写入客户端,重定向到登录成功页面.如果验证证书或者签名时出错则登陆失败.只有在客户登录成功以后才可以进行消息的签名、加密操作. 3.2 登出(Log out) 由服务器删除客户端安全cookie,保证在退出后登录失效.如果遇到意外退出,在cookie生命值长度到达以后自动失效.
3.3 信息签名(S ignMessage) 客户端向服务器申请签名网页,服务器脚本获得系统时间,客户端的C ookie验证的有效性,并且验证cookie中服务器的签名值,如果有效,导向到信息签名表单页,否则导向到登录页面.用户提交表单,Applet通过SunMSC API,实现CryptoAPI调用,对信息签名后提交给服务器.服务器脚本通过JavaBean对签名验证,验证通过后,导向到成功页面,否则到错误页面.
3.4 信息加密(EncryptMessage) 客户端向服务器申请加密网页,服务器脚本获得系统时间,客户端的C ookie,验证C ookie的有效性,并且验证cookie中服务器的签名值,如果有效,导向到信息加密表单页,否则导向到登录页面.用户提交表单,Applet 通过SunMSC API,实现CryptoAPI调用,对信息加密后提交给服务器.服务器脚本通过JavaBean对信息解密,解密成功后,导向到成功页面,否则到错误页面.
3.5 信息签名,加密(S ignAndEncryptMessage) 客户端向服务器申请签名、加密网页,服务器脚本获得系统时间,客户端的
C ookie,验证C ookie的有效性,并且验证cookie中服务器的签名值,如果有效,导向到信息签名、加密表单页,否则导向到登录页面.用户提交表单,Applet通过SunMSC API,实现CryptoAPl调用,对信息签名、加密后提交给服务器.服务器脚本通过JavaBean对信息验证、解密,解密成功后,导向到成功页面,否则到错误页面.
4 中间件实现
在中间件的实现中最关键的是接口的调用,客户端可以使用CryptoAPI、PK CS#11、JCE等接口,服务器端一般应使用JCE 接口.
4.1 客户端接口 在Java6版本中,Sun添加了一个名为SunMSC APl的JCE provider.通过这个Provider,可以使用M icros oft CryptoAPI(C API)进行各种RS A密码运算.
SunMSC API就像Java应用程序与C API提供服务之间的一座桥梁,它提供了对X.509证书、RS A密钥对等的访问功能,RS A 加密、解密功能,进行RS A签名、验证签名功能等,同时支持随机数产生等操作.
本文所述中间件的客户端部分,采用applet调用名为SunMSC API的provider,使用微软C API的密码算法进行客户端所需要的各种密码运算,包括RS A加解密、签名、验签等.
读者可以根据自己情况,在客户端采用不同的接口标准,例如JCE和PK CS#11接口.需要注意的是,如果使用PK CS#11接口,由于需要使用java程序调用C语言接口库,将会使用到JNI技术进行调用,这样会导致JAVA平台对一部分代码失去控制,容易造成JVM的core dum p.所以推荐客户端使用C API或者JCE接口进行操作,这样可以提高中间件的稳定性.
4.2 服务器端接口 服务器端应尽量使用JCE接口的形式,因为这样可以保证服务器端的良好兼容性,很容易就可以移植到多种操作系统,支持IIS、Apache、T omcat等多种Web服务器.
为了在JSP脚本中使用JCE接口,我们需要实现JavaBean的形式.在JavaBean的类中使用JCE接口完成安全相关的操作(签名、加密等)后,就可以在JSP中使用JavaBean来工作了,JSP中使用JavaBean的语句如下:
<jsp:useBean id=“Cryptography”scope=“session”=“class test.Bean”/>其中id表示Bean在JSP中使用时的名称,scope表示Bean的生存期,class表示编译后的JavaBean类.
JavaBean的具体编写格式读者可以参阅相关文档.
4.3 Applet签名 文中客户端的安全操作使用了Java Applet.由于使用了本地资源,所以Applet必须获得足够的权限,而在Java2平台中,一般的Applet是不允许操作本地资源的.
为了获得访问资源的权限,我们需要对自己编写的applet进行签名,这样applet才能在浏览器中正常时候.
04
第1期刘梦飞:电子商务签名、加密中间件的一种Java实现方式第23卷
在Java2平台中已经提供了对applet进行签名的工具,我们将生成的class文件打包为JAR的格式,然后生成用来签名的密钥库(keystore)和密钥(key),这样就可以使用命令对JAR包进行签名,命令如下:
jarsigner-keystore A.keystore B.JAR
其中A代表密钥库名称,B代表打包后的JAR文件包的名称.
5 结论及讨论
本文就电子商务中间件中信息安全有关的操作进行了讨论,提供了实现方案,成功实现了屏蔽底层系
统、设备差异的目的.通过硬件设备可以有效的大幅提高电子商务中的业务处理速度,从而提高系统本身的能力.另外由于硬件设备的安全性要远比软件高,设备中的私钥不可取出,保证了加密,签名数据更高级别的安全性.现在市场上的硬件设备一般都可提供MS CryptoAPI、PK CS#11、JCE等接口标准,通过对本文中实现过程进行扩展,很容易支持所有的这些标准,也很容易实现对跨平台、跨系统的要求.通过中间件的设计,对于不同的设备,不同的操作系统等提供了统一的形式,简化了电子商务的开发过程,大大降低了开发难度.文中的实现方式具有一定的理论及实用价值.中间件是一个很广泛的概念,文中实现的只是涉及安全的操作,对于其他的功能没有进行过多讨论,还有很大的扩展余地,只有对其功能进一步扩充才能真正成为一个实用的系统. 6 参考文献
[1] 张先红.数字签名原理及技术[M].北京:机械工业出版社,2004
[2] [美]T rappe W ade,W ashington Lawrence C.密码学概论[M].邹红霞,许鹏文,李勇奇译.北京:人民邮电出版社,2004.6
[3] 张云勇,张智江,刘锦德,等.中间件技术原理与应用[M].北京:清华大学出版社,2004
[4] [美]Britton Chris.IT体系结构与中间件[M].北京:人民邮电出版社,2003
[5] [美]Jaw orski Jam ie.Java.安全手册[M].邱仲潘译.北京:电子工业出版社,2001
[6] 曲德祥,唐新亭,徐连诚,等.网络信息过滤系统研究综述[J].山东师范大学学报(自然科学版),2007,22(2):23~26
AN IMPL EMENT OF SECURITY
MIDDL EWARE IN E L ECTRONIC COMMERCE
Liu Meng fei1),2)
(1)School of M anagement and Econom ics,Shandong N ormal University,250014,Jinan,China;
2)School of C om puter Science,Shandong Y ingcai V ocational T echnology C ollege,250104,Jinan,China)
Abstract This paper dicusses the secure operations in the electronic commerce and designes a framew ork of middlewares.The security middleware based on the framew ork is im plemented.The middleware im proves the efficiency of the electronic commerce by hardware,and reduces the difficulty of development.
K ey w ords middleware; electronic commerce; pplet; CryptoAPI; SunMSC API
14
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论