基于神经网络的口令属性分析方法
2015-08-07陈锐浩邱卫东
陈锐浩,邱卫东
基于神经网络的口令属性分析方法
陈锐浩,邱卫东
提出了一种适用于大量口令的分析方法,通过神经网络建模分析,挖掘口令的各项属性间可能存在的关系。通过对大量不同应用类型的口令进行属性赋值,进而利用MATLAB的神经网络工具完成建模、训练学习和仿真测试,从中找出潜在的有价值的属性间关系或规则,并根据这些关系由已知的属性值推断出未知属性值,或根据这些属性规则生成反映用户口令设置习惯的暴力破解字典,为口令破解和口令恢复提供一定的指向性和帮助。
神经网络;口令;属性赋值;分析
0 引言
人工神经网络,简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型,由称为神经元的基本处理单元互连而成的非线性复杂网络系统。
用人工神经网络解决计算机密码学中的问题,即神经密码学。经过对现有技术的检索发现,目前对于神经密码学的研究主要集中在加密机制、加密系统的改进上,如文献[1]中,针对S/KEY一次性口令方案中存在的缺陷,作者提出的基于RBF神经网络的一次性口令认证方案;再如文献[2]提出的Web动态口令登录新方法,利用神经网络权值同步模型的良好密码学特性,将其应用到密钥协商中[3~4],获得更高的安全性。然而,利用神经网络对口令本身的研究却几乎没有,而事实上,通过分析口令特点挖掘用户设置口令的习惯,具有重要现实意义。因为,在生活中,为了方便记忆,用户在设置口令时,通常会采用手机号、生日、姓氏、英文单词等作为口令或口令的一部分,对于不同类型的应用场景或用户群体,也存在各种各样的口令设置习惯,有些甚至用户自己都没有意识到,而这些习惯,都直接体现在口令上。有效地挖掘出这些潜在的规则,对于生成暴力破解字典、口令破解和口令恢复都有着重要意义和研究价值。
由于口令的不同属性(长度,是否包含大小写、特殊字符、手机号、生日、姓氏等)之间通常不存在明显的关系,难以通过人工进行高效的分析判断,而神经网络作为一种非线性统计性数据建模工具,常用来对输入和输出间复杂的关系进行建模,对于口令属性这种未知关系的探索,无疑是非常适用的。采用神经网络探索口令属性间关系,我们能够通过对不同的口令属性关系建立对应的神经网络模型,在有限时间内,利用大量口令数据的迭代测试不断逼近产生最接近真实的关系模型,从中筛选出有意义、有价值的属性关系。
1 方法的介绍
本文提出的基于神经网络的口令属性分析方法,主要包括获取口令属性数据源、确定神经网络模型、训练学习、仿真测试等几个主要环节。其中,神经网络分析采用MATLAB软件,口令数据经属性赋值后作为神经网络的数据来源读入MATLAB,确定好网络模型和相关参数后,依次进行模型训练学习、仿真测试并输出结果。
1.1 口令属性赋值
所谓口令属性赋值,是指对于每一个真实口令,赋予其一些属性特征,通过分析其组成成分和组成特征,来对这些属性特征进行赋值。通过口令属性赋值,每一个口令都有自己对应的一组属性值,用来表现该口令的组成特点,其意义在于将口令特征数字化,将抽象问题具体化,从而能够通过这些属性值进行分析处理以获得属性间有价值的关系,即获得口令组成的潜在规则或用户设置口令的潜在习惯。
属性赋值的结果就是神经网络分析的数据源,从而可以进一步利用MATLAB下的神经网络工具对这些数值进行有效的分析计算。
1.2 神经网络工作原理
神经网络的基本工作原理可简述如下:每个神经元是由一个计算单元构成,该单元具有多个输入和单个输出。其功能是对各个输入信号作非线性权值运算,并通过输出端输出至其他神经元。整个网络工作过程分为训练和求解两个阶段。当已知训练样本的数据加到网络输入端时,网络的学习机制一遍又一遍地调整各神经元的权值,使其输出端达到预定的目标。这就是训练(学习、记忆)过程。当经过训练的网络进行问题求解时,输入的求解信号在网络内迅速地传递、处理。当网络达到稳定状态时,从输出端即可得到问题的解。
1.3 确定神经网络模型
确定神经网络模型,就是根据实际需求在MATLAB下确定一个神经网络的网络类型(如BP网络、RBF网络、Hopfield网络等)、输入输出、网络层数与各层神经元个数、训练样本和仿真样本容量,传递函数和训练函数等相关函数及参数设置。
1.4 训练学习
训练学习,是指在MATLAB下,通过采用一定容量的输入输出样本,对初步设定的神经网络模型中各神经元权重进行不断调整,从而建立最逼近真实关系的网络模型的过程,也称为自动学习过程。
1.5 仿真测试
仿真测试,是指在MATLAB下,对已经确定好的并且经过训练学习所得的神经网络模型,采用一定容量的输入样本对该网络进行运算测试,目的在于通过对比网络输出结果与实际样本结果的差异来验证网络的准确性和有效性。
2 实验与分析
如图1所示:
图1 基于神经网络的口令属性分析流程
基于神经网络的口令属性分析流程包括:获取原始口令库样本、对口令样本进行属性赋值、MATLAB读取并存储口令属性样本、确定输入输出属性、确定神经网络模型、训练神经网络、仿真测试,最终导出有用规则。具体实施步骤如下。
2.1 获取原始口令样本
即选择需要分析的真实口令库文件,实验中采用的是CSDN论坛泄露的640万口令库文件。
2.2 口令属性赋值
即获取口令属性数据源,为了更完整地表现口令特点,该步骤的关键在于属性的定义,属性必须具备实际意义,能够充分表现用户设置口令的习惯,具有较好的灵活性,并有利于分析出有效的结果,具体可通过社会工程学等手段来进行制定。本方法确定采用的20个属性如表1所示:
表1 口令属性表
其中,所有属性值均为布尔值,1为真,0为假。
实验中,采用java程序按照以下流程,对原始口令样本进行属性赋值:
1)载入百家姓、常见英文名字、简单英文单词等各类字典文件;
2)载入口令文件,读取待分析的每个口令;3)判断口令长度(对应属性1~4);
4)判断口令字符成分(对应属性5~13);
5)判断口令组成(对应属性14~20);
6)将口令属性拆分结果写入csv文件中。
原始口令库经过自动化分析处理后,得到每个口令对应的20个属性值,结果如下(每一行对应一个口令):
0,1,0,0,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,
1,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,
……
例如“0,1,0,0,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,”表示该口令的长度为7-8位,包含字母,包含大写字母,包含小写字母,包含百家姓,其他属性皆为假。
2.3 MATLAB读取口令属性样本
即运行MATLAB软件,读取csv文件并将口令属性值保存在MATLAB下的矩阵变量中,作为口令属性样本,并为下面的训练学习和仿真测试提供数据样本。
2.4 确定输入输出属性
本方法旨在分析口令属性间关系,输入输出属性即为所要分析的两个或多个属性,以其中的一个属性为输出,另一个或多个属性为输入,建立对应的网络模型,探索它们之间可能存在的关系。例如,欲分析表1中第1到19个与第20个属性之间的关系,则输入为1~19个属性值,输出为第20个属性值。值得注意的是,输入可为一个或多个属性,而输出只能是某一个属性。
2.5 确定神经网络模型
1)确定网络类型
为获得最佳实验效果,在初步确定RBF网络(即Radial Basis Function Network,径向基函数网络,一种使用径向基函数作为激励函数的人工神经网络)和BP网络(即Back-Propagation Network,反向传播网络,一种按误差逆传播算法训练的多层前馈网络)这两种适用的网络类型后,经多次实验发现,同等条件下(包括样本数量、网络层数、神经元个数等)BP网络的训练时间开销远小于RBF网络,所得网络的仿真效果也优于RBF网络,故而本方法全部采用BP网络。
2)确定网络层数
BP网络由输入层、中间层和输出层构成。其中,中间层可为单层或多层,由于它们和外界没有直接的联系,故也称隐层(或隐含层)。实验过程对比测试了单隐层和多隐层的网络结构,结果表明,多隐层网络仿真准确率小于或等于单隐层,而网络训练时间开销却大于单隐层。在多次实验后,确定采用单隐层结构的BP网,即2层结构的BP网络(注:网络层数指隐层和输出层,一般不计算输入层)。
3)确定各层神经元个数
对应网络层数的概念,神经元的个数是指隐层和输出层的神经元个数,而与输入层无关。
a. 单隐层神经元个数:一般依据如下经验公式取值
I. (输入维数+输出维数) / 2
II. (输入维数*输出维数)1/2 + a,a为1~10之间的常数
b. 输出层神经元个数:与输出属性维数一致,此处取1。
MATLAB神经网络中2层BP网络的结构示意图,如图2所示:
图2 两层BP网络结构
其中,输入维数为19(即19个输入属性),输出维数为1(即1个输出属性),对应分析输入的19个属性与输出的1个属性间的关系;隐层数为1,包含10个神经元;输出层数为1,包含1个神经元。
4)确定训练样本容量
训练样本,是指神经网络学习过程用于校正逼近网络各层权重的数据样本。
经多次实验发现,在网络类型确定(BP网络)的情况下,随着网络训练样本容量的增大,训练时间不断增大,而所得网络的仿真准确率先增大后趋近于同一个数值。当训练样本容量为1万时,所得网络仿真测试准确率较高;样本容量大于1万(如10万、100万、640万)时,训练时间急剧增大,而对应的仿真准确率却无明显变化甚至有所降低。实验统计数据如表2所示:
表2 训练样本容量与训练时间统计表
1) 确定仿真样本容量
仿真样本(或称测试样本),是指在神经网络中经过学习训练所得的网络为进行仿真测试以获得输出结果的输入样本。
仿真样本容量越大,仿真计算时间开销越大,对计算机系统内存要求越高。为了更准确全面地反映训练所得网络的仿真准确率,实验采用CSDN全体口令属性样本(640万)作为仿真测试样本。因仿真测试时间远小于网络学习训练时间,此处不列举相应时间开销。
2) 确定相关函数和参数设置
神经网络(BP网络)第1层单隐层采用正切Sigmoid传递函数“tansig”,第2层输出层采用线性传递函数“purelin”,训练函数则采用动量梯度下降反向传播算法“traingdm”。
2.6 训练神经网络
确定网络类型、结构、输入输出和相关参数设置后,便可运行MATLAB编程文件开始网络训练,以获得最能表现真实输入输出样本关系的网络模型,此处不展开。
2.7 仿真测试
完成网络训练后,为了检验所得网络模型的有效性和准确性,必须利用该网络对仿真样本进行测试。采用仿真样本作为输入,通过当前网络仿真计算出输出,对输出结果进行适当处理后,与实际样本结果进行对比,计算出仿真准确率,以此评估当前网络的有效性和准确性,分析当前输入输出对应的口令属性间是否存在有价值的关系。
2.8 输出结果
即完成仿真测试后,导出其中有价值的属性规则。本方法旨在利用神经网络分析挖掘口令属性间的关系,一种有意义有价值的属性关系,可以看作一条有用的规则,对应于MATLAB下一个有效的神经网络模型。如何判断一种关系是否有意义有价值?实验中以该关系对应的神经网络模型仿真准确率高低进行衡量。当仿真准确率大于某个数值(如80%),可以认为这个模型是有意义的,即对应的输入输出属性之间的关系是有价值的。CSDN的640万口令分析所得的部分有意义的属性关系如表3所示:
表3 CSDN口令属性关系表
因版面所限,网络模型信息未完全列入表中,补充说明如下:训练样本容量均为1万,仿真样本容量均为640万,网络结构均为2层BP网络,输出层神经元个数均为1 。(注:表中属性1~20所代表的含义详见表1)
在上表中,每一条记录代表一条规则,一个有意义的神经网络,也是一种有价值的属性关系。例如前4条记录,表示根据属性1~9,能够推断出属性10、11、12、13。
3 总结
本文针对口令本身的研究提出了基于MATLAB的神经网络口令属性分析方法,根据该方法,可以对不同类型的口令库(如论坛口令、邮箱口令、人人网等社交网站口令)进行属性分析,获得相应的有意义的规则(属性关系),进而生成反映用户口令设置习惯的破解字典,为口令破解和恢复提供指向性帮助。以CSDN口令库为例,分析可得如下规则:
①规则1——输入属性:5.包含字母,14.包含中文姓氏;输出属性:9.包含小写字母
②规则2——输入属性:3.长度9~11位,5.包含字母;输出属性:6.包含数字
那么,我们可以根据这两个规则生成包含小写字母的百家姓字典,以及长度为9~11位包含数字和字母的字典。当然,若要挖掘出更能表现用户口令设置习惯、更有价值的规则,那么,对于属性的定义和有价值属性规则的判定方法这两个环节,还需要做进一步研究。
此外,实验发现,同样的规则(属性关系),在CSDN口令库下是有意义的,然而当口令类型发生改变,比如将CSDN论坛口令库换成126邮箱口令库,则这些规则不一定都适用,仿真准确率也会发生变化(或提高或降低)。这也反映出不同类型(论坛、邮箱、社交网站等)口令,属性间关系不尽相同、用户口令设置习惯有所差异。
[1]方俊,赵英良. 基于RBF神经网络的一次性口令认证方案[J]. 计算机工程, 2011, 37(9):157-159.
[2]陈铁明,陈会兵,潘小明,蔡家楣. Web动态口令登录新方法设计与实现[J]. 计算机应用于软件, 2011, 28(7):31-34.
[3]蔡家楣,严杜鹃,陈铁明. 一种基于神经网络权值同步的TinySec协议密钥更新方案[J]. 计算机科学, 2009, 36(4):84-86.
[4]田勇,向涛. 神经网络同步的判定及在神经密码中的应用[J]. 计算机工程与应用, 2011, 47(36):109-111.
Analysis Method of Password Attributes Based on Neural Network
Chen Ruihao, Qiu Weidong
(College of Information Security Engineering, Shanghai Jiaotong University, Shanghai 200240, China)
This paper proposes an analyzing method which is fit for a large number of passwords. By building up a neural network model, it can analyze and dig for potential relationships between password attributes. After attribute assignment for passwords of different application types, it can utilize neural network tool in MATLAB to finish model building, training and simulation testing, in order to find out potential and valuable relationships or rules between attributes. With such relationships, it can help to deduce unknown attribute values from the already known ones, or provide some directivity help for password cracking and recovery work by generating brute force cracking dictionary, which reflects the users’ habits of password setting.
Neural Network, Password, Attribute Assignment, Analysis
TP183
A
2014.12.11)
1007-757X(2015)04-0045-03
陈锐浩(1989-),男,广东潮州,上海交通大学信息安全工程学院,硕士研究生,研究方向:密码学与计算机取证,上海,200240
邱卫东(1973-),男,江西九江,上海交通大学信息安全工程学院,教授,研究方向:密码学与计算机取证,上海,200240