科技 2024-04-27 06:01

密码强度,指一个密码对抗猜测或是暴力破解的有效程度。一般来说,指一个未授权的访问者得到正确密码的平均尝试次数。密码的强度和其长度、复杂度及不可预测度有关。强密码可以降低安全漏洞的整体风险,但并不能降低采取其他安全措施的需要。

攻击者提交猜测密码的速率是衡量一个系统安全性的重要因素。有的系统在多次尝试失败后会暂停登录一段时间,在没有其他安全缺陷时,这种系统可以用相对简单的密码保护。但是系统必须以某种形式存储用户密码,当这些数据被窃取时,就有极大的危险。

创建密码

密码可以被自动(使用随机方式)或人为创建出来,后一种更为常见。暴力破解随机密码的强度可以精确计算,而计算人类产生的密码强度是比较难的。一般而言,人在创建一个新账户时都被要求输入密码。因为一般人创建密码时都会有某种固定模式,粗略地估计这种密码的强度是可能的,而掌握这些模式就可以方便攻击者进行破解。

另外,密码破解器经常从常用密码表中选取密码,这些密码表包含各种人类语言的词典、许多被窃取数据库中的商业或社交账户的明文或散列密码,与其他常见的密码。因此,所有在表上的或与其相似的密码都被认为是弱密码。数十年来,对多用户计算机系统的密码调查表明,40%甚至更多密码使用计算机程序就可以破解出来[来源请求],并且当某个账户已被侵入时更加容易。

密码验证

使用密码进行身份认证的系统都一定有一套验证输入密码的机制,如果这些密码只是简单地以明文存储在系统上,一个拥有足够权限的攻击者就可以获取在系统上存储的所有用户名和密码,使得整个系统向攻击者敞开,甚至会危及其他使用同样或相似的密码的系统。一个减少危险的办法就是用密码散列函数加密密码。诸如SHA的函数是很难由散列值算出原文的,一定程度上防范了攻击。然而攻击者可以用碰撞的方法猜测明文,如今的密码破解程序也可以通过暴力破解的方式从散列值找出明文密码。

日益进步的计算机科学也加快了测试密码的速度。2007年8月,Elcomsoft公司发明了使用普通的绘图卡反向计算密码的技术并开始使用,随后在美国申请了专利。2010年,乔治亚技术研究所使用GPGPU使得破解密码的速度提升。2011年,商业产品也宣称他们可以在一台普通的台式机上使用高阶的GPU来每秒测试高达2,800,000,000个密码,这样的设备可以在一天之内破解一个由10个字母组成的密码。并且可以并行在多台计算机上进行处理来提高速度。

改变常见散列的算法可以相对地增加一些计算的时间,但并未广泛采用。

弱密码

弱密码是易于猜测的密码,主要有以下几种:

  1. 顺序或重复的字符:“12345678”、“111111”、“abcdefg”、“asdf”、“qwer”键盘上的相邻字母。
  2. 使用数字或符号的仅外观类似替换,例如使用数字“1”、“0”替换英文字母“i”、“O”,字符“@”替换字母“a”等。
  3. 登录名的一部分:密码为登录名的一部分或完全和登录名相同。
  4. 常用的单词:如自己和熟人的名字及其缩写,常用的单词及其缩写、宠物的名字等。
  5. 常用数字:比如自己或熟人的生日、证件编号等,以及这些数字与名字、称号等字母的简单组合。

下面是一些常见的弱密码:

  • admin —— 太容易猜出
  • 123 —— 同上
  • abcde —— 同上
  • abc123 —— 同上
  • 123456 —— 由于文化因素极其常用
  • 1234 —— 同上
  • 888888 —— 同上
  • 1234567890 —— 同上
  • susan —— 常见人名
  • DonaldJTrump —— 高知名度人物
  • monkey —— 常见动物名且正好六位
  • password —— 经常被使用,极易猜出
  • p@$$\/\/0rd —— 简单的字母替换,易被软件破译
  • rover —— 宠物的常用名称,也是一个单词
  • 12/3/75 —— 日期
  • nbusr123 —— 可能是用户名,如果是这样的话很容易被猜出
  • asdf —— 常用键盘的键排列
  • qwerty —— 常用键盘的键排列
  • aaaaa —— 重复的字母,极易被破解
  • administrator ——太容易猜出

以上仅枚举了极少部分弱密码。

一家美国公司SplashData曾经总结出2011年最弱的25个密码,部分已列于上方。而像let me in这样的密码由于属于常见词组,很容易被破译。据统计,3.8%的密码是字典里的单词,12%的密码是单词加一个数字,其中2/3的机会密码是数字1。

很多用户不更换默认密码,而大部分计算机系统的默认密码可以在网络上找到,极易被破解。如果用户使用个人信息(例如学号、朋友的名字、熟人的生日、电话号码或驾驶执照号码等)作为密码,那么密码便会很容易被破解,因为如今很多个人信息都可以在网络上找到。

太短的密码,虽然容易输入,但是也很容易被攻破。

强密码

一个强密码通常长度足够长,排列随机,这样就需要花很多时间才能够破解。下面是强密码的一些例子(由于以下实例已经公开,所以已经不具备安全性,只作为说明例子):

  • t3MEIfreryeT45410A ——不是字典的单词,既有数字也有字母
  • w2M1gD1cxJhs5UH4pQh1EgjOU9yWYRkk ——同上
  • Convert_100£ to Euros! ——足够长,并且有扩展符号增加强度
  • *ot$fet÷×’Fr54⅛9&%u ——含键盘上没有的字符
  • 9fad37a6aab5912dfa273521d11e0175fa0e8c95 ——随机字符串
  • aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbccdeertttteferwrwerewrwererewreew ——很长的字符串几乎不可能在短时间之内被破解
  • hellomicrosoftwikiwikipediaandadminadmintestactioneditsection ——同上
  • RBDeT9hqRfS9gw9bEXmRhBrkkgCs2NMfpzWfQXfN3MPZW25wSsHWEsbexVpYtsWs ——同上
  • ru0 ej03m06vm03rm3vu04u3d9 g3fu/32u03h3w.6qul4 ——同上,对于两者之间使用不同输入法的人极难以破解
  • correcthorsebatterystaple——够长且无意义的句子或单词组合

上面列出的强密码的例子的共同特点是相对较长,使用大小写字母、数字和符号的组合。密码越长,使用的符号种类越多,就越难破解。值得注意的是,有些系统不支持例如:“#”、“@”和“!”等等符号作为密码中的字符,因为这些字符可能在有些键盘很难找到。在这种情况下,增加其它的数字或字母可以达到同样的安全效果。

一个10位长的随机密码,比如“BpR#e!ai@$”,虽然强度远弱于上面列出的密码,但由于常用键一共为95个,因此有 criptlevel="0"> 95 10 {\displaystyle 95^{10}} 种组合,是不可能在短时间内通过全部列举来破译的。

目前的密码建议为:即使没有使用大小写字母或加入其他符号,只要密码够长,使用一些无意义但便于记忆的句子或单词组合也足够安全。例如上例的“correcthorsebatterystaple”就是由四个英文单词组成。

国家标准技术研究所改正建议

2017年6月,国家标准技术研究所(NIST)发布新的《800-63》指引第三版,改正已沿用超过十年、受各大政府机构、银行、业界采用的旧建议,不再强调使用人脑难以记忆的特别符号、数字的无意义组合,而且亦不再建议密码需每九十日汰换,因为经研究证明此项指引并没有对系统安全带来有益的效果。NIST文件的旧版原作者伯尔(Bill Burr)并在《华尔街日报》访问中公开道歉,称当时他并无得到可靠的数据作严谨研究,只依靠来自八十年代、不合时宜的旧文件作为参考,而他的建议亦没有考虑到一般人的生活习惯及思考模式。负责撰写新版指引的NIST顾问格拉西(Paul Grassi)指出,旧的要求不利使用,对抵挡黑客攻击的作用不大;如果用户能够在脑海中构想出一幅其他人无法想像的图画,以此作为密码便是最好的,一句够长的完整句子,会优于较短的字母、数字及符号混合密码。华尔街日报引用广泛流传的xkcd漫画,指出只要密码够长,拼合几个看似无意义、但便于该用户记忆的字词作为密码,更能有效抵挡黑客攻击,暴力破解会需要更久的时间。

保护用户密码

通常,计算机用户被建议“不要在任何地方因任何原因写下密码”或“不要在不同的帐号使用同一个密码”。实际上,一个计算机用户通常有十几个受密码保护的帐号,并使用同一个密码。而那些试图使用不同密码的用户往往由于密码太多,而记不清哪个帐户和哪个密码相对应。2005年的一次安全会议上,来自微软的一个专家提出:“我认为密码策略应改为你可以写下你的密码。我有68个不同的密码,如果我不允许将他们写下来,我将怎么办?我不得不使用同样的密码”。比较好且实际的建议是在一个低安全性的帐号(如bbs)使用简单的密码,在高安全性的程序(例如:网络银行)使用强密码。

一旦密码被写下来,用户不能将它放在一些明显的地方,如通信录,抽屉等。最糟糕可能也是最常见的情况是密码被写在一张便条纸上,放在计算机附近。比较安全的做法是放在保险箱里。

亦可使用密码管理器管理密码。