|
电子商务是一个机遇和挑战共存的新领域,这种挑战在很大程度上来源于对可使用的安全技术的信赖。在开放的网络(如Internet)上处理交易,如何保证传输数据的安全成为电子商务能否普及的最重要因素之一。
一.电子商务对安全的要求
归纳起来,对电子商务活动安全性的需求以及可使用的网络安全措施,主要包含如下几方面。
1.如何确定通信中的贸易伙伴的真实性?常用的处理技术是身份认证,依赖某个可信赖的机构(认证中心-CA)发放证书,双方交换信息之前通过CA获取对方的证书,并以此识别对方。1997年5月,由Visa、MasterCard等联合推出,并得到IBM、Netscape、Microsoft、Oracle等公司支持的安全电子交易(SET)规范为在Internet上进行安全的电子商务提供了一个开放的标准。电子认证是SET的主要功能。
2.如何保证电子单证的秘密性,防范电子单证的内容被第三方读取?常用的处理技术是数据加密和解密。常见的加密技术包括对称密钥加密技术(加密/解密使用相同的密钥,或者可以从一个密钥推导出另一个密钥,典型的加密算法包括DES、Triple DES、IDEA、RC4和RC5)和非对称密钥加密技术(也称公开密钥加密技术,加密/解密使用不同的密钥,典型的加密算法为RSA、SEEK、PGP和EU等)。单证传输的安全性依赖于使用的算法和密钥的长度。
3.如何保证被传输的业务单证不会丢失,或者发送方可以察觉所发单证的丢失?对于固定且具有频繁贸易往来的伙伴,可以采用单证传输的序列性检验(即为单证分配序列号,或者增加时间戳);也可采用双方约定的方法,即在规定的时间内,通过某种方式进行确认,包括采用特定的确认报文(如:订单确认报文),或者电子邮件确认和电话确认等。
4.如何确定电子单证的内容未被篡改?单证传输完整性主要采用散列技术来防止非法用户对单证的篡改,通过散列算法对被传输的单证进行处理,产生一个依赖于该单证的短小的散列值(通常在100~200比特之间),并将该散列值附接在单证之后传输给接收方,以便接收方采用相同的散列算法对接收的单证进行检验。散列算法保证对于不同的单证产生相同的散列值的概率极小。典型的散列算法为美国国家安全局开发的单向散列算法——SHA-1,该算法产生长度为160比特的散列值以及MD2和MD5等。
5.如何确定电子单证的真实性(即单证来源于期望的发送方)?鉴别单证真实性的主要手段是数字签名技术,其基础是数据加密中的公开密钥加密技术,实用中常结合单证完整性一起考虑,利用发送方的密钥对散列值进行加密。目前可用的数字签名算法很多,如:RSA数字签名、ELGamal数字签名等。
6.如何解决或者仲裁收发双方对交换的单证所产生的争议,包括发方或收方可能的否认或抵赖?通常要求引入认证中心进行管理,由CA发放密钥,传输的单证及其签名的备份发至CA保存,作为可能争议的仲裁依据。
7.如何保证存储信息的安全性?如何规范内部管理?如何使用访问控制权限和日志以及敏感信息加密存储?当使用WWW服务器支持电子商务活动时,应注意数据的备份和恢复,并采用防火墙技术(有些专家建议直接采用物理分割WWW服务器和内部网络的连接)保护内部网络的安全性。
为了达到商务活动的要求,电子商务需要有规定顾客、商家和各金融机构之间的责权关系的政策,给出参与各方的数据存储和通信过程以及数据流动的支付协议。
二.电子支付协议工作流程
电子商务需要有与现实世界中使用的各种支付手段相对应的电子支付工具。目前主要有三种支付工具:卡、电子支票、电子货币(电子现金、电子硬币)。对应于不同的支付工具,可以将目前已有的支付协议分为三类:基于卡的支付协议、基于支票的支付协议以及基于电子货币的支付协议。
下面以广泛应用的SET协议为例来加以分析。
SET要达到的最主要的目标是:
● 信息在Internet上的安全传输,保证网上传输的数据不被黑客窃听;
● 订单信息和个人账号信息的隔离,在将包括消费者账号信息的订单送到商家时,商家只能看到订货信息,而看不到消费者的账户信息;
● 消费者和商家的相互认证,以确定通信双方的身份,一般由第三方机构负责为在线通信双方提供信用担保;
● 要求软件遵循相同的协议和消息格式,使不同厂家开发的软件具有兼容和互操作功能,并且可以运行在不同的硬件和操作系统平台上。
SET规范涉及的范围:
● 加密算法的应用(例如RSA和DES);
● 证书信息和对象格式;
● 购买信息和对象格式;
● 认可信息和对象格式;
● 划账信息和对象格式;
● 对话实体之间消息的传输协议。
SET协议中的角色有:
消费者:在电子商务环境中,消费者和团体购买者通过计算机与商家交流,消费者通过由发卡机构颁发的付款卡(例如信用卡、借记卡)进行结算。在消费者和商家的会话中,SET可以保证消费者的个人账号信息不被泄露。
发卡机构:它是一个金融机构,为每一个建立了账户的顾客颁发付款卡。
商家:提供商品或服务,使用SET,就可以保证消费者个人信息的安全。接受卡支付的商家必须和银行有关系。
银行:在线交易的商家在银行开立账号,并且处理支付卡的认证和支付。
支付网关:是由银行操作的,将Internet上的传输数据转换为金融机构内部数据的设备,或由指派的第三方处理商家支付信息和顾客的支付指令。
SET是针对用卡支付的网上交易而设计的支付规范,对不用卡支付的交易方式,像货到付款方式、邮局汇款方式则与SET无关。另外像网上商店的页面安排、保密数据在购买者计算机上如何保存等,也与SET无关。
具体工作流程说明如下:
1.消费者使用浏览器在商家的Web主页上查看在线商品目录浏览商品。
2.消费者选择要购买的商品。
3.消费者填写订单,包括:项目列表、价格、总价、运费、搬运费、税费。订单可通过电子化方式从商家传过来,或由消费者的电子购物软件(Wallet)建立。有些在线商场可以让消费者与商家协商物品的价格(例如出示自己是老客户的证明,或给出了竞争对手的价格信息)。
4.消费者选择付款方式,此时SET开始介入。
5.消费者发送给商家一个完整的订单及要求付款的指令。在SET中,订单和付款指令由消费者进行数字签名。同时利用双重签名技术保证商家看不到消费者的账号信息。
6.商家接受订单后,向消费者的金融机构请求支付认可。通过网关到银行,再到发卡机构确认,批准交易,然后返回确认信息给商家。
7.商家发送订单确认信息给顾客,顾客端软件可记录交易日志,以备将来查询。
8.商家给顾客装运货物,或完成订购的服务。到此为止,一个购买过程已经结束。商家可以立即请求银行将钱从购物者的账号转移到商家账号,也可以等到某一时间,请求成批划账处理。
9.商家从消费者的金融机构请求支付。在认证操作和支付操作中间一般会有一个时间间隔,例如,在每天的下班前请求银行结一天的账。
前三步与SET无关,从第四步开始SET起作用,一直到第九步,在处理过程中,通信协议、请求信息的格式、数据类型的定义等,SET都有明确的规定。在操作的每一步,消费者、商家、网关都通过CA来验证通信主体的身份,以确保通信的对方不是冒名顶替。
三.支付协议中采用的加密技术
下面主要还是以SET为例,来深入说明加密技术在协议中的体现。
SET将对称密钥的快速、低成本和非对称密钥的有效性完美地结合在一起。以下是SET使用的加密技术。
考虑网上商店的情况,对于成千上万的消费者和商家在Internet上交换信息,要对每一个消费者通过某个渠道发放一个密钥,在现实中是不可取的。而用公开密钥,商家生成一个公共密钥对,任何一个消费者都可用商家公开发布的公钥与商家进行保密通信。
1.数字信封:SET依靠密码系统保证消息的可靠传输,在SET中,使用DES算法产生的对称密钥来加密数据,然后,将此对称密钥用接收者的公钥加密,称为消息的“数字信封”,将其和数据一起送给接收者,接收者先用他的私钥解密数字信封,得到对称密钥,然后使用对称密钥解开数据。
2.数字签名:由于公开密钥和私有密钥之间存在的数学关系,使用其中一个密钥加密的数据只能用另一个密钥解开,SET中使用RSA算法来实现。发送者用自己的私有密钥加密数据传给接收者,接收者用发送者的公钥解开数据后,就可确定消息来自于谁。这就保证了发送者对所发信息不能抵赖。
3.消息摘要:消息摘要是一个惟一对应一个消息或文本的值,由一个单向Hash加密函数对消息作用产生。在SET协议中,原文通过SHA-1算法生成消息的文摘。用发送者的私有密钥加密摘要附在原文后面,一般称为消息的数字签名。 数字签名的接受者可以确信消息确实来自谁,另外,如果消息在途中改变了,则接收者通过对收到消息的新产生的摘要与原摘要比较,就可知道消息是否被改变了。因此消息摘要保证了消息的完整性。
图2说明了加密、签名和消息摘要的过程。
图2 加密、签名和消息摘要的过程
加密的有效性取决于加密算法DES和RSA的强度以及SHA-1算法的有效性。
4.双重签名:为了保证消费者的账号等重要信息对商家隐蔽,SET中采用了双重签名技术,它是SET推出的数字签名的新应用。考虑下面的情况,王先生要买李小姐的一处房产,他发给李小姐一个购买报价单及他对银行的授权书的消息,要求银行:如果李小姐同意按此价格出卖,则将钱划到李小姐的账上。但是王先生不想让银行看到报价,也不想让李小姐看到他的银行账号信息。此外,报价和付款是相连、不可分割的,仅当李小姐同意他的报价,钱才会转移。要达到这个要求,采用双重签名即可实现。
具体的实现方法是:首先生成两条消息的摘要,将两个摘要连接起来,生成一个新的摘要(称为双重签名),然后用签发者的私有密钥加密,为了让接收者验证双重签名,还必须将另外一条消息的摘要一块传过去。这样,任何一个消息的接收者都可以通过以下方法验证消息的真实性:生成消息摘要,将它和另外一个消息摘要连接起来,生成新的摘要,如果它与解密后的双重签名相等,就可以确定消息是真实的。拿上面的例子来说,如果李小姐同意,它发一个消息给银行表示她同意,另外包括报价单的消息摘要,银行能验证王先生授权的真实性,用张先生的授权书生成的摘要和李小姐消息中的报价单的摘要验证双重签名。银行根据双重签名可以判定报价单的真实性,但却看不到报价单的内容。
四、身份认证技术
网上的两个人要谈一笔交易,每一个人都要鉴别对方是否可信。例如,王先生收到了带有李小姐数字签名的一封信,用属于李小姐的公钥解密,他要确定公钥属于李小姐,而不是在网上冒充李小姐的其他人,一种确定公钥属于李小姐的办法就是通过秘密途径接收由李小姐亲自送来的公钥,显然在实际中,这种办法是不现实的。另一个可行的办法就是由一个大家都相信的第三方来验证公钥确实属于李小姐,这样的第三方称为“认证中心”(Certificate Authority)。
1.证书。在做交易时,向对方提交一个由CA签发的包含个人身份的证书,使对方相信自己的身份,即数字证书。在网上的电子交易中,如双方出示了各自的数字凭证,并用它来进行交易操作,那么双方都可不必为对方身份的真伪担心。
数字凭证可用于电子邮件、电子商务、群件、电子基金转移等各种用途。
数字凭证的内部格式是由CCITT X.509国际标准所规定的,它包含了以下几点:
● 凭证拥有者的姓名;
● 凭证拥有者的公共密钥;
● 公共密钥的有效期;
● 颁发数字凭证的单位;
● 数字凭证的序列号。
顾客向CA申请证书时,可提交自己的驾驶执照、身份证或护照,经验证后,颁发证书,证书包含了顾客的名字和他的公钥,以此作为网上证明自己身份的依据。在SET中,最主要的证书是持卡人证书和商家证书。
(1)持卡人证书:它实际上是支付卡的一种电子化的表示。由于它是由金融机构以数字化形式签发的,因此不能随意改变。持卡人证书并不包括账号和终止日期信息,取而代之的是用单向哈希算法根据账号、截止日期生成的一个码,如果知道账号、截止日期、密码值,即可导出这个码值,反之不行。
(2)商家证书:用来表示商店可以用什么卡来结算。它是由金融机构签发的,不能被第三方改变。在SET环境中,一个商家至少应有一对证书,与一个银行打交道,一个商家也可以有多对证书,表示它与多个银行有合作关系,可以接受多种付款方法。
(3)除了持卡人证书和商家证书以外,还有支付网关证书、银行证书、发卡机构证书等。
2.CA。CA是提供身份验证的第三方机构,由一个或多个用户信任的组织实体。例如,持卡人要与商家通信,持卡人从公开媒体上获得了商家的公开密钥,但持卡人无法确定商家不是冒充的(有信誉),于是持卡人请求CA对商家认证,CA对商家进行调查、验证和鉴别后,将包含商家公钥的证书传给持卡人。同样,商家也可对持卡人进行验证。证书一般包含拥有者的标识名称和公钥并且由CA进行过数字签名。
3.证书的树形验证结构。在两方通信时,通过出示由某个CA签发的证书来证明自己的身份,如果对签发证书的CA本身不信任,则可验证CA的身份,依次类推,一直到公认的权威CA处,就可确信证书的有效性。SET证书正是通过信任层次来逐级验证的。每一个证书与数字化签发证书的实体的签名证书关联。沿着信任树一直到一个公认的信任组织,就可确认该证书是有效的。例如,C的证书是由名称为B的CA签发的,而B的证书又是由名称为A的CA签发的,A是权威的机构,通常称为Root CA。验证到了Root CA处,就可确信C的证书是合法的。
在网上购物实现中,持卡人的证书与发卡机构的证书关联,而发卡机构证书通过不同品牌卡的证书连接到Root CA,而Root的公共签名密钥对所有的SET软件都是已知的,可以校验每一个证书。 |
|