-- 有感于以下新闻()
客户杨先生在交通银行借 记卡上存入100万元,第二天卡内剩下4950元,而此时借记卡、USBKey(电子钥匙)等文件资料都还保存在他手里。杨先生认为是交行的责任,导致了 自己近百万元的损失,遂寻求法律解决。法院经审理后判定,交通银行对客户杨俊文账户上损失的近百万元不承担责任。杨俊文不解:“既然有了密码就可以把钱转 走,那还要这电子钥匙做什么?” |
一直觉得,现在各银行在其网站上对于网银安全性的解释都千篇一律,它是用来给专家审阅,而不是用来给老百姓讲解.在这,我尽量用白话的方式将网银的安全性解释清楚,但限于语言表达能力,还是要用一些专业的术语.
首先还是要说一下基于IE的卡号密码方式
在使用网银系统(基于IE实现)时,最基本的方式是用银行卡号与一个数字密码来做认证,后来也加上了一种验证码技术(就是在登录的时候,显示一张图片,里面模糊的写几个英文字母或数字让用户输入),这个是防止一些人在知道卡号后(例如在街上偷到钱包,从而由传统犯罪进化为高科技犯罪)进行暴力破解密码(6位的数字密码最多100万种可能,用程序来模拟登录,很快就可以获得).
这种方式现在还在普遍的使用除了它最方便以外,最主要的原因是因为它基于HTTPS(也就是说访问一个网页时,地址栏前面是https://),这表示用户在IE里面输入卡号密码等信息然后传递给银行服务器时,这些数据在网络上是加密传输的.否则,卡号密码等信息就没什么保密性可言了.
说到HTTPS,就必须说一下PKI体系了,否则我不知道该如何继续.以下这段技术性的解释我尽力白话了,不感兴趣可以跳过去.
PKI(Public Key Infrastructure)是基于公钥技术的,就是说通讯的双方不再是像传统加密方式一样,用同一个密码对需要传输的数据进行加解密,而是各自有一个公钥和私钥.公钥是公开的,私钥则是需要保密的.公钥和私钥是成对的,并且唯一.这里需要补充一句,就是公钥和私钥都是由计算机在获得用户输入的一些信息后生成的一串看似无意义的数字,其中,私钥更不是传统意义上的口令.
在这种方式下有两种最基础的应用是需要弄清的:
1. 假如A需要发送一个文件给B,那么A需要用B的公钥加密,然后B在收到这个加密的文件后,用自己的私钥解开.任何人(包括A)如果不知道B的私钥都不能解开这个加密文件.
2. 假如B想知道文件确实是A发送的(而不是其它人冒充A发送),那么A在发送这个加密的文件时,需要用自己的私钥对这个加密文件进行签名,在B收到加密文件后,先用A的公钥进行验证(只有用A的私钥签名,这个公钥才能验证通过),再用自己的私钥进行解密.
看起来很完美吧,但还有很多问题的.就是A和B怎么知道手头上确实是对方的公钥呢?如果黑客在A和B进行交换公钥时就拦截并伪造了,给A和B的都是自己的公钥.这下还不完蛋了.当然,A和B如果是将自己的公钥抄下来,然后约个咖啡厅见面彼此交换文件,这样黑客就要改行当强盗才行了.
见面交换公钥显然是不现实的,还是要在网络上想办法.所以,有了CA,有了证书系统.这些介绍放后面了,要不太枯燥没人看了.想我几年前上学时,就是因为课堂太乏味常常睡着.很不可理解的是,老师却没有意识到.难怪古人云,身在福中不知福.
在有了验证码和HTTPS的基础上,这几年又有了一种新技术必须提到.就是在输入卡号和密码时,现在都需要先安装一个ActiveX控件才能看到输入框了.这个主要是为了防止用户计算机中了键盘拦截的木马.不过这东西有多大的作用我不太清楚.但是它却是导致为什么网银系统都必须使用IE浏览器才能登录的原因.好在国内windows是免费的,否则要使用网银系统门槛还很高.
上面全是在HTTPS基础上的WEB的一些介绍,虽然HTTPS很强大,但基于卡号和口令的认证方式始终不够安全.因为HTTPS虽是基于PKI体系统一种典型应用.但它只用公钥方式来对服务器的身份进行验证(当访问HTTPS的站点时,双击IE浏览器右下的小黄锁能看到如下验证信息,如果你明白这个,就知道如何防止钓鱼),却没有用公钥方式对客户身份进行验证.所以基于usb key的方式出现了.
如这新闻所述,银行会在用户申请usb key后卖给用户一个U盘样的东西,以后每次登录系统时,必须先插入USB KEY,再输入口令才能登录.那么它存储了什么呢?
根据PKI的体系,USB KEY中应该存储用户数字证书,以及用户的私钥.其中,证书可以导出,但私钥应该是不允许导出的.
数字证书包括用户的公钥,用户信息,以及CA对该公钥和信息的签名;私钥则是加密存储的,解密的密码(也叫PIN)就是传统意义的那个口令!!!
又要说一下PKI中的CA了,否则无法继续.
CA(Certification Authority)即认证中心,只是它是通讯双方都可以信认的(并不是说用户这个人信认这个证书颁发者,而是用户所使用的软件里,认为这颁发者是可信认的).它也有自己的公钥和私钥.在用户获得这个U盘前,它对用户的身份进行核实后,用自己的私钥对用户公钥和信息进行签名,就像盖章了样,表示:"OK,你是我所信任的,这个数字证书就代表你合格."
用户拿到USB KEY后,每次使用网银系统时,先插入这个东西,客户端会要求用户输入口令,以得到真实的私钥.然后,客户端与服务器会进行双方证书的验证,这也就是所谓的双因子认证.其中,银行的证书是双方都信任的CA进行颁发(用CA的公钥验证),而用户的证书是该银行颁发(用银行的公钥验证).这也是为什么这个新闻中提到的有了密码,没有USB KEY也是无法登录的.因为这个密码仅仅是解密真正的私钥的一个PIN而已.
另外,由于公钥系统加解密速度较慢,所以大多数应用中,在经过一系列的认证以后,通讯双方会协商出一个传输密码(只在此次传输中有效),来进行所有的数据传输加解密.也就是说,在真正数据加解密时用的是传统的方式.这个与该新闻无关了.
唉,出了交通解行这事,只能说协议本身是完美的,只是银行的人没搞明白罢了:
根据新闻的描述,应该是交通银行在网上提供了证书下载,这样用户可以通过某种方式验证身份后(新闻中提到是用借记卡卡号、借记卡查询密码和开通网银签约时的协议号)得到这个证书,再导入到USB KEY中.但奇怪的是,用户的私钥呢?要有私钥,才能解密呀?新闻中没有提到.所以也就不得而知了.但是,新闻中提到了说"交通银行给客户提供的只是一个没有安装数字证书及对应私钥的USBKey...".
如果这是真的,那么可以得知,交通银行可以将用户的证书和私钥都放在网上提供给下载,然后拷到所谓的USB KEY(其实就是一个U盘)中去.而新闻中的香港人正是利用了这个漏洞,从网上下载了用户证书和私钥,然后在登录时,通过自己在开户时设定的PIN获得了真正的私钥(前面提到了,我们常说的密码就是这个PIN码而已).
也不知道这个U盘支持usb2.0不,要不用来当普通U盘使有点慢呀.
还要补充一句的是,香港人厉害呀.可怜我的长沙老乡.
写得有点累了,应该好懂吧.如果文中有任何错误,请一定指出来.因为这可能会给学习的人带给误解,以及给使用网银人带来损失.