合规的密码设置就一定安全吗?
作者: 日期:2014年01月10日 阅:3,872

Password-Security

由于企业对安全越来越重视以及安全意识的普及, 很多系统管理员都意识到密码长度和复杂性的重要。 根据很多安全法规, 比如支付卡行业数据安全标准PCI-DSS里就要求密码设置必须有最小长度和复杂度的要求。 绝大多数的系统管理员也确实是按照这个来做的。 不过, 有很多系统尽管密码设置是合规的, 却还是让黑客通过密码猜解的方式进入了系统。

安全渗透专家Jonathan Lampe最近通过一个商业站点的登录漏洞, 分析了其中的5000个最终用户设置的密码。 这些密码全部都符合PCI-DSS标准。 , 实际上, 所有的这些密码都超过了PCI-DSS的最低要求(超过7位, 包括了数字和字母), 这些密码至少都是8位, 所有的密码都包括至少一个大写字母, 一个小写字母, 一个数字。 很多密码还包括了特殊字符。(在笔者所见到的商业网站的密码要求里, 这已经是相当高的了)。

Jonathan Lampe对这些密码进行了分析, 下面是一些分析的结果

密码长度

61%的密码为8位到9位。 平均密码长度为9.6位。 平均每个密码包括了1.1个大写字符, 6.1个小写字符, 2.2个数字以及0.2个特殊字符。

密码复杂度

如果采用大写字符, 绝大多数用户(86%)只采用1个大写字符。 而这个大写字符往往就是在密码的第一位。 当密码中包括小写字母时, 59%的密码的小写字母个数为5到7个。

当密码中包括数字时, 63的密码的数字在0到99之间。 而使用个位数的情况很普遍(41%)。 采用年份的情况也很普遍, 有20%的密码采用4位数字, 绝大多数这样的4位数字从1900到2015. 而包含2013这个数字(Jonathan Lampe分析这些密码的当年)的密码有5%。

尽管这个站点并不强制使用特殊字符。 17%的用户还是在他们的密码里包括了特殊字符(这个站点的用户还是很有安全意识的)。 不过, 90%的情况下, 他们仅仅使用一个特殊字符。 最常见的特殊字符包括:“!”(占29%), “.”(占19%),“@”(占15%), “#”(占14%)。 然后就是“-”, “$”,空格, “*”以及“+”。 这些分别占3%到6%不等。 那些包括多个特殊字符的密码中, 68%的密码只是重复单个特殊字符。 如“##”或者“???”之类。

密码的猜解难度: 与初始密码的近似程度

这个站点会给每个用户发送一个固定的初始密码, 然后要求用户修改密码。 Jonathan Lampe还分析了初始密码对用户设置密码的影响。 比如说:初始密码是“RedBlue1”, 用户会不会改成”RedBlue2“或者”GreenBlue1”之类的密码。 结果是, 初始密码的设置确实影响了用户的密码设置。 13%的用户的最终密码与初始密码有很大的近似度。

密码的猜解难度:与用户名的近似程度

这位老兄接着又比较了用户名和密码的近似度。 比如, 用户名是john.smith@corp.com. 他看看密码是不是如john2013, jsmith13, corp123等等模式。 结果发现有10%的用户的密码与用户名具有近似度。

密码的猜解难度:包括字典单词

紧接着, 他又比较了这些密码中包括字典单词的情况。通过比较密码中连续4个以上字母的组合。他 发现75%的密码包含了一个或者多个单词。 有些用户用几个单词拼成一个容易记忆的句子(这个系统密码字符的上限为24)。不过绝大多数用户仅仅用一个单词。 2%的用户甚至在密码中使用了”password”或者“pass”。

密码的猜解难度:键盘组合模式

最后, 这位Jonathan还研究了这些密码是否包含了一些常见的键盘字母组合,比如说:“123”,“qwer”,“poiu”等等。 结果发现, 有7%的密码采用了键盘组合模式。

从密码设置的合规性来说, 这个站点做的相当的好, 甚至超出了PCI-DSS的要求。 然而, 有四分之一的密码与初始密码具有近似度, 以及10%的用户名与密码的近似度等问题, 使得这个站点对于暴力猜解(比如通过构造字典), 钓鱼和社交工程攻击等方面还是存在这安全漏洞。

如何防范这些纸面上合规的密码设置漏洞

对很多商业站点来说, 要求采用如令牌, 证书, 或者生物识别等方式并不现实。 因此, 尽管密码有这样那样的缺陷。 很多情况下我们还是不得不用它。 关于如何防范这些纸面上合规的密码设置呢? 这就需要从系统管理员和程序开发者两方面去加强。

系统管理员:

在购买密码保护技术的时候, 系统管理员要询问产品对密码设置有没有做如下的检查:

1)禁止密码类似用户名, 注意, 这里是“类似”, 而不是仅仅“包括”,比如说能够区分大小写,如“Smith”就”类似于”“smith”, 最好这个产品能检查一些变体, 比如”john.smith”就类似于“jsmith”

2)禁止仅仅使用单个字典单词, 允许多个单词串联。”比如“Apple”是禁止的, 而”BuyAnApple”是可以的。

3)禁止键盘组合, 比如“qwer”等

4)禁止常见数字序列, 比如1900-2050, 月份, 季度(Q1, Q2等)

5)禁止近似于初始密码的用户设置密码

6)当然, 密码的最低长度, 最低复杂度, 以及有可能的话, 密码期限等都需要做要求。

市场上能完全做到这些的产品不多。 不过系统管理员应该尽量多提这方面的要求。 尽量做到上述要求。

程序开发人员

作为程序开发人员, 在开发需要最终用户修改密码的系统时, 有责任在程序中对密码的设置进行检查。 以强制用户设置 “好”的密码。 你应该在程序中检查上述给系统管理员的要求。

 

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章