这是整理于2011年底的一份报告材料。
介绍1.背景
2011年底,国内遭遇网络安全的“崩盘”。从CSDN用户数据被爆库,到天涯用户信息被刷库,到众多社交网站、论坛用户数据被拖库,密码(口令)泄露成为2011年年终中文互联网上非常热门的话题。
在互联网上,需要用到密码的服务几乎无所不在,网银,淘宝,邮箱,人人,facebook, QQ,MSN,微博,博客,linkedin,各种论坛……但我们输入的口令和网站对密码的保管是否安全?这是一个值得我们思考和亟需解决的问题。
本次报告以近期的网络用户数据泄露事件为背景,简要介绍身份认证与密码的几种形式,从普通用户、网站建设与维护者的角度重点分析如何进行密码的设计与管理,并对用户数据泄露事件表达一些看法。
(番外:2011年底的中国互联网真是异彩纷呈,随着CSDN明文密码数据库的外泄,这似乎成了一种潮流,各大网站都开始以数百万,甚至上千万用户为批次,争先恐后泄漏明文方式保存的密码,你要不泄露个百八十万用户的密码,都不好意思说自己的网站受欢迎。)
密码的那些事儿–浅谈密码的设计与管理(2012年1月)
1.背景
1.1 2011年年底国内密码泄露大事记
12月21日:CSDN 640万用户信息(账户、密码、邮箱)遭到泄露(番外:其实在这之前,每隔一段时间,国内很多网站的账号数据库就在黑客资源交流圈子内流传、更新,我最早见到CSDN600万数据是在11月底。CSDN数据的泄露,引发“蝴蝶效应”,国内网络安全的江湖一时腥风血雨,众多黑客竞相公布各大网站的用户信息数据,当然存在炒作的情况)
12月22日:多玩、梦幻西游、天涯、7K7K、人人网用户数据泄露
12月24日:178沦陷、UUU9沦陷,网易土木在线沦陷,数据量惊人
12月25日:北京麒麟网信息科技有限公司泄露百度与PPLive帐户,并且自身帐户信息全部泄露
12月25日:UUU9.COM,178皆被黑客二度拖库;天涯泄露事态升级,4000万用户资料外
12月25日:珍爱网5261302条帐户信息泄露被证实
12月26日:myspace,ispeak泄露帐户信息;178第3次被拖库
12月27日:766验证泄露数据十余万,ys168验证泄露数据三十余万,千脑网盘用户密码数据泄露
12月28日:凡客20万,当当10万,卓越20万用户资料证实泄露
12月28日:太平洋电脑数据泄露,共293 0311用户数据泄露
12月29日:DNSPod证实泄露,52PK泄露数据120万
12月30日:淘宝2200万用户邮箱泄露
以下为这段时间账号泄露情况的统计:
CSDN共计泄露642 8632 个账号,泄漏信息:账号、明文密码、电子邮件;
交友网站:
人人网:共计泄露476 8600 万个账号,泄漏信息:密码、电子邮件
天涯:共计泄露969 5513 万个账号,泄漏信息:账号、明文密码、电子邮件
珍爱网:共计泄露526 1302个账号,泄漏信息:帐户、明文密码
游戏网站:
多玩:共计泄露830 5005 个账号,泄漏信息:账号、MD5加密密码、部分明文密码,电子邮件,多玩昵称;
178.COM:共计泄露1100万个账号,泄漏信息:账号、MD5加密密码、全部明文密码、电子邮件、178昵称
UUU9.COM:共计泄露751 3773 个账号,泄漏信息:账号、MD5加密密码、全部明文密码、电子邮件、U9昵称
网易土木在线:数据约3.3G,泄漏信息:账号、MD5加密密码等
梦幻西游:约1.4G,泄漏信息:账号、邮箱、明文密码、角色名称、所在服务器、最后登陆时间、最后登陆IP
北京麒麟网信息科技有限公司:共计泄露907 2966个账号,泄漏信息:帐户、明文密码
Ispeak.CN:共计泄露168 0271个账号,泄漏信息:帐户、明文密码、昵称
766.COM:共计泄露约12万账号,泄漏信息:帐户、md5密码、salt、电子邮箱、数据库排序ID
ys168:共计泄露约30万账号,泄漏信息:帐户、明文、电子邮箱
购物网站:
当当:共计泄露约10万用户资料,泄漏信息:真实姓名、电子邮件、家庭住址、电话
凡客:共计泄露约20万用户资料,泄漏信息:真实姓名、电子邮件、家庭住址、电话
卓越:共计泄露约20万用户资料,泄漏信息:真实姓名、电子邮件、家庭住址、电话
京东商城:
淘宝: 2200万余邮箱
在互联网上,需要我们输入用户名口令的地方多得都让人记不过来,多个电子邮件账号,QQ, MSN,校内,开心,facebook,Blog,各种论坛,网银,淘宝,电子相册……,而上边这些泄露的信息中就很有可能有自己的。比如我的CSDN,天涯的账号信息就在流传的数据库中。
1.2 密码泄露的影响
可能有人觉得自己又不是名人,又没什么钱,密码泄露没什么危害,但总有你想不到的信息会因此暴露,并产生一系列麻烦。
密码泄露产生的影响有以下几个方面:
1)账号曝光只是最直接、最浅层次的损害。如果是论坛、SNS账号,可能导致身份被假冒用于发布虚假文章;如果是游戏网站,则游戏装备可能被盗取。
2)上亿邮箱账号被公开,这对某些网络营销者、病毒集团来说无异于天上掉馅饼,对被泄露者来说则意味着,将收到更多的垃圾邮件、广告邮件,甚至是木马钓鱼邮件。
3)同一厂商的邮箱一般与多个网络服务账号相通,比如新浪邮箱与新浪微博、新浪博客,Gmail与谷歌文档、Google+等,账号和密码都是相同的,如果邮箱和密码被公开,网民的私信、照片、社交网络也随之被曝光,各种“门”可能会不邀而至。
4)还有不少网民用一个邮箱注册了多家网络服务,甚至通用一个密码,比如用网易邮箱注册团购、淘宝、支付宝等电子商务网站,或者用邮箱接收银行信用卡账单、个人理财、股票交易信息等。由于这些均与银行账户直接关联,账号曝光导致的危害性更高。
5)危害可能还会波及你的亲友。如果恶意攻击者盗用你的邮箱或者SNS账号,给你的亲朋好友发送假冒欺诈信息,比如临时借钱或者网购东西,他们由于对你的信任极有可能上当受骗。
上述的影响大都涉及到基于账号盗取的隐私暴利,黑客一般能按以下步骤进行利用:
1)从账号信息中找到关联的邮箱,破解邮箱的密码。
2)搜刮邮箱里面的重要信件和资料,如网游账号信息、公司资料、个人照片。
3)通过社会工程学搜索,确认哪些邮箱与重要的人物、公司有关联,可以用来做商业犯罪或者发布病毒等。
4)没太大用处的邮箱可以用来广发垃圾邮件和病毒,也可以用来注册大量垃圾账号,广泛用于论坛刷帖等等。
5)黑客把所有密码编成字典,以后盗号可以更快了。
6)隐私信息都可以用于社会工程学攻击,用于制作钓鱼邮件。
以上步骤除了能榨取用户账户内的有限财富外,用户本身的隐私和数据也具有很大的利用价值。下边,我进行上述过程的理想重现(番外:仅为理想再现,并非本人的实际操作,当然其根据来自于本人使用的网络服务实际情况):
1)在获取某人A的天涯账户后,黑客首先尝试关联的网易邮箱,由于A的网易邮箱密码与天涯账户相同,黑客毫不费力进入了邮箱。
2)进入邮箱后,黑客获得A历年来注册人人网、开心网、智联招聘、中华英才网、前程无忧、快钱、百度、百付宝、、京东、新浪微博的确认邮件。其中智联招聘、中华英才网、前程无忧、京东的注册确认邮件中直接显示会员名及密码。其余几个网站除开心网及快钱外均与天涯账户密码相同。但因开心网及快钱密码与京东密码相同,也被猜中,至此以上网站密码全被攻破。
3)通过前程无忧,获知A的QQ号码,真实姓名,身份证信息,收入情况和生日等重要信息。
4)尝试破解QQ号码,尽管A的QQ密码与以上各网站密码完全不同,但黑客依据真实姓名全拼、生日、手机和之前各类密码的组合方式,迅速暴力破解成功。进入QQ邮箱,获得A在豆瓣、淘宝、网易战网的注册确认邮件,暴力破解淘宝及支付宝密码成功。
至此,一个天涯账号的泄密变成了一个自然人从虚拟到现实全方位的泄密,黑客已经从A身上获得的信息可以反复销售数次:虚拟货币的账户卖给专人直接变现;网络游戏的账号卖给专人将虚拟物品变现;个人资料卖给各个推广公司、调研机构(根据性别、年龄、收入、地域可卖给不同行业);私密关系账户可卖给骗子集团牟利(QQ、人人网或朋友网);天涯及微博早年注册的ID可卖给网络水军公司……
1.3 相关词汇解释
1.3.1 身份认证
身份认证是在计算机网络中确认操作者身份的过程。
(1) 根据你所知道的信息来证明你的身份 (What you know ,你知道什么 ) ,比如密码。
(2) 根据你所拥有的东西来证明你的身份 (What you have ,你有什么 ),比如银行卡。
(3) 直接根据独一无二的身体特征来证明你的身份 (Who you are ,你是谁 ) ,比如指纹、面貌等。
在网络世界为了达到更高的身份认证安全性,某些场景会将上面3种挑选2种混合使用,即所谓的双因素认证。 例如,ATM取钱是使用了1与2的你有银行卡,并且你知道密码的双因素认证。
1.3.2 爆库、拖库、刷库、字典、社工库
爆库,通过一些技术手段或者程序漏洞得到目标网站数据库的地址,之后将数据非法下载到本地,并进行(暴力)破解,得到密码明文数据的过程。
拖库:从数据库非法导出数据。很多时候数据库的资料需要导出来在别的地方使用,并且数据库资料可以导出好几种格式。
所谓“刷库”,就是指黑客入侵网站服务器后窃取用户数据库,和爆库、拖库含义差不多。
字典,全称是口令字典,黑客认为网络用户经常使用的一些密码,以及以前通过各种手段所获取的密码,放到一起的集合,破解密码时会自动逐一使用集合中的密码进行探测。
社工库是从网站用户泄露信息整理出来的海量数据库,其当前的账号数量在数亿级别,也就是说有数亿个用户账号在黑客手上,这算是一个新词汇,见下图:
1.3.3 密码
密码,英文Password,或称为口令,是指认证用途的字符串,可用来验证身份或检查一项操作的许可,达到保护隐私以及防止未经授权的操作目的。常见于网站登录、对资料数据的存取、自动取款机的验证。
它使用身份认证中的 what you know机制。
2.密码的设计与管理
密码的设计与管理既是用户个人的事情,也与网站的建设和维护者有很大关系。下边就从个人与网站两个角度来谈谈密码的设计与管理。
2.1 个人的密码设计与管理
对于个人而言,密码的设计主要是解决弱口令问题(防止被人恶意猜解),密码管理是在一定程度上消除密码泄露。
对密码的设计和管理要从安全性和方便操作性两方面来看“密码简单的话虽然方便但不安全,太复杂的密码又使用麻烦。事实上,即使是普通青年,也未必能像某些“装逼青年”一样对自己的每个账号都生成一个复杂度够高而且不重复的密码并且使用各种匪夷所思的办法记住它们,更别说普通的大众用户了,所以,需要在密码安全和使用方便之间找到一个合理的平衡点。
2.1.1 主要步骤
首先,(对密码重要程度分级)对需要使用密码的服务进行安全需求的分级,级别越高的应该使用越复杂的密码。(政策或法规在密码分级方面的要求:信息系统安全等级保护,或者是分级保护都涉及到密码分级-其主要是从密码的位数(8位到10位),字符组合复杂度(大小写字母,数字和可见特殊字符组成),密码更换周期(一星期,半个月,一个月)方面来分级的)
其次,根据得出的密码安全需求级别,设计只有自己才清楚的“算法”。
《逍遥法外》中的Frank Abagnale 推荐说喜欢用街道地址做密码,选对自己特别有意义但一般人很难知晓的事件发生地,比如初次约会的地方。每个人都应该有自己的一套密码设计算法,大家不应雷同,不然社会工程学黑客就可用大家通用的算法去破解密码了。
然后,对产生的多个密码进行管理。对复杂密码的设计与管理有两种方式,一种是对密码进行某种规律的编码,只需在大脑中保存密码。另一种是用软件或者硬件帮助记忆。
我目前的做法是,把复杂的密码保存在一个电子文档中,该文档加密保存在本地,同时上传到google文档服务器中加密。就算有黑客破解密码进入这个文档,也看不懂表示的是什么。因为是使用了“隐语”来表示密码。
2.1.2 密码分级与设计
绝密级别:
银行密码,在线支付如网银、支付宝、Paypal等涉及财产的账号信息。
这个级别的密码,除非有限制,不然最小要有11位,不包含账户名、真实姓名或公司名称(特别是那些自己容易在网上泄露的实际信息),不包含完整单词,由大小写字母,数字,特殊符号两种以上的组合。我实际使用中的密码位数下限是15位,一个最复杂的密码使用了17位。
这个级别的尽量使用二次验证,例如绑定工行的U盾,或者使用手机。每次登录都要验证其它的一个,,这就从物理层面切掉被盗用的可能。
绝密级密码尽量做到三个月换一次。
机密级别:
工作邮箱,关系链账号(亲朋好友或同事最认可的账号如QQ,MSN,飞信或微信,人人,开心网,linkdedin的账号信息)。这个级别的密码,肯定有密保问题,一种做法是对密保问题使用乱码回答,截图加密保存到gmail中,以防止黑客使用社会工程学的方法破解。
秘密级别:
非工作邮箱,豆瓣、BBS、微博,知乎、技术论坛之类账号。这个级别最少要8位以上,以实现抗穷举式的密码破解。
普通级别:
临时使用的网络账号,如为了下载一个附件而注册的论坛账号。这可以使用一个非常容易记忆的弱口令,如prettygood, 可以是万年不换的。但这个级别的用户名绝不能与上边三个级别的相同。
2.1.3 一个“算法”例子
(大家可以自己用笔写一下,用类似的算法设计出一个较复杂的密码)
1)取一个8字母的英文单词,比如 CONGRATS(关键词)
2)将第一次出现的下述字母进行替换
i – !
a-@
s – 5
u – 1_1
S-$
A-4
I-1
E-3
O-0
因此, CONGRATS变为 C0NGR4T$
3)加上根据网站名生成的密文:比如sina的元音字母在2、4位,得到24 ,然后辅音在1、3位,得到13 。将其中的奇数转为该数字在键盘上对应的符号,得到!2#3.
此时密码变成了 C0NGR4T$!2#4
4)奇数位小写,偶数位大写:c0nGr4t$!2#4
其中根据网站名生成的密文,可以有很多种变通,如取网站域名部分第1,3个和末尾的字符(不足以0代替);或者把网站的一句宣传语加入,如天涯的“全球华人网上家园”:(Qqhrwsjy),有些网友更搞笑:
“’ppnn13%dkstFeb.1st’就是表示‘娉娉袅袅十三余,豆蔻梢头二月初’,Tree_0f0=sprintf(“2_Bird_ff0/a”)这个密码表示‘两个黄鹂鸣翠柳’,‘池上碧苔三四点,叶底黄鹂一两声’对应的密码是‘csbt33.ydhl12s ’”
不过,这种基于自己算法生成的密码有一个问题是,当多个网站密码泄漏后,通过对比不同网站的密码很可能反推出算法。因此要保证即使别人得到你一个地方的密码,也猜不出其它地方的密码。
2.1.4 基于软件的密码生成与管理
这种做法的主要思想是:为每个不同的服务使用不同的随机密码,个人只需记住密码管理器的主密码,其它工作由本地机器或服务器完成。下边推荐两款密码管理工具。
本地密码管理器Keep Pass :
其优点是:免费开源软件,绿色无需安装。支持高级加密标准(AES,Rijndael算法)和Two fish的加密算法。内置强大的密码生成器,可以方便地生成一些高复杂度的密码。支持多平台和密码数据同步:例如Linux、Mac、iPhone、Android等。
类似的本地密码管理软件还有RoboForm。
基于网络的密码管理器Lastpass:
其优点是:免费使用。提供强大的生成随机密码的功能。提供多种多因素身份验证方法的支持,如USBkey,闪存盘、指纹识别设备。 只需记住1个主密码,就可以登录所有的使用服务的网站。跨平台、跨浏览器。
但Last Pass的服务器被入侵过,它与keep pass都使用同步工具把密码信息放到云中,受攻击的目标明显,同步服务器均很可能被黑客集中的攻击。
国内类似的密码管理器有花密网站(见下图):
其原理是javascript在本地浏览器根据用户输入的关键密码与代号计算出密码,这些信息不会在网络上传输。但其服务器同样易受入侵,可能会被植入窃取信息的木马。前几天使用时,就报过毒。
2.1.5 密码设计与管理的几大补充原则:
1.不使用常见的禁用口令:
上图是西方版的“弱密码”,通过分析2011年底国内泄露的数据库信息,安全专家发现其中“弱密码”重复率高达93%,进而得到中国版的“弱密码”(图):
我们可以从泄露的CSDN用户密码设计得到借鉴(可以肯定的是会有黑客从泄露的密码中进行统计,制作口令字典,所以我们尽量不用这里边的高频率口令。)
对泄露的CSDN用户密码设计的统计:
1)有近45万的用户使用 123456789 和 12345678 做口令。
2)有近40万的用户使用自己的生日做口令。(形如19771019)
3)有近15万的用户使用自己的手机号做口令。
4)有近25万的用户使用自己的QQ号做口令。
5)设置成弱口令的用户占了590万,也就是那种就算用MD5或是SHA散列成哈希也能很快就被暴力破解出来的口令。
6)只有8000多个用户的口令里在8个长度以上,并有大写字母,小写字母,数字,并不在常见的口令字典表里。
2.从黑客的口令破解字典设计来看口令的几个禁用原则:
密码为用户名中的某几个邻近的数字或字母,密码为连续或相同的数字或字母,使用生日作密码,使用常用英文单词作为密码,使用8位以下的数字作为密码。
(例子:23456789、1111111、abcdefg、jjjjjjj;考虑到年月日共有六种排列顺序,一共也只有74400×6=446400种;由于数字只有10个,8位数字组成方式只有10的8次方=100,000,000种)
3.不要使用同样的用户名去在不同网站注册,并做到密码各不相同。很多网站支持邮箱登录,而且并不会在网站上显示你的邮箱地址,所以使用同一邮箱,但绝不使用同一账户名称。
4.及时对操作系统进行安全查杀,防止被木马窃取密码。
5.防止社会工程学攻击:防止偷窥,警惕钓鱼网站,严禁把密码写在显眼的地方。
7.密码中不要使用任何社会工程学信息:如家庭成员的姓名、汽车牌照、电话号码、QQ号、生日、身份证号、地址。
附一个查看密码复杂度的网站:
http://howsecureismypassword.net/
注:1,000,000,000,000,000 (one quadrillion) (1千万亿,或1千兆,或0.1京)
2.2 网站(网络服务提供商)对用户的密码管理
个人的密码设计与管理只能解决弱口令和一定程度上的密码保管问题,但若网站对用户的密码管理不安全,也是白搭。下边是对于网站建设与维护者的密码管理建议:
2.2.1. 限制用户输入易被破解的口令即使用口令黑名单
(图:twitter的口令黑名单),通过正则表达式限制用户口令的长度,字符组合的复杂度。(当然还要保持用户的适度体验度,以免用户反感)
2.2.2. 绝对不保存用户的明文口令
明文保存的话,万一密码数据被窃取或失误外传,用户隐私等信息暴露无遗。所以保存下来的一定是加密后的口令,使用不可逆的哈希加密,推荐使用SHA512+SALT,以防止利用彩虹表之类技术的破解。
SHA512+SALT加密的说明:要安全,加点盐——不是碘盐,而是随机盐。 当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列,把密码处理成512位的字符串。而当用户登录时,系统为用户提供的密码撒上同样的“佐料”,然后散列,再比较散列值,以确定密码是否正确。这里边的“撒盐”salting机制,可以自己定义,添加append或异或xor,只要能改变输入值就可以 。 例子:
用户名:zane 密码:20120110
明文密码进行第一次 SHA512计算,得到:
42010242e8ea0b639f45ef961805403fb46e675f3a91dae09cd534b8368ecc30dcff30157a6f3f1c72e04f80f63473ea387182b3e3e6371cad7e49af7b0d114b
指定两个 salt: salt1 = @#$% salt2 = ^&*()
salt1+用户名+salt2+SHA512,得到:
@#$%zane^&*()42010242e8ea0b639f45ef961805403fb46e675f3a91dae09cd534b8368ecc30dcff30157a6f3f1c72e04f80f63473ea387182b3e3e6371cad7e49af7b0d114b
对新字符串再计算一次 SHA512计算,得到最终的加密串:
9001fa70c68bad9b7c863cff4013be58dea2ca26e1ba8b5c0be503d225719c969779560c119259620567afc16666c87d83d6aece31d8ec9aab730100ff4b85e9
该加密串保存在数据库中,最开始的20120110密码则不保存
但事实上,目前互联网上的站点存在以下四种存放用户名和密码的方式:
1)明文存放。这种网站的用户数据特别危险,网站被黑客拿下,用户数据直接拿走。
2)可逆加密存放。用户的密码会被可逆的加密一次后存放在网站的数据库中,可逆加密也是非常危险的。
3)不可逆加密。例如密码通过MD5等不可逆加密算法加密后存放在网站数据库中,比上述两种密码加密方式安全。(如果md5加密后的密码泄漏,明文密码仍有通过后边介绍的彩虹表技术查出来的可能)。
4)明文添加随机值后的不可逆加密。例子是上述的 SHA512+salt,这种加密的安全性比第3种又提高了很多。
最近很火的用户访问量最大的“官方电商”铁道部订票网站12306.cn的服务器是明文保存语音查询密码的(图):
CSDN、人人网泄露的数据表明其保存明文密码的(至少在数据泄露之前是),最近又暴出新浪微博也保存明文(见图),2011年底泄露了密码数据的178,多玩则并未保存明文密码,而是黑客获取哈希后用彩虹表之类的技术破解出来的,因为泄露的数据中存在不少未被破解的哈希字符串。
2.2.3 根据服务的安全要求决定是否在浏览器中保存口令
建议是不要在浏览器中保存用户密码明文也不要在cookie中保存加密后的密码,因为这些信息容易被黑客通过网页木马之类获取进行离线破解。可以在网站显眼位置提醒用户。
2.2.4对口令进行加密传输
1)使用专用的登录加密算法:
例如新浪微博的登录就使用了加密,在网络上传输的口令与从新浪服务器获取的服务器时间servertime及随机字符串nonce有关,使用特定的登录加密函数(如下图):
2)使用HTTPS协议,而不是HTTP这样的明文协议进行网站数据传送,虽然会增加服务器的负载。
现在(2012年初),还有些大型网站登录过程非常不专业,密码在网上是明文传输。
例如人人网(renren.com,20111230测试结果),CSDN,12306火车订票网:
国内外一些著名网站的密码传输方式统计:
某些研究所的邮箱登录时有SSL登录的选项,但却不是默认的,也不是https加密传输,这也带来了安全隐患。
2.2.5对用户忘记密码的处理
不要提供找回原来的密码功能,用户一旦忘记密码后,提供的应该是密码重置服务,用户申请找回口令时,系统生成一个哈希值唯一的随机字符串,然后给用户发送包含该哈希字符串的链接,用户在指定的时间期限内点击它以重设新口令。此外,可以使用多重认证形式以找回或重设密码:手机+邮件,U盾,动态口令牌等。
(“找回密码”是一个关键的邮箱安全设置,很多黑客破解邮箱是通过“找回密码”进行破解的,因此如何设置“找回密码”的安全问题是一个很重要的环节。)
禁用找回密码的不安全提问甚至不提供通过提问的方式来找回密码:
“找回密码”中不安全的问题,主要有“你的生日?”(用户会在其他社交网站录入自己的生日);“你的姓名?”(熟悉用户的人都知道其姓名);“你的出生地?”(通过身份证号码可以算出出生地);“你的手机号码?”(太多的地方容易泄漏手机号码)等等。
2.2.6密码探测防护
对可疑登录要求填写验证码(CAPTCHA,“Completely Automated Public Turing test to tell Computers and Humans Apart”,全自动区分计算机和人类的图灵测试),验证码是计算机很难识别内容的图片。这种方式能比较好的防止以程序的方式来自动尝试用户的口令。限制口令失败次数,比如密码错误三次后禁止登录一小时。
2.2.7 防止内部员工直接接触密码数据库
开发团队不允许直接操作用户数据库,只允许通过安全的接口来验证用户,应该对操作者有审计功能等等。
2.2.8 使用成熟的第三方账户管理机制
例如如OAuth,OpenID:用户不需要自己维护和管理一个新的账号,中小网站的用户登录时,接入大平台的用户认证,这样就减少了许多不必要的密码。当然,前提是这个大平台自身对密码的管理足够安全。
OpenID是用户认证(即用户是谁,谁发的贴子和评论),OAuth是授权认证(用户能做什么,比OpenID给予的资源更多)。目前Google,Microsoft,Facebook,Yahoo,Flickr,AOL等都支持OpenID与OAuth服务。国内很多网站都混用了这两种机制,比如新浪。由于时间关系,这里不再详细介绍。
2.2.9. 其它(不专用于密码管理防护的技术)
对网站数据库加密保护;及时对网站进行漏洞检测, 包括后门和注入类的扫描;对网站挂马进行实时监控。
(CSDN创建人蒋涛在1月6日公布的第三方安全公司的审计结果:CSDN密码泄漏的原因主要有三点:“开源CMS系统等第三方系统存在漏洞,导致CSDN系统存在安全风险;应用程序存在跨站脚本漏洞;网站存在大量系统后台认证漏洞,如弱口令及暴露的后台等;CSDN已经停用但还在线上的老系统。”前两点就属于这一方面。)
3.其它
3.1对网站为什么存储明文的猜测
应付互联网审查与监管;
系统开发前期为减少工作量而使用明文密码;
升级系统时为兼容考虑未解决明文问题;
收集用户隐私的需要(灰色途径)
3.2对网络实名制的启示
在世界上唯一实行“互联网实名制”的韩国,所有大网站都要求用户用真实姓名和身份证号码进行注册。2011年7月,韩国三大门户网站之一Nate和社交网站赛我网遭到黑客攻击,约3500万名用户信息外泄。此次个人信息泄露案件远超过2008年电子商务网站Auction的1800万名用户信息外泄,成为韩国IT史上最大规模的黑客攻击。此后,为了减少在因特网上非法搜集个人信息的行为,韩国政府决定分阶段废除因特网实名制。同年11月,韩国NEXON旗下网络游戏“冒险岛”的1320万用户数据遭黑客攻击,泄露数据包括玩家注册号、密码、真实姓名和身份证号码。自“互联网实名制”实行到2011年为止,韩国网站的个人信息外泄事件涉及到的用户数量约为1.2亿,而韩国互联网用户只有3800万人,可以说几乎所有韩国互联网用户的个人信息都被外泄过。这些事件更加强了民众反对互联网实名制的呼声。
阴谋论:2009年11月,包括赛门铁克在内的国际知名安全厂商的用户明文密码数据被泄露,之后国内安全厂商开始只保存加密的密码,但此前的密码机制仍有遗留。2011年底泄露的数据可能在2009年底就在安全的圈子内流传了,并且在地下有所交易,现在放出,是为了抵制网络实名制。
这次泄露,让人对网络实名制产生了有依据的怀疑,抵制。以微博为例,如果实行实名制,一旦发生客户资料泄露,特别是认证用户中的政界商界人士及明星们的损失不是运营商们随便赔得起的。若坚持实行实名制,部分认证用户考虑到资料泄密的后果可能退出,现阶段微博靠名人吸引用户的战略将无法再实行下去。
在一定程度上说,只有网站不保存像身份证号等能吸引黑客的重要信息,才能减少由黑客引起的个人信息外泄事件。而目前的网络实名制是需要提供这些重要信息的,所以,从信息安全的角度来看,个人不赞同网络实名制。
3.3密码的破解
1)彩虹表技术:
目前流行的密码破解都使用了彩虹表技术,彩虹表的全称是彩虹哈希表 ,其根本原理是通过庞大的、针对各种可能的字母组合预先计算出哈希值,组合暴力法和查表法,在这两者之中取得一个折中,用可以承受的时间和存储空间查找要破解的口令哈希对应的密码。
我使用的一个彩虹表(tables_xp_fast)可以在11分钟内破解所有可能14位数字字母密码组合中的99.9%,这还是用了最小的彩虹表。表越大、越全,攻击破解能力越强。而且,目前使用不同哈希算法(MD5, SHA1, SHA256, SHA512, SHA-3)的彩虹表还处于不断的增长与优化中。
网上有CMD5碰撞库,就是从密码哈希后的值反查原文:
2)对加盐值的哈希破解
像windows hash(未进行syskey加密)、非加盐值MD5等都可以通过大型的密码表(如彩虹表)进行对比解密,所以相对而言相当的轻松,而带有加盐值的密文就相对而言复杂的多,现在的MD5表大小达上百G,而如何加盐值的可能性有10000个,那么密码表的应该是MD5 size*10000,就可以解密出原MD5表能够解密的密码了,一些网站也提供了对应的salt解密,但是测试以后效果并不是非常好,如上述的CMD5网站。
3.4 密码的未来进化
密码的未来进化趋势是核心授权体系。用户向某个网站验证身份,只需要向身份验证商验证,剩下自动完成。现在的OpenID就是一种解决方案。同时,实体交互和授权的精细划分也是一个趋势。某个网站访问别的网站的数据的时候,会形成一个访问令牌。这个令牌对需要访问的内容详细写明,并且需要用户授权。OAuth,openID是这个趋势的代表。
另外一个趋势是利用某个足够安全的设备作为以上两者的终端载体。目前这个设备用的是手机,但手机不是一个足够安全的设备。也许这会是下一个XX门的隐患吧。
3.5开放思考
CSDN密码泄露事件之后,云储存的账号和资料是否会遭受更多的怀疑?这个供大家讨论。
4.结语
(淘宝体)当你畅游在网络世界,是密码,为你遮风挡雨、为你捍卫隐私、为你默默付出从不言悔。你真的了解自己的密码么?当你用暗恋的菇凉男纸的姓名来规范它的时候、当你随随便便用123456789来敷衍它的时候,有考虑过密码的感受么?!不要在失去以后才知道后悔,趁现在还来得及,爱惜它、保护它,正视你对密码的情意吧!亲!
(诗句仿用)问世间情为何物,只让人想改密码;两情若是久长时,又岂在一段密码;借问酒家何处有,遥看密码挂前端;西湖柳,西湖柳,没有密码怎么走。
5.参考文献
[1] Atul Kahate,邱仲潘等译.密码学与网络安全[M].北京:清华大学出版社, 2006
[2]Mark Burnett . Perfect password: selection, protection, authentication. Syngress,2005
[3]Joey_in . 普通青年互联网账号密码设置不完全指南
[EB/OL]. http://www.unclejoey.com/?p=538
[4]stackexchange . 密码设置讨论.
[EB/OL].http://security.stackexchange.com/questions/6095/xkcd-936-short-complex-password-or-long-dictionary-passphrase
[5]陈皓 . CSDN密码泄露的启示[EB/OL]. http://coolshell.cn/articles/6193.html
[6]知乎.如何管理好自己的密码?[EB/OL].http://www.zhihu.com/question/19695004
本报告PPT可于 http://1.johnhome.sinaapp.com/?p=458 下载