delphij's Chaos

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

12 Feb 2007

有关招行网银安全,回应一位网友

针对这篇blog,一位名为"醉梦流仙"的朋友给出了下列回应:

要破,也要立。如果像你这样只是破,那毫无意义。。 网银的安全要怎么做?我是研究游戏安全的,顺便也研究了一下网银,实际上网银做不到绝对安全,只要你用计算机,不管你用什么技术手段都不可能有绝对安全,只是需要增加难度,通过增加门槛让木马制作更困难些。。

你一味的追究数字签名这样的问题,更是舍本逐末,对大部分用户而言是否签名没有意义,签名也保护不了程序安全—-可以运行时修改内存。。

总之,程序放在客户端执行,不可能做到完美,只能通过把事情搞复杂,提高技术门槛,来减少木马。。

加了这个ActiveX控件,起码通用型木马截取不到其密码,难道不是进步?

安全不能建立在别人不知道的基础上,这是过于理想化。你的银行卡,为什么我不能网上取你的款,那就是因为我不知道你的卡号/密码/身份证等等;你的这个BLOG为什么我不能冒充你的身份登录发表文章,只是因为我不知道你的用户名/密码;为什么现在有大量的加壳软件?就是要把程序搞复杂,让人难破解。。

实际上运行在客户端的东西,总是可以研究透的,只是时间问题,那还加壳干嘛,以前很多公司用软件狗,现在很多共享软件用序列号,难道它们都是不能破解的?不可能,只是难度问题。复杂度和难度达到一定程度,就可以挡住很多或者说多数攻击者,这样至少比祼奔要安全。

这位朋友为招商银行着急,我完全可以理解,但是,你对安全存在很多常识上的误解,我不得不为你所开发的网游的安全性捏一把汗。


“安全不能建立在别人不知道的基础上"这句话说的是安全机制,而不是你的密码、密钥。不错,密码、密钥在任何时候都要保证保密性,正如人们不能把钥匙交给不信任的人保管一样,但安全机制本身不是,或者说,制造一个锁,它所采用的原理、技术,可以有专利,但是绝对不应是保密的。

如果有两个锁匠,一个将自己的锁的设计秘而不宣,声称窃贼无法破解,因为它不是公开的;另一个则将自己的设计完全公之于众,让全世界的锁匠都能够评估其安全性,并且得到了整个行业的认可,你愿意相信第一个,还是第二个?任何有一点点安全常识的人,都应该选择第二个,因为即使你没有造锁的专业常识和经验,你也可以找到许多造锁的专家来帮你进行评估,而不是听信一个锁匠自己的一面之词—-如果没人能够验证锁的安全性,谁知道这个锁匠自己会不会有什么后门,在没有钥匙的情况下把锁打开?

公开,是公钥密码学在过去几十年内能够获得生存和发展机遇,并保障你的安全的至关重要的,可以说是最为核心的因素。这个行业短短几十年历史上的一系列血的教训已经一再地证明,公开的加密算法、安全机制,要远比秘而不宣的各种算法要安全和可靠。

网银安全怎么做?不管用什么技术手段,首先这种技术手段本身不能是危害用户安全的—-无论这种手段是否打着"保护用户安全"的旗号。

我之所以追究数字签名问题,正是因为这个问题对全体用户的安全都是__致命__的,而不仅仅是个别没有任何安全常识的用户;我之所以要对招商银行使用和修改一个不安全的驱动程序,听任一个非管理员用户去绕过操作系统保护机制访问硬件这件事穷追不舍,同样是因为这对我们,全体用户的安全是__致命__的;我之所以对招商银行强迫用户必须用管理员身份登录才能使用网上银行专业版感到强烈不满,原因仍然十分简单,这对用户的安全会产生决定性的负面影响。

如此的网银所采取的一系列所谓"安全机制”,在任何一个专业人士,如果您也算的话,在您的眼中,绝对不会是什么"提高门槛",而是彻头彻尾的外行做法,它在严重地损害用户利益,危害他们原本就不十分健壮的安全。

我不清楚,有什么问题可以比你无法确认一个可执行文件,这个可执行文件声称来自银行,并且将用来接受你输入口令,而无法确认它是否来自银行更加荒唐的事情;我不清楚,有什么问题可以比在你的计算机上,在不经你的确认的情况下安装一个普通用户可以随意启动的、可以直接访问硬件的驱动程序更加严重;我不知道,对于一个专业的安全技术人员,要被迫容忍在关系到自己切身利益的银行,雇用一批对安全基本常识存在误解,并强迫你也以这种外行才去采用的,以管理员身份执行与系统管理不相关的操作,是一种什么感觉。

关于您对密码的认知,我感到十分不解,密码是所有身份验证方式中最不安全的,这是所有专业安全人员的共识;确保用户密码和证书的安全,招商银行希望做这些事情的出发点是好的,可惜执行这些事情的人,缺少基本的安全常识,以至于做出一些很滑稽的事情,他们在给用户以安全的错觉,却在事实上损害他们的系统安全,妨碍他们为自己的系统进行安全加固这样一些最基本的权利。招商银行从去年11月开始,一直在舍本逐末的去深究一些毫无意义的"防止键盘监听"(为此,用户不得不以管理员身份运行网银客户端,从根本上违背了基本的最低权限原则这一最佳安全实践),“阻止终端服务”(为此,用户不得不被迫在本地登录,我不知道身在海外的子女和父母之间,如果需要通过远程提供帮助的时候怎么办),却不愿意从根本上思考和解决用户面临的两大基本问题:木马可以窃取文件证书,并通过伪造的客户端轻松得到用户登录口令,自称专业人士的你,难道不觉的可笑吗?

如果一个木马已经被种到了你的系统上,我们能指望什么机制保证安全?在我看来,所谓ActiveX控件来阻挡"通用木马"是一个十分荒谬和幼稚的想法,因为既然有了木马,攻击者完全可以做一个假的应用程序出来骗取口令,至于证书,有了木马,想拿到它也是一件轻而易举的事。好比说,如果一个想要得到财宝的窃贼,明知道绕过迷宫可以拿到财宝,他会去研究怎么走那个充满了陷阱的迷宫,还是绕过迷宫,直接拿了财宝就跑?

可笑的是,招商银行这样一家在我看来曾经很具专业水准的银行,竟然坚持这种做法,更可笑的是,竟然还有人要为这样的做法叫好,被人卖了,还要帮人贩子数钱。至于说我"破"而不"立"的问题,且不论我已经给出的"回退"是否是一个解决问题的选项,我想问问,中国有句古话叫"没有金刚钻,别揽那瓷器活"是什么意思?一家银行,如果它没有能力保障客户的安全,是否要客户去替它想办法?一个开发团队,如果没有能力开发安全的程序,甚至混淆了基本的安全概念,是否还有颜面继续在一家银行上班?而少数给银行那几个三流开发人员充当写手的小人(我始终相信,银行绝对不可能雇这么不专业的写手),你们自己是不是在这家银行没有存款?这么卖力,怕是还没拿到钱吧?

我已经记录了全部留言者的IP地址,我也很清楚你们中一部分人的身份,我希望你们能够尽快地帮助招商银行从技术上解决所有这些问题,而不是跟我这儿留这种让人替你们害臊的软文。

我已经等待了三个多月,三个月,无论是安全问题、64-位操作系统兼容性问题(这两个都是回归问题,即先前的版本要比现状好)等等的投诉,一个都没有解决。

我原本已经打算就此不再过问这件事,看来,有人不愿意给我这样的机会。