计算机应用
Computer Applications
1999年 第19卷 第7期  Vol.19 No.7 1999



电子商务中在线支付的安全保障
刘卫宁　宋　伟

　　摘　要　本文详细分析和比较了保障在线支付安全的主流协议： SSL协议和SET协议。
　　关键词　在线支付，安全， SSL，SET
　　
SECURE FACILITIES FOR ONLINE PAYMENT
IN ELECTRONIC COMMERCE

Liu Weining　Song Wei 
Computer Science & Engineering College, Chongqing University, Chonqging 400044
　　Abstract　This paper analyzes and compares the popular protocols which ensure the security of online payment system: SSL and SET.
　　Keywords　Online payment, Security, SSL, SET

　　实现电子商务的关键是要保证商务活动过程中系统的安全性，即应保证在向基于Internet的电子交易转变的过程中与传统交易的方式一样安全可靠。
　　虽然Internet以开放性著称，在安全方面具有脆弱性。但是，随着Internet的发展和电子商务时代的到来，人们在Internet安全上所进行的努力已改变了这种情况。今天电子商务中采用的安全技术已成为一种成熟的、实用的安全技术。
　　电子商务的主要特征是在线支付。为了保证在线支付的安全，需要采用数据加密和身份认证技术，以便营造一种可信赖的电子交易环境。在线交易首先要验证或识别参与交易活动的各个主体，如持卡消费者、商家、受卡银行和支付网关的身份（身份用数字证书表示），以及保证持卡人的信用卡号不会被盗用，这样客户才可以放心地在网上购物。
　　目前有两种安全在线支付协议被广泛采用，即安全套接层SSL（Secure Sockets Layer）协议和安全电子交易SET（Secure Electronic Transaction）协议。　　
1　SSL协议
　　SSL协议是Netscape公司在网络传输层之上提供的一种基于RSA和保密密钥的用于浏览器和Web服务器之间的安全连接技术。众所周知，Socket只是一个编程界面，并不提供任何安全措施。SSL则不仅提供编程界面，而且还向上层应用提供安全服务。SSL3.0通过数字签名和数字证书可实现浏览器和Web服务器双方的身份验证。在用数字证书对双方的身份验证后，双方就可以用保密密钥进行安全的会话了。
　　这种简单加密模式的特点是：
　　* 部分或全部信息加密；
　　* 采用对称的和非对称的加密技术；
　　* 通过数字证书验证身份；
　　* 采用防止伪造的数字签名。
　　SSL协议在应用层收发数据前，协商加密算法、连接密钥并认证通信双方，从而为应用层提供了安全的传输通道；在该通道上可透明加载任何高层应用协议（如HTTP、FTP、TELNET等）以保证应用层数据传输的安全性。SSL协议实现简单，并且独立于应用层协议，因此，在电子交易中被用来安全传送信用卡号码。
　　SSL协议握手流程由两个阶段组成：服务器认证和用户认证（可选）。
　　服务器认证阶段
　　* 客户端向服务器发送一个“Hello”信息，以便开始一个新的会话连接；
　　* 服务器根据客户的信息确定是否需要生成新的主密钥，如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息；
　　* 客户根据收到的服务器响应信息，产生一个主密钥，并用服务器的公开密钥加密后传给服务器；
　　* 服务器恢复该主密钥，并返回给客户一个用主密钥认证的信息，以此让客户认证服务器。
　　这样通过主密钥引出的密钥对一系列数据进行加密来认证服务器，从而建立安全的通信通道。
　　用户认证阶段（可选）
　　在此之前，服务器已经过了客户认证，这一阶段主要完成对客户的认证。
　　经认证的服务器发送一个提问给客户，客户则返回（数字）签名后的提问和其公开密钥，从而向服务器提供认证。
　　SSL支持各种加密算法。在“握手”过程中，使用RSA公开密钥系统。密钥交换后，使用一系列密码，包括RC2、RC4、IDEA、DES、triple-DES及MD5 信息摘要算法。公开密钥认证遵循X.509标准。
　　SSL协议实现简单，独立于应用层协议，且被大部分的浏览器和Web服务器所内置，便于在电子交易中应用，国际著名的CyberCash信用卡支付系统就支持这种简单加密模式，IBM等公司也提供这种简单加密模式的支付系统。但是，SSL是一个面向连接的协议，只能提供交易中客户与服务器间的双方认证，在涉及多方的电子交易中，SSL协议并不能协调各方间的安全传输和信任关系，因此，为了实现更加完善的电子交易，MasterCard和Visa以及其它一些业界厂商制订并发布了SET协议。　　
2　SET协议
　　SET协议是针对开放网络上安全、有效的银行卡交易，由Visa和Mastercard联合研制的，为Internet上卡支付交易提供高层的安全和反欺诈保证。现在SET已作为开放的工业标准发布，软件厂家可用来研制自己的应用软件。
2.1　SET协议为电子交易提供的安全措施
　　SET协议保证了电子交易的机密性、数据完整性、身份的合法性和防抵赖性。
　　* 机密性（Confidentiality）
　　SET协议采用先进的公开密钥算法来保证传输信息的机密性，以避免Internet上任何无关方的窥探。公开密钥算法容许任何人使用公开的密钥将加密信息发送给指定的接收者，接收者收到密文后，用私人密钥对这个信息解密，因此，只有指定的接收者才能读这个信息，从而保证信息的机密性。
　　SET协议也可通过双重签名的方法将信用卡信息直接从客户方透过商家发送到商家的开户行，而不容许商家访问客户的帐号信息，这样客户在消费时可以确信其信用卡号没有在传输过程中被窥探，而接收SET交易的商家因为没有访问信用卡信息，故免去了在其数据库中保存信用卡号的责任。
　　* 数据完整性（Data Integrity）
　　通过SET协议发送的所有报文加密后，将为之产生一个唯一的报文摘要值（message digest），一旦有人企图篡改报文中包含的数据，该数值就会改变，从而被检测到，这就保证了信息的完整性。
　　* 身份验证（Verification of Identity）
　　SET协议可使用数字证书来确认交易涉及的各方（包括商家、持卡客户、受卡行和支付网关）的身份，为在线交易提供一个完整的可信赖的环境。
　　* 防抵赖性（Non-repudiation of Disputed Charges）
　　SET交易中数字证书的发布过程也包含了商家和客户在交易中存在的信息。因此，如果客户用SET发出一个商品的订单，在收到货物后他（她）不能否认发出过这个订单；同样，商家以后也不能否认收到过这个订单。
2.2　电子交易的主体对象
　　电子交易涉及的主要主体对象有：
　　客户或持卡人（Cardholder）： 电子交易中的持卡消费者；
　　发卡机构（Issuer）： 信用卡的发卡金融机构，它将为客户建立帐号，发出信用卡，它必须保证该信用卡组织的有关规定（包括安全、支付授权等）；
　　商家（Merchant）： 服务提供者；
　　受卡行（Acquirer）： 商家的开户银行，处理信用卡的授权和支付；
　　支付网关（Payment gateway）： 是一个由受卡行（或指定的第三方机构）操作的设备，是金融网与Internet的接口，用来处理商家的支付信息（包括客户的支付命令等）。
2.3　基于SET的电子交易流程
　　基于SET的标准电子交易流程如图1所示。


图1　SET交易流程图

2.3.1　浏览
　　客户通过浏览器从商家的商品目录寻找所需商品。
2.3.2　发送购买请求
　　a） 客户（cardholder）初始化请求
　　客户发送初始化请求给商家（在发送SET报文之前，客户需拥有支付网关交换密钥的私人密钥）。
　　b） 商家发送证书
　　商家收到客户的初始化请求后，为请求报文分配一个唯一的交易标识号，并用商家的私人密钥进行数字签名，然后将初始化响应报文与商家和支付网关的证书一起传给客户。
　　c) 客户接收初始化响应并发送请求
　　客户收到初始化响应后，遍历信任链，验证商家和支付网关的证书，确认商家和支付网关的身份，再根据商家的公开密钥确认初始化响应上商家的签名；
　　客户产生订单信息（Ordering Information）和支付命令（Payment Instruction）；
　　客户用私人密钥对订单信息和支付命令进行双重签名；
　　客户产生一个随机的对称密钥，并用它对双重签名后的支付命令加密，然后再用支付网关交换密钥的公开密钥（public key-exchange key）对客户帐号和对称密钥加密；
　　客户将加密后的订单信息和支付命令发给商家。
　　d） 商家处理请求报文
　　商家遍历信任链以确认客户证书；
　　商家用客户的公开密钥对订单信息上的双重签名解密，以确保订单在传输过程中未被篡改，其上的签名是客户的；
　　商家处理订单信息请求，同时将支付命令传给支付网关并请求授权；
　　商家产生一个购买响应报文（其中包括商家的签名证书，指明客户的订单已被接收），并对该报文数字签名后发给客户；
　　如果交易被授权，商家将执行订单上规定的送货等服务。
　　e） 客户接收购买响应
　　客户遍历信任链确认商家的签名证书；
　　客户用商家的公开密钥来证实购买响应上的签名是商家的；
　　客户保存收到的购买响应。
2.3.3　支付认证
　　a） 商家请求授权
　　商家产生授权请求，并对它进行数字签名；
　　商家用随机产生的对称密钥对授权请求加密，然后再用支付网关交换密钥的私人密钥对该对称密钥加密；
　　商家将加密的授权请求和来自客户的加密支付命令一起送支付网关。
　　b） 支付网关处理授权请求
　　网关遍历信任链确认商家的证书；
　　网关用其交换密钥的私人密钥对对称密钥解密，然后用对称密钥对授权请求解密；
　　网关用商家的公开密钥验证授权请求上商家的签名；
　　网关遍历信任链确认客户的证书；
　　网关用其交换密钥的私人密钥对对称密钥和客户帐号解密，再用对称密钥对支付命令解密；
　　网关用客户的公开密钥确认支付命令上客户的签名；
　　网关确认商家授权请求中的交易号与客户支付命令中一致；
　　网关通过金融网络向客户的金融机构（发卡机构）发授权请求；
　　网关产生一个授权响应报文，并用网关的私人密钥签名；
　　网关用新产生的随机对称密钥对授权响应加密，然后再用商家交换密钥的公开密钥对对称密钥加密；
　　网关产生一个付款标志（capture token），并用网关的私人密钥签名；
　　网关将加密后的授权响应送商家。
　　c) 商家处理授权响应
　　商家遍历信任链确认支付网关的证书；
　　商家用商家交换密钥的私人密钥对对称密钥解密，然后再用对称密钥对授权响应解密；
　　商家用支付网关的公开密钥确认授权响应上支付网关的签名；
　　商家保存加密后的付款标志和授权响应，以便付款处理用；
　　商家完成购买请求后，执行订单。
2.3.4　付款
　　a） 商家请求付款
　　商家产生付款请求；
　　商家将其证书嵌入付款请求中，并用商家的私人密钥对付款请求签名；
　　商家用对称密钥对请求加密，并用支付网关交换密钥的公开密钥对该密钥加密；
　　商家将加密后的付款请求和以前保存的来自授权响应的加密付款标志送给支付网关。
　　b） 支付网关处理付款请求
　　网关遍历信任链确认商家证书；
　　网关用网关交换密钥的私人密钥对对称密钥解密，然后用该对称密钥对付款请求解密；
　　网关用商家的公开密钥确认付款请求上商家的签名；
　　网关用网关交换密钥的私人密钥对对称密钥解密，然后再用对称密钥对付款标志解密；
　　网关确认商家的付款请求与付款标志一致；
　　网关通过金融网络向客户金融机构发付款请求；
　　网关产生付款响应报文（包括网关签名证书），并用网关的私人密钥加密；
　　网关用随机产生的对称密钥对付款响应加密，再用商家交换密钥的公开密钥对该对称密钥加密；
　　网关将加密后的付款响应送商家。
　　c） 商家接收付款响应
　　商家遍历信任链确认支付网关证书；
　　商家用商家交换密钥的私人密钥对对称密钥解密，然后再用该对称密钥对付款响应解密；
　　商家用支付网关的公开密钥确认付款响应上支付网关的签名；
　　商家保存付款响应，以便今后与来自受卡机构支付对帐。
2.4　小结
　　通过上面的分析可以看到，SET定义了一个完备的电子交易流程，它较好地解决了电子交易中各方间复杂的信任关系和安全连接，确保了电子交易中信息的真实性、保密性、防抵赖性和不可更改性。与此同时，SET协议庞大而又复杂，银行、商家和客户均需要改造系统才能实现互操作，因此，SET协议被普遍使用尚有一个过程。但是，与SSL相比，SET协议具有许多优点：
　　* SET对商家提供了保护自己的手段，使商家免受欺诈的困扰，并使商家的运营成本降低；
　　* 对消费者而言，SET保证了商家的合法性，并且用户的信用卡号不会被窃取，SET替消费者保守了更多的秘密使其在线购物更加轻松；
　　* 银行和发卡机构以及各种信用卡组织非常喜爱SET协议，因为SET帮助它们将业务扩展到Internet这个广阔的空间中，从而使得信用卡网上支付具有更低的欺诈概率，这使得它比其它支付方式具有更大的竞争力；
　　* SET对于参与交易的各方定义了互操作接口，一个系统可以由不同厂商的产品构筑。
　　将来，由于SET交易的低风险性以及各信用卡组织的支持，SET将在基于Internet的卡支付交易中占据主导地位。　　
3　结束语
　　本文详细分析了目前电子交易中的主流协议SSL协议和SET协议。二者均是非常成熟和实用化的协议，能为电子商务提供有力的安全保障。只是两协议所处的网络层次不同，出发点不同，为电子交易提供的安全级别和手段也不同，在实际应用中可根据需求单独使用一个协议或组合使用两个协议。
　　刘卫宁　博士，副教授。主要研究方向：计算机网络及通信、智能交通系统。
　　宋　伟　硕士，讲师。主要研究方向：电子商务、数据库技术、智能交通系统。
　　作者单位：刘卫宁　宋　伟（重庆大学计算机科学与工程学院　重庆 400044）
参考文献
［1］SET Secure Electronic Transaction Specification ，http://www.setco.org/set―specifications.html
［2］The SSL Protocol, http://www.netscape.com
［3］David Kosiur,著.电子贸易.陈曙辉,译.北京：清华大学出版社, 1998，8
［4］Peter Loshin,著.Extranet设计与实现.付　筱，乔一林,译.北京：电子工业出版社, 1998,2
　　收稿日期:1999-04-14
