网上银行安全性分析

jiangbin00cn 2007-09-23 08:10:13
如今的网上银行交易已经成为许多人生活中不可缺少的一部分,但是网上银行的安全性如何呢?

用户登陆网上银行的过程如下:
用户 银行
---- 申请连接-------》
《----发送登陆界面---

------发送用户登陆信息---》
判断用户信息是否正确

《----网上银行服务---》

高强度加密算法和数字签名的使用已经能够保证用户与银行系统之间数据通联的安全性(如果设计的当的话,银行系统应该没问题),如果我们假设银行系统是安全的(如果这个假设不成立,我们就应该立刻把钱全取出来),那么网上银行的短板就是用户的计算机。
正是基于这个原因,许多网上银行交易系统采用数字证书+用户口令的方式来保护用户的交易安全,并且推出了令牌,即将用户的证书保存在令牌内。令牌的使用无疑大大提高了用户操作的安全性。
但是我相信还是有许多用户没有购买银行的令牌,这种情况下,整个交易的安全性就在用户的口令保护上了。

假设一个黑客入侵了用户的计算机,他想要获取用户网上银行的登陆信息,他会怎么做呢
1.键盘记录。最简单同时也是使用最多的办法,效果也还是不错的,根据笔者的试验,许多银行的交易过程都可以被记录下来
2.本地交易平台劫持。黑客在用户计算机内注入一个病毒,当用户登陆交易平台时,该病毒强行关闭正常的交易平台,弹出虚假的交易平台,诱使用户输入口令。
3.中间人攻击。该方法难以实现,不过威力强大。攻击方式如下:

用户 中间人 银行
---------------------------- 申请连接---------------------》
《----发送登陆界面---
《------发送虚假登陆界面----

------发送用户登陆信息---》

记录用户登陆信息

-------发送登陆信息---》

判断用户信息是否正确

《--------------------------网上银行服务-------------------》


那么这三种攻击方式又有什么方法来保护呢?

1。键盘记录。

当用户点击键盘时,计算机内部发生了什么呢?
当用户按下键盘上的一个键时,键盘内的芯片会检测到这个动作,并把这个信号传送到计算机。如何区别是哪一个键被按下了呢?键盘上的所有按键都有一个编码,称作键盘扫描码。当你按下一个键时,这个键的扫描码就被传给系统。扫描码是跟具体的硬件相关的,同一个键,在不同键盘上的扫描码有可能不同。键盘控制器就是将这个扫描码传给计算机,然后交给键盘驱动程序。键盘驱动程序会完成相关的工作,并把这个扫描码转换为键盘虚拟码。什么是虚拟码呢?因为扫描码与硬件相关,不具有通用性,为了统一键盘上所有键的编码,于是就提出了虚拟码概念。无论什么键盘,同一个按键的虚拟码总是相同的,这样程序就可以识别了。简单点说,虚拟码就是我们经常可以看到的像VK_A,VK_B这样的常数,比如键A的虚拟码是65,写成16进制就是&H41,注意,人们经常用16进制来表示虚拟码。当键盘驱动程序把扫描码转换为虚拟码后,会把这个键盘操作的扫描码和虚拟码还有其它信息一起传递给操作系统。然后操作系统则会把这些信息封装在一个消息中,并把这个键盘消息插入到消息列队。最后,要是不出意外的话,这个键盘消息最终会被送到当前的活动窗口那里,活动窗口所在的应用程序接收到这个消息后,就知道键盘上哪个键被按下,也就可以决定该作出什么响应给用户了。这个过程可以简单的如下表示:

用户按下按键-----键盘驱动程序将此事件传递给操作系统-----操作系统将键盘事件插入消息队列-----键盘消息被发送到当前活动窗口
(用winio可以截获) (使用hook可以截获)

目前银行防止键盘记录的方式主要有:


1)不采取任何保护措施。这是不负责任的做法,虽然从法律上来说,用户有责任保护自己计算机的安全。但是银行作为服务机构有必要给用户提供一个安全的环境,如果某个网上银行频繁发生用户帐户被盗事件,这也将导致用户流失,对银行来所也不是好事。
2)在操作系统中插入自己的钩子,并保证它在最前面,当检测到网上银行登陆界面为当前窗口时,该程序将截获的键盘输入写入登陆界面,最后将该键盘纪录从消息队列中删除。 不过这也可以通过使用winio写成的截获程序来接获用户输入。
3)使用winio来劫持键盘端口,确保用户输入不被截获。 这样做的缺点是: winio只能在管理员权限下运行,且winio有独占性,若其他程序也使用了winio将会导致登陆界面无法打开。招商银行曾经使用过这种方法,但是用户反映不好,现在的版本就放弃这种方式了
4)强制使用软键盘,每次打开软键盘时,通过随机数发生器来产生键盘序,笔者最认同这种方式,成本低,实现方便,安全性高。目前花旗银行和深圳发展银行采用这种方式
...全文
417 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
有点难度哦
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
什么呀
UltraBejing 2008-04-30
  • 打赏
  • 举报
回复
支持搂主,收藏
morefaster 2007-10-07
  • 打赏
  • 举报
回复
呵呵,openssl是不可能了,那个授权机制是apache的,目前还看不到有公司免费捐献,或者有牛人不肯卖钱而拿出来让大家瞻仰。
mysql还是有可能的。那个东西采用双重授权机制,商用系统是需要付费的。
jiangbin00cn 2007-09-28
  • 打赏
  • 举报
回复
银监会高瞻远瞩啊
呵呵

你所的也有道理.国情不同啊
openSSL,mysql之类的东西,中国是没希望了.
morefaster 2007-09-26
  • 打赏
  • 举报
回复
还有,银监会发文了,今年网银全部实现双因子认证,呵呵。
morefaster 2007-09-26
  • 打赏
  • 举报
回复
另外还有一个原因:我认为这个论坛里过于关注信息安全的细节了,没有人在讨论系统的安全架构.如何设计一个安全系统比如何实现一个安全系统重要的多.

我支持你的观点。正是这个架构,多少公司(例如银行的开发中心、信息安全厂商、电子交易商)都在钻研,一旦突破,那么滚滚财源就来了。所以,在公开的bbs不会有人认真讨论的,即使能够说出来,也是转摘下国外的动态而已。
morefaster 2007-09-24
  • 打赏
  • 举报
回复
键盘记录很难防止。单纯的软件盘,其实没啥用,别人还是可以获得你输入的一切。

另外,所谓的双因子认证,就是要做到你知道了一个因子,但是还有一个因子是你无法掌握的。也就是说,安全性在于别人无法同时获取你的两个安全因子。

你这个问题是个很典型的互联网安全交易问题,大家回答的不会很详细,都是原理性的东西。谁会把公司的机密贴出来呢。
jiangbin00cn 2007-09-24
  • 打赏
  • 举报
回复
另外还有一个原因:我认为这个论坛里过于关注信息安全的细节了,没有人在讨论系统的安全架构.如何设计一个安全系统比如何实现一个安全系统重要的多.
jiangbin00cn 2007-09-24
  • 打赏
  • 举报
回复
另外,所谓的双因子认证,就是要做到你知道了一个因子,但是还有一个因子是你无法掌握的。也就是说,安全性在于别人无法同时获取你的两个安全因子。
////////
双因子认证:银行的令牌 + 用户口令

单纯的软件盘的确不行,他还是通过keybd发送消息,可以被键盘记录下来.
但是银行的登陆界面是自己写的,采用的不是简单的软件盘形势,估计都没有使用消息队列,所以不会被截获.

即使从技术上来说,它也一定存在漏洞,但是它也能够抵挡相当数量的低中级黑客的攻击.没有那个防范手段是完美的.

其实中国公司在信息安全领域的机密就是更低层的API.(个人想法)
我希望能够找到通过这个帖子能够找到一种理论安全的模型,只要理论上可行就可以了.
这个我相信目前中国没有任何一个公司掌握,希望大家分享各自的想法.

这篇文章目前还没写完.
"本地交易平台劫持"的防范方式晚上写.

4,452

社区成员

发帖
与我相关
我的任务
社区描述
云计算 云安全相关讨论
社区管理员
  • 云安全社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧