SET流程及相关加密技术

电子商务是一个机遇和挑战共存的新领域,这种挑战在很大程度上来源于对可使用的安全技术的信赖。在开放的网络(如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无关。

SET协议的工作原理如图1所示。

 

 


图1 SET协议的工作原理

具体工作流程说明如下:

1.消费者使用浏览器在商家的Web主页上查看在线商品目录浏览商品。

2.消费者选择要购买的商品。

3.消费者填写订单,包括:项目列表、价格、总价、运费、搬运费、税费。订单可通过电子化方式从商家传过来,或由消费者的电子购物软件(Wallet)建立。有些在线商场可以让消费者与商家协商物品的价格(例如出示自己是老客户的证明,或给出了竞争对手的价格信息)。

4.消费者选择付款方式,此时SET开始介入。

5.消费者发送给商家一个完整的订单及要求付款的指令。在SET中,订单和付款指令由消费者进行数字签名。同时利用双重签名技术保证商家看不到消费者的账号信息。

6.商家接受订单后,向消费者的金融机构请求支付认可。通过网关到银行,再到发卡机构确认,批准交易,然后返回确认信息给商家。

7.商家发送订单确认信息给顾客,顾客端软件可记录交易日志,以备将来查询。

8.商家给顾客装运货物,或完成订购的服务。到此为止,一个购买过程已经结束。商家可以立即请求银行将钱从购物者的账号转移到商家账号,也可以等到某一时间,请求成批划账处理。

9.商家从消费者的金融机构请求支付。在认证操作和支付操作中间一般会有一个时间间隔,例如,在每天的下班前请求银行结一天的账。

前三步与SET无关,从第四步开始SET起作用,一直到第九步,在处理过程中,通信协议、请求信息的格式、数据类型的定义等,SET都有明确的规定。在操作的每一步,消费者、商家、网关都通过CA来验证通信主体的身份,以确保通信的对方不是冒名顶替。

SET交易流程

1. 持卡人向商家发初始请求,商家产生初始应答。

持卡人浏览商家的商品,这可以通过使用网上商店或者商家提供的CD-ROM来实现。选好商品后要求在线支付,激发支付软件,向商家发送初始请求。初始请求指定了交易环境,包括持卡人所使用的语言,交易ID,使用的是何种交易卡等。商家接受初始请求,产生初始应答,对初始应答生成消息摘要,对此消息摘要进行数字签名,将商家证书,网关证书,初始应答,消息摘要的数字签名等,发送给持卡人。由于初始应答未被加密,所以它不应包含机密信息。

2. 持卡人接受并检查商家的初始应答,如无误,发出购物请求。

持卡人接受初始应答,检查商家证书和网关证书。接着用商家公钥解开消息摘要的数字签名,用HASH算法产生初始应答的摘要,将两者比较,如果相同则表示数据在途中未被篡改,否则丢弃。

持卡人发出购物请求,它包含了真正的交易行为。购物请求是协议中最复杂的信息,它包括两个部分:发网商家的定单指令OI和通过商家转发往网关的支付指令PI,通过双重签名将PI和OI结合起来(双重签名见上文说明),生成 sign[H(OP)]。持卡人生成对称密钥,对支付指令PI加密,再用网关的公钥对此对称密钥和持卡人帐号加密,形成数字信封。最后将持卡人证书,OI,PI密文,数字信封,sign[H(OP)],PI和OI各自的消息摘要等发给商家,其中有消息是通过商家转发给支付网关的。

3. 商家接受并检查持卡人的购物请求,如无误,发出支付请求。

商家接受持卡人的购物请求,认证持卡人的证书。接着验证双重签名,看数据在传输过程中是否被篡改。如数据完整,则处理定单信息,产生支付请求。

将支付请求用HASH算法生成摘要,并签名,网关收到后用商家公钥解密,并确认支付请求是此商家所发在且在途中未被篡改。生成对称密钥对支付请求加密,并用网关公钥加密形成数字信封。最后将商家证书,支付请求密文,商家数字签名,数字信封和持卡人通过商家转发的:sign[H(OP)],OI摘要,PI密文,持卡人数字信封,持卡人证书等发往支付网关。

4. 支付网关接受并检查支付请求,如无误,发扣款请求。

支付网关分别检查确认商家发来的数据和持卡人发来的数据。网关首先认证商家证书,然后用私钥打开商家数字信封,获取商家对称密钥,解开支付请求密文。用HASH算法作用于支付请求,形成摘要,与商家发来的支付请求摘要(解开数字签名所得)相比较,如果相同则表示数据完整,否则丢弃数据。

网关检查持卡人证书,然后用私钥打开持卡人数字信封,得到他的帐号和对称密钥。用此对称密钥解开PI密文,得到PI,接着验证双重签名,生成PI的摘要,与OI摘要相连接,再次生成摘要,其结果与H(OP)(解双重签名所得)相比较,如果相同则数据完整,如果不同则丢弃。网关将信息发送往银行。

5. 银行向网关发送扣款应答,网关向商家发送支付应答。

在支付网关和银行之间是通过金融专用网向连,其间的业务,SET并不作规定。

网关在接受银行的扣款应答后,生成支付应答,同样产生摘要,对其进行数字签名,生成对称密钥,对支付应答加密,并且将对称密钥装入数字信封。将网关证书,数字签名,数字信封,支付应答密文一起发往商家。

6. 商家接受并检查网关的支付应答,如无误,向持卡人发送购物应答。

 

商家认证网关的证书,用私钥打开数字信封,得到网关对称密钥,用此密钥解开支付应答,产生摘要。用网关公钥解开其数字签名,得到支付原始支付应答摘要,并与新产生的摘要比较,如果相同,则数据完整,如果不同则丢弃。

商家产生购物应答,对购物应答生成摘要,并签名,将商家证书,购物应答,数字签名一起发往持卡人。如果交易成功,则发货。

持卡人接受购物应答,验证商家证书。对购去应答产生摘要,用商家公钥解开数字签名,得到原始摘要,将之与新产生的摘要比较,相同则表示数据完整,不同则丢弃。至此,交易流程结束。

三.支付协议中采用的加密技术

下面主要还是以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协议采用双重签名来解决这一问题。

假设持卡人C(customer)从商家M(mechant)购买商品,他不希望商家看到他的信用卡信息,也不希望银行B(bank)看到他有关商品的信息,于是他采用双重签名,流程如图并说明如下:

 

首先C产生发往M的订购信息OI和发往B的支付指令PI,并分别产生OI,PI的摘要H(OI),H(PI)。其中摘要由一个单向HASH函数作用于消息产生,它是一个唯一对应此消息的值,其它任何消息用HASH函数作用都不能产生此值,因此用消息摘要可以检查消息在中途是否被篡改。连接H(OI)和H(PI)得到OP,再生成OP的摘要H(OP),用C的RSA私钥签名H(OP),得sign[H(OP)],称为双重签名。C将消息{OI,H(PI),sign[H(OP)]}发给M,将{PI,H(OI),sign[H(OP)]}发给B。在验证双重签名时,接受者分别创建消息摘要,M生成H(OI),B生成H(PI),再分别将H(OI)/H(PI)与另一接受到的摘要H(PI)/H(OI)连接,生成OP及其摘要H(OP)’,接受者M/B用C的RSA公钥解开sign[H(OP)],得到H(OP),比较H(OP)’与H(OP)是否相同,如果相同,则表示数据完整且未被篡改,如果不同,则丢弃数据。

 

四、身份认证技术

 

网上的两个人要谈一笔交易,每一个人都要鉴别对方是否可信。例如,王先生收到了带有李小姐数字签名的一封信,用属于李小姐的公钥解密,他要确定公钥属于李小姐,而不是在网上冒充李小姐的其他人,一种确定公钥属于李小姐的办法就是通过秘密途径接收由李小姐亲自送来的公钥,显然在实际中,这种办法是不现实的。另一个可行的办法就是由一个大家都相信的第三方来验证公钥确实属于李小姐,这样的第三方称为“认证中心”(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软件都是已知的,可以校验每一个证书。

阅读更多

更多精彩内容