【摘要】 本文概要介绍了数据加密的一些经典的方法,并且以此为基础讨论电子商务安全技术和set协议。
【关键词】密钥,数据加密技术,des,rsa,电子商务,set
一、引言
随着当今计算机网络的飞速发展,计算机安全已经成为社会各界关注的焦点。本文讨论了数据加密的两种分类,并选取两种典型的方法加以讲述。然后在此基础上讨论电子商务的一些安全技术和set协议。
二、数据加密
设计一种密度强的密码算法有两种方法,一是研究用于密码分析的所有可能性解法,然后设计一套规则以挫败这些解法中的任何一种算法,于是便能构造一种能够抗拒这些解法的算法,二是构造这样的一些算法,使得要破解它就必须解一些问题,而这些问题被认为是不可解的。本文将要介绍的des算法属于第一种,而rsa则属于第二种。
加密技术按照密钥的公开与否可以分为两种体系,第一是对称密钥体系,这里加密密钥匙和解密密钥是相同的。为了安全性,密钥要定期的改变。对称算法速度快,所以在处理大量数据的时候被广泛使用,其关键是保证密钥的安全。典型的算法有des及其各种变形(如triple des),idea,rc4、rc5以及古典密码(如代换密码和转轮密码)等。在众多的对称密码中影响最大的是des密码。第二是公开密钥体系,分别存在一个公钥和私钥,公钥公开,私钥保密。公钥和私钥具有一一对应的关系,用公钥加密的数据只有用私钥才能解开,其效率低于对称密钥体系,典型的算法有rsa、背包密码,elliptic curve、elgamal算法等等。www.133229.cOm最有影响的公钥加密算法是rsa,足够位数的rsa能够抵抗到目前为止已知的所有密码攻击。下面选取两体系中各最具有代表性最有影响的算法des和rsa进行讨论。
1.rsa算法
rsa算取自于它的创始人的名字:rivest,shamir,adelman,该算法于1978年最早提出,至今仍没有发现严重的安全漏洞。rsa基于数学难题,即具有大素数因子的合数分解,以最新的计算方法也还是计算上不可行的。数论经验表明,这个问题是难解的。
rsa使用两个密钥,一个是公钥(public key,以下用pk表示),一个是私钥(private key,以下用sk表示) 加密时把明文分成块,块的大小可变,但不超过密钥的长度。rsa把明文块转化为与密钥长度相同的密文。其算法如下:
首先选择两个秘密的相异质数p,q,计算n=pq,取r是与(p-1)(q-1)互质的数,这里r便是sk。接着找一数m,使得rm==1mod(p-1)(q-1),根据欧几里得算法(a=bn+c,则a与b的gcd就等于b与c的gcd),这样的m一定可以找到。这里m和n便是公钥pk。在编码时,假设资料为a,将其分成等长数据n块, 每块为a<n。计算b==a^m mod(pq),则b就是编码后的资料。至于解码,取c==b^r mod(pq)。则c=a 。黑客攻击时他想得到r,这样他就必须对n进行因式分解,选择足够大的质数p,q便能阻止他分解因式。
对于p,q的选择,一般来说是足够大的素数, 对于大,并没有一个确定的界限,因为随着计算机技术的发展,破解能力正在逐步增强(根据摩尔定理计算能力18个月就翻一番)。一般来说,安全等级高的,则密钥选取大的,安全等级低些,则选取相对小些的数。rsa的安全性依赖于大数分解,然而值得注意的是,是否等同于大数分解一直未得到理论上的证明,并没有证明要破解rsa就一定得进行大数分解。
2.des
des采用传统的换位和置换的方法进行加密,在56比特密钥的控制下,将64比特明文块变换为64比特密文块,加密过程包括16轮的加密迭代,每轮都采用一种乘积密码方式(代替和移位)。首先是处理原密钥,产生16个48位子密钥k(i),i=1,2…16,接着处理64位数据块,过程可以用下图表示:
其中置换和g 函数的选择都按特定的规则进行,g函数操作是先将r(i)扩充成48位后与k(i+1)异或运算,接着将所得的48位数分成8个6位数,记为b[i],i=1,2…8,选取8个s密箱,将b[i]的第一位和第六位串联成一个数记位m,取出b[i]的第二至五位串联成一个四位数记位n,用s密箱中的第n行第m列的数替换b[i],替换完全部的b[i]后,将b[1]至b[8]串联成一个32位数,再经过换位,至此g函数操作全部结束。将所得结果与l[i]异或后,得到r[i+1]。进行下一轮的加密,直到用完k(16),再经过逆初始置换,全部加密过程结束。而脱密时只需要将密钥顺序倒过来,即第一轮用k(16),第二轮用k(15),以次类推。
于是des加密算法又可以简单地用下式表示:
ek(m) = n(ip)*t16*t15……t1*ip(m)
其中ip为初始置换,n( x)是x的逆,ti,i = 1,2,…16是一系列的变换。ek(m)表示明文m在密钥k的作用下产生的密文
解密算法: n(ek) = n(ip)*t1*t2……t16*ip[ek(m)]
在应用时一般是将des和rsa综合起来使用。des加密效率高,但是要解决密钥的存储问题,因为只要传输就难以保证密钥不被泄露。这时可以采用如下策略:假如a要向b发送密文(des)和密钥sk,可以用b公布的公开密钥对sk进行rsa加密,将其结果和密文一起发送给b,b接受数据首先用自己的私钥对sk进行解密,得到a的密钥sk。再用sk解密密文。这样就解决了密钥的传输问题。因为没有人知道b的私钥,也就没有办法获得sk。
三、安全电子交易
电子商务的关键是要保证商业活动的安全性,象传统方法一样安全可靠。而数据加密技术则构成了电子商务安全的基础,可以说,没有数据加密技术,就没有电子商务的安全。电子商务主要有下面一些安全控制要求:第一,确定贸易伙伴身份的真实性;第二,确保信息的保密性,如怎样保证用户的信用卡号不被窃取,如何保证货源定单等信息不被竞争对手获悉;第三,保证电子定单等信息的真实性(未被冒充)以及在传输过程中未被篡改;第四,保证电子定单等信息的不可否认性,即交易的任何一方在未经对方同意的情况下都不能出尔反尔;第五,在交易双方发生纠纷时能得到合理的仲裁和解决。
由visa和mastcard所开发set(secure electronic transaction)协议便能满足以上的要求,它是在开放的网络环境中卡支付安全协议,获得了诸如microsoft,ibm等许多大公司的支持。
1.set协议中交易的参与方
set支付系统的参与放主要方有:
持卡人,即消费者,他们通过web浏览器或客户端软件购物;
商家,提供在线商店或商品光盘给消费者;
发卡人,它是一金融机构,为持卡人开帐户,并且发放支付卡;
受款银行,它为商家建立帐户,并且处理支付卡的认证和支付事宜
支付网关,是由受款银行或指定的第三方操纵的设备,它处理商家的支付信息,同时也包括来自消费者的支付指令
set支付系统还涉及到认证机构(ca),但是它不参与set的支付流程,它给各参与方颁发证书,各参与方可以通过查看对方的证书,来确定对方是否准确而不是冒充的。要建立安全的电子商务系统,首先必须有一个健全可信的ca。
2.set所采用的安全措施
set采用的安全措施,几乎全部以数据加密技术为基础,可以说没有加密技术,就没有安全电子交易。set协议把对称密钥体制和公开密钥体制完美的结合了起来,充分利用了des效率高速度快,rsa安全性高,密钥管理简便的优点。下面以数据加密技术为基础,讨论set所采用的安全措施。
1数字签名
数字签名采用rsa算法,数据发送方采用自己的私钥加密数据,接受方用发送方的公钥解密,由于私钥和公钥之间的严格对应性,使用其中一个只能用另一个来解,保证了发送方不能抵赖发送过数据,完全模拟了现在生活中的签名。
2数字信封
发送方将消息用des加密,并将des对称密钥用接受方的公钥加密,称为消息的“数字信封”,将数字信封与des加密后的消息一起发给接受方。接受者收到消息后,先用其密钥打开数字信封,得到发送方的des对称密钥,再用此对称密钥去解开数据。只有用接受方的rsa密钥才能够打开此数字信封,确保了接受者的身份。
3双重签名
数字签名在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)是否相同,如果相同,则表示数据完整且未被篡改,如果不同,则丢弃数据。
3.set交易流程
持卡人向商家发初始请求,商家产生初始应答。
持卡人浏览商家的商品,这可以通过使用网上商店或者商家提供的cd-rom来实现。选好商品后要求在线支付,激发支付软件,向商家发送初始请求。初始请求指定了交易环境,包括持卡人所使用的语言,交易id,使用的是何种交易卡等。商家接受初始请求,产生初始应答,对初始应答生成消息摘要,对此消息摘要进行数字签名,将商家证书,网关证书,初始应答, 消息摘要的数字签名等,发送给持卡人。由于初始应答未被加密,所以它不应包含机密信息。
持卡人接受并检查商家的初始应答,如无误,发出购物请求。
持卡人接受初始应答,检查商家证书和网关证书。接着用商家公钥解开消息摘要的数字签名,用hash算法产生初始应答的摘要,将两者比较,如果相同则表示数据在途中未被篡改,否则丢弃。
持卡人发出购物请求,它包含了真正的交易行为。购物请求是协议中最复杂的信息,它包括两个部分:发网商家的定单指令oi和通过商家转发往网关的支付指令pi,通过双重签名将pi和oi结合起来(双重签名见上文说明),生成 sign[h(op)]。持卡人生成对称密钥,对支付指令pi加密,再用网关的公钥对此对称密钥和持卡人帐号加密,形成数字信封。最后将持卡人证书,oi,pi密文,数字信封,sign[h(op)],pi和oi各自的消息摘要等发给商家,其中有消息是通过商家转发给支付网关的。
商家接受并检查持卡人的购物请求,如无误,发出支付请求。
商家接受持卡人的购物请求,认证持卡人的证书。接着验证双重签名,看数据在传输过程中是否被篡改。如数据完整,则处理定单信息,产生支付请求。
将支付请求用hash算法生成摘要,并签名,网关收到后用商家公钥解密,并确认支付请求是此商家所发在且在途中未被篡改。生成对称密钥对支付请求加密,并用网关公钥加密形成数字信封。最后将商家证书,支付请求密文,商家数字签名,数字信封和持卡人通过商家转发的:sign[h(op)],oi摘要,pi密文,持卡人数字信封,持卡人证书等发往支付网关。
支付网关接受并检查支付请求,如无误,发扣款请求。
支付网关分别检查确认商家发来的数据和持卡人发来的数据。网关首先认证商家证书,然后用私钥打开商家数字信封,获取商家对称密钥, 解开支付请求密文。用hash算法作用于支付请求,形成摘要,与商家发来的支付请求摘要(解开数字签名所得)相比较,如果相同则表示数据完整,否则丢弃数据。
网关检查持卡人证书,然后用私钥打开持卡人数字信封,得到他的帐号和对称密钥。用此对称密钥解开pi密文,得到pi,接着验证双重签名,生成pi的摘要,与oi摘要相连接,再次生成摘要,其结果与h(op)(解双重签名所得)相比较,如果相同则数据完整,如果不同则丢弃。网关将信息发送往银行。
银行向网关发送扣款应答,网关向商家发送支付应答。
在支付网关和银行之间是通过金融专用网向连,其间的业务,set并不作规定。
网关在接受银行的扣款应答后,生成支付应答,同样产生摘要,对其进行数字签名,生成对称密钥,对支付应答加密,并且将对称密钥装入数字信封。将网关证书,数字签名,数字信封,支付应答密文一起发往商家。
商家接受并检查网关的支付应答,如无误,向持卡人发送购物应答。
商家认证网关的证书,用私钥打开数字信封,得到网关对称密钥,用此密钥解开支付应答,产生摘要。用网关公钥解开其数字签名,得到支付原始支付应答摘要,并与新产生的摘要比较,如果相同,则数据完整,如果不同则丢弃。
商家产生购物应答,对购物应答生成摘要,并签名,将商家证书,购物应答,数字签名一起发往持卡人。如果交易成功,则发货。
持卡人接受购物应答,验证商家证书。对购去应答产生摘要,用商家公钥解开数字签名,得到原始摘要,将之与新产生的摘要比较,相同则表示数据完整,不同则丢弃。至此,交易流程结束。
以上简要地讨论了set协议的主要的交易流程及其中的数据流向的问题。若要深刻的了解出错处理以及各种消息的格式,可以参照参考数目[3]。
四.结束语
本文了讨论了数据加密技术,介绍了当今使用最为广泛的des和rsa算法。des效率高,但是密钥保存难,rsa安全性高,但是效率低,在实际应用中经常把两者结合起来使用。保证安全性是电子商务的核心环节,set协议充分地予以考虑,并在交易流程中充分地体现了这一点。它使用的主要技术有,数字签名,数字信封,双重签名等,而这些无不以数据加密技术为基础。
参考资料 :
卢起骏等译,计算机网络保密系统设计与实现指南,科学技术文献出版社重庆分社,1987
set secure electronic transaction specification :business description, may,31,1997
set secure electronic transaction specification :programmer’s guide, may,31,1997
金海连等,网上交易流程,市场与电脑,1999年3月