我原先以为微软和Google在用户帐号安全上应该是专家,看来我又看走眼了,因为凑巧看到一款黑客工具MessenPass,可以直接显示本地MSN和Gtalk等聊天工具的密码,由此可以直接破解用户Hotmail和Gmail的密码,这显示MSN和Gtalk的本地存放密码的方式存在严重漏洞。
MSN和Gtalk最为严重的错误,就是将用户的密码保存在本地,即使使用了对称或者不对称加密算法对密码进行了加密,但最终登录的时候,还是会解密密码并发送给服务器端,这个错误导致了黑客只需要将这个木马上传到用户电脑上,运行后就可以窃取用户的Hotmail和Gmail的密码。
真正安全的密码存放方式其实很简单,就是不要存放原始密码到本地电脑,而是存放密码+用户+安全码的散列值(Hash值)到用户本地,就可以解决这个安全问题。不直接使用密码的散列值,而是使用这三个参数之和的散列值,是为了防止相同的密码出现相同散列值被人猜测,加入安全码可以增加破解难度,黑客需要先破解安全码,使用散列算法(如MD5或SHA1等)是因为散列算法是单向不可逆的,黑客即使得到散列数值,也不可能反算出用户的密码。
这样,现在的登录方式,就可以修改为,MSN和Gtalk保存用户名和三个参数之和的散列值,登录时候传输这些参数到服务器,服务器端判断登录类型,如果是散列值登录,则将用户传送过来的用户名和散列值,与服务器端保存的用户名密码等参数算出来的散列值进行比较,如果相同则表示可以登录,不同则表示密码错误,不能登录。
当然,此方法只是最基本的实现安全登录的方法,更详细的安全登录方法请参见我另一篇文章《网站的安全登录认证设计》。
我以前一直以为微软和Google这些网络巨头在应用程序的安全性上应该是不错的,没想到竟然会在用户密码上存在这么严重的缺陷和漏洞,看来国外的产品也不可靠啊。这其中最主要的原因,我看是国外的整体网络发展较为健康,没有那种黑客生存的产业链,而在中国国内,黑客木马程序的开发和销售、盗取网络游戏帐号和QQ帐号、销售游戏帐号和QQ币等早已经发展成为一种分工明确的“地下产业”,早期已经令中国各大网络公司头痛不已,纷纷推出相应的安全解决方案,所以国内相关的网络软件,登录密码早就不存在这种缺陷漏洞了。
对于Google来说,解决这个缺陷漏洞尤为紧迫,因为Gtalk帐号就是Google帐号,可以直接登录用户的AdWords和AdSense,操纵用户的财务信息,甚至将用户帐号下的金额转账给他人,这对于使用Google这些业务的用户来说实在是一个严重的威胁,如果不尽快解决,后果堪忧。对于当前使用MSN和Gtalk的用户,建议不要设置自动登录,而是设置为每次手动输入密码登录。