图2 电子商务安全体系结构
一个完整的电子商务的
安全体系结构可以由图2来表示。电子商务
安全体系由网络基础结构层、PKI体系结构层、
安全协议层、应用系统层组成。其中,下层是上层的基础,为上层提供技术支持;上层是下层的扩展与递进。各层次之间相互依赖、相互关联构成统一整体。通过不同的
安全控制技术,实现各层的
安全策略,保证电子商务系统的
安全。
网络基础结构层包括多厂商的网络服务及网络系统,用它们构成一种
安全的、面向交易以及面向关系的通信网络联结。网络服务包括策略管理软件、地址管理软件、
安全和网络管理软件。网络系统部件包括局域网、交换机、
安全的虚拟专用网、负载平衡、缓冲、网关、数据与电话服务器、广域网接入设备、路由器、应用服务器以及数据存储服务器。
在PKI的基础之上,是
安全协议层,为各种
安全的通信应用提供了基础。常见的
安全协议包括SSL协议(SecureSocketLayerProtocol)或者TLS(TransportLayerSecureProtocol)协议,以及专门用于电子交易的SET协议(SecureElectronicTransactionProtocol)。
SSL(SecureSocketLayer即
安全套接层)协议是NetscapeCommunication公司推出在网络传输层之上提供的一种基于非对称密钥和对称密钥技术的用于浏览器和Web服务器之间的
安全连接技术。它是国际上最早应用于电子商务的一种由消费者和商家双方参加的信用卡/借记卡支付协议。
SSL协议支持了电子商务关于数据的
安全性、完整性和身份认证的要求,但是它没有保证不可抵赖性的要求。
客户端和服务端进行身份认证时,SSL协议支持三种方式的认证:双方的相互认证,只认证服务端的认证和双方都不认证。身份认证是通过验证数字证书的合法性来保证的,因为我们在上文提到,数字证书类似一个实体的身份证。
在认证通过之后,客户端和服务端产生一套完全一样的临时对称密钥,通过对数据进行对称加密操作来保证数据的
安全性,通过MAC码的计算来保证数据的完整性。
但是我们可以看出,SSL协议对数据的
安全性保护是建立在对称密钥算法基础上的,所以它不能够提供不可抵赖性的保证。这样,我们就没有办法区别一条消息究竟是谁创建的,因为双方共享着一套对称密钥。
而且,在SSL协议中,交易的参与者只有两方:商家和客户,它没有涉及到支付方。因此在一个要求严格的电子商务应用中,SSL协议是不太适合的。
SET(SecureElectronicTransaction)
安全电子交易协议是由美国Visa和MasterCard两大信用卡组织提出的应用于Internet上的以信用卡为基础的电子支付系统协议。
它采用公钥密码体制和X.509数字证书标准,主要应用于B2C(BusinessToCustomer)模式中保障支付信息的
安全性。SET协议本身比较复杂,设计比较严格,
安全性高,它能保证信息传输的机密性、真实性、完整性和不可否认性。SET协议是PKI框架下的一个典型实现,同时也在不断升级和完善,如SET2.0将支持借记卡电子交易。
由于SET提供了消费者、商家和银行之间的认证,确保了交易数据的
安全性、完整可靠性和交易的不可否认性,特别是保证不将消费者银行卡号暴露给商家等优点,因此它成为了目前公认的信用卡/借记卡的网上交易的国际
安全标准。
但是,由于SET协议要求有银行系统的参与,对于普通的电子商务应用来说,实现基于SET协议的
安全应用还是十分困难的。而支持SSL协议的资源非常丰富,在此基础上我们可以比较简单的构建一个基于SSL协议的
安全网站。同时,SSL协议对于普通的
安全应用也提供了很好的支持。所以,构建一个基于SSL的网站来开展
安全应用也是一个相当不错的选择。
首先需要安装Web服务器程序,可以选择微软的IIS或者Tomcat。
接着,需要下载OpenSSL应用程序,并且在VC环境下编译通过。
OpenSSL是开放源代码的应用程序,它不仅实现了SSL协议,而且实现了各种加密算法、证书的生成等功能。我们可以在Dos窗口下,使用命令行的方式利用其提供的功能来实现一个CA,这样我们就可以来生成客户证书。
这时,准备工作就完成了,接下来我们开始建立一个基于SSL的网站。我们的网站建立成功后,用户访问网站的方式将发生改变,不是通过Http,而是通过Https,s表示
安全的意思。
使用OpenSSL,我们可以自己承担其CA中心的职责:生成数字证书。
首先,在C盘建立一个新的目录CARoot。其目录结构如下图:
certs目录:用来存放经过CA签发的数字证书
crl目录:用来存放证书撤消列表
private:用来存放数字证书对应的私钥
newcerts:用来存放新生成的数字证书
(1)编辑用于生成RSA密钥对的随机数文件
C:\CARoot>editprivate\.rnd
(2)生成CA根证书的RSA密钥文件
C:\CARoot>genrsa–outprivate\ca.key–randprivate\.rnd2048
如果想为生成的私钥文件加上密码保护,可以使用下面的命令
C:\CARoot>genrsa–outprivate\ca.key–randprivate\.rnd–des32048
(3)生成CA的根证书
C:\CARoot>req–new–x509–days3650–keyprivate\ca.key–outprivate\ca.crt–
configopenssl.
这样,CA的根证书就生成了,以后所有的证书都要经过根证书的签名才有效。接下去,我们就要为网站申请一个服务器证书,为用户申请客户证书。
(1)用IISWEBSERVER产生一个证书申请certreq.txt
打开IISWEBSERVER——站点属性——目录
安全性——服务器证书——创建一个新证书——现在准备请求,但稍候发送。
将生成的证书申请文件存放到CARoot目录中。
(2)生成经过CA根证书签名的服务器证书
C:\CARoot>ca–incertreq.txt–keyprivate\ca.key–outnewcerts\ServerCert.cer–policypolicy_anything–configopenssl.cnf
(1)生成一个新的RSA密钥对
C:\CARoot>genrsa–outClientCert001.key–randprivate\.rnd2048
(2)生成客户证书
C:\CARoot>req-new-x509-days3650-keyClientCert001.key -outClientCert001.crt-configopenssl.cnf。
(3)使用CA根证书来签名客户证书
C:\CARoot>ca–ss_certClientCert001.crt–keyprivate\ca.key–configopenssl.cnf–policypolicy_anything–outsignedClientCert001.cer。
生成的客户证书为ClientCert001.crt,通过这种方式,我们可以给多个用户颁发个人证书。
1、安装信任的根证书
根证书为ca.cer,在客户端的IE中使用“工具”——“Internet选项”——“内容”——“证书”——“导入”,把我们生成的CA根证书导入,使其成为用户信任的CA。
2、导入服务器证书
打开IISWEBSERVER——站点属性——目录
安全性——服务器证书——处理挂起并安装证书——选择生成的服务器证书ServerCert.cer。
3、安装客户证书
将客户的证书转变为pkcs12格式的证书,以便导入到IE中。
C:\CARoot>pkcs12-export-clcerts-inClientCert001.crt-inkeyClientCert001.key-outclient001.p12
把client001.p12导入到客户端的IE中作为个人证书。
这样,所有试图访问我们的网站的用户都必须拥有我们签发的客户证书,这就杜绝了非法用户的使用。基于SSL,我们可以开展各种各样的
安全应用,比如信息发布系统、企业内部网、电子政务等。
【参考文献】
1 杨义先,钮心忻,杨放春,论电子商务的
安全性。世界科技研究与发展,1999年03期。
2BruceSchneier著,吴世忠等译,应用密码学――协议、算法与C源程序,机械工业出版社。
3SETSpecifications.May1997.http://www.setco.org
4SSLSpecificationsversion3.0.April1996.see:http://www.netscape.com/eng/ssl3/
5TLSSpecificationsversion1.0.January1999.see:RFC2246.
6OpenSSLforWindowsDeveloper’sGuide.See:http://www.trizen.comorhttp://www.visualSSL.com.