delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

01 Dec 2006

为什么是招行?

今天有朋友问我,为什么我一定要跟招行「过不去」?现将本人立场公布如下:

  1. 为什么选择招行

招行是国内最有实力的一家从事网上银行业务的银行。即使是现在,我仍然不认为国内有任何一家其他银行具有同招商银行竞争的实力。从我自己在中关村支行办理第一张招行卡,到后来的工资卡、信用卡,招商银行的专业水准和服务一直都是第一流的。

然而,从11月初以来,招商银行所发生的一系列变化是令人震惊和无法理解的。我无法想象,在自己如此信任的一家银行到底发生了什么,是什么,使得一家有极高专业水准和素质的银行,在自己的网上银行专业版产品中,加入了如此多的令人怀疑和困惑的、违反基本安全常识的东西。

除了我本人之外,我还推荐了许多朋友使用招商银行的服务。从11月6日第一次投诉到现在,我正在不断地丧失对招商银行的信心和信任。我认为有必要让更多的人了解相关的这些情况,因为并不是每个人都会十分关注自己使用的银行是否在为自己的计算机埋下不安全的隐患——公众通常会认为,银行首先是可信的,同时,我认为公众有权力了解,自己所选的银行是否存在一些问题,因为我想,并不是每个人对于银行的安全性都是毫不在乎的,如果你在一家银行有存款,你当然会关心自己的存款是否安全。

  1. 安全——什么是安全?

对于安全,有很多的定义。有一种观点认为,别人看不到就是安全。在我看来,我不会认为把秘密锁到银行保险柜,同时周围派3000个荷枪实弹的士兵看守是安全;同许多关注信息安全的人一样,我认为安全是这样一种情形——把一个装有秘密的保险柜,无人看守地放到大街上,即使是保险柜的制造者,在没有开启保险柜所需的钥匙等条件的前提下,仍然无法打开保险柜。

这个比喻对于一些人来说可能仍然有点抽象。如果用通俗一些的话来总结,那就是:安全不能建立在别人不知道的基础上;安全不是一厢情愿的单方面安全,安全的参与者必须都拥有安全意识;安全设施必须告知相关的人员,而不是加以不必要的隐蔽和强制。

此外,安全措施可以比喻成一个装水的木桶。这个安全措施能够达到的最大安全强度(水桶的深度)
,并不取决于其最强的环节,而是取决于其最短的那根木头,也就是安全措施中最薄弱的那一环。通常的安全系统中,这个环节,都会是操作这套安全机制的人。

  1. 网上银行存在的安全问题

现今,互联网已经不再是十年前甚至更早的那个,几乎人人都愿意和你做好邻居的互联网了。通过击键记录等各种方式,攫取别人的网上银行帐号,已经成为困扰许多使用网上银行用户的问题。

为了解决这个问题,许多银行想出了各种各样的办法。招商银行是国内最早采用数字安全证书技术的一家银行。与基于口令的原始安全验证技术相比,数字证书是利用了现代密码学技术的一种技术。这两者的安全性,我们不妨打个比方,如果说基于口令是你到了银行说自己是谁就让你以谁的身份做操作的话,那么基于数字证书的验证方式,则是要你现场对操作单做签字,并且由专业人士与你之前留在银行的签名进行细致的比对。

自然,真实的数字签名,要比我们生活中常用的签字安全许多。数字签名不仅能够确认身份的真实性,而且还能够确保你签名过的东西,没有被任何第三方,包括接收签名的那一方修改过。在招商银行已经采用这些技术的时候,国内的许多银行,却仍然停留在以口令验证的原始阶段,直到最近几年才有所改善。

遗憾的是,数字证书并不是一种无法复制的生物特征。指纹、虹膜识别等新兴技术,能够让计算机识别具体操作的人的真实身份,然而这些技术目前还没有被用于身份验证。由于数字证书会保存在一个文件中,而这个文件又必然能够被当前用户所读取,因此,一旦获知了用于保护这个文件的本地口令,以及这个数字证书文件的副本,别人也就可以使用你的数字签名去签署银行交易了。

  1. 国内银行对这些安全问题采取的努力

在我看来,国内银行目前纷纷在采用的各种所谓安全方法,其作用都是十分有限的。这其中,最为致命的问题就在于,他们在尝试进行一件违反基本安全常识的事情——安全机制最薄弱的一环决定整个系统最大的安全强度,而他们却在试图加强安全机制中的其他环节,并给用户安全的假象。

这些方法,不仅没有从根本上加强安全机制中的那些环节(尽管这本身已经很没有必要了),更糟糕的是,它们往往从另一些方面进一步削弱了原本已经十分脆弱的安全体系。举例而言,目前国内的绝大多数网上银行,都会要求用户安装一个客户端ActiveX控件,撇开这样做的兼容性影响不谈,这些所谓安全控件,通常都需要以管理员的身份来安装。一个有安全常识的用户,是绝对不会有习惯去以管理员身份上网的,这样做的结果,许多有安全意识的用户,会屈服于这一限制。

尽管如此,如果这些银行「安全控件」能够允许以非管理员身份激活的话,从某种意义上说,它也能在一定意义上保护用户的安全性,因为这时我们能够确保非管理员用户一定无法安装这类软件。然而,事实上多数网上银行的「安全控件」在撰写的时候,都没有考虑到这一点。

从强制用户使用Windows和Internet Explorer浏览器,到强制用户打开防火墙等安全措施,到进一步连远程桌面都不允许用户使用,再到在用户不知情的情况下安装监视键盘的驱动程序,等等等等,这些都忽略了一个基本事实:安全最薄弱的环节,并不在这里。

  1. 所谓「为用户安全着想」引入的问题

别的不说,我们假定一个入侵者已经安装了一个木马,他会做什么呢?

表面上看,这个人会安装一个击键记录器去记录用户口令。如果你这么想,我只能告诉你,这是因为你不是坏人。坏人是绝对不会干这么缺少创意的事情的。如果一个坏人要得到你的口令,方法非常简单:他写一个界面和网上银行一模一样的程序,命名为「网上银行」,替换掉你原来的程序,那么一切所谓安全措施也就没用了。更有甚者,它可以在输入一次口令之后,神不知鬼不觉地换回来。

因而,验证网上银行的可执行文件是来自银行就十分重要。过去招商银行在这方面做得很好,但不知道为什么,最近的一些版本越来越过分,不仅不签名,而且插入了大量令人讨厌的东西。

我要继续指出的是,目前的许多所谓「安全助手」,不仅不能改进用户的安全性,甚至可能被坏人利用。安装一个驱动程序,而这个驱动程序无法验证使用它的到底是好人(真正的网上银行)还是坏人(攻击者),这造成了一个非常明显的特权提升点。原本写一个攻击程序,要拿下一个有良好安全习惯的用户,还需要费尽九牛二虎之力;而现在,只要利用这个驱动程序就可以了。

  1. 我想要什么?

我不关注国内的其他银行,因为与招商银行相比,这些银行恐怕更不值得信任。我想要的是,招商银行修正他们目前的做法,并杜绝此类事件再次发生。好,就这样。