<尚大教育,教育至上,人才为大:sdedu.cc>
模型安全性分析
一般可以将攻击分为两大类型。一种是逻辑攻击,涉及到系统各部分之间的相关性。例如持卡人可以对终端进行欺骗,卡发行机构也可能欺骗持卡人。另一种是物理攻击,着重于对卡本身利用各种技术手段的攻击。针对卡系统的各个功能要素,可以将攻击分为多种形式。
①终端对持卡人或数据拥有者的攻击
当持卡人将卡插入终端机时,他是信任这台终端的,认为他们之间的所有交互是合法并且准确的。一张储值卡在进行减一操作时,它要求终端发出一条"减一"的命令到卡上,此时,它相信终端不是发出的"减十"操作。在这种环境下如果终端进行欺诈则
持卡人很难察觉。比如伪装的ATM 柜员机就会产生这种欺骗攻击。
相应的防范措施是限制每次操作的时间,以及限制每次操作的数额。例如在储值卡的操作中,只允许终端每分钟进行一次操作,同时也规定操作的最大数额。在实际的金融系统中,操作都是通过网络由后台来完成,同时可以监控每一个可疑的行为。因此这种措施只是针对终端直接进行远程处理的情况。
②终端对发行商的攻击
在终端和发行商属于不同功能部分的系统中,会产生几种新的攻击情况。由于终端控制着卡和发行机构之间所有的通信(通常是要利用后台操作的系统)。因此终端可以伪造与交易无关的记录,甚至拒绝交易的执行。终端也能够阻断交易执行的步骤来造成发行商对用户提供服务的困难。这些攻击意在终端和发行商之间的通信上做文章,由此防范它可以在连接上增加安全性。比如采用卡里的线路认证技术,也可以在后台进行监控等。
③终端对卡生产商或卡系统软件的攻击
由于终端是卡与外界唯一的接口。因此,利用终端设备可以对卡生产商或卡里的系统软件进行攻击。也就是对卡里的硬件或软件的攻击。通常采用物理攻击手段,通常采用伪造终端或用工具来替代终端,读出或测试出卡里的数据,然后进行程序的替换或对密钥的恢复来达到攻击的目的。因此其安全性也是基于卡的物理特性上,要从硬件的物理保护和系统软件的安全功能完善上入手。
④持卡人对终端的攻击
伪造的卡或被篡改的卡就会发生这种情况。可以涉及到对协议、数据、程序的攻击。一个完善的通信协议可以有效地减轻这种攻击的危害。而卡本身的防物理侵入的特性也会使这种攻击变得困难,因为物理特性使其软件上的改动相应变得困难。一般来说,伪造的卡是无法伪造数字签名的,因为纯软件是很难达到硬件签名的效果。同时,伪造的卡也很难通过终端的双向认证。而从系统模型上来讲,需要从功能上将持卡人和卡数据拥有者分离。
⑤持卡人对数据拥有者的攻击
在大多数基于商业应用的智能卡系统中,卡里的数据是对持卡人不可见的。比如权限访问卡,卡里数据是不能让持卡人知道的,否则,他可以伪造更多的访问卡。在电子商务应用中,卡里的密钥也是不能让用户知道的,否则,他可能会进行交易欺诈。在另一些情况下,也是可以知道的,但不能允许持卡人改动卡里的数据。比如储值卡,用户应该知道卡的余额,不能随意改动这个余额。这种攻击的特点是攻击者就是卡的持有者,因此可以随心所欲地支配对卡的攻击,甚至可以将卡毁坏来达到窃取里面数据的目的。
⑥持卡人对发行商的攻击
很多金融攻击的例子均是针对卡发行商的。但实质上,是对卡里数据或程序的真实性和完整性的攻击,因此可以看成是对数据的攻击,目的是在于对发行商造成破坏。以付费电话的应用为例,如果系统是基于账户的,显然可以针对这个账户号码进行攻击。通常这类系统是通过卡里的随机数和哈希函数的连接来防止攻击。同时,卡发行商也可以在卡里加入"认证"位来防止攻击,这些位可以是一个"认证"过的账户数字,也可以是一个密钥等。
⑦持卡人对软件生产者的攻击
通常,卡发行出来后里面是没有任何应用程序的,这种将程序和卡分离是基于假定卡片拥有者和软件拥有者之间是不会相互攻击的前提。然丽攻击者也会试图侵入卡里的程序,甚至是用一些功能强大的硬件工具。这同上面所说的利用终端的情况一致,只是考虑的出发点不一样。
⑧发行商对持卡人的攻击
通常情况下,发行卡的机构掌握着大量持卡人的私人信息,因此一旦发卡方怀有恶意的话,持卡人将完全暴露在他的攻击之下了。如果发卡方同时也是系统软件或硬件的开发方的话,那么软件设计人员可议很轻易地获取持卡人的信息。由此可见,在卡系统的设计时也要考虑用户信息的保密性和完整性。
⑨发行商对终端的攻击
发行商一般是处在后台,从功能上应该是和终端分离的。也即操作发生在远程终端或靠近用户端的地方。这样,发行方一端所取的数据是终端处理完成后发送过来的。对终端的欺骗一般发生在发行商对数据的进一步处理上,有可能对数据进行篡改,这样就会直接对持卡人产生影响,因为终端的操作结果是已经记录在卡中的。这种情况在实际中是很少发生的,但对于系统设计的人来说是要考虑的。
⑩多应用隔离
卡生产方对数据拥有者的攻击很明显,制造卡的机构(包括软件和硬件)对卡里的数据起着决定性的影响。一个多用户的安全计算机系统,设计保护每个用户进程的安全内核就是一个难题。因此假定存在一个可允许多用户的应用程序在同一个卡上执行而又互不影响的卡操作系统(采用硬件隔离),可以解决多应用的安全隔离, Java 也支持多应用,但安全性并不明显。
<尚大教育,教育至上,人才为大:sdedu.cc>