一种防窥视安卓新型屏幕解锁软件

2017-03-01 04:30高光宇陈朝晖尹长青
计算机应用与软件 2017年1期
关键词:机主安卓密码

高光宇 陈朝晖 尹长青

(同济大学软件学院 上海 201804)

一种防窥视安卓新型屏幕解锁软件

高光宇 陈朝晖 尹长青*

(同济大学软件学院 上海 201804)

现有屏幕解锁方案,由于经常出现密码位数不多、修改频率少、密码输入被窥屏、过于枯燥等缺陷,因此存在一定的安全隐患。解决现有屏幕解锁技术的缺陷,探索并且实现一种基于Android平台的解决方案,为终端机主提供更有趣、更通用、防窥视的解锁机制。该实现方案针对使用人群出发点的不同,分为便捷型和安全型。便捷型注重于简单以及趣味性,设计中使密码输入变更为切水果;同时在便捷型的基础上增加了保护密码的机制,使得屏幕锁不会因为被窥屏而泄露密码。目前该创新屏幕解锁方案已经和某公司合作,获得了用人单位的一致好评,速度很快,运行流畅,非常有创意。

安卓 屏幕解锁 防窥视

0 引 言

随着现代电子技术的发展,各种智能手机和触摸屏技术也随之更加成熟,在这些移动设备普及和流行的同时,设备的屏幕解锁也成为最基本的功能。而对各类不同终端,解锁方法也是多种多样的。由于手机用户群十分庞大,需求也多样,如果存在一个有风格并且受欢迎的屏幕解锁,那它对终端机的推广会是非常有帮助的。因此,在屏幕解锁上进行新的尝试也是一种非常有意义的行为。

屏幕解锁技术对于触屏终端机而言,已经是一个非常简单的实现,主要就是捕捉用户的行为并且通过识别特定的行为解开屏幕锁。它的用户的体验十分重要,要求延迟低、界面友好、逻辑清晰,是一个小而精的技术典范。就目前来看,对于终端的解锁方法主要可以分为安全型(有密码)和便捷型(无密码)两类。

安全型是通过输入终端机主预先设定的密码来解开屏幕锁定的方式。目前主流设定密码的方式有两种,分别为图案型(即九宫格解锁)、数字字母型(即输入字母数字的组合解锁)。九宫格的图案型会保存机主预先设定的滑动轨迹,在进入解锁界面后,检测本次用户所输入的滑动轨迹,并与预先设定的滑动轨迹进行对比,若一致则解锁屏幕,进入终端使用界面。数字字母型则会保存机主预先设定的由数字字母组合的字符串,在进入解锁界面后,检测本次用户所输入的字符串,并与预先设定的字符串进行对比,若一致则解锁屏幕,进入终端使用界面。这两种方法都一定程度上保护了终端机主的个人隐私,通过预先设置的密码来对本次用户是否是机主本人进行验证。然而缺乏一些趣味性,而且非常容易被窃取密码,在公共场所存在很大的安全隐患,同时对于不同年龄阶段的人效果差距较大。

而便捷型则是通过一些简单的屏幕操作来解开屏幕锁定的方式。目前主流的操作方式有两种,分别是任意滑动解开屏幕锁定、将图标拖动到固定位置解开屏幕锁定。便捷型解锁的方便之处在于便利快捷,目前很多便捷型无密码的解锁方式更提供了一键解锁并跳转到指定应用的功能,这都深受那些图方便和喜欢简单的用户喜欢,然而却无法对机主的个人隐私提供可靠的保障。

在此背景下,本方案解决现有屏幕解锁技术的缺陷,探索并且实现了一种基于Android平台,为终端机主提供更有趣、更通用、防窥视的解锁机制。

1 需求分析

1.1 功能需求与用例的设计

本设计针对不同的受众,设计出了统一风格的两种不同手机屏幕解锁方案:安全型与便捷型解锁方案。针对不同的需求,以下进行了一系列的分析:

(1) 对于年龄偏大和对隐私要求很高的用户,需要有安全性很高的密码设置功能,不能像现在的屏幕解锁可以通过窥屏等手段窃取他人的密码。但是不能一直都很复杂,比如在相对安全的环境下能有比较方便的解锁方式,不能增加解锁的困难程度,导致用户输入慢,从而影响用户的体验。

(2) 对于年龄偏小和图方便的用户,需要有更加便捷有趣的密码解锁功能,简单易懂,要有更多的提示,如密码数量等。

(3) 密码重新设置功能,用户能轻松、频繁地重新设置密码。

(4) 能阻挡机主本身的解锁程序,因为这个应用并非嵌入到系统中,以一个应用的形式给用户安装之后,要能阻挡本身的解锁程序,从而成为主要的屏幕解锁。

(5) 关机后能记住设置的密码,不会因为关机而导致功能的缺失,行为和自带的屏幕解锁保持一致。

(6) 开机时能自动启动,行为和自带的屏幕解锁保持一致。

本设计的用例图中参与者为手机用户,而它拥有两种不同的功能:便捷性屏幕解锁与安全性屏幕解锁,具体用例图如图1所示。

1.2 性能需求

(1) 解锁程序要求延迟低,能达到毫秒级,用户不会因为解锁成功之后进入主界面的等待而困扰,输入错误时能迅速恢复界面。

(2) 解锁过程的低延迟也很重要,能够迅速识别用户的操作进行反馈,动画效果流畅。

(3) 解锁程序没有内嵌入系统,需要一直保持开启状态,不能造成系统的CUP占用过高,不能影响用户日常手机中别的动作行为。

1.3 可靠性和可用性需求

(1) 解锁程序要求可靠性强,故障概率低,不会轻易发生崩溃、中断等现象,从灾难中恢复能力强,用户能通过锁定屏幕等恢复错误。

(2) 解锁程序需要保证功能在安卓系统的百分之百时间可用,不会受关机等行为影响。

(3) 解锁的行为要求识别性强,不会因为轻微的差别而表现不同的反馈。

(4) 能识别用户的误操作,不会轻易作出反馈。

(5) 程序的运行状态与行为是可以预测的和把握的,不能让用户不知道下一步该如何操作,逻辑复杂的部分需要有相应的提示,引导用户进行操作。

2 系统设计

根据对目前主导解锁形式的分析,选择了水果作为解锁的元素,相比数字更加不容易被别人猜出,同时对用户而言也不生疏。设计了两种屏幕解锁方案,第一种方案主要突出轻便、有趣,适合年龄偏小的用户群体。第二种方案则在前者基础上更注重安全性,适合年龄中上同时对隐私非常重视的群体。两个方案都是以水果为元素,切水果为解锁动作,风格统一,让人很容易联想到它们是一个特色。

2.1 便捷型屏幕锁

考虑到年龄较小或者较大的群体,隐私并不是特别重要,相反有趣和简单反而成了吸引他们的主要的手段。大部分该年龄段的机主可能只是用手机打电话和听音乐,这样就需要一个更加方便快捷屏幕锁,水果这个元素依然十分适用,切水果也是能备受欢迎的一种解锁方式。但是这个设计中就不能有保护密码这些复杂的功能,不容易学会和记住。由此这个简易的屏幕设计如下:

一开始终端处于锁屏状态,当用户启动该终端,其屏幕呈现出解锁图片。总共只有四个水果,但是可以滑开多次,密码为一到五位,用户滑开解锁屏幕上显示水果中的任意水果,当选中的水果都对应为解锁信息时,屏幕解除锁定。如果用户不想设置密码,那么可以设置一位密码,那么只需要切开一个特定的水果就可以解锁了,这样就和滑动解锁的体验相仿。

同时解锁时显示当前密码输入的位数,这样使机主不用担心自己输入到哪了,更加简单,而显示位数用小西瓜显示,保证了统一的风格。

本方案主要解决了现在屏幕锁缺乏趣味的问题,很容易记住密码,并且可以把解锁当成娱乐。大大降低了设置屏幕密码的门槛,使其更加大众化。

2.2 拥有保护密码的安全型屏幕锁

对于大部分用户,隐私十分重要,同时如果能有一些趣味性那就更好了,因此经过对需求的分析,设计了以下解锁流程:一开始终端处于锁屏状态,当用户启动该终端,其屏幕呈现出解锁图片。用户滑开解锁屏幕上显示水果中的任意水果,当选中的水果都对应为解锁信息也就是初始密码时,屏幕解除锁定。

机主在设定密码时选择解锁屏幕上提供的水果,在设定完初始密码之后,还可以设定所设定水果的上下左右四个方向的水果为二次密码。也就是说,第一次设定的水果的某一方向上的水果也是解锁密码。

在机主输入的为原始密码时,下次的水果排列次序保持原样;而在机主输入的为二次密码时,则下次直至以后的水果排列次序打乱,即设定的原始密码为水果的种类,而非水果的位置;但二次密码则根据原始密码的水果种类来确定位置,相当于给原始密码二次加密。

例如第一次设置的密码为苹果西瓜,二次密码为它们的上方,则滑动苹果西瓜上方的水果也可解锁。但是第二次屏幕上的水果顺序将会打乱,密码依旧是苹果西瓜上方的水果。

因此,若机主在解锁时不想将真实原始密码暴露给旁人,则可在本次输入时选择二次密码进行输入。这样别人记住的水果种类并非真正的密码,而机主自己一个人独自使用时则可以选择第一设置的密码,水果又会恢复原来的排列,十分方便快捷。同时也不用再担心自己的密码在公共场合遭到泄露,通过观察手机屏幕上的印记也无法看出真正的密码是什么。

本方案旨在保护终端用户的个人隐私,使屏幕锁有娱乐性,同时机主即使在旁人的注视下解锁也不用暴露真实密码而进行解锁。

3 系统功能的实现及其关键技术

整个项目的实现包含便捷型与安全型两个项目的实现。由于初步的设计不能内嵌入系统,因此只能通过一个APP的形式来展示。其中需要实现的关键功能包括:如何开机启动,如何监听屏幕锁、解锁事件,如何屏蔽系统屏幕锁,如何存储密码,如何设置密码等。

3.1 便捷型屏幕解锁的实现

3.1.1 开机启动服务的实现

本方案通过实现一个类来继承BroadcastReceiver类,用于接收该广播,再通过重载其中的onReceive方法。这样在监听到广播之后,便可以启动屏幕锁,并且启动service去监听屏幕解锁的事件,同时在监听到屏幕解锁的事件时,可以开启屏幕解锁应用。

3.1.2 监听屏幕解锁事件的实现

上一个模块已经提到了屏幕锁事件的监听,只需要在解锁时启动屏幕锁activity,同时本方案在Service中注册了上一个模块的receiver,这样就可以重复利用receiver。同时,还需要标记这次启动屏幕锁的行为是通过屏幕解锁启动,并禁用系统自带的屏幕锁,申请相关权限[1]。

整体流程活动如图2所示。

图2 便捷型活动图

由于不同的状态需要有不同的界面和流程,此时需要考虑以下几种情况:

从结构上分,有流线型叶片的高速风轮,也有弓型叶片的低速风轮;有功能完善的多用途机组,也有性能单一的简易机组。从使用地域上分,南方为风力提水机配套的是低扬程、大泵径、大行程、大流量拉杆活塞泵和螺旋泵;简易型有以水车为提水工具,用于农田灌溉或者提取海水治盐。在北方,从水资源看,一般井深都在10m以上,所以风力提水机都设计成小泵径、小行程、小流量、高扬程,配活塞泵或膜片泵,主要用于解决人畜饮水和浇灌小型草牧场、饲草料地。

(1) 初次启动屏幕锁,那么进入用户设置密码界面开始引导用户设置密码。

(2) 已经设置好密码屏幕锁,那么进入解锁界面,要求用户输入设置的密码。如果上一次是保护密码解锁,那么这一次要传入一个打乱水果顺序的标签;如果不是,则保持水果的顺序。

3.1.3 切割水果的动画以及动作识别的实现

本方案通过截取一些切割水果的图片,使用安卓中的AnimationDrawable类连接动画,通过配置文件调整连环画的显示间隔以连续地显示内容。通过封装好的接口,优化画面时,只需要替换resource里的图片,可以非常方便的完成操作。

切割水果动作分为横切和竖切两种,若是使用游戏引擎来做识别,则会使得项目变得繁重,以后不利解锁程序内嵌入系统中,而且会受到引擎的约束,可扩展性低。因此本方案采用系统提供的API。

动作识别的具体实现方案如下:首先在FruitHelper类传入一个判断函数来判断该Event是否发生在某个水果内。然后通过传入接收到的滑动事件数量来判断用户是有意切开水果还是不小心点到。接下来通过记录水果内滑动的轨迹来判断是横切还是竖切。这样,当用户完成一个切水果的动作时,只需要把相应的事件传给每个水果对应的GestureListener,在它发现自己被切开时,播放所代表的水果被切开的动画即可。

同时,此方案还利用了Java多线程的特性[2-4],在输入密码错误、位数不正确时,开启另一个线程使手机震动,同时监听该行为的结束。在震动结束时才开始刷新界面,监听用户的切割动作,从而不影响用户的操作,让用户意识到自己输入错误。

本方案使用安卓中的ShareReference类将密码存储在手机中,以保证用户重新开机等行为并不会消除设置密码,使用ShareReference.Editor写入保存密码,用getString方法来读取密码。同时设置了密码的读取权限,只有通过这个屏幕解锁的APP才能读取,全方位保证了密码的安全性,避免了存在文件中有被窃取的潜在危险,充分利用了安卓系统自带的功能,使得未来这个项目更加容易内嵌入系统中。

3.2 安全型屏幕解锁的实现

整体流程活动图如图3所示。

图3 安全型解锁活动图

3.2.1 水果乱序的实现

在保护密码输入过后,下一次将会打乱水果的顺序,保证窥屏是无法看出真正的密码,只有知道初始密码的情况下才能输入正确。本方案采用Java的Random类,每次以当前的毫秒数为随机种子生成两个一到九的数字。然后置换对应的水果,同时将这两个数字入栈,当用户输入初始密码时,从栈中一个个取出置换的水果编号置换回来。这样就完成了水果顺序的恢复,同时栈中元素为空,表示当前水果顺序并未被打乱,代码十分简洁明了,这样就省去了记录原始水果的位置要花费的时间和空间,同时反复利用了一样的置换代码[5-6]。

置换的内容要越少越好,这样效率就能较高,同时需要达到置换之后不影响其他逻辑代码的效果,所以采用置换相应位置水果的背景图片和动画序列[7]。

3.2.2 保护密码的实现

在设置密码时,先记录原始密码的位置,然后在设置保护密码时,只显示原始密码的上下左右的水果。在用户设置保护密码之后,判断保护密码是否在原始密码的同一方向,如果不是则返回重新设置,如果是则打乱水果的顺序,让用户确认一次。

当判断是否为保护密码的时候,首先知道设置的是那个方向,在代码中的变量为d,方向为1、2、3、4代表上下左右,同时要考虑默认情况,如果为-1则表示设置尚未完成,且未确定方向。

4 性能测试

本系统的测试平台是Android4.x,在虚拟机与三星S4、小米等机型上均通过了测试并且运行稳定、流畅[8]。图4为便捷型解锁在Nexus上的测试,测试结果表明解锁应用能在手机开机后自动打开,解锁显示迅速流畅,没有延迟,密码输入个数和水果统一了风格,界面很友好。对于年龄偏小和图方便的用户,能提供更加便捷有趣的密码解锁功能。图5为安全型屏幕锁在三星S4上的测试。安全型比便捷型复杂和安全的地方就在于存在保护密码,而且安全型更加复杂,能够有效做到防窥视的效果。如图6所示,界面中有9个水果,相当于增加了密码的组合数和复杂度。若用户设置了中间和中间的右边两个水果即柠檬和青苹果为初始密码时,用户能设置的保护密码为同一方向上的水果,其初始密码为上、下、左、右四个方向上的水果,若设置其保护密码为上方,即草莓和橘子。之后水果顺序被打乱,要求用户再次输入,模拟解锁过程,防止用户忘记密码。经测试表明打乱速度非常快,没有延迟。输入保护密码错误能重新输入,正确则设置成功,进入主界面。如图6中所示,切开草莓和香蕉后,设置完毕。按下手机的锁屏按钮再解锁,测试结果表明屏幕锁能在锁定键再次点击时迅速显示出来,没有延迟;输入保护密码后水果会被打乱,在被窥视的情况下,也能有效防止密码被泄漏。

图4 Nexus S界面 图5 三星S4解锁测试 图6 安全型屏幕锁

5 结 语

本文的两个设计,满足了娱乐爱好者的便捷需要,也满足了商务人士的防窥视的安全性需求,同时都有切水果这个有趣而又简单的元素。风格统一,让解锁更加轻松愉快,对所有年龄阶段的用户都有很大吸引力,同时也便于品牌的推广和宣传。

此项目还有一些缺点,比如保护密码是否太过复杂,用数字会不会更加容易记住;水果的动画比较粗糙,美工还需进一步优化;保护密码的加密方式若是能修改为对应密码的任意位置则更能够加强安全性能;作为密码的水果会同时显示在屏幕上而加大了密码猜中的概率等,这都是值得改进的地方。

[1]Permlyzer.AnalyzingPermissionUsageinAndroidApplications/WeiXu,FangfangZhang,andSencunZhu(DepartmentofComputerScienceandEngineeringPennsylvaniaStateUniversityUniversityPark,PA).

[2] 傅强.浅析安卓开发的相关技术[J].计算机光盘软件与应用,2014,40(14):292-292.

[3] 陈咪,刘光灿,张竹娴.基于安卓(Android)操作系统的手机小游戏开发[J].信息通信,2012(4):112-113.

[4] 常洁.安卓系统视频点播软件开发简析[J].现代电影技术,2014(8):28-30.

[5] 杨潇亮.基于安卓操作系统的应用软件开发[J].电子制作,2014(19).

[6] 吴文思.基于安卓的系统架构及程序开发探索[J].电子技术与软件工程,2014(19):76-76.

[7] 卢泰桉.基于安卓系统的游戏手持终端开发[D].福建师范大学,2014.

[8] Liu R.Android Develop Performance Optimization[J].Computer Programming Skills & Maintenance,2013.

A NEW PEEP PREVENTING ANDROID-BASED SCREEN UNLOCK SOFTWARE

Gao Guangyu Chen Zhaohui Yin Changqing*

(SchoolofSoftwareEngineering,TongjiUniversity,Shanghai201804,China)

In the existing unlocking programs, the lengths of passwords are too short, less frequency of modification, and the passwords input screen is easy to be snooped, it’s also too boring as well as some other drawbacks, so there is a certain security risk. To solve the defects of the existing screen unlock technology, we explore and implement a solution based on the Android platform, providing a more fun, more versatile, and peep preventing unlocking mechanism for the terminal user. The implementation of program divided into convenient and safe type according to the different starting point of groups. The convenient unlocking focused on fun and simple, password input behavior becomes cut fruit in the design; the safe unlocking increased password protection mechanism based on the convenient unlocking, which making the screen lock will not be leaked by being snooped. The innovative screen unlock program has partnered with a company currently, and it has received excellent result with praises such as fast-running speed, smooth running and full of innovations from the employer.

Android Screen unlock Peep prevention

2016-08-08。国家自然科学基金重点项目(61432017)。高光宇,硕士,主研领域:云计算,网络安全。陈朝晖,硕士。尹长青,教授。

TP3

A

10.3969/j.issn.1000-386x.2017.01.012

猜你喜欢
机主安卓密码
iPhone不卡的秘密曝光:安卓也能享受
密码里的爱
基于桥墩纵向刚度的昆仑号架桥机主支腿受力影响因素及解决方案
铁路自助实名制核验闸机主控模块的设计
文物表情包
安卓系统或成智能汽车标配
密码抗倭立奇功
你的智能手机将比你更懂你!
英航母出洋相:被无人机“突袭”
密码藏在何处