投递文章投递文章 投稿指南投稿指南 RSS订阅RSS订阅

SET™的安全性分析(论文)

来源:iT堂整理 发布时间:2007-12-15 收藏 投稿 字体:【

Secure Electronic Transaction,简写为SET™,是Visa International、MasterCard International两大信用卡公司与IBM、Microsoft、Netscape、GTE、VeriSign、SAIC、Terisa等厂商合作开发的。1997年5月底,发布了SET Specification Version 1.0,它是面向B-C模式的,完全针对信用卡来制定,涵盖了信用卡在电子商务交易中的交易协定、信息保密、资料完整等各个方面。
在各方殷切期盼如何健全网络购物的安全环境时,SET标准的产生满足了大家的要求。自SET 1.0发布以来,尤其是去年下半年到今年的时间里,Microsoft、IBM、Brokat、CyberCash等软件公司相继发表了一些相应软件,如Microsoft Wallet 3.0、IBM Payment Registry 1.2、CyberCash CashRegister 4.0等,并通过了由Visa和MasterCard组成的SET检测中心SETCo的测试。
在国际上,已经有很多的银行建立了支付网关,接受SET方式的支付;在国内,中国银行已经采用SET方式,建立了认证中心和支付网关,现在在北京和上海,用户都可以使用长城电子借记卡进行人民币支付,同时,中国银行还利用香港中银信用卡(国际)有限公司的支付网关接受外币业务。
SET中,主要是通过使用密码学和数字证书的方式来保证信息的机密性和安全性,在下面,我将根据我的理解尽力对SET进行分析。
一、概述
SET™是一个基于可信的第三方认证中心的方案,它要实现的主要目标是:
(1) 保障付款安全:确保付款资料之隐密性及完整性,提供持卡人、特约商店、收单银行之认证,并定义安全服务所需之演算法及相关协定。
(2) 确定应用之互通性:提供一个开放式的标准,明确定义细节,以确保不同厂商开发之应用程序可共同运作,促成软件互通;并在现存各种标准下建构该协定,允许在任何软硬件平台上的执行,使标准达到相容性与接受性的目标。
(3) 达到全球市场的接受性:在容易使用与对特约商店、持卡人影响最小的前提下,达到全球普遍性。允许在目前使用者的应用软件下,嵌入付款协定的执行,对收单银行与特约商店、持卡人与发卡银行间的关系,以及信用卡组织的基础构架改变最少。
SET最主要的使用对象在消费者与商店,商店与收单银行(付款银行)之间。其运作方式简述如下:
(1) 在消费者与特约商店之间,由持卡人在消费前先确认商店的合法性,由商店出示它的证书。
(2) 持卡人确认后即可下订单,其订单经消费者以数字签名(Digital signature)的方式确认,而消费者所提供的信用卡资料则另由收单银行以公钥予以加密。这里,特约商店会收到两个加密过的资料,其中一个是订单资料,另一个是关于支付的资料,特约商店可以解密前者,但无法解密后者,避免特约商店搜集或滥用持卡人消费资料。
(3) 特约商店将客户的资料连同自己的SET证书给收单银行,向银行请求交易授权及授权回复。
(4) 收单银行会同时检视两个证书来决定是否为合法的持卡人及特约商店。所以收单银行会有支付系统网关(payment gateway)来解密,核对资料无误后,再连线到传统的网络(比如Visa或MasterCard)做交易授权及清算。
(5) 授权确认后由特约商店向消费者再行确认订单,交易完成。
(6) 至于特约商店与收单银行间,则基于该授权为请款之要求并由银行付款。
图1是这个过程的图示化表示。
 
图1  SET的简易流程示意图
可以看到,在这个过程中,CA扮演了系统的很重要的角色。SET标准着重的是其交易安全及隐密性。其中,证书(digital certificate)为其核心,它提供了简单的方法来确保进行电子交易的人们能够互相信任。信用卡组织提供数字证书给发卡银行,然后发卡行再提供证书给持卡人;同时,信用卡组织也提供数字证书给收单银行,然后收单银行再将证书发给特约商店。在进行交易的时候,持卡人和特约商店两边符合SET的规格软件,会在资料交换前分别确认双方的身分,也就是检查由授权的第三者所发给的证书。在SET协定中,有下列证书:
(1) 持卡人证书(Cardholder ceritficates)
(2) 特约商店证书(Merchant certificates)
(3) 支付网关证书(Payment gateway certificates)
(4) 收单银行证书(Acquirer ceritcifates)
(5) 发卡行证书(Issuer certificates)
持卡人的证书必须由发卡行来颁发。在第一次上网购物之前,持卡人必须先在通过一个客户端程序输入基本资料给发卡银行,包括姓名、卡号、卡片有效日期、邮寄地址等,可以确认持卡人的身份资料。这些资料使用银行的公钥加密,安全地送至银行。发卡银行确认此帐户正确无误后,便会发给持卡人一张具有电子安全数字签章的证书。持卡人只要将证书储存在电脑上,即可电子购物。同样地,商店也必须取得收单银行的电子证书才可以接收SET方式的支付。商店要将它们的基本资料给收单银行,收单银行在确认无误后,就会发出一张数字证书,允许它们从事电子商业行为。
二、SET的安全性分析
一个系统的安全性不仅与算法有关,还涉及到很多方面:口令或私匙的泄密、公匙被篡改、你删除的文件被人恢复、病毒和特洛伊木马、物理安全受到侵犯等等,而这些方面的问题是无法形式化地描述和分析的,只能尽力去避免。下面的分析主要是从算法的角度进行。
虽然SET涉及到了很多方的通信,但是,在其中任意两方通信时,使用的方法与PGP是类似的。基本步骤如图2:
 
图2  SET中的两方通信的基本步骤
SET中使用的是DES与RSA混合的方法,上图的过程描述如下:
(1) Alice(发送方)先用SHA-1产生一个消息的文摘。
(2) Alice然后用RSA(自己的私有密钥)方法对其加密,生成数字签名。
(3) 随机生成一个密钥,对消息、数字签名和Alice自己的证书(其中包含了Alice的公钥)用DES加密,得到加密后的消息。
(4) 用Bob(接收方)的公钥对那个随机生成的密钥加密(RSA),这个结果被称为数字信封。
(5) 传送加密后的消息和数字信封。
(6) Bob收到后,先用自己的私有密钥解开数字信封,得到加密消息用的密钥。
(7) 用得到的密钥解开消息。这其中有Alice的公有密钥、数字签名和原文。
(8) 用Alice的公有密钥解开数字签名,得到消息的文摘。
(9) 用在(7)中得到的原文通过SHA-1算法生成消息的文摘。
(10) 比较(8)和(9)中得到的文摘,如果不同,则证明消息在传送过程中被篡改了。
在这其中,DES、RSA、SHA-1和第三步中随机数的生成方法是SET安全性的关键。下面将逐个分析。
1、DES的安全性
在SET 1.0中,使用标准CBC模式的DES算法,56位密钥,这种方法的加密强度不是很大,根据1997年的数据,可在59天内攻破。SET中,当银行与与持卡人之间的信息交换要通过商店时,还要使用CDMF方法来对信息加密,这个方法的加密强度相当于一个40位的DES算法。这个加密强度可以在78秒内用强力攻击的方式攻破。
因此,为了满足不同用户的不同要求,在SET 2.0中,采用了与算法无关的设计。现在在计划是Triple-DES,将来可能采用AES。
Triple-DES的强度相当于112位的DES,这在当前的技术条件下还是可以满足多数情况下的安全性要求的。
2、RSA的安全性
在SET中,从Root CA发出的信息是用2048位的RSA算法加密的,其它的信息交换都是用1024位的RSA算法加密的。
RSA的保密性基于一个数学假设:对一个很大的合数进行质因数分解是不可能的。RSA用到的是两个非常大的质数的乘积,用目前的计算机水平是无法分解的。但是这说明不了什么,没有“证明”RSA的安全性。这既不说明分解这个大数是攻击RSA唯一的(或者说是最佳的)途径,也不能证明这种分解真的那么困难。RSA有可能存在一些密码学方面的缺陷,随着数论的发展也许会找到一种耗时以多项式方式增长的分解算法。不过目前这还只是展望,甚至连发展的方向都还没有找到。有三种事物的发展会威胁到RSA的安全性:分解技术、计算机能力的提高和计算机造价的降低。
第一条对RSA的威胁最大,因为只要大数分解的问题不解决,做乘法总是比分解因数快得多,计算机能力强大了尽可以加长密匙来防御,因为那时加密也会快的。
RSA的密匙生成步骤如下:
1、选择两个大素数p和q,通常要求每个均大于10100。
2、计算n = p * q和z = ( p - 1 )( q - 1 )。
3、选择一与z互质的数、令其为d 。
4、找到一个e满足e×d=1 (mod z)。
5、( n, e )就是私钥,( n, d )就是公钥。
加密算法是把明文分成比 n 小的数据块用公开指数作乘方取模运算(m是明文块(message),c是密文块(cipher)):
c = me mod n
解密过程正相反,把密文数据块用私密指数作乘方取模运算:
m = cd mod n
攻击者有公匙,就是e和n,他想获得私匙,换句话就是d。对n进行因数分解来获得p、q从而算出d是最好的RSA攻击方法,直接穷举d或推断(p-1)(q-1)都要慢许多。下面是几种因数分解的算法:
1、试探除法:最老也是最笨的方法,穷举所有小于sqrt(n)的质数,耗时以指数级速率增长。
2、二次筛法(QS):对10110以内的数是最快的算法。
3、MPQS:QS的改进版本,要快一些。
4、分区筛法(NFS):目前对大于10110的数是最快的算法。曾被用来成功地分解过第九费马数。
这些算法代表了人们对大数分解(也就是对RSA攻击)的探索历程。最好的算法具有超多项式率(次指数率)的时间复杂度,NFS具有最接近于多项式率的表现。
大数分解仍然是困难的,可是随着数论和计算能力的发展,它变得容易了。1977年,Ron Rivest说过分解一个125位的数需要花费4*1013年。在1994年RSA129被分解了,花费了5000 MIPS•年的机时,是利用 internet 上一些计算机的空闲CPU周期一共花了8个月完成的。1995年,Blacknet密匙被分解,用了几十台工作站和一台MarPar,共用400 MIPS•年,历时3个月。随着时间的推移,可能被分解的密匙长度还会增加。
表1是常用的几种RSA密匙长度与它对应的NFS分解算法耗费的MIPS•年数。
表1  RSA密匙长度与它对应的NFS分解算法耗费的MIPS•年数
密匙长 用NFS来分解的 MIPS•年 数
512 30,000
768 200,000,000
1024 300,000,000,000
2048 300,000,000,000,000,000,000
表2表示用直接攻击方法耗时相当的对称式与非对称式加密对应密匙长度。
表2  耗时相当的对称式与非对称式加密对应密匙长度
对称式 非对称式
56-bits 384-bits
64-bits 512-bits
80-bits 768-bits
112-bits 1792-bits
128-bits 2304-bits
分解过Blacknet密匙的四个人说过:“目前几乎可以肯定,拥有合适资源的组织可以破译512-bits的密匙。”但是这并不意味着有这么个组织认为值得动用如此之大的计算能力去破译别人的信息。
总之,RSA的安全性在可以预见的时间内还是非常安全的。在SET 2.0中,可能会用可靠性更高的ECC来代替RSA。
3、SHA-1的安全性
SHA-1对于任意长度的消息都生成一个160位的消息文摘,如果消息中有一位发生变化,那么消息文摘中会大约有一半的数据发生变化,两个消息的文摘完全相同的概率是1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000-1。
因此,对SHA-1进行直接的攻击是不可能的。
还有一种攻击方法称为生日攻击。生日攻击实际上也是为了找到两条能产生同样散列结果的明文。生日攻击的名称来自概率论中的生日问题。在多于70个人中至少有两个人生日相同的概率已经是99%以上了。
所谓生日攻击实际上只是用概率来指导散列冲突的发现,对于SHA-1来说如果尝试280条明文,那么它们之间至少有一对发生冲突的概率就是50%。仅此而已,对当今的计算能力来说,它也是不可能的。
4、随机数的安全性
这也是安全性中的一个很重要的部分,Netscape 4.5中的安全性风波就是因为忽视了密匙随机生成的问题,Netscape的随机密匙生成算法简单地使用时间作为种子,生成的密匙很有“规律”,而且远远没有均布到整个密匙空间去,所以尽管Netscape的美国版采用128bits的密匙,还是被用很小的机时代价破掉了。
但是这个问题已经不是SET中的问题了,这个问题是由软件的制造商来负责的,SET 1.0中推荐使用RFC 1750( Randomness Recommendations for Security )中的方法。一个系统要通过SETCo的认证,这也是一个要接受考验的地方。
总之,虽然SET现在的版本中还存在着加密强度不够等问题,但是它在B-C的电子商务模式中还是比较成功的,在世界上已经得到了比较广泛的应用。

参考资料:
http://www.setco.org
http://www.mastercard.com/set
http://www.ibm.com/security/products/index.html
smth.org中的Hacker版和Security版

最新评论:
评论内容:请自觉遵守互联网相关政策法规。
用户名: 密码: 匿名 注册
热门文章
随机推荐
About iTtang - 联系方法  - 专题列表 - 友情链接  -  高级搜索   -  帮助中心  -