耿 博,葛丽娜,王秋月,王利娟
(1.广西民族大学信息科学与工程学院,广西 南宁 530006;2.广西民族大学东盟研究中心(广西科学实验中心),广西 南宁 530006)
随着智能手机的飞速发展,智能手机现已成为人们日常生活的必需品。搭载Android操作系统的智能手机占全部智能手机总数的79%以上[1],Android系统的安全性问题也逐渐被人们关注。
手机屏幕锁定是智能手机安全防护的第一道屏障,也是禁止违法用户窃取手机隐私的重要屏障。手机屏幕的锁定即手机的用户认证机制[2],通常利用图案解锁、指纹解锁、PIN(Personal Identification Number)解锁、人脸识别等方法进行用户认证[3 - 6]。该机制可以有效保护手机内的隐私信息不被非法用户窃取,直接关系到手机系统的安全性。手机的认证过程往往涉及到手机内核层、框架层与应用层的数据传递,且实现方式多样,但现有的手机认证方法的安全性与便捷性还未达到一种平衡。
现行的手机认证方法中九宫格手势认证所占比例较大,其次分别是指纹认证方法与图像认证方法[7,8]。认证方法更新很快但人们所关心的安全性却没有太大突破。九宫格手势认证主要是通过设定一个图案手势认证密码,在认证时通过触摸滑动相应的图案与预设的图案密码相对比,相同则认证成功。九宫格手势认证方法的弊端是只能设定一组图案密码,易被破解[9 - 11]。因此,本文基于Android系统,设计动态认证密码,增加密码的多样性,增加破解难度,提高智能手机的安全性。
九宫格手势认证方法[12]是谷歌在2010年开始推广使用的,近年来,九宫格手势认证方法更是主流的手机认证方法之一。九宫格手势认证方法要求绘制过程至少经过手机屏幕的4个点,且九宫格中的九个点不可以重复利用,路径中间的点不能跳过,这些要求决定了解锁图案大约为389 112种[13]。
九宫格手势认证方法是根据init()方法绘制出九个点并初始化,设置一个有序数组ArrayList〈Point〉来收集触摸点,另外设置一个有序数组List〈Integer〉来记录触摸点的顺序,通过对比触摸点顺序与保存的密码图案是否一致来决定是否完成认证。具体流程如图1所示
Figure 1 Flow chart of speed dial authentication图1 九宫格认证流程图
九宫格手势认证方法只支持一种图案手势认证,造成该方法的密码单一,极易受到污渍攻击、肩窥攻击、暴力破解,致使手机隐私泄露,造成手机用户损失。Aviv等人[14]提出污渍攻击,Andriotis等人[15]具体阐述了智能手机的污渍攻击,即利用工具将手机屏幕残留的油脂拍下即可清晰看到油脂痕迹,该攻击方法可以轻易获取图案锁的密码。污渍攻击的本质是根据手机主人遗留在手机屏幕上的认证手势的污渍猜测手势认证密码,其成功率远远高于单纯的猜测攻击,适用于手机屏幕遗留下大量的手势认证污渍的情况。
九宫格手势认证方法的另外一个安全威胁是肩窥攻击,即用户在公共场所频繁地进行手机认证,攻击者通过肩窥或者拍照获取手机认证手势的攻击方式。肩窥攻击的本质是直接偷窥手势认证密码,而后获取认证密码,适用于环境嘈杂的情况,且在此情况下成功率极高。九宫格手势认证方法密码单一,易被暴力破解。Dietz等人[16]在统计大量用户的认证图案后,构造了一个链式模型来分析Android认证图案的统计模型,发现用户的图案选择有明显的喜好,根据图案出现的频率可以暴力破解图案密码。
对于九宫格手势认证方法的这些问题,我们需要一个可以抵抗污渍攻击、肩窥攻击、暴力破解的方案。为解决此问题,我们改进了九宫格手势认证方法。
本文第3节介绍改进的九宫格图案手势认证方法;第4节给出了改进的九宫格手势认证方法的理论分析;第5节介绍实验及实验分析;最后进行全文总结。
为了增加九宫格手势认证方法的安全性,对其认证过程进行改进。改进的九宫格手势认证方法无需绘制完整的密码图案,只需根据屏幕上显示的认证点以及随机数绘制认证图案即可。用户根据屏幕上显示的随机数绘制认证图案,设备界面显示上次成功认证的末位认证点,如为首次认证则不显示认证点。若为非首次认证,则设备界面显示的认证点的向下间隔一位触摸点为本次认证的起始点,屏幕上显示的随机数即为本次认证点的个数。预存的6位或者多位触摸点依次循环作为认证密码,认证成功后则认证密码更新,认证失败3次,认证密码自动更新,认证失败导致密码更新2次,则系统自动发送设备具体位置到指定邮箱。
增加一个cishu变量,变量的数值等于SettingActivity收集到的触摸点的个数,程序中增加Random类来产生[2,N-1]随机数,N为cishu变量的数值。每成功认证一次,随机数更新一次,随机数的加入决定了每次认证的点数和起始认证点数不同,每次认证的密码图案依据注册时绘制的密码图案循环。改进后的认证流程如图2所示。
Figure 2 Flow chart of the improved authentication method图2 改进的认证方法流程图
根据Android系统设计的认证方法原理,将原本一个存放图案密码的有序数组List〈Integer〉增加到6个或者更多,以便存储6种或多种认证密码。将SettingActivity收集到的触摸点依次存入到有序数组List〈Integer〉中。以6位触摸点为例的密码存储程序流程如图3所示。
为了实现认证密码的动态变化,现对认证过程进行改进。增加记录认证点的变量weizhi,weizhi变量与SettingActivity中的有序数组变量passList对应,weizhi变量的变化决定着认证密码的变化。增加记录当前认证点的变量weizhi1,变量weizhi1记录当前认证点的位置。用户认证过程改进为:对比当前随机数对应的图案与用户绘制图案是否相同,相同则认证成功,认证成功的具体流程如图4所示。
改进的认证程序增加一个变量cishu2,用来统计认证错误次数。认证不成功时,则变量cishu2加1,当cishu2的值为3时更新随机数。增加变量cishu3,记录认证失败导致随机数更新的次数,当变量cishu3的值等于2时,自动发送设备具体位置到指定邮箱。认证失败的具体流程如图5所示。
Figure 4 Flowchart of successful authentication图4 成功认证具体流程图
Figure 5 Flowchart of authentication failure图5 认证失败具体流程图
从表1可以看出,改进后的认证方法的密码空间数大于改进前的,改进后的认证方法的密码空间数约为改进前的11倍,加大了密码强度,增强了安全性。
改进的九宫格认证方法具有动态性,有效地防范了肩窥攻击与污渍攻击。肩窥攻击只能获取当前某一次的手势认证密码,污渍攻击获得的是动态手势认证图案的集合,无法具体得出具体的手势认证密码。改进后的认证系统具备自动更新手势密码的功能,即密码输入错误3次后,密码自动更新为下一个密码,能够有效抵抗暴力破解。
改进后的手机用户认证方法具有极高的可用性。首先,理论上改进后的九宫格手势认证方法的安全性比九宫格手势认证方法的高。其次,改进后的用户认证方法提高了用户认证的便捷性。改进后的认证方法仅需用户绘制随机数对应的认证点数量的图案,无需绘制全部认证点数量的图案,提高了用户认证机制的便捷性。在改进的用户认证方法中,用户依旧可以使用改进前的界面作为认证界面,不同的是屏幕在开始认证时会自动产生随机数以及显示上次成功认证时的末尾认证点,界面保留原始的认证界面,有助于认证方法的推广。
手机隐私安全的问题被越来越多的人关注后,许多研究者都对手机初始的认证方法进行了改进,提高了智能手机的安全性,但绝大多数的改进都是舍弃了九宫格手势认证方法,另寻其他认证方法。本文的方法保留九宫格认证方法的认证界面,改进认证过程,增加手机的安全性。
改进后的程序的时间复杂度与改进前的程序的时间复杂度理论上相差不多,但程序运行时间应该有些许不同。改进的九宫格认证方法的程序的空间复杂度大于九宫格手势认证的程序空间复杂度,关于如何优化空间复杂度以及时间复杂度是今后工作的一个重点。但现阶段,就为了增加手机隐私的安全性来看,改进后的九宫格认证方法的性能要优于改进前的。
对比改进的九宫格认证方法与九宫格认证方法的可用性、性能与安全性,收集相应数据,评估改进的九宫格认证系统的性能、可用性与安全性。
手机运行系统Android 6.0.1平台,手机型号:小米3,手机RAM容量:2 GB,手机ROM容量:16 GB。电脑操作系统:Window 10。
5.2.1 可用性及性能实验设计
通过组内单因素重复实验的方法[17],评估改进的九宫格手势认证方法的可用性。独立变量为认证点。通过多次绘制不同的图案,保存密码图案,最后绘制正确与错误的解锁图案,验证改进的九宫格手势认证方法在手机中是否可以正常流畅运行。
5.2.2 安全性实验设计
通过组内单因素重复实验的方法,评估改进的九宫格手势认证方法的安全性。独立变量为认证点。具体方案:(1)对改进的九宫格手势认证方法进行猜测攻击,测试改进的九宫格手势认证方法是否可以有效抵抗猜测攻击。(2)告知测试者首次认证的手势密码,来模拟认证系统受到肩窥攻击,测试改进后的九宫格认证方法是否可以通过获知单次认证的手势密码来认证手机,验证改进后的九宫格手势认证方法是否可以有效抵抗肩窥攻击。(3)对手机屏幕上认证时留下的污渍进行拍照,保证拍摄图片的清晰度,将照片给测试者,测试者根据照片猜测手机的认证手势,看能否通过手机认证,验证改进的九宫格手势认证方法是否可以有效抵抗污渍攻击。
5.3.1 测试改进的九宫格手势认证方法的可用性及性能
给参与者讲解九宫格手势认证方法和改进的九宫格手势认证方法的原理,让参与者熟悉改进的九宫格手势认证方法并确认参与者已经学会使用改进的九宫格手势认证方法。参与者开始分别使用认证系统。在每一位参与者成功完成手机认证之后,对手机屏幕上的污渍进行拍照,记录解锁时间以及解锁成功次数。同时,询问参与者手机解锁时是否有卡顿现象。
5.3.2 测试系统的安全性
在改进的九宫格手势认证方法中设置6个点的手势图案密码,以便快速测试改进后的方法是否可以抵御猜测攻击、污渍攻击和肩窥攻击。
(1)首先,给予测试者4个小时时间,猜测攻击九宫格图案手势认证方法。其次,另外给予测试者4个小时时间,猜测攻击改进的九宫格手势认证方法。实验结束后,记录被破解的手机个数。
(2)给测试者分发预留的手机屏幕污渍照片。首先让测试者在规定时间内根据照片的污渍痕迹猜测九宫格手势认证方法的认证手势密码。其次,让测试者在相同时间内,根据污渍痕迹猜测改进的九宫格手势认证方法的认证手势密码。实验结束后,记录被破解的手机个数。
(3)告知测试者单次手机认证的手势密码图案。首先,让其在规定时间内尝试对九宫格手势认证方法进行破解。其次,给予相同的时间,让其尝试对改进的九宫格手势认证方法进行破解。实验结束后,记录被破解的手机个数。
5.4.1 可用性测试结果及分析
100名测试者,100人成功认证运行改进的九宫格手势认证方法的手机,认证成功率为100%。手机完成单次认证的时间如表2所示。
Table 2 Single mobilephone authentication time before and after improvement表2 改进前与改进后的认证方法完成单次手机认证时间 s
改进后的图案手势认证方法的平均认证时间少于改进前的,可以得出改进后的认证方法的便捷性优于改进前的。改进后用户认证方法的最大认证时间大于改进前的,分析原因为:
(1)当次认证点数为8点,即认证点数为当前最大认证点数;
(2)改进后的认证系统还需生成随机数与提取相应的认证密码图案。
以上2点原因造成了改进后的认证方法的最大认证时间值大于改进前的。但改进后的认证时间的最小值与平均值均少于改进前的,认证时间的最大值仅出现当前认证点数是8位的情况下,所以改进后的图案手势认证方法的便捷性优于改进前的。
由此实验结果,我们认为改进后的九宫格认证方法的可用性优于改进前的。同时,100名测试者中有13人反映手势有时有卡顿现象。改进的九宫格手势认证方法的空间复杂度与时间复杂度均大于九宫格手势认证方法的,认证程序占用手机内存较多,手机有些许卡顿,优化认证方法是以后工作的一个重点。
5.4.2 安全性实验结果及分析
九宫格手势认证方法被破解的手机个数与改进的九宫格手势认证方法被破解的手机个数如表3所示。
Table 3 Number of cracked cell phone表3 被破解的手机个数 个
从表3中可以看出,猜测攻击、污渍攻击、肩窥攻击对破解九宫格手势认证方法的成功率要高于对破解改进的九宫格手势认证方法的成功率。
(1)对于猜测攻击。猜测攻击九宫格手势认证方法,由于密码的单一性,在充足的时间内,只要有耐心则成功率很高。而改进的九宫格手势认证方法,存在密码自动更新机制,提高了猜测攻击的难度。
(2)对于污渍攻击。实验中给予参与者的污渍照片清晰度高,九宫格手势认证方法的密码单一性弊端又一次显现出来,人们根据照片中的污渍痕迹,极易试出正确的解锁图案。改进的九宫格手势认证方法,由于不存在固定的解锁密码,造成污渍照片中的污渍混乱,提高了抵抗污渍攻击的能力。
(3)对于肩窥攻击。九宫格手势认证方法只有一种手势密码,只要获知该密码,均可以成功认证手机,肩窥攻击对改进前的九宫格手势认证方法的认证成功率为100%,对于改进的九宫格手势认证方法则没有效果,因为改进后的认证方法没有固定的认证图案。
根据表3可知,改进后的九宫格认证方法的安全性要优于改进前的九宫格认证方法的安全性。
根据以上实验可以得出,改进后的九宫格认证方法在保证可用性的基础上安全性更高。
随着Android系统的智能手机的越来越大众化,智能手机的隐私安全性越来越被人们关注。本文以提高手机安全性为目的,对Android系统的九宫格手势认证方法进行了改进,设计实现了手机手势图案的动态认证功能,提高了手机的安全性。
通过手机验证了本文所提方法可以正常运行,且拥有动态认证的特性。经过测试,该认证方法可以有效提高手机安全性,防止手机隐私被泄露。
在改进的九宫格手势认证方法中,存在以下几个方面可以深入研究:
(1)内存优化问题。目前只是初步针对九宫格手势认证方法存在的问题进行改进,并未过多地涉及内存优化问题,目前改进的认证方法的时间复杂度与空间复杂度均高于改进前的,所以程序稍显卡顿,在内存优化方面尚有很大的改进空间。
(2)认证机制的安全问题。改进后的图案手势认证方法检测到认证失败造成认证密码更新2次后,会自动发送智能设备位置到指定邮箱,并自动关机,但关机后,仍可正常开机,继续进行猜测攻击,如何进一步抵抗猜测攻击是今后工作的另外一个重点。