高光宇 陳朝暉 尹長青
(同濟大學(xué)軟件學(xué)院 上海 201804)
一種防窺視安卓新型屏幕解鎖軟件
高光宇 陳朝暉 尹長青*
(同濟大學(xué)軟件學(xué)院 上海 201804)
現(xiàn)有屏幕解鎖方案,由于經(jīng)常出現(xiàn)密碼位數(shù)不多、修改頻率少、密碼輸入被窺屏、過于枯燥等缺陷,因此存在一定的安全隱患。解決現(xiàn)有屏幕解鎖技術(shù)的缺陷,探索并且實現(xiàn)一種基于Android平臺的解決方案,為終端機主提供更有趣、更通用、防窺視的解鎖機制。該實現(xiàn)方案針對使用人群出發(fā)點的不同,分為便捷型和安全型。便捷型注重于簡單以及趣味性,設(shè)計中使密碼輸入變更為切水果;同時在便捷型的基礎(chǔ)上增加了保護密碼的機制,使得屏幕鎖不會因為被窺屏而泄露密碼。目前該創(chuàng)新屏幕解鎖方案已經(jīng)和某公司合作,獲得了用人單位的一致好評,速度很快,運行流暢,非常有創(chuàng)意。
安卓 屏幕解鎖 防窺視
隨著現(xiàn)代電子技術(shù)的發(fā)展,各種智能手機和觸摸屏技術(shù)也隨之更加成熟,在這些移動設(shè)備普及和流行的同時,設(shè)備的屏幕解鎖也成為最基本的功能。而對各類不同終端,解鎖方法也是多種多樣的。由于手機用戶群十分龐大,需求也多樣,如果存在一個有風(fēng)格并且受歡迎的屏幕解鎖,那它對終端機的推廣會是非常有幫助的。因此,在屏幕解鎖上進行新的嘗試也是一種非常有意義的行為。
屏幕解鎖技術(shù)對于觸屏終端機而言,已經(jīng)是一個非常簡單的實現(xiàn),主要就是捕捉用戶的行為并且通過識別特定的行為解開屏幕鎖。它的用戶的體驗十分重要,要求延遲低、界面友好、邏輯清晰,是一個小而精的技術(shù)典范。就目前來看,對于終端的解鎖方法主要可以分為安全型(有密碼)和便捷型(無密碼)兩類。
安全型是通過輸入終端機主預(yù)先設(shè)定的密碼來解開屏幕鎖定的方式。目前主流設(shè)定密碼的方式有兩種,分別為圖案型(即九宮格解鎖)、數(shù)字字母型(即輸入字母數(shù)字的組合解鎖)。九宮格的圖案型會保存機主預(yù)先設(shè)定的滑動軌跡,在進入解鎖界面后,檢測本次用戶所輸入的滑動軌跡,并與預(yù)先設(shè)定的滑動軌跡進行對比,若一致則解鎖屏幕,進入終端使用界面。數(shù)字字母型則會保存機主預(yù)先設(shè)定的由數(shù)字字母組合的字符串,在進入解鎖界面后,檢測本次用戶所輸入的字符串,并與預(yù)先設(shè)定的字符串進行對比,若一致則解鎖屏幕,進入終端使用界面。這兩種方法都一定程度上保護了終端機主的個人隱私,通過預(yù)先設(shè)置的密碼來對本次用戶是否是機主本人進行驗證。然而缺乏一些趣味性,而且非常容易被竊取密碼,在公共場所存在很大的安全隱患,同時對于不同年齡階段的人效果差距較大。
而便捷型則是通過一些簡單的屏幕操作來解開屏幕鎖定的方式。目前主流的操作方式有兩種,分別是任意滑動解開屏幕鎖定、將圖標(biāo)拖動到固定位置解開屏幕鎖定。便捷型解鎖的方便之處在于便利快捷,目前很多便捷型無密碼的解鎖方式更提供了一鍵解鎖并跳轉(zhuǎn)到指定應(yīng)用的功能,這都深受那些圖方便和喜歡簡單的用戶喜歡,然而卻無法對機主的個人隱私提供可靠的保障。
在此背景下,本方案解決現(xiàn)有屏幕解鎖技術(shù)的缺陷,探索并且實現(xiàn)了一種基于Android平臺,為終端機主提供更有趣、更通用、防窺視的解鎖機制。
1.1 功能需求與用例的設(shè)計
本設(shè)計針對不同的受眾,設(shè)計出了統(tǒng)一風(fēng)格的兩種不同手機屏幕解鎖方案:安全型與便捷型解鎖方案。針對不同的需求,以下進行了一系列的分析:
(1) 對于年齡偏大和對隱私要求很高的用戶,需要有安全性很高的密碼設(shè)置功能,不能像現(xiàn)在的屏幕解鎖可以通過窺屏等手段竊取他人的密碼。但是不能一直都很復(fù)雜,比如在相對安全的環(huán)境下能有比較方便的解鎖方式,不能增加解鎖的困難程度,導(dǎo)致用戶輸入慢,從而影響用戶的體驗。
(2) 對于年齡偏小和圖方便的用戶,需要有更加便捷有趣的密碼解鎖功能,簡單易懂,要有更多的提示,如密碼數(shù)量等。
(3) 密碼重新設(shè)置功能,用戶能輕松、頻繁地重新設(shè)置密碼。
(4) 能阻擋機主本身的解鎖程序,因為這個應(yīng)用并非嵌入到系統(tǒng)中,以一個應(yīng)用的形式給用戶安裝之后,要能阻擋本身的解鎖程序,從而成為主要的屏幕解鎖。
(5) 關(guān)機后能記住設(shè)置的密碼,不會因為關(guān)機而導(dǎo)致功能的缺失,行為和自帶的屏幕解鎖保持一致。
(6) 開機時能自動啟動,行為和自帶的屏幕解鎖保持一致。
本設(shè)計的用例圖中參與者為手機用戶,而它擁有兩種不同的功能:便捷性屏幕解鎖與安全性屏幕解鎖,具體用例圖如圖1所示。
1.2 性能需求
(1) 解鎖程序要求延遲低,能達到毫秒級,用戶不會因為解鎖成功之后進入主界面的等待而困擾,輸入錯誤時能迅速恢復(fù)界面。
(2) 解鎖過程的低延遲也很重要,能夠迅速識別用戶的操作進行反饋,動畫效果流暢。
(3) 解鎖程序沒有內(nèi)嵌入系統(tǒng),需要一直保持開啟狀態(tài),不能造成系統(tǒng)的CUP占用過高,不能影響用戶日常手機中別的動作行為。
1.3 可靠性和可用性需求
(1) 解鎖程序要求可靠性強,故障概率低,不會輕易發(fā)生崩潰、中斷等現(xiàn)象,從災(zāi)難中恢復(fù)能力強,用戶能通過鎖定屏幕等恢復(fù)錯誤。
(2) 解鎖程序需要保證功能在安卓系統(tǒng)的百分之百時間可用,不會受關(guān)機等行為影響。
(3) 解鎖的行為要求識別性強,不會因為輕微的差別而表現(xiàn)不同的反饋。
(4) 能識別用戶的誤操作,不會輕易作出反饋。
(5) 程序的運行狀態(tài)與行為是可以預(yù)測的和把握的,不能讓用戶不知道下一步該如何操作,邏輯復(fù)雜的部分需要有相應(yīng)的提示,引導(dǎo)用戶進行操作。
根據(jù)對目前主導(dǎo)解鎖形式的分析,選擇了水果作為解鎖的元素,相比數(shù)字更加不容易被別人猜出,同時對用戶而言也不生疏。設(shè)計了兩種屏幕解鎖方案,第一種方案主要突出輕便、有趣,適合年齡偏小的用戶群體。第二種方案則在前者基礎(chǔ)上更注重安全性,適合年齡中上同時對隱私非常重視的群體。兩個方案都是以水果為元素,切水果為解鎖動作,風(fēng)格統(tǒng)一,讓人很容易聯(lián)想到它們是一個特色。
2.1 便捷型屏幕鎖
考慮到年齡較小或者較大的群體,隱私并不是特別重要,相反有趣和簡單反而成了吸引他們的主要的手段。大部分該年齡段的機主可能只是用手機打電話和聽音樂,這樣就需要一個更加方便快捷屏幕鎖,水果這個元素依然十分適用,切水果也是能備受歡迎的一種解鎖方式。但是這個設(shè)計中就不能有保護密碼這些復(fù)雜的功能,不容易學(xué)會和記住。由此這個簡易的屏幕設(shè)計如下:
一開始終端處于鎖屏狀態(tài),當(dāng)用戶啟動該終端,其屏幕呈現(xiàn)出解鎖圖片??偣仓挥兴膫€水果,但是可以滑開多次,密碼為一到五位,用戶滑開解鎖屏幕上顯示水果中的任意水果,當(dāng)選中的水果都對應(yīng)為解鎖信息時,屏幕解除鎖定。如果用戶不想設(shè)置密碼,那么可以設(shè)置一位密碼,那么只需要切開一個特定的水果就可以解鎖了,這樣就和滑動解鎖的體驗相仿。
同時解鎖時顯示當(dāng)前密碼輸入的位數(shù),這樣使機主不用擔(dān)心自己輸入到哪了,更加簡單,而顯示位數(shù)用小西瓜顯示,保證了統(tǒng)一的風(fēng)格。
本方案主要解決了現(xiàn)在屏幕鎖缺乏趣味的問題,很容易記住密碼,并且可以把解鎖當(dāng)成娛樂。大大降低了設(shè)置屏幕密碼的門檻,使其更加大眾化。
2.2 擁有保護密碼的安全型屏幕鎖
對于大部分用戶,隱私十分重要,同時如果能有一些趣味性那就更好了,因此經(jīng)過對需求的分析,設(shè)計了以下解鎖流程:一開始終端處于鎖屏狀態(tài),當(dāng)用戶啟動該終端,其屏幕呈現(xiàn)出解鎖圖片。用戶滑開解鎖屏幕上顯示水果中的任意水果,當(dāng)選中的水果都對應(yīng)為解鎖信息也就是初始密碼時,屏幕解除鎖定。
機主在設(shè)定密碼時選擇解鎖屏幕上提供的水果,在設(shè)定完初始密碼之后,還可以設(shè)定所設(shè)定水果的上下左右四個方向的水果為二次密碼。也就是說,第一次設(shè)定的水果的某一方向上的水果也是解鎖密碼。
在機主輸入的為原始密碼時,下次的水果排列次序保持原樣;而在機主輸入的為二次密碼時,則下次直至以后的水果排列次序打亂,即設(shè)定的原始密碼為水果的種類,而非水果的位置;但二次密碼則根據(jù)原始密碼的水果種類來確定位置,相當(dāng)于給原始密碼二次加密。
例如第一次設(shè)置的密碼為蘋果西瓜,二次密碼為它們的上方,則滑動蘋果西瓜上方的水果也可解鎖。但是第二次屏幕上的水果順序?qū)騺y,密碼依舊是蘋果西瓜上方的水果。
因此,若機主在解鎖時不想將真實原始密碼暴露給旁人,則可在本次輸入時選擇二次密碼進行輸入。這樣別人記住的水果種類并非真正的密碼,而機主自己一個人獨自使用時則可以選擇第一設(shè)置的密碼,水果又會恢復(fù)原來的排列,十分方便快捷。同時也不用再擔(dān)心自己的密碼在公共場合遭到泄露,通過觀察手機屏幕上的印記也無法看出真正的密碼是什么。
本方案旨在保護終端用戶的個人隱私,使屏幕鎖有娛樂性,同時機主即使在旁人的注視下解鎖也不用暴露真實密碼而進行解鎖。
整個項目的實現(xiàn)包含便捷型與安全型兩個項目的實現(xiàn)。由于初步的設(shè)計不能內(nèi)嵌入系統(tǒng),因此只能通過一個APP的形式來展示。其中需要實現(xiàn)的關(guān)鍵功能包括:如何開機啟動,如何監(jiān)聽屏幕鎖、解鎖事件,如何屏蔽系統(tǒng)屏幕鎖,如何存儲密碼,如何設(shè)置密碼等。
3.1 便捷型屏幕解鎖的實現(xiàn)
3.1.1 開機啟動服務(wù)的實現(xiàn)
本方案通過實現(xiàn)一個類來繼承BroadcastReceiver類,用于接收該廣播,再通過重載其中的onReceive方法。這樣在監(jiān)聽到廣播之后,便可以啟動屏幕鎖,并且啟動service去監(jiān)聽屏幕解鎖的事件,同時在監(jiān)聽到屏幕解鎖的事件時,可以開啟屏幕解鎖應(yīng)用。
3.1.2 監(jiān)聽屏幕解鎖事件的實現(xiàn)
上一個模塊已經(jīng)提到了屏幕鎖事件的監(jiān)聽,只需要在解鎖時啟動屏幕鎖activity,同時本方案在Service中注冊了上一個模塊的receiver,這樣就可以重復(fù)利用receiver。同時,還需要標(biāo)記這次啟動屏幕鎖的行為是通過屏幕解鎖啟動,并禁用系統(tǒng)自帶的屏幕鎖,申請相關(guān)權(quán)限[1]。
整體流程活動如圖2所示。
圖2 便捷型活動圖
由于不同的狀態(tài)需要有不同的界面和流程,此時需要考慮以下幾種情況:
從結(jié)構(gòu)上分,有流線型葉片的高速風(fēng)輪,也有弓型葉片的低速風(fēng)輪;有功能完善的多用途機組,也有性能單一的簡易機組。從使用地域上分,南方為風(fēng)力提水機配套的是低揚程、大泵徑、大行程、大流量拉桿活塞泵和螺旋泵;簡易型有以水車為提水工具,用于農(nóng)田灌溉或者提取海水治鹽。在北方,從水資源看,一般井深都在10m以上,所以風(fēng)力提水機都設(shè)計成小泵徑、小行程、小流量、高揚程,配活塞泵或膜片泵,主要用于解決人畜飲水和澆灌小型草牧場、飼草料地。
(1) 初次啟動屏幕鎖,那么進入用戶設(shè)置密碼界面開始引導(dǎo)用戶設(shè)置密碼。
(2) 已經(jīng)設(shè)置好密碼屏幕鎖,那么進入解鎖界面,要求用戶輸入設(shè)置的密碼。如果上一次是保護密碼解鎖,那么這一次要傳入一個打亂水果順序的標(biāo)簽;如果不是,則保持水果的順序。
3.1.3 切割水果的動畫以及動作識別的實現(xiàn)
本方案通過截取一些切割水果的圖片,使用安卓中的AnimationDrawable類連接動畫,通過配置文件調(diào)整連環(huán)畫的顯示間隔以連續(xù)地顯示內(nèi)容。通過封裝好的接口,優(yōu)化畫面時,只需要替換resource里的圖片,可以非常方便的完成操作。
切割水果動作分為橫切和豎切兩種,若是使用游戲引擎來做識別,則會使得項目變得繁重,以后不利解鎖程序內(nèi)嵌入系統(tǒng)中,而且會受到引擎的約束,可擴展性低。因此本方案采用系統(tǒng)提供的API。
動作識別的具體實現(xiàn)方案如下:首先在FruitHelper類傳入一個判斷函數(shù)來判斷該Event是否發(fā)生在某個水果內(nèi)。然后通過傳入接收到的滑動事件數(shù)量來判斷用戶是有意切開水果還是不小心點到。接下來通過記錄水果內(nèi)滑動的軌跡來判斷是橫切還是豎切。這樣,當(dāng)用戶完成一個切水果的動作時,只需要把相應(yīng)的事件傳給每個水果對應(yīng)的GestureListener,在它發(fā)現(xiàn)自己被切開時,播放所代表的水果被切開的動畫即可。
同時,此方案還利用了Java多線程的特性[2-4],在輸入密碼錯誤、位數(shù)不正確時,開啟另一個線程使手機震動,同時監(jiān)聽該行為的結(jié)束。在震動結(jié)束時才開始刷新界面,監(jiān)聽用戶的切割動作,從而不影響用戶的操作,讓用戶意識到自己輸入錯誤。
本方案使用安卓中的ShareReference類將密碼存儲在手機中,以保證用戶重新開機等行為并不會消除設(shè)置密碼,使用ShareReference.Editor寫入保存密碼,用getString方法來讀取密碼。同時設(shè)置了密碼的讀取權(quán)限,只有通過這個屏幕解鎖的APP才能讀取,全方位保證了密碼的安全性,避免了存在文件中有被竊取的潛在危險,充分利用了安卓系統(tǒng)自帶的功能,使得未來這個項目更加容易內(nèi)嵌入系統(tǒng)中。
3.2 安全型屏幕解鎖的實現(xiàn)
整體流程活動圖如圖3所示。
圖3 安全型解鎖活動圖
3.2.1 水果亂序的實現(xiàn)
在保護密碼輸入過后,下一次將會打亂水果的順序,保證窺屏是無法看出真正的密碼,只有知道初始密碼的情況下才能輸入正確。本方案采用Java的Random類,每次以當(dāng)前的毫秒數(shù)為隨機種子生成兩個一到九的數(shù)字。然后置換對應(yīng)的水果,同時將這兩個數(shù)字入棧,當(dāng)用戶輸入初始密碼時,從棧中一個個取出置換的水果編號置換回來。這樣就完成了水果順序的恢復(fù),同時棧中元素為空,表示當(dāng)前水果順序并未被打亂,代碼十分簡潔明了,這樣就省去了記錄原始水果的位置要花費的時間和空間,同時反復(fù)利用了一樣的置換代碼[5-6]。
置換的內(nèi)容要越少越好,這樣效率就能較高,同時需要達到置換之后不影響其他邏輯代碼的效果,所以采用置換相應(yīng)位置水果的背景圖片和動畫序列[7]。
3.2.2 保護密碼的實現(xiàn)
在設(shè)置密碼時,先記錄原始密碼的位置,然后在設(shè)置保護密碼時,只顯示原始密碼的上下左右的水果。在用戶設(shè)置保護密碼之后,判斷保護密碼是否在原始密碼的同一方向,如果不是則返回重新設(shè)置,如果是則打亂水果的順序,讓用戶確認一次。
當(dāng)判斷是否為保護密碼的時候,首先知道設(shè)置的是那個方向,在代碼中的變量為d,方向為1、2、3、4代表上下左右,同時要考慮默認情況,如果為-1則表示設(shè)置尚未完成,且未確定方向。
本系統(tǒng)的測試平臺是Android4.x,在虛擬機與三星S4、小米等機型上均通過了測試并且運行穩(wěn)定、流暢[8]。圖4為便捷型解鎖在Nexus上的測試,測試結(jié)果表明解鎖應(yīng)用能在手機開機后自動打開,解鎖顯示迅速流暢,沒有延遲,密碼輸入個數(shù)和水果統(tǒng)一了風(fēng)格,界面很友好。對于年齡偏小和圖方便的用戶,能提供更加便捷有趣的密碼解鎖功能。圖5為安全型屏幕鎖在三星S4上的測試。安全型比便捷型復(fù)雜和安全的地方就在于存在保護密碼,而且安全型更加復(fù)雜,能夠有效做到防窺視的效果。如圖6所示,界面中有9個水果,相當(dāng)于增加了密碼的組合數(shù)和復(fù)雜度。若用戶設(shè)置了中間和中間的右邊兩個水果即檸檬和青蘋果為初始密碼時,用戶能設(shè)置的保護密碼為同一方向上的水果,其初始密碼為上、下、左、右四個方向上的水果,若設(shè)置其保護密碼為上方,即草莓和橘子。之后水果順序被打亂,要求用戶再次輸入,模擬解鎖過程,防止用戶忘記密碼。經(jīng)測試表明打亂速度非??欤瑳]有延遲。輸入保護密碼錯誤能重新輸入,正確則設(shè)置成功,進入主界面。如圖6中所示,切開草莓和香蕉后,設(shè)置完畢。按下手機的鎖屏按鈕再解鎖,測試結(jié)果表明屏幕鎖能在鎖定鍵再次點擊時迅速顯示出來,沒有延遲;輸入保護密碼后水果會被打亂,在被窺視的情況下,也能有效防止密碼被泄漏。
圖4 Nexus S界面 圖5 三星S4解鎖測試 圖6 安全型屏幕鎖
本文的兩個設(shè)計,滿足了娛樂愛好者的便捷需要,也滿足了商務(wù)人士的防窺視的安全性需求,同時都有切水果這個有趣而又簡單的元素。風(fēng)格統(tǒng)一,讓解鎖更加輕松愉快,對所有年齡階段的用戶都有很大吸引力,同時也便于品牌的推廣和宣傳。
此項目還有一些缺點,比如保護密碼是否太過復(fù)雜,用數(shù)字會不會更加容易記住;水果的動畫比較粗糙,美工還需進一步優(yōu)化;保護密碼的加密方式若是能修改為對應(yīng)密碼的任意位置則更能夠加強安全性能;作為密碼的水果會同時顯示在屏幕上而加大了密碼猜中的概率等,這都是值得改進的地方。
[1]Permlyzer.AnalyzingPermissionUsageinAndroidApplications/WeiXu,FangfangZhang,andSencunZhu(DepartmentofComputerScienceandEngineeringPennsylvaniaStateUniversityUniversityPark,PA).
[2] 傅強.淺析安卓開發(fā)的相關(guān)技術(shù)[J].計算機光盤軟件與應(yīng)用,2014,40(14):292-292.
[3] 陳咪,劉光燦,張竹嫻.基于安卓(Android)操作系統(tǒng)的手機小游戲開發(fā)[J].信息通信,2012(4):112-113.
[4] 常潔.安卓系統(tǒng)視頻點播軟件開發(fā)簡析[J].現(xiàn)代電影技術(shù),2014(8):28-30.
[5] 楊瀟亮.基于安卓操作系統(tǒng)的應(yīng)用軟件開發(fā)[J].電子制作,2014(19).
[6] 吳文思.基于安卓的系統(tǒng)架構(gòu)及程序開發(fā)探索[J].電子技術(shù)與軟件工程,2014(19):76-76.
[7] 盧泰桉.基于安卓系統(tǒng)的游戲手持終端開發(fā)[D].福建師范大學(xué),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。國家自然科學(xué)基金重點項目(61432017)。高光宇,碩士,主研領(lǐng)域:云計算,網(wǎng)絡(luò)安全。陳朝暉,碩士。尹長青,教授。
TP3
A
10.3969/j.issn.1000-386x.2017.01.012