《GENPass:A general deep learning model for password guessing with PCFG rules and adversarial generation》论文阅读记录
摘要
- 过去的神经网络无法跨网攻击,因为每个数据集都有自己的特点
- GENPass 从多个数据集中学习特征,通过对抗生成,保证输出的字典在多个不同的数据集上有高的正确率
- 生成器为 PCFG+LSTM(PL)
- 从一个数据集学习,跨站猜测中 PL 比LSTM要好;GENPass 比单纯地混合数据集的表现要好
介绍
- Hashcat 和 JtR 只能产生有限的 wordlist
- PassGAN 只是在一个数据集上进行测试
- GENPass 可以从多个数据集中学习特征,并通过对抗生成来确保不同数据集中输出单词列表的准确性
- PL:
- 用 PCFG 规则将密码序列替代为标签(单元)序列
- 一个密码是一个很多单元的组成序列
- 认为总共有四种类型:分别为字母L,数字D,特殊符号S和换行符
- 生成模板序列,通过 LSTM 进行序列的预测,生成下个单元
- 将单元还原回密码字符
- 每次都选择高权重的数据,会出现大量重复,因此作者设计了一个随机选择算法。方法比较简单,根据候选密码字符的频数,设置一个相应长度的区间,将这些区间首尾相连拼接到一起,再在整个大的区间中随机选择一个数。对 L4 的三个候选和频率—[‘abcd’:4,‘love’:3,‘life’:5],则 abcd 为[0:4)区间,love是[4:7)区间,life是[7:12)区间。在[0,12)中随机选个数字,落到哪个区间就选哪个
- 用 PCFG 规则将密码序列替代为标签(单元)序列
- 不同的数据集的权重,会有不同的规则和长度,相应会有很多个PL预测模型,因此作者设计了GENPass,可以从不同的生成模型进行选择
相关工作
传统的密码猜测方法
- JTR 和 HashCat——对哈希值的猜测;必须基于给定的密码单词表。单词表的大小意味着破解尝试的上限
- 马尔可夫模型
- PCFG
基于神经网络的猜测方法
- LSTM——限制了密码的结构,不具有普适性
- PassGAN
模型
PL
- 将密码处理为单元的序列(PCFG)
- 训练 LSTM 以预测下一个 unit
- 翻译回字符序列。其中同一个单元可能对应多个字符序列
- 根据各个字符序列的权重来随机挑选、
- $t[i]$为第$i$个候选字符序列频率,则对应一个区间$[\ \sum_{j=1}^{i-1}t[i],\sum_{j=1}^it[i] \ ]$
- $s$为频率和,生成一个随机数,选择包含随机数区间对应的候选字符序列
GENPass
GENPass从不同数据集产生general worklist
不同数据集有不同的规则和不同的密码长度,因此不能直接混合规则
Prediction of model n: n个PL模型
Weight Choosing: 每个模型的输出单元可以合并为一个表,作为权重选择的输入,输出为随机的选择结果
Classifier:CNN
- 随机的密码明文训练
- 同【49】一样—— Z. Xiang, J. Zhao, and Y. LeCun, “Character-level convolutional networks for text classifification,” in Proc. Adv. Neural Inf. Process. Syst.,2015, pp. 649–657.
- 给一个密码,分类器要能说明这个密码最可能来自哪个数据库。因此会有一个 softmax 层
- 单独的一个密码不足以捕获特征,因此和前四个生成后的密码结合,一起作为输入
Descriminator: 判断是否接受生成的密码。为了生成 general wordlist,需要接受不能明显判别出数据库源头的密码——分类器不能判别的密码。用分类器输出的标准差来评价密码的概括性——标准差不能太大,也不嫩太小,否则重复性高。这里选择了0.2作为阈值
关于weight choosing,如何选择输出单元:
- 不能等概率地选择
- 典型密码集的权重更高
- 计算权重:
- 当训练后确定𝑃时,接受密码的标准是KL散度是否小于0.1
实验和评估
- Myspace 与 phpBB 训练 PL,并与 FLA 做 one-site 测试和 cross-site 测试
- Myspace 与 phpBB 训练 GENPass,并对比混合两个数据集进行测试的结果
- 图略
结论
- 略