admin 管理员组

文章数量: 887021


2024年1月16日发(作者:js getelementby)

2008年3月第23卷 第1期山东师范大学学报(自然科学版)JournalofShandongNormalUniversity(NaturalScience)Mar.2008Vol.23No.1电子商务签名、加密中间件的一种Java实现方式刘梦飞1),2)(1)山东师范大学管理与经济学院,250014,济南; 2)山东英才职业技术学院计算机学院,250104,济南∥30岁,女,讲师)摘要 对电子商务中涉及信息安全的操作进行了讨论,设计了中间件层次构架,并在此基础上实现了签名、加密中间件,从而通过硬件设备提高电子商务的效率并降低了开发难度.中间件; 电子商务; Applet; CryptoAPI; SunMSCAPI关键词 中图分类号 TP3091 开发背景随着因特网的普及程度越来越高,电子商务已经迅猛的发展起来.电子商务是采用数字化电子方式进行商务数据交换,开展商务业务活动.电子商务系统就是商务活动的各方,包括商家、消费者、银行或金融机构、信息公司或证券公司和政府等,利用计算机网络技术全面实现在线交易电子化的过程.由于电子商务在Internet等网络上进行,因此信息传输的安全性是电子商务要解决的首要问题.电子商务中的安全性主要包括:数据的机密性(Confidentiality)、完整性(Integrity)以及真实性(Authentication).数据的机密性,指的是保证在开放的网络中传输的数据,不被其他人非法窃取、窥探、篡改和破坏,这就要求对明文数据进行加密.数据的完整性和真实性,指的是要保证通信双方完成传送后,接收方获得的数据要完整、未被更改,并且发送方不可抵赖,实现这个方面需要依靠公要基础设施(Public-keyInfrastructure,PKI),其核心就是证书和密钥的管理.中间件(Middleware)是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信.中间件是基础软件的一大类,属于可复用软件的范畴.顾名思义,中间件处于操作系统软件与用户应用软件的中间.中间件在应用软件的下层,但在操作系统、网络和数据库之上,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件.本文中,我们建立了一个简单的三层构架,在客户端、服务器和底层的安全操作之间插入了中间件层次,从而满足电子商务中对信息安全方面的要求,并通过统一的接口,减轻和简化了开发电子商务平台时在不同系统、不同客户端软件上重复的开发工作.2 中间件逻辑构架本文提到的中间件基于三层构架结构,它的逻辑框图如图1所示.  在三层结构中,电子商务的开发者不需要考虑安全操作的底层细节,以及操作系统,客户端软件之间的差别.只需要在中间件的上层直接开发业务流程,中间件负责完成所需要的相应安全操作.电子商务中客户端大多使用浏览器,本文提供的中间件通过表单签名的形式,从而确保敏感数据的机密性、完整性、真实性.中间件屏蔽了在安全性操作中,各软件、各硬件、各平台的差异,通过统一的API提供给开发者,简化开发过程.器等.中间件通过硬件设备在通信双方之间进行身份认证,验证客户端和服务器端证书的有效性、合法性.对于敏感数据进行加密,在网络中仅传输密文,保证敏感数据的机密性.对需要加密的数据运用散列函数,从而确保数据的完整性.中间件应能够实现对不同浏览器,不同操作系统,不同设备接口标准的兼容.例如在客户端可以使用MSCryptoAPI、PKCS#11、JCE(JavaCryptographyExtension)等等接口,可以使用IE、Netscape等浏览器.由于服务器端的操作系统平台比较复杂,可能收稿日期:2007-10-29图1 中间件逻辑构架  在客户端可选用IC卡,USBKey,加密卡等硬件设备,服务器端为了保证系统的性能不出现瓶颈,应使用高端的加密服务39

第23卷山东师范大学学报(自然科学版)第1期需要支持Windows,unix,Linux等等,所以为了便于在多平台之间实现移植,服务器端以纯Java接口形式提供为宜(本文推荐使用JCE接口).客户端主要是以MSCryptoAPI接口为重点,因为这种接口的调用过程比较复杂,其他可以类似的实现.服务器端我们主要讨论使用Java语言的JavaBean形式的实现.3 功能设计本文中设计的中间件主要功能包括,登录、登出、消息加密、消息签名、消息签名并加密等.现对主要功能进行简要描述.3.1 登录(Login) 客户端申请登录网址,服务器生成一个随机数发送到客户端,客户端applet使用SunMSCAPI的Provider,实现对CryptoAPI的调用,将服务器发送的随机数签名,通过表单将签名的结果以及applet获得的客户端证书提交给服务器(以PKCS#7的格式提交).由服务器端JSP脚本调用JavaBean,验证客户端证书的正确性以及证书时间、证书吊销列表(CRL)等,如果验证通过,服务器JSP脚本中通过JavaBean,使用客户端证书验证客户端对随机数的签名,如果验证通过,则验证客户身份的工作完成,可以确定为合法用户,生成Cookie文件,并在其中写入服务器对cookie信息的签名值,将cookie写入客户端,重定向到登录成功页面.如果验证证书或者签名时出错则登陆失败.只有在客户登录成功以后才可以进行消息的签名、加密操作.3.2 登出(Logout) 由服务器删除客户端安全cookie,保证在退出后登录失效.如果遇到意外退出,在cookie生命值长度到达以后自动失效.3.3 信息签名(SignMessage) 客户端向服务器申请签名网页,服务器脚本获得系统时间,客户端的Cookie验证的有效性,并且验证cookie中服务器的签名值,如果有效,导向到信息签名表单页,否则导向到登录页面.用户提交表单,Applet通过SunMSCAPI,实现CryptoAPI调用,对信息签名后提交给服务器.服务器脚本通过JavaBean对签名验证,验证通过后,导向到成功页面,否则到错误页面.3.4 信息加密(EncryptMessage) 客户端向服务器申请加密网页,服务器脚本获得系统时间,客户端的Cookie,验证Cookie的有效性,并且验证cookie中服务器的签名值,如果有效,导向到信息加密表单页,否则导向到登录页面.用户提交表单,Applet通过SunMSCAPI,实现CryptoAPI调用,对信息加密后提交给服务器.服务器脚本通过JavaBean对信息解密,解密成功后,导向到成功页面,否则到错误页面.3.5 信息签名,加密(SignAndEncryptMessage) 客户端向服务器申请签名、加密网页,服务器脚本获得系统时间,客户端的Cookie,验证Cookie的有效性,并且验证cookie中服务器的签名值,如果有效,导向到信息签名、加密表单页,否则导向到登录页面.用户提交表单,Applet通过SunMSCAPI,实现CryptoAPl调用,对信息签名、加密后提交给服务器.服务器脚本通过JavaBean对信息验证、解密,解密成功后,导向到成功页面,否则到错误页面.4 中间件实现在中间件的实现中最关键的是接口的调用,客户端可以使用CryptoAPI、PKCS#11、JCE等接口,服务器端一般应使用JCE接口.4.1 客户端接口 在Java6版本中,Sun添加了一个名为SunMSCAPl的JCEprovider.通过这个Provider,可以使用MicrosoftCryptoAPI(CAPI)进行各种RSA密码运算.SunMSCAPI就像Java应用程序与CAPI提供服务之间的一座桥梁,它提供了对X.509证书、RSA密钥对等的访问功能,RSA加密、解密功能,进行RSA签名、验证签名功能等,同时支持随机数产生等操作.本文所述中间件的客户端部分,采用applet调用名为SunMSCAPI的provider,使用微软CAPI的密码算法进行客户端所需要的各种密码运算,包括RSA加解密、签名、验签等.读者可以根据自己情况,在客户端采用不同的接口标准,例如JCE和PKCS#11接口.需要注意的是,如果使用PKCS#11接口,由于需要使用java程序调用C语言接口库,将会使用到JNI技术进行调用,这样会导致JAVA平台对一部分代码失去控制,容易造成JVM的coredump.所以推荐客户端使用CAPI或者JCE接口进行操作,这样可以提高中间件的稳定性.4.2 服务器端接口 服务器端应尽量使用JCE接口的形式,因为这样可以保证服务器端的良好兼容性,很容易就可以移植到多种操作系统,支持IIS、Apache、Tomcat等多种Web服务器.为了在JSP脚本中使用JCE接口,我们需要实现JavaBean的形式.在JavaBean的类中使用JCE接口完成安全相关的操作(签名、加密等)后,就可以在JSP中使用JavaBean来工作了,JSP中使用JavaBean的语句如下:其中id表示Bean在JSP中使用时的名称,scope表示Bean的生存期,class表示编译后的JavaBean类.JavaBean的具体编写格式读者可以参阅相关文档.4.3 Applet签名 文中客户端的安全操作使用了JavaApplet.由于使用了本地资源,所以Applet必须获得足够的权限,而在Java2平台中,一般的Applet是不允许操作本地资源的.为了获得访问资源的权限,我们需要对自己编写的applet进行签名,这样applet才能在浏览器中正常时候.40

第1期刘梦飞:电子商务签名、加密中间件的一种Java实现方式第23卷在Java2平台中已经提供了对applet进行签名的工具,我们将生成的class文件打包为JAR的格式,然后生成用来签名的密钥库(keystore)和密钥(key),这样就可以使用命令对JAR包进行签名,命令如下:其中A代表密钥库名称,B代表打包后的JAR文件包的名称.5 结论及讨论本文就电子商务中间件中信息安全有关的操作进行了讨论,提供了实现方案,成功实现了屏蔽底层系统、设备差异的目的.通过硬件设备可以有效的大幅提高电子商务中的业务处理速度,从而提高系统本身的能力.另外由于硬件设备的安全性要远比软件高,设备中的私钥不可取出,保证了加密,签名数据更高级别的安全性.现在市场上的硬件设备一般都可提供MSCryptoAPI、PKCS#11、JCE等接口标准,通过对本文中实现过程进行扩展,很容易支持所有的这些标准,也很容易实现对跨平台、跨系统的要求.通过中间件的设计,对于不同的设备,不同的操作系统等提供了统一的形式,简化了电子商务的开发过程,大大降低了开发难度.文中的实现方式具有一定的理论及实用价值.中间件是一个很广泛的概念,文中实现的只是涉及安全的操作,对于其他的功能没有进行过多讨论,还有很大的扩展余地,只有对其功能进一步扩充才能真正成为一个实用的系统.6 参考文献[1] 张先红.数字签名原理及技术[M].北京:机械工业出版社,2004[2] [美]TrappeWade,WashingtonLawrenceC.密码学概论[M].邹红霞,许鹏文,李勇奇译.北京:人民邮电出版社,2004.6[3] 张云勇,张智江,刘锦德,等.中间件技术原理与应用[M].北京:清华大学出版社,2004[4] [美]体系结构与中间件[M].北京:人民邮电出版社,2003[5] [美].安全手册[M].邱仲潘译.北京:电子工业出版社,2001[6] 曲德祥,唐新亭,徐连诚,等.网络信息过滤系统研究综述[J].山东师范大学学报(自然科学版),2007,22(2):23~26ANIMPLEMENTOFSECURITYMIDDLEWAREINELECTRONICCOMMERCELiuMengfei1),2)(1)SchoolofManagementandEconomics,ShandongNormalUniversity,250014,Jinan,China;2)SchoolofComputerScience,ShandongYingcaiVocationalTechnologyCollege,250104,Jinan,China)Abstract Thispaperdicussesthesecureoperdlewareimprovestheefficiencyoftheelectroniccommercebyhardware,ds middleware; electroniccommerce; pplet; CryptoAPI; SunMSCAPI41


本文标签: 中间件 签名 客户端