发明名称 一种批量口令分级先验检验方法
摘要 批量口令分级先验检验方法,由两个步骤组成:基于真实口令数据的分级与分级口令模型的训练与检索;在分级过程中,先要采样提取百万级的用户口令数据,得到样本训练集,然后由样本训练集通过二阶的马尔可夫模型得到口令的概率转移矩阵,并计算得到每个口令的强度评估值,最后按口令评估值和口令分级结构对全体口令数据进行分级;在分级口令模型的训练与检索阶段,通过对每一分级的口令集构建不同强度的口令布鲁姆过滤器,把分级结果通过散列函数组合保存在每一级的布鲁姆过滤器位向量,从而建立分级口令模型;检索时可通过多级的口令布鲁姆过滤器快速且有效判断待测口令的强弱。
申请公布号 CN104268450A 申请公布日期 2015.01.07
申请号 CN201410460356.3 申请日期 2014.09.11
申请人 浙江工业大学 发明人 沈瑛;廖刘承;董天阳
分类号 G06F21/31(2013.01)I;G06F17/30(2006.01)I;G06K9/66(2006.01)I 主分类号 G06F21/31(2013.01)I
代理机构 杭州天正专利事务所有限公司 33201 代理人 王兵;黄美娟
主权项 批量口令分级先验检验方法,由两个步骤组成:基于真实口令数据的分级与分级口令模型的训练与检索;在分级过程中,先要采样提取百万级的中国用户口令数据,得到样本训练集,然后由样本训练集通过二阶的马尔可夫模型得到口令的概率转移矩阵,并计算得到每个口令的强度评估值,最后按口令评估值和口令分级结构对全体口令数据进行分级;在分级口令模型的训练与检索阶段,通过对每一分级的口令集构建不同强度的口令布鲁姆过滤器,把分级结果通过散列函数组合保存在每一级的布鲁姆过滤器位向量中,从而建立分级口令模型;检索时可通过多级的口令布鲁姆过滤器快速且有效判断待测口令的强弱; 详细步骤如下: 1.基于真实口令数据分级 首先需要选定马尔可夫模型的口令数据训练样本集,先对大量的口令数据进行随机抽样得到训练样本,然后借助二阶马尔可夫模型计算得到口令数据总体的概率转移矩阵,接着计算每个口令的强度评估值,最后计算得出分级强度阈值,完成针对真实口令数据的分级口令字典; 1.1口令数据训练样本生成 通过对总数据集随机抽样的方式生成规模合适的口令数据训练样本,在保持较好的分级效果的基础上减少分级模型训练所需要的时间; 1.2计算概率转移矩阵 采用二阶马尔可夫模型,将口令分解为多个三连字符串,通过统计所有的三连字符组合,计算得到口令数据的概率转移矩阵; 口令的二阶马尔可夫模型中的概率转移矩阵T(m,n,k)中的每个元素表示已知前缀为“mn”时下一个字符为“k”的概率,它可以由频率矩阵f(m,n,k)/f(m,n,∞)计算得到;其中m,n,k分别表示口令字符集中的对应字符,f(m,n,k)表示三字符串“mnk”的统计频数,f(m,n,∞)表示所有前缀为“mn”的三字符串的频数;例如,口令串“parsnips”可以产生顺序三字符子串序列:par,ars,rsn,nip和ips;相应的f(p,a,r),f(a,r,s)等计数加1,对应f(p,a,∞),f(a,r,∞)等计数加1; 具体步骤如下: 1.2.1定义口令字符集U,本方法建议U包含0‑9,a‑z和一个特殊字符代表符$,共37个字符(在分级实验中发现,细分大写字符和其它特殊字符对分级影响可以忽略,所以本方法为U采用了较紧致的字符集);初始化三元概率转移矩阵T各元素t(m,n,k)为0,其中m,n,k分别表示口令字符集U中的对应字符 1.2.2依次读入口令数据训练样本集,对每一个口令字符串s: 计算口令串长度len=length(s),length(s)表示口令字符串s的字符长度,分解口令为len‑2个三字符子串;对每一个三字符子串str<sub>i</sub>(1≤i≤len‑2): 更新统计该三字符子串和二字符前缀串的频次: f(c<sub>i</sub>,c<sub>i+1</sub>,c<sub>i+2</sub>)=f(c<sub>i</sub>,c<sub>i+1</sub>,c<sub>i+2</sub>)+1 f(c<sub>i</sub>,c<sub>i+1</sub>,∞)=f(c<sub>i</sub>,c<sub>i+1</sub>,∞)+1, 其中c<sub>i</sub>为口令串s的第i个字符(从1开始计数),以此类推; U为字符集,f(c<sub>i</sub>,c<sub>i+1</sub>,∞)定义为∑<sub>x</sub><sub>∈</sub><sub>U</sub>f(c<sub>i</sub>,c<sub>i+1</sub>,x),∑为累加符号; 1.2.3计算矩阵T的所有元素t(m,n,k):每个三字符子串出现的频次除以该子串的二字符前缀串的频次,即<img file="FDA0000568272250000021.GIF" wi="1114" he="150" />其中U等描述同上。1.3计算口令评估值并分级 口令的强度评估值设置为该口令串的所有三字符子串在三元概率转移矩阵T中对应元素的概率值最高3个的乘积,采用设定弱口令所占的百分比来设定阈值,训练马尔可夫模型训练时采用抽样数据减少训练计算复杂度,在应用马尔可夫模型时采用的是全体真实口令数据; 具体步骤如下: 1.3.1初始化单口令子串强度值数组temp各单元为0,初始化口令数据强度值ts为0,设定口令强度分级数n=3(分级数可设置,后续相应修改) 1.3.2依次读入口令数据样本全集,对每一个口令字符串s: i.计算口令串长度len=length(s),length(s)表示口令字符串s的字符长度,分解口令为len‑2个三字符子串;对每一个三字符子串str<sub>i</sub>(c<sub>i</sub>,c<sub>i+1</sub>,c<sub>i+2</sub>)(1≤i≤len‑2): 从口令概率转移矩阵T中取出对应的元素并赋值给temp[i],即temp[i]=t(c<sub>i</sub>,c<sub>i+1</sub>,c<sub>i+2</sub>),表示将c<sub>i</sub>c<sub>i+1</sub>c<sub>i+2</sub>三字符串对应矩阵T中的值赋值给数组temp中第i个位置 ii.对数组temp从大到小排序 iii.ts=temp[0]*temp[1]*temp[2]并保存到训练样本文本中s对应的“口令强度值”项;清空temp 1.3.3对口令数据训练样本集按新列“口令强度值”从大到小排序,记录总个数为num 1.3.4设定阈值百分比t<sub>1</sub>,t<sub>2</sub>(t<sub>n‑1</sub>),其中0&lt;t<sub>1</sub>&lt;t<sub>2</sub>(t<sub>n‑1</sub>)&lt;1,n为多级布鲁姆过滤器的级数;本方法n=3时,定义强度值百分比属于[0,t<sub>1</sub>]的为一级弱口令,属于[t<sub>1</sub>,t<sub>2</sub>]的为二级口令,属于[t<sub>2</sub>,1]的为三级强口令;计算分级临界值:S<sub>1</sub>=num*t<sub>1</sub>,S<sub>2</sub>=num*t<sub>2</sub>,得到排序后的口令数据训练样本集中S<sub>1</sub>,S<sub>2</sub>位置对应的口令的强度评估值TS<sub>1</sub>,TS<sub>2</sub>1.3.5对按“口令强度值”排序后的口令数据训练样本集,根据分级临界值分别归类n=3级(例ts(s)&lt;TS<sub>1</sub>则口令s判定为一级弱口令,TS<sub>1</sub>≤ts(s)&lt;TS<sub>2</sub>则口令s判定为二级口令,ts(s)≥TS<sub>2</sub>则口令s判定为三级强口令),然后分级保存口令。 
地址 310014 浙江省杭州市下城区潮王路18号