网上银行安全事件的反思

今年以来,网上银行安全事件层出不群,闹得沸沸扬扬,据网易财经:网银危机(http://finance.163.com/special/002521GA/ebank.html)上公布的信息,受害者近千人,损失资金金额也近千万元。

如果你在银行的科技部门,就知道这些事件带来的波动效应有多大,几乎所有银行的网上银行都极大的关注这些案件,从上至下,进行安全自查,封闭可能漏洞,关闭风险等级较高的功能,以最大限度地提高系统的安全性,降低客户的资金风险,当然,我也被折腾的够呛。可以说,工行此次事件不但给工行的声誉和上市进程造成了严重影响,而且几乎给所有其它银行的电子银行业务都带来很大的冲击和负面影响,我身边的好多人在了解到这些情况后,有的直接关闭了网上银行的功能,有的则坚定了不相信网上银行系统安全、而且决不开通网上银行功能的想法。

就整个事件反思,个人认为:

1) 工行的对整个事件的态度确实存在问题

在网上银行出了安全事件后,不分青红皂白,一律推到受害人身上,按“工行网银受害者联盟”(www.ak.cn)网站上事件相关人的描述,工行把受害人“妖魔化为弱智群体,然后把我们一脚踢到公安机关;甚至工行还混淆其商业银行的企业身份,对我们肆意诬蔑和打压”。

可以说,工行的这种态度是很多大型国有企业(包括其他行业)的通病,丝毫不出人意外,大家在日常生活中碰到这样的店大欺店案例并不鲜见。在最新一期的《新金融》杂志上,仍看见工商银行电子银行部的主管领导在推脱责任,说问题全出在用户身上。

个人对此也深有感触,有一位同学在工行数据中心,我们在聊起此事时,他仍坚称:整个事件仍是“别有用心”的人在夸大其辞,即使其中真有受害人,那也是他自己太笨。个人以为目前在中国,没有人敢公开地对中国工商银行这样的大目标“别有用心”,所以我宁愿相信,www.ak.cn 上公布的受害人,不存在造假的可能。

态度决定一切,国家足球队原主主教练米卢这话说得没错,我相信,如果工行不是始终独善其身、推脱责任的态度,事件也不会闹到如此地步。

回过头来看看招行,能够在网站上开通论坛,专门收集网友的反馈,来不断地更改和升级系统,印证了其“因您而变”的企业口号,其他哪家银行能有些魄力开这样一个论坛? 当然了,以现在这种系统的水平,最好还是不要开,会被口水淹没的。

2) 工行的系统确实存在问题

据我个人估计,这次大面积暴发的网上银行安全事件的主要原因就是出在工商银行网上银行系统登录页面的安全控件上,工行最早的网上银行系统使用的是普通的 HTML 控件,而且也没有使用验证码,后来,在系统升级时,加入了图片验证码,也加入了安全控件,但这个所谓“安全控件”的安全性并不高,不但不能防止大部分键盘记录软件(KeyLogger)的截获,也没有对数据进行加密(详见于2004年我对此进行的分析:网上银行“安全登录控件”分析),再后来,他们再次对安全控件进行了升级,对数据进行了加密,也能够防止大部分 KeyLogger 的截获,但据了解内情的人员透露,仍然存在漏洞,工行也在考虑进行进一步的升级。

有人也许会说,工行的系统管不了用户机器上的木马,但是,系统安全是一个整体的概念(信息安全领域的“木桶理论”),光做到银行端的安全是没有用的,黑客不会找最安全的地方来进攻的,即然网上银行系统的页面扩展到了用户端,那么银行就有责任地保护这部分应用(最薄弱的部分)的安全。

3)工行的安全事件响应机制存在问题

按照中国人民银行和银监会(它们在此次事件中也有监管缺失的问题)有关要求,商业银行在开办网上银行时,一定要建立安全事件响应机制。但就此次事件来看,没看出来他们的响应机制在哪里,首先是没有积极地帮助受害人锁定帐户,其次是没有积极与公安机关配合,尽早对所有事件统一分析,统一处理,而只是在事件闹得沸沸扬扬的时候,才“正面回应”,结果仍是“工行回应网银资金失窃案 称系统不存在漏洞”(http://news.tom.com/2006-08-18/000N/78413992.html)。

按说对于网上银行这种安全性要求非常高的系统来说,系统务必要记录访问客户端的所有细节,不但应包括最重要的客户端 IP 地址,还应该包括 HTTP 请求(Request)中的所有变量,如远程主机名、User_Agent、HTTP_REFERER、Accept-Language/Encoding等数据,这些数据将对追踪访问人、电子取证、案例侦破提供提供非常有力的证据,很多系统会记录 IP 地址,但往往会忽视其它一些特征数据的记录,而通过对这些数据的分析,有助于对那些通过代理来进行犯罪的黑客进行证据搜集。据个人分析,这些重要数据很可能被工行的网上银行系统所忽视,以至于影响了有效的响应过程。

其次,以工行的这样的大型企业来说,在事件发生时,完全有能力直接与最高级别的公安机关对话,对整个事件统一立案,集中力量统一侦破,相信很快会有结果,但是据了解,工行直到最近才把这事做起来,但这里,大好的时机都错过了。

4)客户所承担的安全成本太高

这不仅是工行的问题,几乎其他所有银行的网上银行系统都存在此问题,个人以为,在 USB-Key(工行称之为 U 盾)上赚客户的钱,纯属利令智昏之举,有的银行甚至以此来做为利润科目,实在是一大耻辱,这就和CCTV以送台大熊猫起名的时机敛财、欺骗全国人民感情的恶举如出一辙(年初起的名,现在还没有送过去),自己图名利,别人来买单。

既然是你系统提供的安全认证手段,费用就应该你自己负责,如果 USB-Key 收费,那是不是设置帐户/卡的口令也要收费? 即使收费,收点成本成不? 现在 1G 的U盘才多少钱,你那个 USB-Key 要收近百元?

除此之外,包括工行在内的多家银行收取所谓的“网上银行年费”,说的不客气,纯属脑子进水,想不明白确定收费的这些决策人员到底有没有了解网上银行业务对于网点/柜台减负所带来的成本节约?

我相信,USB-Key 的代价较高是绝大多数用户没有选择它的原因所在,工行现在推动态口令卡,依我看没必要,把 USB-Key 取消/少量收费即可。

还有一些小细节:大家现在访问一下工行网上银行系统,在登录页面上,仍然没有一些醒目的安全提示,登录页面那么大,就容不下一段关于防止身份盗用的说明? 看看页面源码,很多数据检查/校验的机制仍光溜溜地用 JavaScript 显示在那里,在看看进入系统时的这个地址:http://www.icbc.com.cn/wangyin_xitong/alert.jsp(网银_系统),不能起一个好一点、专业一点的目录名吗?(此网站上诸多目录都是以中文拼音命名)

=========================================================

回顾这个尚未结束的事件,可以认为它是对工商银行在网上银行系统安全保护不够完善的一个教训,也是对其他银行的一个警示,未尝不是坏事,亡羊补牢未晚也。当然了,要说推脱,工行还是有些理由的,毕竟它的网银用户数量在国内是最大的,因此黑客会选择攻击它的用户(这和微软的软件最常被攻击的原因类似),但是,只要扎扎实实地、全面地、负责任地做好安全工作,不要老喊口号而未真正地付诸行动,相信前景还是美好的,网上银行业发展的大潮仍是浩浩荡荡不可挡。

个人以此事件为启发,就网上银行系统的安全性来说,提出一些以后需要关注的问题:

1)降低客户所承担的安全成本,如 USB-Key 费用的降低,大力推广数字证书的应用;

2)学习招商银行(这似乎让很多大银行很没有面子),发展基于浏览器的专用客户端,不但功能更为强大、操作更为快捷方便,而且能够有效避免假网站、木马型病毒的攻击。我们看看欧美地区,大多数的较大的银行都支持OFX(开放金融协议),通过 Microsoft Money 等专用客户端可以直接连接到它们的系统中,个人认为这也是国内网上银行系统的发展方向;

3)改变目前系统中这种通过用户+密码的传统认证方式,只要使用用户名/密码,就有可能受到键盘记录木马的威胁,要彻底的解决此问题,必须
使用全新的身份鉴别技术。例如在 .NET Framework 3.0 中新推出的 CardSpace 技术(内置在 Windows Vista 中,可以安装在 Windows XP 上),就可以彻底地避免键盘记录软件、通讯侦听软件对身份鉴别过程的威胁;

4)进一步加强应用的安全性,在事前、事中、事后各个环节提高可控性,例如:可疑交易的确认(类似于信用卡的可疑消费确认),用户可自行设置登录时段、登录位置(如只限于北京地区)、进行风险等级较高的操作时,能够及时发送短消息通知用户,能够快速定位交易对手(转出时的目标帐户)的相关信息,能够快速锁定可疑账户,能够更完全面的记录客户端的信息,能够进行行为分析;

5)继续有策略、有技巧、持之以恒地加强用户安全教育,这在目前中国的互联网界流氓软件满天飞、普通用户极端受害的情况下,是非常非常有必要的。

“网上银行安全事件的反思”的39个回复

  1. 写的不错,顶一下。
    信息系统的安全被大多数的系统提供商忽视,起码在国内我没有看到多少软件公司对自己的信息产品做太多的安全工作。

  2. 我开通并使用着招行、工行、兴业、民生的网上银行,还不包括其他几家银行的信用卡网上银行,基本上说,招行的网上银行在功能、界面友好性、安全上仍然具有相当大的优势,特别是今年网上银行专业版的升级,把网银又提高了一个档次。

    另外,招行既可以使用付费的USB Key数字证书,也可以使用免费的文件数字证书,这一点很厚道。

  3. @匿名人士

    您确实有些逻辑混乱

    搞数学的用 “1+1=2”这就叫 专业

    您要用“壹加壹等于贰”这就叫 不专业

    搞计算机的 您所谓的“WebBankSystem” 就是专业

    “wangyin_xitong”就是不专业

    p.s

    “我对教育老年人没兴趣” — 老罗

  4. 命名体现了专业的态度
    你用拼音命名是不犯法,但你的客户不见得认同
    wangyin_xitong这种还不是最糟糕的
    我还见过dianhua_number,bayue_gift这种混合的,真是恶心的说

  5. 写拼音就是不专业
    你问问那些写拼音的人,他要是会写E文他还写不写拼音
    半会不会的就混着来,的确恶心
    老罗的话挺有意思,但是瞎引用不管人家的原意,更恶心!连老罗的思想你都强X,就自己不觉得恶心吗?

  6. 一般来说,名字不专业,说明设计的人也不专业,至少他比较少参考专业人士的成果,那做的出来的东西就不言而喻了:)

  7. 关于起名字要花多少精力,每个人有不同的认识;我愿意多花些时间的,但也尊重他人起的名字,除非太容易混淆。

  8. 讲的确实不错,我虽然一直使用工行,但网上银行我还是使用招行的。工行在网银上做的确实比较幼稚。去看看他们的网站就知道了,我觉得稍微专业点的人都知道,在网银登陆时是不应该让用户看得到源码的。但工行她就是与众不同!

  9. 虽然很多专业名词不懂,但是还能看明白。本人就在招行的分行信息部,但网银是总行层面的,分行不用做。这篇贴子转贴在我们内部BBS了,很热。
    不过想说的是,UKEY的成本,我所知的是接近90了, 不论是21,31,还是最新的33。另外,我们行网银(普通专业版,不是财富帐户,那个没事谁会开)只有开通收费,没有年费的哦。

  10. UKEY不就一容量极地的U盘里面写了点数据而已,能贵到哪里去。招行专业版没有用UKEY用证书,还不一样的用。再不济,能不能不用UKEY,用小光盘,成本不会超过一块钱吧,技术上和UKEY也没有本质区别吧,无非是写一些不太容易窃取的数据而已……

  11. 有些人对命名规范的不重视,我想可能不是程序员。如果一个从事软件开发的人也不重视基本的命名规范,他可以去卖红薯了!

    我支持楼主。

    一个大型银行的网上银行系统的站点目录,竟然用拼音代替,我真不知开发人员是什么样的水平!

    一个高中英语程度的学生,也不会犯这样的错误!即便不懂,可以原谅,但你要学啊!

    你要真不懂 网上银行 ,用 英语怎么翻译,你去请教啊!

    在我的团队里,是觉得不允许有这样的“开发人员”存在的。

  12. 签字认证是主要的,客户端有木马是难以避免的,在客户端安装有效的认证工具是最好的

  13. lalalalalalalalalalalalalalalalalalalalalalalalalalalalala lalalalalalalalallalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalala

  14. 写的很好,我认为用拼音没错,因为不是每个人英语都那么好,大多人还是看不明白英文的,要照顾到大多老百姓,

  15. 我想在給目錄起名有個區別的。
    對於安全性要求高的系統或軟件,就應該盡量隱蔽,用些沒意義的編碼,或者重寫URL把原始的藏起來或者加密了。
    對於一般性的軟件,就看作者本人的習慣或者項目本身的規格要求咯。

  16. 工行的“U盾”也称USB-Key 的确不错,它对网上数据进行加密、解密和数字签名的个人网上银行客户证书。据专家说,要想在网上获得足够的安全感,必须拥有一张数字证书。即使是最高明的黑客,要想破译这张证书也至少需要几万年。至于客户端有木马那是难以避免的,在客户端安装有效的认证工具我认为是最重要的。

    你说的工行网上目录名不是你说的哪样不好记忆,它们工行用的是www.icbc.com.cn或www.95588.com是比较好记忆的

  17. 有人认为会几个英文单词就感觉自己水平很高了.似乎有了英文这个档次就上去了.计算机可不管这套.在我们眼里汉语拼音好象是小学生们专用的.有本事你干什么事都不要跟汉语拼音沾边,看不起汉语拼音的人就是看不起汉语.

  18. 有人认为会几个英文单词就感觉自己水平很高了.似乎有了英文这个档次就上去了.计算机可不管这套.在我们眼里汉语拼音好象是小学生们专用的.有本事你干什么事都不要跟汉语拼音沾边,看不起汉语拼音的人就是看不起汉语.

  19. 我想在淘宝上买点东西,欲建立个工商的网上银行帐号系统,看看还是算了,不安全啊。

  20. @duanxingchuan

    你怎么没弄个英文名字?

    你们那个牛X团队是干嘛的?给国外客户开发的么?

    你们底层的数据表里的列名都怎么起的?就算您都用的E文您用的准确么?你愿意在代码里为了你的E文情结就起很长的变量名字么?退一步说,你用缩写你用的准确么?

  21. 命名首先是给人看的。只要看得人能够明白,就不需要取计较太多。纠缠于此,并不能够显得自己高明。

    深圳证券交易所的数据接口中间,全部采用汉语拼音首字母缩写作为命名,举个例子,WTSL=委托数量,WTJG=委托价格,CJJG=成交价格,GDDM=股东代码,MMLB=买卖类别,清晰明了,有什么不好呢?

    你试试用英文来翻一下,看看是不是能够得到大家(包括中国人和外国人)一致的认同?

  22. 如果你对于网上银行系统的安全性有足够深入的知识和实践,不妨加入到我们的团队,在成都或者深圳从事颇具挑战性的工作——为金融行业提供更加安全的网上应用解决方案 🙂

    email: haha1[email protected]

    算是一个广告哈,不好意思:(

  23. 命名很重要。那些带有爱国主义的,支持汉语拼音的,估计都没度过什么软件工程。
    命名习惯、注视风格、编码风格。这些都是很重要的东西。当然它们是多元的,但在同一个项目中必须使用相同的风格。这一点很重要。

  24. 一个拼音的命名居然引来嘲笑,你们不觉得可笑么。怎么总这么崇洋媚外呢?包子有肉不在摺上。都是中国人开发给中国人用的有必要弄上英文名字来吓唬别人么?

  25. 为汉语拼音的打抱不平的肯定英语学得不好,虽然我也学得不好,但我还是觉得用比较专业的业务领域的英文单词是应该的而且是必要的,学得不好可以学习,但不能给自己找不上进的理由。

  26. 态度决定一切

    ps
    使用汉语拼音一定是领导的意思,只关注鸡毛蒜皮而不考虑业务本身的行为就是典型的屁股指挥大脑

  27. 呵呵,拼音没有标第几声你很多情况下不知道它说的是什么。容易造成混乱。比如dajia代表大家还是打架还是打假?而英文就不需要注音,所以可以确保唯一性。不懂这个问题的人,连初级程序员都算不上。
    程序不是一个人从头做到尾的,你的程序要很多人共同开发和维护,大家看你的程序要像猜谜语一样,效率贴地皮了。

  28. 程序, 写出来公布后是给用户用的, 你一定要求所有用户都非常了解你的程序吗?

评论已关闭。