“明文密码”,顾名思义是传输或保存为明文的密码,翻译自英文的Cleartext Password。从信息安全的角度出发,任何网络服务都不应该保存或发送明文密码。但今天仍有很多网站,包括一些大家耳熟能详的收费服务,还留有这类一旦被攻击者入侵就会酿成灾难的安全隐患。
于是就有了Plain Text Offenders这个网站,专门收集那些“会给忘记密码的用户发送明文密码邮件”的博客——这代表着您的密码在服务器上并没有被哈希函数加密后才储存(一个理想的cryptographic hash function,所有hashing都应该是单向且不可逆的)。
目前看到的几大受影响服务——
- rapidshare.com,文件分享服务
- justgiving.com,网络筹款服务
- thepiratebay.com,BT索引网站
- tesco.co.uk(乐购)英国,大型连锁商店的网店
- hmv.com,大型音像连锁商店的网店
- newegg.com,新蛋美国(中国的系统没试过不清楚)
- yesasia.com,网购服务
- myspace.com,败在Facebook手下的Web 1.0社交服务
- prometric.com,考试评测管理服务,客户包括ETS(也就是GRE),微软,IBM等等
- nature.com,《自然》科学期刊的论文提交系统
- strongvpn.com,VPN服务
- guardian.co.uk,英国卫报官网
- Sony Ericsson官网(好在PS3 Network不是明文密码)
- Dreamhost,1and1两家网站托管服务
- T-mobile,O2,Virgin,Vodafone四家电信公司
- etc.
正确的做法是对密码进行salting并强哈希加密之后再存储(salting的理由是防止hash字典攻击),同时只允许用户“重置密码”而不是返回明文密码。
PS: 该网站开发者混淆了Cleartext与Plaintext的区别:Cleartext指传输或保存为明文的信息;Plaintext指输入加密函数前的信息。例如“选择明文攻击”是Chosen Plaintext Attack而不是Chosen Cleartext Attack。
值得注意的还有另外一种Cleartext密码储存——那种需要你提供其他服务密码的服务。
例如ifttt到tumblr的sync就是用cleartext用户名+密码的,一旦他们的数据库被入侵,你的tumblr帐号也不保了。
Mark…………
第四号密码亮了…
我实习的这个地方外包的米国前几个大retailer全都是明文,处理用户问题直接去数据库里拿人家密码登录了看……实习生就有所有read权限 反映了几次也没人在意,哎 让他们自生自灭吧……
正确的方法不仅仅是盐化,而是使用bcrypt。