20199101 2019-2020-2 《网络攻防实践》综合实践
A Security Analysis of Honeywords
0. 总体结构
本次作业属于哪个课程 | 网络攻防实践 |
---|---|
我在这个课程的目标是 | 学习网络攻防相关技术和原理 |
这个作业在哪个具体方面帮助我实现目标 | 论文复现,掌握自主学习的能力,学习最新顶会论文的技术和发展方向 |
1. 论文介绍
1.1 背景介绍
- 本文来自于NDSS 2018,作者是北京大学的汪定团队,他们一直在专注用户口令方面的研究。
- 提出口令的Zipf分布的提出,口令的定向攻击等。
- 他们的实验基于大量的截止目前已经确认泄漏的口令数据集。
- 下面主要对这篇文章进行分析重现以及给出自己的思考。
- 尽管口令在安全性和可用性方面存在着臭名昭著的缺陷,但它们依然是用户身份验证中最流行的方法,并且很可能会在将来保持其流行程度。这些年来,很多服务器都遭受了拖库,更糟糕的是,在遭受了拖库之后很多厂商却不知道自己被拖库了,在多年之后才被爆出来。其中就包括Yahoo、Dropbox、Last.fm、LinkedIn、Weebly、MySpace在内的大厂商。一般情况下,泄漏的口令存储在加盐的哈希中,使用现代的基于机器学习的破解算法如彩虹表,和常见的硬件如GPU,可以在很快的时间内完成。一旦攻击者获得了口令的哈希值,就可以假定大多数口令都可以进行离线猜测。
- 最近,已经提出了完全消除离线口令猜测可能性的方法
- 使用机器相关的功能(例如,ErsatzPasswords)
- 采用分布式口令分享例如秘密分享方案
- 使用外部口令强化服务(例如Phoenix)
- 但是所有这些方法都需要对服务器端身份验证系统进行实质性更改。此外,第一种方法不支持以分布式方式备份密码口令文件,因此,由于其可伸缩性较差,因此不适合Internet规模的站点。第二个需要客户端系统的更改,这不方便用户并且被广泛认为是不可取的。第三个是单一故障点,可能会将用户行为信息泄漏给外部各方。
- Juels和Rivest在2013年提出了一种假口令(Honeywords)的方法,每个账号除了一个真口令还有 个与真口令相关的假口令。他们的想法是,即使攻击者A窃取了口令文件并恢复了所有密码,也必须首先从 个口令中区分出用户的真实口令(一般 )。这些个假口令和一个真口令统称为Honeywords。那么攻击者A必须通过使用服务器作为验证来进行一些登陆尝试才能知道是否正确。这样的在线登录尝试不仅会严重阻止攻击者,而且还会在尝试登录时在服务器上发出口令文件泄露的警报。这种方法只需要对现有服务器端系统进行很少的更改,而无需对客户端系统进行任何更改,因此在很多方面非常使用。
- 假口令方法的一个主要挑战就是如何生成不能轻易与真实口令区分的假口令。在Juels-Rivest的论文中,提出了四种假口令生成方法,所有的Juels-Rivest方法都是基于随机替换的,本质上无法抵抗语义感知的攻击者。
1.2 论文核心贡献
- 漫步攻击(Trawling Guessing attacks)。本文首次利用大规模真实口令数据集进行了一系列实验,对Juels-Rivest中的四种假口令生成方法进行了评估,发现它们都没有提供预期的安全性。真实口令的区分率约为29.29%,而不是预期的5%。在使用各种最新的概率口令破解模型(如Markov和PCFG)的漫步攻击下,真实口令的区分率约为34.21%和49.02%。
- 定向攻击。为了了解Juels-Rivest方法在语义感知攻击的情况下的安全性,本文首次通过定向攻击来评估假口令的安全性。研究表明,如果攻击者知道一些常见的个人信息,比如受害者的姓名和生日,那么通过一次猜测(k = 20时)就可以区分出真实口令,成功率为56.8%。
- 扩展评估。使用各种口令的破解模型,例如Markov模型,对假口令进行评估,并且验证Juels-Rivest提出的利用口令模型建立假口令的实验。
- 提出新见解。首先从实验中,产生假口令(通过随机替换)与用户的真实口令得到相同分布是根本不可能的。这表明,基于Juels-Rivest的随机替换方法本身就是脆弱的。例如本文提出的三种模型结合加权的方式,能够避免某些口令概率被低估的情况。
1.3 基础知识介绍
1.3.1 数据集
-
本文基于10个大型真实口令数据集,评估了Juels-Rivest 的假口令生成方法,其中4个来自中文网站,6个来自英文网站。总的来说,本文的数据集由1.0436亿个纯文本口令组成,涉及9种不同的web服务。
-
本文给出六个与PII相关的口令数据集,为了更全面的实证分析在目标攻击下的假口令安全性,本文进一步通过电子邮件将非PII关联数据集与这些PII数据集进行匹配。本文通过使用基于类型的PII标记方法来度量PII的使用。从表III可以看出,中国用户喜欢使用自己的个人信息来构建口令。在这里,高达36.95%的51.43%的中国用户使用六种PII中至少一种来构建口令,而English用户分别为12.76%、29.94%。相比之下,与PII相关的美式英语用户在PII使用中表现出更安全的行为。本文的结果表明,大量用户使用PII构建口令,因此假口令生成方法需要考虑到这一用户行为。因此,本文的语料库是新的,全面的,很好地代表了真实世界的口令分布,它也是迄今为止收集到的用于口令研究的最大和最多样化的语料库之一。
1.3.2 蜜令系统
-
蜜令系统主要涉及到四个实体
- 用户\(U_i\).
- 认证服务器\(S\)
- Honey Checker(Honey Checker是要确保不能被访问到的,是安全的)
- 攻击者\(A\)
- 用户在\(S\)注册了账号 ,可能还需要一些PII(如Gmail注册需要姓名、生日、电话和性别)。这个时候生成用户\(i\)的\(k-1\)个假口令和\(1\)个真口令。当然,这里所有的都是加盐的HASH值,本文不讨论如何进行Hash的破解,默认已经得到HASH之前所有真口令假口令的值。在服务器端,S与传统口令认证的不同之处是,登陆的时候首先检查,不在直接拒绝。如果在,Server交给Checker一个index。如果正确匹配Index,登陆成功,否则给Server警报。
-
攻击者目标分为两个,分别对应两个threshold。目标1是以最少的猜测次数\(x_1\),找出给定用户\(i\)的真口令,显然\(x_1 \leq T_1\)。目标2是总体允许\(x_2\)次猜测的情况下,找出尽量多的真口令,显然 应满足\(x_2\leq T_2\)。蜜令系统中包含的最重要的部分是如何生成假口令,下面主要给出Juels-Rivest提出的四种方法。Juels-Rivest的四种方法都是基于随机替换的方法。
-
修改口令尾部(Tweak-tail):修改尾部后 位字符,字符类型保持不变,其中后面t位是要字母和数字的交界处。比如,口令abcd12,可生成 abcd38, abcd91。
-
模拟词法(Modeling syntax):保持口令结构不变,替换掉对应的组件,比如,口令password@1,结构为L8S1D1,可生成abcdefg*7, iloveyou#3。其中L代表字母,S代表特殊字符,D代表数字。这个方法和后面讲的密码模型PCFG有点相似性。
-
混合方法(Hybrid):先使用modeling syntax方法,再使用修改尾部方法,比如,口令password@1,先生成iloveyou#3,再生成password!2, iloveyou%6。
-
简单模型 (Sample model):通过一系列启发式步骤,逐字符生成 honeywords。譬如,\(w=w_1w_2\cdots w_d\)来自实际数据集的口令,现在有蜜令\(c=c_1c_2\cdots c_d\),50%的可能性\(c_j=w_j\),10%的可能性,随机选取替换\(w_j\),并且 ,40%的可能性,随机选取替换\(w_j\),并且如果\(c_{j-1}=w_{j-1}\),\(c_j=w_j\)。
1.3.3 评价系统和攻击概述
-
一般来说,口令的安全性可分为两类。
- 整个口令集的安全性(即口令分布的安全性),这个对应系统的整体安全性\(T_2\)。
- 单个口令的安全性,也就是单用户的安全性\(T_1\)。
-
其中也有两种攻击算法。
- 漫步攻击算法,所谓漫步攻击(Trawling attacking),是指攻击者\(A\)不关心具体的攻击对象是谁,其唯一目标是在允许的猜测次数下,猜测出越多的口令越好。这意味着,最优的攻击者会首先猜测排名\(r=1\)的口令,接着猜测排名\(r=2\)的口令,依次类推。
- 定向攻击,目标是尽可能以最快速度猜测出所给定用户在给定服务(如网站、个人电脑) 的口令。因此,攻击者会利用与攻击对象相关的PII,以增强猜测的针对性。
-
针对两种攻击算法,同样有两种评价指标。
- 平滑(Flatness)图,平滑图中点 (x, y) 表示,对给定用户猜测x次,猜中真口令的概率,衡量honeywords 生成方法的平均安全强度。
- 成功次数(Success-number)图,成功次数图中点 (x, y) 表示,对全体用户允许最多x次失败猜测,可猜中的用户数量。衡量honeywords生成方法的最差安全强度。
-
口令的分布特性很早之前就已经进行了研究,直到2016年我国学者发现了口令确实也服从Zipf分布,所谓Zipf分布就是8/2分布,20%的口令被80%的人使用着,这个分布服从的原因也是英文单词的使用概率分布就是8/2分布。在2010年之后,关于口令的研究越来越多,其中提出了PCFG模型和Markov模型最为典型。
-
PCFG模型分布的口令的字母段 L、数字段 D 和特殊字符段 S 是相互独立的。首先将口令根据前述三种字符类型进行切分,比如 wang123! 被切分为 L4:wang,D3:123和 S1:L4S1D3 被称为该口令的结构(模式)。
-
Markov分布的口令从前向后依次进行。不像 PCFG 那样对口令进行分割,而是对整个口令进行训练,通过从左到右的字符之间的联系来计算口令的概率,其实就是一个\(n\)阶马尔可夫链。
2. 论文主要内容及算法
2.1 漫步攻击两种策略
-
明确假口令生成方法的安全目标是,当给定\(U_i\)以及\(k\)个Sweetwords时,可区分攻击者\(A\)通过对Sweetwords进行在线查询的成功率为\(1/k\)。针对Juels-Rivest的四种生成假口令的方式,本文提出了两种攻击策略Top-PW和Normalized Top-PW。
-
首先给出真口令的分布概率以及生成的蜜令在现实口令中的概率分布,如图所示,真口令中123456约占所有口令的1.4437%,但是通过四种随机置换的方式生成的口令其中123456概率和真口令相比差三个数量级,所以这也是本文攻击有效的原因。
-
Top-PW
- 首先定义两个\(n\)个list\(\{SW_1,\cdots,SW_n\}\),表示\(n\)个用户,每个用户有\(k\)个Sweetwords。所以总共有\(nk\)个Sweetwords,而Top-PW的攻击策略非常简单,就是用\(nk\)个Sweetwords的概率去尝试登陆.针对未出现在测试集中的口令直接赋值为0,也就是
- \(SW_{i,j}\in D,P(SW_{i,j})=P_D(SW_{i,j}),P_D=\frac{count}{|D|}\)
- \(SW_{i,j}\notin D,P(SW_{i,j})=0\)
- 首先定义两个\(n\)个list\(\{SW_1,\cdots,SW_n\}\),表示\(n\)个用户,每个用户有\(k\)个Sweetwords。所以总共有\(nk\)个Sweetwords,而Top-PW的攻击策略非常简单,就是用\(nk\)个Sweetwords的概率去尝试登陆.针对未出现在测试集中的口令直接赋值为0,也就是
-
Normalized Top-PW
- 通过分析Top-PW策略,本文发现其中有很多设置不合理的地方。
- 譬如对于用户 \(i\)和用户\(i+1\),用户\(i\)的\(P(SW_{i,j})=0.03\),其他的都是\(0.029\),用户\(i+1\)的\(P(SW_{i,j})=0.028\),其他的都是\(0.001\)。这个时候如果按照Top-PW策略其选取的口令一定是0.03而不是0.028,但是对于整体来说,明显0.028攻击成功的概率要大于0.03。
- 首先我们应该对未出现在训练集中的口令进行归一化,本文用的\(+1\)平滑方法虽然简单却非常实用,分析其原因主要是保证未出现的口令的概率值很小但是又不为0。
- 我们可以采用归一化的方法进行处理。也就是说,现在的概率按照归一化降序排序,归一化的方法就是 。归一化对成功次数产生较大影响,但是对于平滑图产生的影响不大。因为归一化并不会改变一个相对的排名。
2.2 成功次数图和平滑图算法
-
如算法2所示,是绘制平滑图的算法,其中的getSweetword就是本文上面所说的两种策略,这个比较简单,就是对口令进行排序,然后对用户进行尝试,思路就是在限定的登陆次数中找到正确的口令。
-
如算法1所示,是绘制成功次数图的算法,其基本思路是从每个用户的排序,扩展到所有用户的攻击排序。
- 对每个用户的k个口令,计算概率,然后将每个用户概率最大的口令放入优先队列crackQueue,从crackQueue取出概率最大的口令。
- 进行在线验证,验证成功则转到2,不成功则转到4。
- 计算攻击的用户的攻击次数是否达到上限。如果达到上限则转到2,否则对该用户剩余口令进行归一化,将最大的口令放入队列crackQueue,然后转到 2。
2.3 改进模型
2.3.1 基于口令模型构建蜜令
-
Juels-Rivest的四种主要方法是基于随机替换的
-
通过随机替换真实口令的部分(或全部)来生成针对给定用户的\(k- 1\)个假口令。Juels和Rivest在论文中提到了使用概率口令模型(如Weir等人的PCFG)构建基于假口令方法的可能性。他们明确地将其作为一个开放的问题,这里本文对这个问题给出了否定的回答。
-
以众所周知的PCFG口令模型为例,本文假设对于给定的用户口令\(PW_i\), \(k-1\)个假口令是根据在特定数据集\(D\)上训练的PCFG模型生成的,因此\(k-1\)假口令与\(PW_i\)无关。
-
提出一个新的策略,只需要针对策略二进行简单的修改,就是在计算归一化概率的时候,将原来的简单频率估计概率的方法改为基于口令模型的,例如PCFG模型应该改为\(P(SW_{i,j})=\frac{P_D(SW_{i,j})/P_{PCFG}(SW_{i,j})}{\sum_{l=1}^kP_D(SW_{i,l})/P_{PCFG}(SW_{i,l})}\)
-
得到的结果如下图所示,在A第一次尝试登录失败之前,基于PCFG方法成功登录58,122个账户(0.71%),基于Markov方法成功登录150,459个账户(1.84%)。在A第104次登录错误之前,他可以成功登录329957个账户(4.06%)和611,388个账户(7.52%)。我们发现在平滑图中,虽然有一定的效果,但是和理论值仍旧差距较大,基于Markov模型来构建蜜令其效果比基于PCFG模型得到的更差,和普通的基于随机置换的方法差别不大,所以我们在使用口令概率模型构建蜜令这里给出了否定的回答。
-
2.3.2 基于口令模型分析蜜令生成方法
-
在上面,本文使用列表口令模型评估了两种攻击策略下Juels-Rivest的四种主要方法。列表模型的一个缺陷是,它不能很好地消除不常见的蜜令中的联系。在本节中,本文通过利用两种复杂的口令模型(PCFG和Markov)和平滑技术来解决这个问题。特别的是,这两个模型都遵循Zipf定律。
-
在上述的基本攻击中,Sweetwords的概率来自已知(泄漏)口令分布\(P_D(.)\)的列表模型。但是,与总口令空间相比,每个泄漏的口令分布的空间非常有限。因此,我们可以推测,在更复杂的概率口令模型(如PCFG和Markov)下,Juels-Rivest中的四种方法会更弱。
-
设计了一系列针对修改尾部生成蜜令的方法的攻击,以探索各种口令概率模型的有效性,包括PCFG、Markov和我们以上的无训练集口令破解模型。所有的攻击的设置都是一样的,但是在已知口令分配D不一样,譬如Markov-based使用的就是\(P_{Markov}(.)\)是用来代替\(P_D(.)\)分配概率。
-
在训练集和测试集相同的情况下,总体而言,基于PCFG的模型和基于马尔可夫模型优于列表模型。在平滑图中,基于PCFG模型在测试集Addonew-tr中已经达到了46.66%的成功率。
-
令人意外的是,本文的无训练集模型 (带平滑算法)在攻击概率上很好地接近了列表模型 ,说明攻击者A甚至可以仅使用Sweetword文件F就可以进行有效的攻击(不需要外部训练集)。
-
结果表明,对于能够利用PCFG和Markov等先进的口令模型的漫步猜测攻击者,Juels-Rivest的四种口令算法的性能要差得多。更具体地说,攻击者只需要猜测一次就可以得到真口令而不是Juels-Rivest所声称的5%。
2.3.3 基于个人信息的定向攻击
-
基于个人信息的定向攻击由wang等人提出于CCS16。
-
在上面,本文评估了Juels-Rivest的四种主要假口令方法在他们假设的对手模型下的安全性。本文还注意到用户喜欢利用PII构建他们的口令。
-
我们采用了三种有针对性的口令破解模型:TarPCFG、TarList和TarMarkov。这里的Tar即加上了PII的PCFG模型、马尔可夫模型和List模型。使用基于类型的PII分段匹配方法,可以将Markov模型转换为TarMarkov模型(大概意思是利用个人信息进行加权重新计算概率,对用户的个人信息进行分类,譬如生日等,分类完成对每类进行加权给出概率)。
-
TarPCFG-based攻击,所有的设置都是一样的。所使用的算法还是上面两个算法,但是使用了三个新策略,就是在计算概率的时候出现了不一样,总体的策略模型还是基于策略二。现在使用的是\(P_{TarPCFG}(.)\)代替\(P_D(.)\)来分配概率。
-
下面两张图比较了类型两种攻击(漫步攻击和定向攻击)对Juels-Rivest方法的有效性。在每个子图中,很明显\(A_2\)攻击者比\(A_1\)攻击者更有效。更具体地说,TarPCFG方法攻击在随机置换方法上可以达到最高67.9%的一次猜测成功率,最高提升达到了165.9%。基本上基于所有的PII攻击方法都比之前提升一半以上。这些成功率都比生成的5%要大很多。总而言之,不考虑用户的PII来生成假口令的方法无法抵抗基于PII的定向攻击。
2.3.4 新的生成蜜令的方法
- 只有当我们知道如何攻击,我们才能知道如何保护。本文的上述攻击结果突出了三个关键贡献,给我们生成假口令提供了方向。
- Juels-Rivest的四种方法本质上都属于基于随机替换的假口令生成方法:每个假口令都是通过随机替换真实口令\(PW_i\)的部分(或全部)生成的。设\(T(PW_i)\)表示由得到的空间,\(D\)表示口令空间。在随机替换方法下,\(SW_i\)中的\(k-1\)个假口令都可以看作是从\(T(PW_i)\)中随机抽取的,因此它们都具有相同的概率(即\(\frac{1}{|T(PW_i)|}\))被选为假口令。如果真正的口令也是从\(T(PW_i)\)中随机抽取的,那么这种随机替换的方法就是完美的。然而,用户通常不随机选择他们真正的口令从,而是遵循高度倾斜的Zipf模型。这说明随机替换方法(Juels-Rivest)不可能达到预期的安全性。
- 以上不可能性的结果建议我们采用基于口令模型的方法。然而,在上面我们已经给出否定的结果,现在我们来进一步调查一下根本原因。口令模型的好坏取决于它如何接近用户的口令行为。从下图可以看出,每种口令模型都有其自身的弱点
- 列表模型在近似流行口令的概率方面表现较好,但是在不常用口令方面表现却非常糟糕。
- PCFG模型可以很好地近似最不常用口令的概率,但常用口令的概率却很差。
- 马尔科夫模型介于两者之间。
- 上面的发现很自然地促使本文提出一种混合方法:结合不同的口令模型来避免单个的缺陷。关键问题在于如何有效地将两者结合起来。
- 我们用最简单的方法\((1/3LIST+1/3PCFG+1/3Markov)\),混合口令模型虽然简单,但极大地提高了安全性,这为研究界提出了一个有希望的方向。
- 通过下图可以看出,基于混合口令模型的方法已经非常接近完美曲线,比单个模型的方法要好不少。同时需要注意的是,如果存在更有效的攻击策略,混合口令模型可能会比目前看起来更不安全。
3. 复现及结果分析
3.1 实验配置和代码分析
说明:首先说明代码是C++代码,使用g++进行编译,所以需要配置g++环境,并不需要安装额外的库文件,作者公布的文件只是部分代码,由于口令的数据集现在不再公开,作者也只公开了10000个测试口令,10000个训练口令。使用半对半的原则符合机器学习的本质,代码使用的是策略二及List模型。代码主要分为生成HoneyWords部分,根据蜜令文件和训练集来生成概率文件部分,根据概率文件、蜜令文件、Checker文件(口令正确的index,相当于Checker服务器)进行攻击部分。
3.1.1 生成HoneyWords
-
如图所示是利用模拟词法来生成HoneyWords,输入真实口令,然后根据真实口令的结构随机生成LSD结构蜜令。编译之后,通过指令
./gen ./data/text.txt
生成test_honeywords.txt
和test_checker.txt
,即蜜令文件和checker文件(校验正确index)。下图就是生成的HoneyWords文件,由1个真口令和19个假口令组成,并且真口令隐藏在假口令中,真口令的位置(index),看作一个长度为20的数组,真口令在数组的某个位置。
3.1.2 计算蜜令的概率
-
如图18所示是计算蜜令的关键代码,代码内容比较简单,采用的是策略二部分,主要思路是计算测试集中的口令数量,然后计算概率,并且对没有出现的口令进行了平滑,使用的平滑算法是\(+1\)平滑。通过指令
./calc ./data/test_honeywords.txt ./data/train.txt
生成test_pr.txt
文件,即概率文件。如图所示,由于训练集比较少的原因,大部分概率都是未出现过的为0.001,偶尔会有0.002,但是即使是这样我们仍旧有大于5%的概率攻击成功。
3.1.3 攻击
-
这是算法一的具体实现,主要内容在上面已经完全解释,需要输入概率文件、蜜令文件、checker文件和两个猜测阈值。其算法思想是对每个用户的\(k\)个口令,计算概率,然后将每个用户概率最大的口令放入优先队列crackQueue,从crackQueue取出概率最大的口令。进行在线验证,验证成功则转到2,不成功则转到4。计算攻击的用户的攻击次数是否达到上限。如果达到上限则转到2,否则对该用户剩余口令进行归一化,将最大的口令放入队列crackQueue,然后转到 2。输入指令
./atk ./data/test_pr.txt ./data/test_honeywords.txt ./data/test_checker.txt 3 100
运行程序。输出攻击结果,能够显示出每个真口令在数组中的位置。在cracknum中能够查看攻击的次数。
3.2 结果分析
-
在上述两种攻击策略中,本文使用列表口令模型实例化给定口令文件的概率。从(a)-(d)可以看出,对于成功数图而言,带平滑处理的Normalized Top-PW攻击策略的表现明显好于无平滑处理的版本。通常,它的性能也比Top-PW策略好得多,特别是当允许的登录的次数很小的时候,这说明了平滑在攻击假口令时的关键作用。当在Dodonew-tr上进行训练时,它至少可以识别710930(8.75%)真实口令。这表明,在成功数度量方面,Juels-Rivest方法存在超过 次的漏洞低估。在评估平滑图安全性目标时,这两种攻击策略将对每个用户尝试相同的蜜令序列。因此,它们的平滑图如图(e)所示。本文的结果表明,所有4种方法都提供了非常相似的平整度安全性级别,只是建模语法稍微好一些。
-
如图22(a)-(d)所示,无论每个用户被攻击1次、3次或10次,两种攻击策略的性能都比较稳定。回想一下,成功次数图方法针对最坏情况下的可区分攻击者\(A\)的强度,即首先攻击最弱的用户。由于123456是Dodonew-tr中最前面的口令(1.44%),\(A\)将首先使用123456作为猜测,以对所有8,129,445个Dodonew-ts用户进行测试。有人可能会认为,1.44%·8,129,445 110K成功登录后才会出现第一次登录失败。然而,这不是真的,因为123456也可以是一个假口令,用于使用模式为123xxx的真实口令的用户 (例如123123)。因此,使用123456登录帐户可能会在达到110K成功登录之前失败。从图3(a)可以看出,为了达到110K的成功登录,使用带平滑策略的Norm Top-PW失败约100次,使用Top-PW失败约1000次。
-
下图本文的十个数据集的所有评价结果。当允许10000次失败尝试时,10个测试集中有\(11.03%\),\(16.63%\)的账户被成功猜测
-
Tweak-tail提供最糟糕的平滑度数(即使是最好的方法模型-语法也是0.2929平滑度数)
-
漫步攻击以29.29%的成功率区分用户的真实口令,而不是预期的5%
-
综上所述,本文的结果表明
- 训练集越接近测试集,攻击越有效
- 训练集越大,攻击效果越好
- 在相当实际的攻击下,所研究的四种方法所提供的安全性远远低于预期
4. 实验思考
- 这篇论文比较完整的叙述了Juels-Rivest口令生成方法的不足点,并且基于大量的数据集对Juels-Rivest四种生成方法进行了经验安全性评估,发现这四种方法都不能够提供预期的安全性。
- 在基于PII攻击的情况下,攻击者只需要猜测一次就能够得到用户的真实口令。作者不仅分析了安全性,同时给出了一种生成蜜令的方法,就是结合三种口令模型进行生成,对三种模型进行加权,很好的平衡了各个模型的缺点(对某些口令概率的低估)。
- 假口令是一种非常好的技术,能够很好的解决现有的口令认证的缺陷。但是作者虽然利用用户的个信息去进行定向攻击,却没有考虑到利用用户的PII去生成假口令。目前尤其是中国用户利用PII建立口令的人非常多,所以我认为要使得假口令做到神似,学习用户的PII,然后以PII进行加权同时结合口令模型建立的假口令才具有很高的不可区分性。
- 同时我认为在做假口令的研究人员没有考虑到,或者考虑到并没有在论文中体现,就是如果两个机构也同时用了假口令的方式。而现在口令复用的概率很高,如果两家同时泄露了数据库,那么只要简单对比就可以简单的得到真口令。我认为这是假口令需要解决的问题。
- 下面是我的一点改进。本文作者和Juels-Rivest都没有提出完整的理论证明。本文篇幅有限,后面会进行详细的实验,如果有结果会继续做下去,下面只做简单的介绍。
- 我用伪随机数技术来引入,我们知道对一段随机数测量其随机性有一个重要点就是统计距离,和理论分布的统计距离差距多少,就可以判断其统计特性或者随机数怎么样。
- 在这里是一样的,通过统计距离完全可以提供一个严密的证明。要证明和理论分布是不可区分的,那么这个这个假口令绝对可以以假乱真。可以按照下面的思路来进行实验:
- 选取理论分布,选择Zipf分布,或者我认为可以从现有的数据集作为理论分布。
- 利用生成的蜜令的方法生成蜜令的样本用于检测。
- 利用拟合检验的方法构造皮尔森随机变量,计算其卡方值。
- 最后利用不完全Gamma函数技术求其p值。
5. 学习总结和建议意见
首先非常感谢老师这一个学期对我们的指导和交流,这门课的规划就是让学生自己看,现在看来是对的。一开始我们会抱怨老师为什么不讲课,但是这门课其实是一个实践的课程,没有特别多高深的算法和协议等。很多内容都是看书,看别人的教程自己一点点完成的。通过这门课,我第一次系统的接触到了真正的攻防知识,并且自己动手实践,在寻找别人网站或者APP的漏洞的时候,也给他们的客服反映过他们的口令变换仅仅是一个base64编码。这是一门很有成就感的课程,你学的可以很快就得到反馈,其中确实有很多乐趣。同时这门实践课也更加锻炼了自己的性子,这学期真的非常的忙碌了,很多时候都是学习到一两点,正好疫情在家,我们好像每天都在学习和忙碌,记得有一次出了一趟门,回来天天补作业。这样的生活现在回顾起来还是很充实的,这学期真的很多课程都让我受益良多。关于写博客,我一直把博客当作一种信息、知识传递的方式,所以在写博客的时候我保证尽量的完整和正确,我也会给很多书本上没有给出的参考博客或者资料,这大概很浪费我时间,但是我认为是正确的。我很讨厌别人随便乱写博客,错误一大堆的那种,因为你写的东西很多时候就会被别人看到,当别人不懂的时候看着你的东西很有浪费别人大量的时间。很多时候事情做不完美会觉得很难受,并不是要别人看的完美,至少要自己觉得完美,我觉得保持这样的心态能让我们对每件事都有交代。
研究生上课的生涯伴随着这篇论文的结束而结束了,后面就要正式步入科研生涯了。这门课也算是一门科研生涯的入门课,以前我们觉得老师讲课理解很容易,真的到自己亲手去啃一门课的时候,我们积累良多。老师曾告诉我们,学习多少知识并不重要,而是你要掌握学习的方法,你要有自学的能力,这更加重要。而一个东西的学习是要不断的回顾的,当你再回头看自己之前做的东西的时候,我相信,你一定也会有新的感悟,当我重新写这份论文时,我感觉自己又更好的理解了这篇论文的行文结构和其中关系。以后生活中我们肯定会遇到更多的困难,遇到更多的不懂的地方,但是只有不断的学习、不断的完善自己才可以继续克服困难往前走。
参考资料
- Wang D , Cheng H , Wang P , et al. A Security Analysis of Honeywords[C]// NDSS 2018. 2017.
- 王平, 汪定, 黄欣沂. 口令安全研究进展[J]. 计算机研究与发展, 2016, 53(10):2173-2188.
- M. Golla, B. Beuscher, and M. D¨urmuth, “On the security of cracking resistant password vaults,” in Proc. ACM CCS 2016, pp. 1230–1241.
- A. Juels and R. L. Rivest, “Honeywords: Making password-cracking detectable,” in Proc. ACM CCS 2013, pp. 145–160.
- J. Ma, W. Yang, M. Luo, and N. Li, “A study of probabilistic password models,” in Proc. IEEE S&P 2014, pp. 689–704.
- D. Wang, H. Cheng, P. Wang, X. Huang, and G. Jian, “Zipf’s law in passwords,” IEEE Trans. Inform. Foren. Secur., vol. 12, no. 11, pp.2776–2791, 2017.
- D. Wang, Z. Zhang, P. Wang, J. Yan, and X. Huang, “Targeted online password guessing: An underestimated threat,” in Proc. ACM CCS 2016, pp. 1242–1254.