微型电脑应用
MICROCOMPUTER APPLICATIONS
2000　Vol.16　No.1　P.48-50



信用卡在线安全支付的分析与构建
蔡小虎　钱世德
摘　要：阐述了信用卡在线支付原理及应用手段，指出了其中存在的漏洞，提出了一种基于安全支付协议的解决方案，并对该方案进行了分析。
关键词：信用卡在线支付　SSL　SET　线程
Abstract：This paper introduces the principles and impleme ntation of online credit card payment, and points out leaks in them. It also pro poses a solution based on secure payment protocols and makes an analysis of it. 
Keywords：online credit card payment　SSL　SET　thread▲
一、引言
　　目前，电子商务交易手段已逐步多样化，使用信用卡在网上进行结算是其中最主要的一种方式。有必要指出，这里的信用卡是一个广义的概念，它包括了信用卡、智能卡、ATM卡等。
　　在信用卡网上支付中，最为重要的特性是安全性和并发性。其中安全性指的是信息在网上传输时的机密性，可鉴别性及一致性。出于安全性考虑，当前网上信用卡支付主要基于SSL(安全套接层协议)和SET(安全电子交易协议)这两种安全交易协议。采用SSL的连接可以看成在TCP/IP连接的基础上建立一个安全通道，在这一通道中，所有点对点的信息都将加密，并提供了信息摘要功能，从而确保信息在Internet上传输时，不会被第三方窃取或篡改。当基于SSL进行信用卡支付时，SSL主要用于持卡人和商家之间的通信，而商家和银行之间的则通过专线等方式相连。而SET是由MasterCard和Visa这两家全球最大的信用卡公司创建的，它是一种特定于电子商务体系的框架性协议，定义了客户，商家，认证中心，支付网关，信用卡结算中心(结算银行)等参与方，并为各参与方之间的信息流走向、必须采用的加密及身份认证都制定了严密的标准。目前，SSL的最新版本更名为TLS(Transport Layer Security)，由IETF负责开发，并推出了相应RFC(RFC2246)，而SET也逐步被确立为网上交易的工业标准。系统的并发性是另一必须考虑的特性。电子商务系统必须随时准备同时应付大量访问，一次拒绝访问就可能丧失大笔商机。并发性一般通过多线程机制加以实现。
二、信用卡支付现状及漏洞
　　对于信用卡在线支付应用环境，基于SSL或基于SET这两种方式都存在优势与欠缺。
　　SSL相对较为简便稳定，目前已有较多开发工具。Dell和Amazon就是基于SSL的典型成功案例。然而作为一种针对两方通信的协议，SSL不完全适合需多方参与的电子商务环境；与SSL相比，SET针对性更强。以信用卡帐号保密问题为例，基于SSL的环境中，顾客信息完全对商家公开，无法保证顾客的信用卡帐号不被恶意商家所窃取。
　　SET协议建立在认证机制基础上，它提供了一条称为OPI的指令，将顾客的订单信息和信用卡帐号信息分别用商家的公共密钥和结算中心的公共密钥加密，然后将这两段信息打包在一起，发给商家，商家将其中信用卡帐号信息提取出来，发给支付网关，交由结算中心处理。这样，虽然信息都要经过商家转发，但由于它没有支付网关的私人密钥，只能看到顾客的订单信息，而信用卡帐号信息只有支付网关才能获得。通过这种方式，SET确保了信用卡帐号的保密。SET的另一个优点在于完整的认证体系：SET为各参与方都创建了等级不同的数字凭证，其中包括特卡人凭证，商家凭证及支付网关凭证等三类。其中商家凭证反映了一种商家与经济机构的关系，使得后者能以一种信用卡结算方式与商家结算。这里必须指出一点：SET中商家对于每张信用卡都需要两张数字凭证。这是出于安全考虑：数据传输过程中，最终用于数据加密的是对称密钥，因此在加密前，商家首先需要用一对公钥加密对称密钥，发给其通信的另一方(持卡人或支付网关)。因此商家必须具有两套公共密钥对，一对用于数字签名，另一对则用于加密对称密钥。然而，SET的严密必带来了一系列的问题：在当前使用的1.0版本中，存在身份验证复杂，加密环节多，处理效率低，商家服务器负荷重等问题，而旨在轻量化(Light-Weighted)的2.0版本却一拖再拖，迟迟未能推出。此外，由于SET整个结算规范都建立在EMV(Europe Master-Visa)卡基础上，对于其他信用卡缺乏兼容性，这也给它的推广带来了许多问题。因此，至今都鲜有完全基于SET的成功案例。
　　在并行性方面，目前许多电子商务网站常常因为前台处理、后台数据库及两者接口等因素的处理能力不足，导致经常性拒绝访问，由此带来的损失是难以估量的。
三、应用方案构建
　　基于安全电子交易协议的信息系统是上海大学与建设银行上海分行的一个合作课题。它提出了一种SSL和SET优势互补的解决方案，在以SET规范整个系统环境的同时，采用SSL进行点对点加密，并通过使用Servlet等技术，在保证交易安全性的基础上，最大程度减少了操作环节。持卡人与商家之间的通信是完全基于SSL协议的。本系统中商家和部分支付网关功能在商家方实现，认证中心和信用卡结算中心的功能交给银行方完成。
　　考虑到跨平台性和安全性，本系统选用Java作为主要开发语言。Java程序根据应用场合可分为Application、Applet和Servlet三种。Application是Java应用程序，可用于服务器端和客户端，而Applet和Servlet分别用于客户端和服务器端。Applet与Application的优点已是众所周知的，而Servlet同样也具有强大的功能：它是用于互联网服务器上的Java程序，具有一种多线程机制，便于系统的维护和扩展，每个线程可以方便地处理各自的异常情况。为支持Servlet运作，采用了Windows NT 这一强占式多任务处理操作系统。Servlet的另一优势在于它一经载入，就一直保持这种载入状态，而无须为每个客户重新起动一次，因此处理速度相当快。眼下大多数Web服务器都支持Servlet的使用。Servlet它为用户发来的每次http请求分配一个线程，一旦处理结束就会自动终止。在Servler基础上，可构架一种瘦客户机肥服务器模式，从而提供了分布式信息处理环境，可满足网上交易系统的并发性需求。此外。Java还提供了与数据库的良好连接，通过JDBC可以方便地实时存取数据库，这些对于建立一种先进通用的网上交易系统极为关键。本系统中使用了Servlet和Application。在数据库存取方面也采用了JDBC。而与银行内部网连接的基于RS232的串行通信程序是在Java Communication包的基础上开发的，它采用了多线程及同步，充分实现了系统并发性。
　　对于SSL开发，主要采用了J/SSL作为开发平台。随着硬件速度的提高和黑客技术的发展，有必要采用强加密。J/SSL是一种完全在美国之外开发的工具，不受出口限制，由此带来的直接好处是可以在它提供的平台基础上使用强加密。它还能支持约50个同时连接(Pending Connection)。并能够支持多种私钥及数字证书安全存放标准，包括PKCS#1、PKCS#7、PKCS#8及PKCS#12。
　　从数据库的角度来看，眼下JDBC或ODBC都提供了相当强大的数据库支持能力，在本方案提供的交易环境中，究竟使用哪种数据库并无限制。
　　对于信用卡在线支付，其中最需安全传输的信息是持卡人的信用卡信息，即卡号和密码。为防止商家获取该信息，本系统从软件上实现了该信息的自动转发，从而避免了商家恶意盗用的可能。在商家与很行内部网间的通信采用了硬件加密器进行基于DES加密，从而最大程度上确保了客户信息的安全性。
　　我国信用卡在支付方面与国外用卡有所区别。我国大多数信用卡，如建设银行的龙卡、中国银行的长城卡等，在发放新卡时，卡上已有卡号及原始密码。卡号是直接印置于信用卡表面的，而密码则是存放在卡的磁条上的。这些原始信息同时也存放在银行的后台数据库中。持卡人改变密码时，新密码相应与原始密码的偏移量将被记录在磁条上，新密码或偏移量都不在银行后台数据库中存放。当持卡人刷卡时，POS机将从卡中读取密码及偏移量，并计算出原始密码。通过卡号及原始密码，可在后台数据库中核对并处理相应持卡人的帐号信息。由于后台数据库不存放持卡人新密码，而新密码与原始密码之间的转换完全在硬件上实现，而转换过程是完全对外保密的，由此导致无法直接对持卡人的信息进行验证。
　　本系统中，持卡人在首次网上购物前，在表格(Form)添入信用卡卡号及其它个人信息，如身份证号等，通过Servlet发给商家服务器。而商家端将该信息转发给结算银行，由后者与后台数据库加以比较，对合法的信用卡用户产生一个唯一的身份验证密码，并放入后台数据库中。结算银行将密码发给商家，由商家自动发还持卡人，在这一过程中，商家仅仅作为转发站，所有信息都不对它公开。以后，持卡人就能凭借卡号及身份验证密码进行网上交易了。
　　此后的支付的流程可用下图表示：

图1　支付流程
　　其中，顾客(持卡人)与商家间的信息交互采用了SSL加密，而商家与结算银行间则采用了DES加密。由此确保了系统的信息保密性；通过SSL对商家身份进行了鉴别，其中采用了基于X.509数字证书的扩展。而顾客的身份鉴别则由结算银行完成，从而满足了身份可鉴别要求；顾客需提供其个人信息，由此保证了信息的不可否认性；SSL提供了信息摘要功能，防止了信息被篡改的情况。这样，从最大限度上解决了系统安全性问题。系统中还采用了多线程机制，可同时处理多个顾客的请求，并实现了信息的同步处理，保证了系统的并发性。
　　本系统于今年6月在上海大学Internet招生项目中进行了试用。由于Internet招生登录符合电子商务服务性、协调性、集成性，并发性及安全性等基本特性，而在网上缴费登录在很大程度上具有商务性特色，因此都具有相当现实意义。在Internet上开放的短短五天中，该站点共有七千人次访问，其中千余人通过身份验证及各类登录验证，成功地通过网上进行登录。
四、结束语
　　信用卡交易主要基于SSL和SET两种协议。在当前情况下，它们各有优势和缺陷。在这两者相结合并相互取长补短的基础上，本文提出了一种构建方案。通过在上海大学Internet招生项目中的应用，证明这种构架在肥服务器瘦客户机模式基础上的方案能够确保网上交易的安全性和并发性。随着我国认证体系的完善及椭圆加密算法的采用，该方案将具有重大现实意义。■
作者单位：蔡小虎(上海大学计算机科学学院272# 上海大学网络中心 200072)
参考文献：
［1］Rob Macgregor,Catherine Ezvan.Secure Electronic Transactions:Credit Card Payment on the Web in Theory and Practice.International Technical Support Organization Raleigh Center.1997
［2］Marco Pistoia,Kenji Kojima,Narayan Raghu.Internet Security in the Network Computing Framework International Technical Support Organization,1998
［3］Paul Philion.Build Servlet-based enterprise Web Applications.Java World,December 1998
［4］Marvin S.Credits and Debits on the Internet.IEEE Spectrum,1997,34(2):23-29
［5］蔡小虎　钱世德　关于电子商务两大基本协议――SSL和SET的对比与分析　第十四次全国计算机安全学术交流会
［6］劳诚信　“上海，迈向卡的时代”《微型电脑应用》1999年第10期P1
收稿日期：1999-10-29
