2. 中国信息安全测评中心, 北京 100085
2. China Information Technology Security Evaluation Center, Beijing 100085, China
计算机系统的用户身份认证,在日常生活中随处可见。大部分系统采用传统的一次性认证方法,如密码、基于生物特征识别中的指纹和脸部识别。但是密码存在被破解或忘记的风险,而指纹和脸部识别都需要特定的硬件设备。生物特征识别中击键动力学识别是一种生物行为特征识别,通过分析个人在键盘上的打字节奏[1]达到识别人的目的。例如,在线学习网站Coursera使用击键特征来验证在线学生的身份[2]。打字节奏强烈依赖于个人的习惯和熟练程度,并具有一定的稳定性[3],短期不会随着时间而迅速变化,根据个人击键的时间特征可以抽象出个人独有的打字节奏。因此,可以通过对个人新输入文本时的击键行为与个人以往的打字节奏习惯进行匹配达到识别用户的目的。
现有的关于击键动力学认证的研究主要是基于固定文本(如登录密码)在多种输入平台下的一次性认证机制,关注的是时间特征的处理和算法的选取与改进[4-9]。用户输入固定文本只能获得局部输入模式,不具有一般性而且灵活性差,不能适用于新的固定文本。目前较新的研究是基于自由文本的持续认证机制,通过对大量个人自由文本的击键数据的学习获得较为全面的个人击键行为模式,用户在使用键盘时,后台会持续进行身份验证[10]。但是现有的基于自由文本的持续认证研究,大部分使用传统的机器学习算法进行输入模式的学习,缺乏对基于自由文本的击键输入模式的深入研究。
本文使用卷积神经网络(convolutional neural networks, CNN)加循环神经网络(recurrent neural networks, RNN)模型对自由文本数据集进行系统深入的输入模式学习,获得个人独有的较为完整的击键输入模式。神经网络可以自动提取特征进行学习,根据击键数据的特点设计了对应的“CNN+RNN”模型。训练后的模型能够充分体现个人的击键行为模式,并且经测试有较好的准确率。模型可以应用在相关的一次认证完成后,作为对计算机系统的用户的辅助认证,也可以与其他生物特征识别相结合,作为身份多因子认证的重要一环。
1 相关工作基于自由文本的身份认证,每个用户至少需要10 000个击键数据,每一个测试样例大约需要1 000个击键数据,才能达到较好的识别效果和可信度[11]。由Sun等[12]收集的Buffalo击键数据集,使用GMM(Gaussian mixture model)聚类的方法,对击键数据进行实验获得相等错误率(equal error rate, EER)为0.01%。Vural等[13]获得一个新的数据集,使用Gunetti等[14]的算法,通过计算2个击键数据样例的距离判断2个样例之间的相似程度来确定是否属于同一个人。对数据集进行认证测试获得最佳拒真率(false rejection rate, FRR)为3.93%,容假率(false acceptance rate, FAR)为0.75%。Murphy等[15]采集了一个目前为止最大的一个自由文本的击键数据集,记录每个参与者在2.5年内的所有键盘操作、鼠标操作和软件程序的数据。同时对数据集应用Gunetti等[14]的算法认证测试获得最佳EER为10.36%。
Huang等[16]提出一种KDE(kernel density estimation)算法,通过训练集和测试集之间的概率密度,计算训练样例和测试样之间的距离,进而判断新的测试击键数据的真实性。使用该算法在多种公开数据集进行测试,EER达到1.95%。Shimshon等[17]用随机森林(random forest, RF)算法进行用户认证实验,考虑了实现持续验证的窗口长度对用户认证准确率的影响,实验获得FAR为3.47%,FRR为0%。Ahmed等[18]先对击键特征进行了处理,建立多层感知器(multi-layer perceptron, MLP)自动学习击键之间的特征组合,学习个人的击键行为模型,模型测试的EER达到2.46%。Putri等[19]在Android平台下将击键行为特征和触屏手势的行为特征相结合,用k近临(k-nearest neighbor, KNN)、支持向量机(support vector machine, SVM)、RF等算法,实验EER达到0.26%。Li等[20]将自由文本特征和击键时的手腕动作特征相结合,使用一对多随机森林(one-vs-all random forest)算法,实验的FRR达到1.82%, FAR达到1.94%。
上述的大部分研究仅仅是公开自己收集到的数据集,使用传统的机器学习算法进行击键模式的学习,缺乏对基于自由文本的击键输入模式的深入研究,有些研究的数据集较小,实验结果缺乏可信度。本文利用神经网络自动提取特征学习的优势,建立神经网络模型,研究表征击键模式的优质特征,从而提高身份认证的准确性。
2 基于自由文本击键特征的持续认证方法 2.1 身份持续认证个人的身份认证可以转化为一个二分类问题,当一个击键序列与一个用户的输入模式匹配时,说明该用户是真实的,否则为入侵者或假冒者。一次性认证一般是根据口令进行身份认证,认证之后就不再对用户的身份进行核查了。持续认证与一次性认证相对,一般是在用户无感的情况下在一段时间内对用户的行为进行核查。持续认证时会有一个滑动窗口,当新输入的击键数据达到滑动窗口长度时就对新输入的击键数据根据个人的击键模式进行验证。当击键数据不断输入时,该窗口不断滑动,对新的击键序列进行持续的验证,达到了身份持续认证的目的。这里,需要对每个用户建立独立的神经网络,获得自己独有的击键模式,这种方法具有较好的扩展性,适用于系统用户会持续增加的系统。
2.2 击键信息的记录和击键特征表示当按键按下和抬起时都会发送一个系统中断,分别用onKeyDown和onKeyUp方法捕获按键按下和抬起事件,在按键事件中获得事件发生的对应时间戳,精确到毫秒级。将按键内容和按下抬起的时间记录下来,构成了原始的数据。
现阶段研究的使用的按键的时间特征有:H(按键的持续时间),RP(第一个键释放到第二个键按下的时间间隔),PP(第一个键按下到第二个键按下的时间间隔),如图 1所示,P为一个键按下的时间戳,R为抬起的时间戳。研究表明,时间特征不一定需要全部用到,而且按键之间的时间特征组合不止是2个相邻击键之间,可以3个相邻击键,N个相邻击键的之间的时间特征组合,称为N-gram特征。
2.3 使用“CNN+RNN”学习个人击键模式
基于自由文本击键的身份认证使用传统机器学习方式和深度学习的方式的比较结果如表 1所示。
传统的认证模型计算各种击键之间的RP均值和方差及其他数学特性,以此为个人的击键特征,然后使用传统的机器学习算法,进行个人击键输入模式的学习。但是仅仅使用击键RP的统计特性难以表征一个人复杂多变的击键行为,特别当拥有海量个人的击键数据时,使用RP的统计特性作为击键特征只能表征局部的击键行为,导致识别模型的准确率降低,上述方法建立的模型可靠性和扩展性不足。
神经网络中的RNN是一种自动学习时序序列的天然结构,RNN在语音识别、文档摘要、自然语言处理上已经有非常好的应用效果。因为击键序列为时序序列,所以本文选用RNN学习击键特征。为了能更好地表征击键序列的特征,在将击键序列输入RNN网络之前先经过CNN卷积处理。卷积核的长度决定了能覆盖的击键向量的个数,一次的卷积操作提取出在击键序列N-gram特征,经过不同卷积核对整个击键序列的卷积操作,每个卷积核都会形成一个更高层次的击键特征序列。最后将处理后的特征序列输入到RNN网络中,经过训练获得个人的输入行为模式。由于个人的输入行为特点并非完全不变,而是随着时间不断改变的。RNN网络能学习到个人当前的输入特点同时保留以前的输入特点。因此建立CNN+RNN模型实现身份认证有较好的可靠性和扩展性。
2.4 使用击键向量表示击键序列使用RNN网络学习击键序列,首先需要将击键数据向量化,将单个击键数据根据击键的时间特征,转化成击键向量,将整个击键数据划分成由击键向量组成的击键序列。模型通过对自由文本击键特征的提取,获得每个人独有的输入模式。图 2展示了将一个击键文本序列转化成击键特征序列的过程,其中P[*]代表按键按下的时间戳,R[*]代表按键的释放的时间戳,ID[*]代表按键的标号,H[*]代表按键的持续时间,R[*]P[*]代表 2个键的RP特征,P[*]P[*]代表 2个键的PP特征,*表示任意按键。
击键向量的具体数据格式如图 3所示,“1”表示第一个按键,“2”表示第二个按键。
2.5 “CNN+RNN”模型设计
GRU网络是一种特殊的RNN,有效的解决了“长期依赖”问题。GRU单元结构表示如下:
$ \begin{array}{l} \;\;\;{z_t} = \sigma ({W_z}\cdot\left[ {{h_{t - 1}}, {\rm{ }}{x_t}} \right]), {\rm{ }}\\ \;\;\;{r_t} = \sigma ({W_r}\cdot\left[ {{h_{t - 1}}, {\rm{ }}{x_t}} \right]), {\rm{ }}\\ \tilde ht = {\rm{tanh}}\left( {W\cdot\left[ {{r_t}\cdot{h_{t - 1}}, {\rm{ }}{x_t}} \right]} \right), {\rm{ }}\\ \;\;\;{h_t} = \left( {1 - {z_t}} \right)\cdot{h_{t - 1}} + {z_t}\cdot\tilde ht. \end{array} $ | (1) |
其中:xt表示t时刻输入网络的数据,zt表示t时刻增加的网络信息
本文设计的“CNN+GRU”模型如图 4所示。
在向量序列中每一行代表一个击键向量,整体是一个击键序列,使用不同的一维卷积核在击键序列上滑动提取不同位置的组合特征,设
$ {C_{\rm{i}}} = f(m \circ {\mathit{\boldsymbol{K}}_{\rm{i}}} + b). $ | (2) |
其中:
本实验采用Google公司开发的tensorflow框架进行网络模型的构建。对每个用户都需要建立一个网络,使用10折交叉验证的方式对模型进行训练和测试。在10折交叉验证中,每轮网络模型会迭代200次,取出迭代过程中每组最佳的FRR、FAR、EER。对所有人的测试结果取均值,最后将10折产生的FRR、FAR、EER求均值。模型dropout=0.5,为了方便网络处理,将用户击键数据划分成固定长度的击键序列。实验取序列长度L=(10,30,50,70,100)研究选取合适的序列长度使模型效果最佳。在CNN处理击键序列中,取卷积核的长度k=(2,3,4,5),池化的长度为2。同时设置了在输入GRU网络之前未使用CNN处理的模型的对比实验。本文选取GRU单元中神经元个数为16、32、64、128进行实验,研究合适的神经元个数。
3.1 数据集纽约州立大学研究人员收集了Buffalo数据集。这个数据集是157位参与者的长固定文本和自由的文本击键数据,所有人都能熟练使用键盘。以输入固定的文本和自由回答问题的方式,采集参与者的击键数据。参与者通过3个会话框,完成信息的输入,每个参与者在每个会话框平均5 700次击键,3个会话框平均超过17 000次击键。采集参与者平均28天内的击键数据。本文选用了其中使用相同键盘输入的75位参与者的击键数据。
3.2 数据处理因为是二分类问题,在训练网络时,需要选取一部分其他人的击键数据用做反例数据。每个用户的获得训练集和测试集表示如下:
$ \begin{array}{l} \;\;\;{\rm{U\_train\_i}} = {\rm{U}}\{ {\rm{Train}}{{\rm{\_}}_{\rm{j}}}|{\rm{j}} \ne {\rm{i}}\} , {\rm{ }}\\ \;\;\;\;{\rm{U\_test\_i}} = {\rm{U}}\left\{ {{\rm{Test}}{{\rm{\_}}_{\rm{j}}}|{\rm{j}} \ne {\rm{i}}} \right\}, {\rm{ }}\\ {\rm{Trai}}{{\rm{n}}_{{\rm{\_new}}}} = {\rm{Train}}{{\rm{\_}}_{\rm{i}}} + {\rm{Readom\_select}}\\ \;\;\;\;\;\;\;({\rm{U}}{{\rm{\_}}_{{\rm{train\_}}}}_{\rm{i}}, {\rm{ num}}({\rm{Train}}{{\rm{\_}}_{\rm{i}}})), {\rm{ }}\\ \;{\rm{Tes}}{{\rm{t}}_{{\rm{\_new}}}} = {\rm{Test}}{{\rm{\_}}_{\rm{i}}} + {\rm{Readom\_select}}\\ \;\;\;\;\;\;\;\;\;\;({\rm{U}}{{\rm{\_}}_{{\rm{test\_}}}}_{\rm{i}}, {\rm{ num}}({\rm{Test}}{{\rm{\_}}_{\rm{i}}})). \end{array} $ | (3) |
从每一个用户的击键数据选取90%用作训练集Train_i,剩余的10%用作测试集Test_i。因为是二分类问题,所以要在原来的训练集和测试集中添加反例数据。为了保持反例数据的有效性,从其他所有用户的训练的集合U_train_i中随机选取正反样例数量比例为1的反例数据加入到原训练集Train_i中组成新的训练集Train_new。从其他所有用户的测试集U_test_i中随机选取正反样例数量比例为1的反例数据加入到原测试集Test_i中组成新的测试集Test_new。对击键向量中的每一维特征进行归一化,采用Z-score方法表示如下:
$ z = \frac{{{x_i} - \mu }}{\sigma }. $ | (4) |
其中:xi表示样本中特征的具体取值,μ和δ分别为对应特征的均值和标准差。量化后的数据将分布在[-1, 1]区间。
3.3 实验结果1) 不同序列长度对实验结果的影响。
选取不同长度的击键序列输入到模型中进行训练测试,对所有75个用户进行实验。测试结果如表 2和图 5所示,当序列长度为10时击键序列本身的包含的信息太少,模型对合法用户的输入模式学习不完整,导致模型的错误率较高,识别效果较差。当序列长度增加到30时模型的效果达到实验最佳。分析表 2中FRR、FAR可知,随着序列长度的继续增加,由于序列中的噪音数据增加,模型也会将噪声数据进行学习,导致模型FAR会增加,FRR和EER也会上升。当击键序列较长时,则持续认证的认证滑动窗口就会较长,这导致模型的实用性不足。实验结果表明:固定的击键序列长度为30时,FRR和EER达到实验最低,模型准确率最高。
序列长度 | FRR/% | FAR/% | EER/% |
10 | 16.02 | 3.48 | 9.75 |
30 | 1.95 | 4.12 | 3.04 |
50 | 2.26 | 5.64 | 3.95 |
70 | 1.96 | 5.91 | 3.94 |
100 | 2.67 | 7.57 | 5.12 |
2) 不同时间特征组合对实验结果的影响。
使用击键的不同时间特征组合构成的击键向量对模型进行训练,固定输入模型的序列长度为30,测试结果如表 3所示。只使用按键的持续时间特征H,模型的识别效果较差,如果使用间隔时间特征RP,模型的错误率下降。如果将间隔时间特征RP和PP组合一起构成击键向量,错误率进一步降低;最后将H、RP、PP这3种击键特征组合使用,模型的FRR、FAR、EER错误率均达到实验最低。使用间隔时间特征加持续时间特征“RP+PP+H”和间隔时间特征“RP+PP”的模型错误率差别不大,说明在基于击键的身份认证中,间隔时间特征比持续时间特征更关键。
击键特征 | FRR/% | FAR/% | EER/% |
H | 12.39 | 5.96 | 9.17 |
RP | 4.20 | 7.68 | 5.94 |
RP+PP | 2.05 | 4.55 | 3.30 |
H+RP+PP | 1.95 | 4.12 | 3.04 |
3) 使用CNN处理击键序列对模型提升的效果。
本文设计了击键序列使用CNN和未使用CNN处理输入到GRU网络中的模型对比实验。未加入CNN处理的模型,实验测试获得FRR=4.05%,FAR=6.01%,EER=5.03%。设置CNN中卷积核的长度为2,个数为32,池化的长度2,使用CNN处理的模型,实验测试获得FRR=1.95%,FAR=4.12%,EER=3.04%。从测试结果可以看出使用CNN处理会降低模型的错误率。因此, 将CNN的相关层加入到模型中,会提高模型的整体效果。
4) 在CNN处理中选取不同卷积核的长度模型的实验结果。
CNN中的一维卷积核通过在击键序列上滑动来提取击键特征,卷积核的长度决定了在滑动的过程中一次能覆盖击键向量的个数,设卷积核的长度为N,则卷积核可以提取到击键序列的N-gram特征,使序列包含更高层次的特征。固定序列长度为30,卷积的个数为32,池化的长度为2,选取卷积核的长度为2、3、4、5。实验测试结果如表 4所示,卷积核的长度越长,一次卷积提取的击键特征就越多,出现过拟合的风险增加。由表 4可知,卷积核长度为2、3、4时模型的错误率差别不大,长度2时模型的错误率最小。当长度为5时,由于过度拟合数据,使模型的FRR、FAR和EER均增加。
5) GRU中神经元个数对实验结果的影响。
GRU单元中神经元的个数决定了经过GRU单元处理后输出向量的维度,所以神经元的个数影响了提取击键特征的丰富程度。固定序列长度为30,设置GRU单元中神经元的个数分别为16、32、64、128。实验测试结果如表 5所示,GRU中的神经元的个数越多,能提取出更丰富的特征信息,但是神经元越多产生过拟合的风险越大。由表 5可知,当神经元数量增加到128时模型的错误率较高;当神经元数量为16时,由于提取的特征较少导致不能很好的拟合数据;当神经个数为32时,模型EER最低,识别率最佳。
神经元个数 | FRR/% | FAR/% | EER/% |
16 | 1.82 | 5.20 | 3.51 |
32 | 1.95 | 4.12 | 3.04 |
64 | 2.37 | 5.31 | 3.84 |
128 | 27.20 | 6.99 | 17.10 |
6) 模型鲁棒性测试。
用户输入数据不完整或采集系统延迟会导致击键序列的数据缺失。本文将固定长度30的测试击键序列随机分割成长度为10、20的测试序列即当数据缺失为
$ {\mu _i} - 3{\sigma _i} \le {x_i} \le {\mu _i} + 3{\sigma _i}, $ | (5) |
$ {x_{{\rm{i\_new}}}} = {x_i} \pm K\cdot{\sigma _i}\left( { - 10 \le K \le 10} \right). $ | (6) |
4 结论
本文使用CNN+RNN模型学习自由文本的击键数据,获得较为完善的个人击键输入模式,进行个人身份的持续认证。为了使击键序列能够输入到RNN中学习,首先根据击键时间特征组合将击键数据向量化,然后划分成固定长度的击键特征序列。为了提高网络模型的性能,先把击键序列输入到CNN中提取更高层次的击键特征序列,接着再将击键特征序列输入到RNN中。训练后的模型实验获得最佳的实验结果:FRR=1.95%,FAR=4.12%,EER=3.04%。针对实验数据集,模型在序列长度为30的情况下,能达到最佳的身份识别效果,同时设置了鲁棒性测试,有较好的鲁棒性和实用性。
研究还存在一些不足之处,因为只选用了公开数据集中的使用相同键盘输入的数据,在划分成击键序列后,数据量较小,可能导致获得的个人击键模式还不够完善。
[1] |
BERGADANO F, GUNETTI D, PICARDI C. User authentication through keystroke dynamics[J]. ACM Transactions on Information and System Security, 2002, 5(4): 367-397. DOI:10.1145/581271.581272 |
[2] |
MAAS A, HEATHER C, DO C T, et al. Offering verified credentials in massive open online courses:MOOCs and technology to advance learning and learning research (Ubiquity Symposium)[J]. Ubiquity, 2014, 2014(5): 1-11. |
[3] |
RYBNIK M, TABEDZKI M, ADAMSKI M, et al. An exploration of keystroke dynamics authentication using non-fixed text of various length[C]//Proceedings of 2013 International Conference on Biometrics and Kansei Engineering. Tokyo, Japan: IEEE, 2013: 245-250.
|
[4] |
ALSHANKETI F, TRAORE I, AHMED A A. Improving performance and usability in mobile keystroke dynamic biometric authentication[C]//Proceedings of 2016 IEEE Security and Privacy Workshops. San Jose, USA: IEEE, 2016: 66-73.
|
[5] |
ALI M L, THAKUR K, TAPPERT C C, et al. Keystroke biometric user verification using hidden Markov model[C]//Proceedings of 2016 IEEE International Conference on Cyber Security and Cloud Computing. Beijing, China: IEEE, 2016: 204-209.
|
[6] |
YADAV J, PANDEY K, GUPTA S, et al. Keystroke dynamics based authentication using fuzzy logic[C]//Proceedings of 2017 International Conference on Contemporary Computing. Noida, India: IEEE, 2017: 1-6.
|
[7] |
MAXION R A, KILLOURHY K S. Keystroke biometrics with number-pad input[C]//Proceedings of 2010 IEEE/IFIP International Conference on Dependable Systems & Networks. Chicago, USA: IEEE, 2010: 201-210.
|
[8] |
KAMBOURAKIS G, DAMOPOULOS D, PAPAMARTZIVANOS D, et al. Introducing touchstroke:Keystroke-based authentication system for smartphones[J]. Security and Communication Networks, 2016, 9(6): 542-554. DOI:10.1002/sec.v9.6 |
[9] |
ANTAL M, SZABÓ L Z. An evaluation of one-class and two-class classification algorithms for keystroke dynamics authentication on mobile devices[C]//Proceedings of 2015 International Conference on Control Systems and Computer Science. Bucharest, Romania: IEEE, 2015: 343-350.
|
[10] |
BOURS P. Continuous keystroke dynamics:A different perspective towards biometric evaluation[J]. Information Security Technical Report, 2012, 17(1-2): 36-43. DOI:10.1016/j.istr.2012.02.001 |
[11] |
HUANG J J, HOU D Q, SCHUCKERS S, et al. Effect of data size on performance of free-text keystroke authentication[C]//Proceedings of 2015 IEEE International Conference on Identity, Security and Behavior Analysis. Hong Kong, China: IEEE, 2015: 1-7.
|
[12] |
SUN Y, CEKER H, UPADHYAYA S. Shared keystroke dataset for continuous authentication[C]//Proceedings of 2016 IEEE International Workshop on Information Forensics and Security. Abu Dhabi, United Arab Emirates: IEEE, 2016: 1-6.
|
[13] |
VURAL E, HUANG J J, HOU D Q, et al. Shared research dataset to support development of keystroke authentication[C]//Proceedings of 2014 IEEE International Joint Conference on Biometrics. Clearwater, USA: IEEE, 2014: 1-8.
|
[14] |
GUNETTI D, PICARDI C. Keystroke analysis of free text[J]. ACM Transactions on Information and System Security, 2005, 8(3): 312-347. DOI:10.1145/1085126 |
[15] |
MURPHY C, HUANG J J, HOU D Q, et al. Shared dataset on natural human-computer interaction to support continuous authentication research[C]//Proceedings of 2017 IEEE International Joint Conference on Biometrics. Denver, USA: IEEE, 2017: 525-530.
|
[16] |
HUANG J J, HOU D Q, SCHUCKERS S, et al. Benchmarking keystroke authentication algorithms[C]//Proceedings of 2017 IEEE Workshop on Information Forensics and Security. Rennes, France: IEEE, 2017: 1-6.
|
[17] |
SHIMSHON T, MOSKOVITCH R, ROKACH L, et al. Continuous verification using keystroke dynamics[C]//Proceedings of 2010 International Conference on Computational Intelligence and Security. Nanning, China: IEEE, 2010: 411-415.
|
[18] |
AHMED A A, TRAORE I. Biometric recognition based on free-text keystroke dynamics[J]. IEEE Transactions on Cybernetics, 2014, 44(4): 458-472. DOI:10.1109/TCYB.2013.2257745 |
[19] |
PUTRI A N, ASNAR Y D W, AKBAR S. A continuous fusion authentication for Android based on keystroke dynamics and touch gesture[C]//Proceedings of 2016 International Conference on Data and Software Engineering. Denpasar, Indonesia: IEEE, 2016: 1-6.
|
[20] |
LI B R, SUN H, GAO Y, et al. Enhanced free-text keystroke continuous authentication based on dynamics of wrist motion[C]//Proceedings of 2017 IEEE Workshop on Information Forensics and Security. Rennes, France: IEEE, 2017: 1-6.
|