口令安全问题研究

2021-07-05  本文已影响0人  小生很忙

摘要:身份认证是确保信息系统安全的第一道防线,口令是应用最为广泛的身份认证方法。尽管口令存在众多的安全性和可用性缺陷,大量的新型认证技术陆续被提出,但由于口令具有简单易用、成本低廉、容易更改等特性,在可预见的未来仍将是最主要的认证方法。之前阅读了一些该领域的文章,也复现了一些常见的口令猜测算法,该博文进行一些总结。

文章概览


口令安全问题分析

  对于一个安全问题,往往可以从攻击者和防御者两个角度来考虑,以下分别从这两个角度对口令安全问题进行分析和总结。

攻击者

  对于口令安全问题而言,攻击者的目的是利用各种手段快速方便的获取用户的口令信息,从而获得进入相关系统的权限。首先,攻击者需要对该问题进行分析,找到突破口。对口令安全造成威胁的因素主要有以下两种:

  通过以上分析可知,用户脆弱口令行为是造成口令安全风险的主要原因,同时系统(或网络应用)中脆弱的口令生成策略和口令强度评估机制也为攻击者成功攻击创造了条件。其实,口令猜测攻击的思路很简单,即提交不同的口令直到认证成功为止。但是,其难点在于如何提高攻击的成功率和效率。因此,口令猜测算法的研究专注于深入挖掘用户脆弱口令行为,针对不同场景构建高效的口令猜测算法。根据攻击过程中是否利用用户个人信息,口令猜测算法可分为漫步攻击和定向攻击。

  总的来说,口令猜测算法的发展趋势是由漫步攻击慢慢过度到定向攻击,因为定向攻击的更有针对性且效率更高。除此之外,利用深度学习方法来进行口令猜测也是未来的发展趋势之一。因为传统的口令猜测算法大多建立在特定规则和概率统计的基础上,可能无法全面的体现口令的分布特征,深度学习模型强大的表示能力为解决这一问题提供了可能性。

防御者

  从攻击者的分析来看,造成口令安全风险的主要原因是用户的安全意识不足,其次是由于系统(或网络应用)的口令安全策略不严格造成的。由于用户的安全意识等人为因素是无法控制的,所以防御者构建口令安全防御机制主要是立足于口令强度评估等安全策略。口令强度评估机制需要准确的告诉用户,当前构造的口令是否安全,所以这就需要口令强度评估机制足够的健壮。目前的口令强度评估机制主要有以下三类:

  目前的口令强度评估的研究相对来说不是很成熟,提出的很多评估方法都没能得到大规模的应用。目前大部分的口令强度评估机制都是基于漫步猜测攻击,未考虑到用户个人信息对口令安全性的影响,这一领域值得探索的方向是设计基于定向攻击者模型的口令强度评估机制。


PCFG口令猜测算法实现

  PCFG是一种完全自动的、建立在严密的概率上下文无关法基础之上的漫步口令猜测算法,该算法的核心思想是将每一条口令看作是由字母段L、数字段D、特殊字符段S根据一定的模式互相组合而成的。我们可以通过对大量的口令数据进行分析,统计出这些口令可能的组合模式,从而利用该模式生成更多的口令,进行口令猜测。

实现细节

  该算法的实现主要包括三个部分:口令集预处理、口令集训练、口令猜测,使用的编程语言为python3.7,具体细节如下所示:

实验结果

  按照上述实验设置进行了实验,具体代码参考我的GitHub。在代码刚开始运行阶段,正确猜解口令的速度很快。两分钟的时间内大概能够正确猜解6000多个口令,之后正确猜解的速度逐渐降低,下图展示了口令破解速度的变化趋势。由于⽣成口令时我们设置了阈值,只有超过该阈值的口令才会进⾏匹配,所以真正参与口令猜测的 口令数量要远远小于实际⽣成的口令数量,上图横坐标展⽰的就是参与口令猜测的口令数量。这⾥展⽰ 的结果是利⽤口令模式表中前400种左右的模式⽣成的口令,正确猜解的口令数量为6529(总共 16500)

1

Markov口令猜测算法实现

  ⼀般情况下,⽤⼾构造口令的顺序是从前向后依次进⾏的。根据这⼀特点,Narayanan等⼈在 2005年⾸次将Markov链技术引⼊口令猜测中来。与PCFG算法不同,基于Markov模型的口令猜测算法 对整个口令进⾏训练,通过从左到右的字符之间的联系来计算口令的概率。该算法也分为训练和猜测集 ⽣成两个阶段,以下介绍实现细节。(针对此前代码存在的问题,本次代码进⾏了相应的修改。对于 start symbol问题,已经充分理解并实现;对于阈值问题,优化了阈值的分配⽅式。综合来看,实验效果得到了很⼤的提升)

实现细节

  该算法的实现主要包括三个部分:口令集预处理、口令集训练、口令猜测,使⽤的编程语⾔为 python3.7,具体细节如下所⽰:

实验结果

  按照上述实验设置进⾏了实验,具体代码参考我的GitHub。由于实验机器性能有限,这⾥使⽤的测试集口令总数为 1000000,猜测次数为1000000,order=3,4,5,下图展⽰了口令破解速度的变化趋势。order=3时,猜测出的口令数⽬为279517;order=4时,猜测出的口令数⽬为378980;order=5时,猜测出的口令数 ⽬为414806。

3 4 5
上一篇 下一篇

猜你喜欢

热点阅读