摘 要 本文总结了电子商务对安全性的要求,介绍了构成一个安全的电子商务系统的框架。介绍了安全通信协议SSL和SET,分析了其优缺点。最后,给出一个例子来指导如何建立一个基于SSL的安全网站。 关键词 电子商务 PKI SSL TLS
一、电子商务安全基础
1、算法的介绍
常用的加密方式分为对称密钥加密和非对称密钥加密两种,也称为秘密密钥加密和公开密钥加密。对称密钥加密和解密时使用的密钥是同一个密钥,其优点是加密速度快,缺点是不能作为身份验证,密钥发放困难。常见的对称加密算法有RC2,RC4,DES,3DES,IDEA,SDBI等。 公开密钥加密和解密使用的密钥是不同的密钥,分别称为公钥和私钥,公钥可以公开,私钥则必须保密只能归密钥所有者拥有。其缺点是对大容量的信息加密速度慢,优点是可以作为身份认证,而且密钥发送方式比较简单安全。常见的公开密钥加密算法有RSA,DSA,ECA等。 另外在密码学中经常使用到的是单向散列函数(Hash函数)。Hash函数用于对要传输的数据作运算生成信息摘要,它并不是一种加密机制,但却能产生信息的数字“指纹”,它的目的是为了确保数据没有被修改或变化,保证信息的完整性不被破坏。 Hash函数有三个主要特点: (1)它能处理任意大小的信息,并将其按信息摘要(Message Digest)方法生成固定大小的数据块,对同一个源数据反复执行Hash函数将总是得到同样的结果。 (2)它是不可预见的。产生的数据块的大小与原始信息看起来没有任何明显关系,原始信息的一个微小变化都会对小数据块产生很大的影响。 (3)它是完全不可逆的,没有办法通过生成的数据块直接恢复源数据。 常见的Hash算法有MD2、MD5和SHA1等。2、电子商务的安全性要求
电子商务安全要求包括四个方面: (1)数据传输的安全性 对数据传输的安全性需求即是保证在公网上传送的数据不被第三方窃取。对数据的安全性保护是通过采用数据加密(包括对称密钥加密和非对称密钥加密)来实现的,数字信封技术是结合对称密钥加密和非对称密钥加密技术实现的保证数据安全性的技术。 (2)数据的完整性 对数据的完整性需求是指数据在传输过程中不被篡改。数据的完整性是通过采用安全的Hash函数和数字签名技术来实现的。双重数字签名可以用于保证多方通信时数据的完整性。 (3)身份验证 参与安全通信的双方在进行安全通信前,必须互相鉴别对方的身份。身份认证是采用口令技术、公开密钥技术或数字签名技术和数字证书技术来实现的。 (4)交易的不可抵赖 网上交易的各方在进行数据传输时,必须带有自身特有的、无法被别人复制的信息,以保证交易发生纠纷时有所对证。这是通过数字签名技术和数字证书技术来实现的。 基于对称密钥加密、公开密钥加密以及安全的Hash函数等基本安全技术和算法,电子商务采用以下几种安全技术来解决电子商务应用中遇到的各种问题: (1)采用数字信封技术保证数据的传输安全; (2)采用数字签名和双重数字签名技术进行身份认证并同时保证数据的完整性、完成交易防抵赖; (3)采用口令字技术或公开密钥技术进行身份认证。 (4)结合数字信封和数字签名就可以满足电子商务安全中对数据的安全性、数据的完整性和交易的不可抵赖性的要求,同时可以使用数字证书来进行交易双方身份的认证。3、PKI体系结构
提起电子商务的安全性,我们就不得不提到PKI(Public Key Infrastructure),即公钥基础结构。PKI利用公钥加密技术为网上电子商务的开展提供了一套安全基础平台,用户利用PKI平台提供的安全服务进行安全通信。 PKI(公开密钥体系)一词被解释成为是一种框架体系,通过它,在不安全的信道上的通信的用户可实现信息数据的安全交换,满足商务对保密性,完整性,身份认证及不可否认性的安全需求,其构成主要包括硬件、软件、人员、指导原则及方法。它的好处在于:第一,网上交易双方可通过值得信赖的第三方机构完成交易,由于金融机构的特殊身份常使其充当第三方认证机构的角色,因此可将交易双方的风险降至最低;其次,PKI的应用发展已从区域型逐步发展到全球性,如著名的Identrust 组织建立了一套支持全球数字证书发放的体系,包括不同证书机构之间合作的程序以及对争议、索赔等问题的处理等,使具有法律约束力的电子商务得以在全球范围内展开。 一个典型的PKI体系结构如图1:
4、安全通信的应用协议

(1)SSL协议
SSL(Secure Socket Layer即安全套接层)协议是Netscape Communication公司推出在网络传输层之上提供的一种基于非对称密钥和对称密钥技术的用于浏览器和Web服务器之间的安全连接技术。它是国际上最早应用于电子商务的一种由消费者和商家双方参加的信用卡/借记卡支付协议。 SSL协议支持了电子商务关于数据的安全性、完整性和身份认证的要求,但是它没有保证不可抵赖性的要求。 客户端和服务端进行身份认证时,SSL协议支持三种方式的认证:双方的相互认证,只认证服务端的认证和双方都不认证。身份认证是通过验证数字证书的合法性来保证的,因为我们在上文提到,数字证书类似一个实体的身份证。 在认证通过之后,客户端和服务端产生一套完全一样的临时对称密钥,通过对数据进行对称加密操作来保证数据的安全性,通过MAC码的计算来保证数据的完整性。 但是我们可以看出,SSL协议对数据的安全性保护是建立在对称密钥算法基础上的,所以它不能够提供不可抵赖性的保证。这样,我们就没有办法区别一条消息究竟是谁创建的,因为双方共享着一套对称密钥。 而且,在SSL协议中,交易的参与者只有两方:商家和客户,它没有涉及到支付方。因此在一个要求严格的电子商务应用中,SSL协议是不太适合的。(2)SET协议
SET(Secure Electronic Transaction)安全电子交易协议是由美国Visa和MasterCard两大信用卡组织提出的应用于 Internet上的以信用卡为基础的电子支付系统协议。 它采用公钥密码体制和X.509数字证书标准,主要应用于B2C(Business To Customer)模式中保障支付信息的安全性。SET协议本身比较复杂,设计比较严格,安全性高,它能保证信息传输的机密性、真实性、完整性和不可否认性。SET协议是PKI框架下的一个典型实现,同时也在不断升级和完善,如SET 2.0将支持借记卡电子交易。 由于SET提供了消费者、商家和银行之间的认证,确保了交易数据的安全性、完整可靠性和交易的不可否认性,特别是保证不将消费者银行卡号暴露给商家等优点,因此它成为了目前公认的信用卡/借记卡的网上交易的国际安全标准。 但是,由于SET协议要求有银行系统的参与,对于普通的电子商务应用来说,实现基于SET协议的安全应用还是十分困难的。而支持SSL协议的资源非常丰富,在此基础上我们可以比较简单的构建一个基于SSL协议的安全网站。同时,SSL协议对于普通的安全应用也提供了很好的支持。所以,构建一个基于SSL的网站来开展安全应用也是一个相当不错的选择。二、如何构建一个基于SSL的网站
首先需要安装Web服务器程序,可以选择微软的IIS或者Tomcat。 接着,需要下载OpenSSL应用程序,并且在VC环境下编译通过。 OpenSSL是开放源代码的应用程序,它不仅实现了SSL协议,而且实现了各种加密算法、证书的生成等功能。我们可以在Dos窗口下,使用命令行的方式利用其提供的功能来实现一个CA,这样我们就可以来生成客户证书。 这时,准备工作就完成了,接下来我们开始建立一个基于SSL的网站。我们的网站建立成功后,用户访问网站的方式将发生改变,不是通过Http,而是通过Https,s表示安全的意思。1、建立CA中心
使用OpenSSL,我们可以自己承担其CA中心的职责:生成数字证书。 首先,在C盘建立一个新的目录CARoot。其目录结构如下图:certs目录:用来存放经过CA签发的数字证书 crl目录:用来存放证书撤消列表 private:用来存放数字证书对应的私钥 newcerts:用来存放新生成的数字证书(1)编辑用于生成RSA密钥对的随机数文件 C:\CARoot>edit private\.rnd (2)生成CA根证书的RSA密钥文件 C:\CARoot>genrsa –out private\ca.key –rand private\.rnd 2048 如果想为生成的私钥文件加上密码保护,可以使用下面的命令 C:\CARoot>genrsa –out private\ca.key –rand private\.rnd –des3 2048 (3)生成CA的根证书 C:\CARoot>req –new –x509 –days 3650 –key private\ca.key –out private\ca.crt – config openssl. 这样,CA的根证书就生成了,以后所有的证书都要经过根证书的签名才有效。接下去,我们就要为网站申请一个服务器证书,为用户申请客户证书。
