网络银行安全性的理论分析
最近好像用网银的人比较多阿,贝壳就做件好事,简单介绍下密码学体系。让大家了解下网银安全性的方方面面。
我们说,银行系统的安全性和易用性往往是一个磁石的南北极,不大可能出现在一个地方的。从易用性角度来说,输入用户名和取款密码直接操作的网银是最方便的。可惜,你的钱被偷的概率也是最高的。因为你和银行间的通讯过程需要流经无数节点,任何一个地方都可以轻易拿到你的登录密码。那么重复这个过程就可以登录并且操作你的钱。所以,任何一家银行都不会提供直接的登录手段。
一般来说,银行在设计网银的时候,往往会提防以下的攻击手段。社会工程学,嗅探,重复发送,钓鱼,中间人钓鱼,猜解,内部盗窃。我们先来大致了解下这些攻击手段的方法和实施条件,然后再说银行的对应手段。
社会工程学攻击是成功率最高的,技术要求最低的攻击。其要决就是一个字,“骗”!社会工程学攻击主体上就是各种骗术,例如把机器塞上,旁边写一个处理电话。等你打电话的时候,就过来一个“工作人员”。然后弄出你的卡来,说要验明你是否是卡主,问你密码。等确认好了身份,你拿到的就不是自己的卡了,那个工作人员也就拿了钱跑了。诸如此类的攻击核心要点就是骗取客户信任。所以社会工程学的对应手段只有让客户提高警惕,其他没别的好办法。
嗅探指的是从登录的机器上或者附近符合一定条件的机器上(具体是哪些需要一定的专业知识),窃取登录过程数据,并且从中还原出用户密码的手段。这种攻击往往和重复发送一起使用。无法还原密码的情况下,将原先登录的包重新发送一次。对应嗅探攻击的方法很简单,就是挑战-回应方法(Challenge-Responses)。现代加密算法有专门对应已知明文攻击的,用于对抗已经知道明文和密文情况下反解密码。服务器发送一个随机数过来,客户端加密后发送回去。服务器端核验客户端的加密结果和服务器端的加密结果,就知道客户端是否通过认证了。而嗅探者需要相当数目的明密文对才能知道密码。所以相对安全程度更高。
钓鱼是一种社会工程攻击。一般是通过邮件或者其他手段引导你到某个网站上,看上去和网银很像。等你登录想用的时候,会发现上面说网银现在正在调整。如果当时没有在意,等下次登录的时候帐户里面的钱就没了。由于窃取的是密码本身,所以挑战-回应方法无法解决这个问题。这种情况下就必须使用挑战-回应方法的变形,例如零知识验证。大致上看起来就是这样的,银行给你本很长的书,里面写什么你也不知道。然后银行问你,第512页三行15个字是啥?钓鱼收集到这个知识就没用了。但是中间人攻击还是有效的。中间人和钓鱼看起来很像,只是中间人不是窃取密码,而是窃取会话。当你以为登录到银行的时候,其实是登录到了一个中间服务器。一切你的操作其实是通过中间服务器代理上去的。当你退出的时候,中间服务器就会替换你的操作,实施一次转帐和退出。要屏蔽中间人攻击,就必须使用签名证书系统来认证服务器地址。
猜解和内部盗窃是通过对主人情况的了解来猜测或者偷窃密码/密码设备的攻击。目前没有啥好办法,只有想点自己都想不到的东西作为密码才行。生日,电话,车牌,名字,都不可以直接作为密码。当然,做一些基础变形后作为弱密码还是可以的。例如将生日倒过来作为查询密码。
目前网银的认证系统有以下几种,密码直接验证,文件证书验证,密码卡认证,手机动态认证,硬件设备认证。
密码直接认证一般使用了SSL技术来防止嗅探,但是对于钓鱼,中间人,猜解,内部盗窃都没有防护能力。一般都是各个网银的最差防护状态,为某些对安全不在意的人设计的。只是使用方便而已。
文件证书验证是利用密码和文件数字证书来验证身份的方法,对于钓鱼,中间人有比较好的防护手段。可以防止猜解,但是无法防止内部盗窃。因为文件证书为了方便起见都是存放在电脑内部的,所以文件证书的安全就又成了问题。即使是存放在U盘上,也会在使用的瞬间被复制。电脑中木马,文件或者U盘被盗拷,都是产生不安全的原因。
密码卡是某种零知识验证的变形。差不多就是给你张密码卡,刮一次能上一次。对于钓鱼有一定防护能力,但是对于中间人攻击无能为力。可以防止猜解,但是无法防止内部盗窃。
手机动态认证是通过手机收取临时动态验证码来确认客户的身份。如果要窃取客户的身份,就必须同时得到用户手机卡和用户密码。所以,也是防嗅探,钓鱼,猜解,但是不防中间人和内部盗窃。注意这里有种特殊形式,大家也许不知道,手机发送的短信是可以被特殊设备截获破解的——
硬件设备认证则是将密钥和计算放入了特殊硬件内。银行发送挑战数到硬件上,硬件设备返回数据到银行。如果要窃取身份,就必须获得设备和密码。因此,也是防嗅探,钓鱼,猜解,但是不防中间人和内部盗窃。一般就是指银行的U盾设备,但是要注意区分U盾究竟是用来计算呢,还是用来存放密钥。后者的安全级别和文件证书一致。
我们对比各种攻击之前,先去掉两个特殊选项,社会工程和中间人攻击。社会工程某种意义上是无法防御的,你说你要把东西交给别人,银行怎么防范?拿你的生物特征?那就太麻烦了。中间人则是因为可以用CA证书验证地址有效性,因此现在很少成功。当然,也有先欺骗DNS服务器的。碰上这种蓄意的中间人攻击,差不多就和碰上人强奸一样——反抗是没意义的。这两种方法,只要是有心算无心,基本都可以成功。因此我们先去掉这两个成功么未必成功,防范么没法防范的选项。
SSL技术是网银登录的基础技术,没有的话请记得早日离开这家银行。文件证书使用方便,但是电脑一旦中木马就立刻危险。密码卡看似安全,其实对于精心设计的钓鱼还是没用的。而且使用麻烦,不如趁早不用。手机动态验证的安全性是非常高啦,可是要记得手机的安全就是帐户的安全。所以手机卡千万看住,别被人复制了。(手机卡是可以复制的,然后就可以用这个号码打电话了。当然这种事情发生概率很小,一般倒是用在一卡多号上比较多)还有手机信号问题,找个深山老林上网吧。
硬件设备认证是比较硬的方法,一般是比较完美的。可惜价格太贵。
综合下来,偷懒的可以用手机。怕事的还是用硬件。