耿 博,葛麗娜,王秋月,王利娟
(1.廣西民族大學(xué)信息科學(xué)與工程學(xué)院,廣西 南寧 530006;2.廣西民族大學(xué)東盟研究中心(廣西科學(xué)實(shí)驗(yàn)中心),廣西 南寧 530006)
隨著智能手機(jī)的飛速發(fā)展,智能手機(jī)現(xiàn)已成為人們?nèi)粘I畹谋匦杵贰4钶dAndroid操作系統(tǒng)的智能手機(jī)占全部智能手機(jī)總數(shù)的79%以上[1],Android系統(tǒng)的安全性問題也逐漸被人們關(guān)注。
手機(jī)屏幕鎖定是智能手機(jī)安全防護(hù)的第一道屏障,也是禁止違法用戶竊取手機(jī)隱私的重要屏障。手機(jī)屏幕的鎖定即手機(jī)的用戶認(rèn)證機(jī)制[2],通常利用圖案解鎖、指紋解鎖、PIN(Personal Identification Number)解鎖、人臉識別等方法進(jìn)行用戶認(rèn)證[3 - 6]。該機(jī)制可以有效保護(hù)手機(jī)內(nèi)的隱私信息不被非法用戶竊取,直接關(guān)系到手機(jī)系統(tǒng)的安全性。手機(jī)的認(rèn)證過程往往涉及到手機(jī)內(nèi)核層、框架層與應(yīng)用層的數(shù)據(jù)傳遞,且實(shí)現(xiàn)方式多樣,但現(xiàn)有的手機(jī)認(rèn)證方法的安全性與便捷性還未達(dá)到一種平衡。
現(xiàn)行的手機(jī)認(rèn)證方法中九宮格手勢認(rèn)證所占比例較大,其次分別是指紋認(rèn)證方法與圖像認(rèn)證方法[7,8]。認(rèn)證方法更新很快但人們所關(guān)心的安全性卻沒有太大突破。九宮格手勢認(rèn)證主要是通過設(shè)定一個圖案手勢認(rèn)證密碼,在認(rèn)證時通過觸摸滑動相應(yīng)的圖案與預(yù)設(shè)的圖案密碼相對比,相同則認(rèn)證成功。九宮格手勢認(rèn)證方法的弊端是只能設(shè)定一組圖案密碼,易被破解[9 - 11]。因此,本文基于Android系統(tǒng),設(shè)計動態(tài)認(rèn)證密碼,增加密碼的多樣性,增加破解難度,提高智能手機(jī)的安全性。
九宮格手勢認(rèn)證方法[12]是谷歌在2010年開始推廣使用的,近年來,九宮格手勢認(rèn)證方法更是主流的手機(jī)認(rèn)證方法之一。九宮格手勢認(rèn)證方法要求繪制過程至少經(jīng)過手機(jī)屏幕的4個點(diǎn),且九宮格中的九個點(diǎn)不可以重復(fù)利用,路徑中間的點(diǎn)不能跳過,這些要求決定了解鎖圖案大約為389 112種[13]。
九宮格手勢認(rèn)證方法是根據(jù)init()方法繪制出九個點(diǎn)并初始化,設(shè)置一個有序數(shù)組ArrayList〈Point〉來收集觸摸點(diǎn),另外設(shè)置一個有序數(shù)組List〈Integer〉來記錄觸摸點(diǎn)的順序,通過對比觸摸點(diǎn)順序與保存的密碼圖案是否一致來決定是否完成認(rèn)證。具體流程如圖1所示
Figure 1 Flow chart of speed dial authentication圖1 九宮格認(rèn)證流程圖
九宮格手勢認(rèn)證方法只支持一種圖案手勢認(rèn)證,造成該方法的密碼單一,極易受到污漬攻擊、肩窺攻擊、暴力破解,致使手機(jī)隱私泄露,造成手機(jī)用戶損失。Aviv等人[14]提出污漬攻擊,Andriotis等人[15]具體闡述了智能手機(jī)的污漬攻擊,即利用工具將手機(jī)屏幕殘留的油脂拍下即可清晰看到油脂痕跡,該攻擊方法可以輕易獲取圖案鎖的密碼。污漬攻擊的本質(zhì)是根據(jù)手機(jī)主人遺留在手機(jī)屏幕上的認(rèn)證手勢的污漬猜測手勢認(rèn)證密碼,其成功率遠(yuǎn)遠(yuǎn)高于單純的猜測攻擊,適用于手機(jī)屏幕遺留下大量的手勢認(rèn)證污漬的情況。
九宮格手勢認(rèn)證方法的另外一個安全威脅是肩窺攻擊,即用戶在公共場所頻繁地進(jìn)行手機(jī)認(rèn)證,攻擊者通過肩窺或者拍照獲取手機(jī)認(rèn)證手勢的攻擊方式。肩窺攻擊的本質(zhì)是直接偷窺手勢認(rèn)證密碼,而后獲取認(rèn)證密碼,適用于環(huán)境嘈雜的情況,且在此情況下成功率極高。九宮格手勢認(rèn)證方法密碼單一,易被暴力破解。Dietz等人[16]在統(tǒng)計大量用戶的認(rèn)證圖案后,構(gòu)造了一個鏈?zhǔn)侥P蛠矸治鯝ndroid認(rèn)證圖案的統(tǒng)計模型,發(fā)現(xiàn)用戶的圖案選擇有明顯的喜好,根據(jù)圖案出現(xiàn)的頻率可以暴力破解圖案密碼。
對于九宮格手勢認(rèn)證方法的這些問題,我們需要一個可以抵抗污漬攻擊、肩窺攻擊、暴力破解的方案。為解決此問題,我們改進(jìn)了九宮格手勢認(rèn)證方法。
本文第3節(jié)介紹改進(jìn)的九宮格圖案手勢認(rèn)證方法;第4節(jié)給出了改進(jìn)的九宮格手勢認(rèn)證方法的理論分析;第5節(jié)介紹實(shí)驗(yàn)及實(shí)驗(yàn)分析;最后進(jìn)行全文總結(jié)。
為了增加九宮格手勢認(rèn)證方法的安全性,對其認(rèn)證過程進(jìn)行改進(jìn)。改進(jìn)的九宮格手勢認(rèn)證方法無需繪制完整的密碼圖案,只需根據(jù)屏幕上顯示的認(rèn)證點(diǎn)以及隨機(jī)數(shù)繪制認(rèn)證圖案即可。用戶根據(jù)屏幕上顯示的隨機(jī)數(shù)繪制認(rèn)證圖案,設(shè)備界面顯示上次成功認(rèn)證的末位認(rèn)證點(diǎn),如為首次認(rèn)證則不顯示認(rèn)證點(diǎn)。若為非首次認(rèn)證,則設(shè)備界面顯示的認(rèn)證點(diǎn)的向下間隔一位觸摸點(diǎn)為本次認(rèn)證的起始點(diǎn),屏幕上顯示的隨機(jī)數(shù)即為本次認(rèn)證點(diǎn)的個數(shù)。預(yù)存的6位或者多位觸摸點(diǎn)依次循環(huán)作為認(rèn)證密碼,認(rèn)證成功后則認(rèn)證密碼更新,認(rèn)證失敗3次,認(rèn)證密碼自動更新,認(rèn)證失敗導(dǎo)致密碼更新2次,則系統(tǒng)自動發(fā)送設(shè)備具體位置到指定郵箱。
增加一個cishu變量,變量的數(shù)值等于SettingActivity收集到的觸摸點(diǎn)的個數(shù),程序中增加Random類來產(chǎn)生[2,N-1]隨機(jī)數(shù),N為cishu變量的數(shù)值。每成功認(rèn)證一次,隨機(jī)數(shù)更新一次,隨機(jī)數(shù)的加入決定了每次認(rèn)證的點(diǎn)數(shù)和起始認(rèn)證點(diǎn)數(shù)不同,每次認(rèn)證的密碼圖案依據(jù)注冊時繪制的密碼圖案循環(huán)。改進(jìn)后的認(rèn)證流程如圖2所示。
Figure 2 Flow chart of the improved authentication method圖2 改進(jìn)的認(rèn)證方法流程圖
根據(jù)Android系統(tǒng)設(shè)計的認(rèn)證方法原理,將原本一個存放圖案密碼的有序數(shù)組List〈Integer〉增加到6個或者更多,以便存儲6種或多種認(rèn)證密碼。將SettingActivity收集到的觸摸點(diǎn)依次存入到有序數(shù)組List〈Integer〉中。以6位觸摸點(diǎn)為例的密碼存儲程序流程如圖3所示。
為了實(shí)現(xiàn)認(rèn)證密碼的動態(tài)變化,現(xiàn)對認(rèn)證過程進(jìn)行改進(jìn)。增加記錄認(rèn)證點(diǎn)的變量weizhi,weizhi變量與SettingActivity中的有序數(shù)組變量passList對應(yīng),weizhi變量的變化決定著認(rèn)證密碼的變化。增加記錄當(dāng)前認(rèn)證點(diǎn)的變量weizhi1,變量weizhi1記錄當(dāng)前認(rèn)證點(diǎn)的位置。用戶認(rèn)證過程改進(jìn)為:對比當(dāng)前隨機(jī)數(shù)對應(yīng)的圖案與用戶繪制圖案是否相同,相同則認(rèn)證成功,認(rèn)證成功的具體流程如圖4所示。
改進(jìn)的認(rèn)證程序增加一個變量cishu2,用來統(tǒng)計認(rèn)證錯誤次數(shù)。認(rèn)證不成功時,則變量cishu2加1,當(dāng)cishu2的值為3時更新隨機(jī)數(shù)。增加變量cishu3,記錄認(rèn)證失敗導(dǎo)致隨機(jī)數(shù)更新的次數(shù),當(dāng)變量cishu3的值等于2時,自動發(fā)送設(shè)備具體位置到指定郵箱。認(rèn)證失敗的具體流程如圖5所示。
Figure 4 Flowchart of successful authentication圖4 成功認(rèn)證具體流程圖
Figure 5 Flowchart of authentication failure圖5 認(rèn)證失敗具體流程圖
從表1可以看出,改進(jìn)后的認(rèn)證方法的密碼空間數(shù)大于改進(jìn)前的,改進(jìn)后的認(rèn)證方法的密碼空間數(shù)約為改進(jìn)前的11倍,加大了密碼強(qiáng)度,增強(qiáng)了安全性。
改進(jìn)的九宮格認(rèn)證方法具有動態(tài)性,有效地防范了肩窺攻擊與污漬攻擊。肩窺攻擊只能獲取當(dāng)前某一次的手勢認(rèn)證密碼,污漬攻擊獲得的是動態(tài)手勢認(rèn)證圖案的集合,無法具體得出具體的手勢認(rèn)證密碼。改進(jìn)后的認(rèn)證系統(tǒng)具備自動更新手勢密碼的功能,即密碼輸入錯誤3次后,密碼自動更新為下一個密碼,能夠有效抵抗暴力破解。
改進(jìn)后的手機(jī)用戶認(rèn)證方法具有極高的可用性。首先,理論上改進(jìn)后的九宮格手勢認(rèn)證方法的安全性比九宮格手勢認(rèn)證方法的高。其次,改進(jìn)后的用戶認(rèn)證方法提高了用戶認(rèn)證的便捷性。改進(jìn)后的認(rèn)證方法僅需用戶繪制隨機(jī)數(shù)對應(yīng)的認(rèn)證點(diǎn)數(shù)量的圖案,無需繪制全部認(rèn)證點(diǎn)數(shù)量的圖案,提高了用戶認(rèn)證機(jī)制的便捷性。在改進(jìn)的用戶認(rèn)證方法中,用戶依舊可以使用改進(jìn)前的界面作為認(rèn)證界面,不同的是屏幕在開始認(rèn)證時會自動產(chǎn)生隨機(jī)數(shù)以及顯示上次成功認(rèn)證時的末尾認(rèn)證點(diǎn),界面保留原始的認(rèn)證界面,有助于認(rèn)證方法的推廣。
手機(jī)隱私安全的問題被越來越多的人關(guān)注后,許多研究者都對手機(jī)初始的認(rèn)證方法進(jìn)行了改進(jìn),提高了智能手機(jī)的安全性,但絕大多數(shù)的改進(jìn)都是舍棄了九宮格手勢認(rèn)證方法,另尋其他認(rèn)證方法。本文的方法保留九宮格認(rèn)證方法的認(rèn)證界面,改進(jìn)認(rèn)證過程,增加手機(jī)的安全性。
改進(jìn)后的程序的時間復(fù)雜度與改進(jìn)前的程序的時間復(fù)雜度理論上相差不多,但程序運(yùn)行時間應(yīng)該有些許不同。改進(jìn)的九宮格認(rèn)證方法的程序的空間復(fù)雜度大于九宮格手勢認(rèn)證的程序空間復(fù)雜度,關(guān)于如何優(yōu)化空間復(fù)雜度以及時間復(fù)雜度是今后工作的一個重點(diǎn)。但現(xiàn)階段,就為了增加手機(jī)隱私的安全性來看,改進(jìn)后的九宮格認(rèn)證方法的性能要優(yōu)于改進(jìn)前的。
對比改進(jìn)的九宮格認(rèn)證方法與九宮格認(rèn)證方法的可用性、性能與安全性,收集相應(yīng)數(shù)據(jù),評估改進(jìn)的九宮格認(rèn)證系統(tǒng)的性能、可用性與安全性。
手機(jī)運(yùn)行系統(tǒng)Android 6.0.1平臺,手機(jī)型號:小米3,手機(jī)RAM容量:2 GB,手機(jī)ROM容量:16 GB。電腦操作系統(tǒng):Window 10。
5.2.1 可用性及性能實(shí)驗(yàn)設(shè)計
通過組內(nèi)單因素重復(fù)實(shí)驗(yàn)的方法[17],評估改進(jìn)的九宮格手勢認(rèn)證方法的可用性。獨(dú)立變量為認(rèn)證點(diǎn)。通過多次繪制不同的圖案,保存密碼圖案,最后繪制正確與錯誤的解鎖圖案,驗(yàn)證改進(jìn)的九宮格手勢認(rèn)證方法在手機(jī)中是否可以正常流暢運(yùn)行。
5.2.2 安全性實(shí)驗(yàn)設(shè)計
通過組內(nèi)單因素重復(fù)實(shí)驗(yàn)的方法,評估改進(jìn)的九宮格手勢認(rèn)證方法的安全性。獨(dú)立變量為認(rèn)證點(diǎn)。具體方案:(1)對改進(jìn)的九宮格手勢認(rèn)證方法進(jìn)行猜測攻擊,測試改進(jìn)的九宮格手勢認(rèn)證方法是否可以有效抵抗猜測攻擊。(2)告知測試者首次認(rèn)證的手勢密碼,來模擬認(rèn)證系統(tǒng)受到肩窺攻擊,測試改進(jìn)后的九宮格認(rèn)證方法是否可以通過獲知單次認(rèn)證的手勢密碼來認(rèn)證手機(jī),驗(yàn)證改進(jìn)后的九宮格手勢認(rèn)證方法是否可以有效抵抗肩窺攻擊。(3)對手機(jī)屏幕上認(rèn)證時留下的污漬進(jìn)行拍照,保證拍攝圖片的清晰度,將照片給測試者,測試者根據(jù)照片猜測手機(jī)的認(rèn)證手勢,看能否通過手機(jī)認(rèn)證,驗(yàn)證改進(jìn)的九宮格手勢認(rèn)證方法是否可以有效抵抗污漬攻擊。
5.3.1 測試改進(jìn)的九宮格手勢認(rèn)證方法的可用性及性能
給參與者講解九宮格手勢認(rèn)證方法和改進(jìn)的九宮格手勢認(rèn)證方法的原理,讓參與者熟悉改進(jìn)的九宮格手勢認(rèn)證方法并確認(rèn)參與者已經(jīng)學(xué)會使用改進(jìn)的九宮格手勢認(rèn)證方法。參與者開始分別使用認(rèn)證系統(tǒng)。在每一位參與者成功完成手機(jī)認(rèn)證之后,對手機(jī)屏幕上的污漬進(jìn)行拍照,記錄解鎖時間以及解鎖成功次數(shù)。同時,詢問參與者手機(jī)解鎖時是否有卡頓現(xiàn)象。
5.3.2 測試系統(tǒng)的安全性
在改進(jìn)的九宮格手勢認(rèn)證方法中設(shè)置6個點(diǎn)的手勢圖案密碼,以便快速測試改進(jìn)后的方法是否可以抵御猜測攻擊、污漬攻擊和肩窺攻擊。
(1)首先,給予測試者4個小時時間,猜測攻擊九宮格圖案手勢認(rèn)證方法。其次,另外給予測試者4個小時時間,猜測攻擊改進(jìn)的九宮格手勢認(rèn)證方法。實(shí)驗(yàn)結(jié)束后,記錄被破解的手機(jī)個數(shù)。
(2)給測試者分發(fā)預(yù)留的手機(jī)屏幕污漬照片。首先讓測試者在規(guī)定時間內(nèi)根據(jù)照片的污漬痕跡猜測九宮格手勢認(rèn)證方法的認(rèn)證手勢密碼。其次,讓測試者在相同時間內(nèi),根據(jù)污漬痕跡猜測改進(jìn)的九宮格手勢認(rèn)證方法的認(rèn)證手勢密碼。實(shí)驗(yàn)結(jié)束后,記錄被破解的手機(jī)個數(shù)。
(3)告知測試者單次手機(jī)認(rèn)證的手勢密碼圖案。首先,讓其在規(guī)定時間內(nèi)嘗試對九宮格手勢認(rèn)證方法進(jìn)行破解。其次,給予相同的時間,讓其嘗試對改進(jìn)的九宮格手勢認(rèn)證方法進(jìn)行破解。實(shí)驗(yàn)結(jié)束后,記錄被破解的手機(jī)個數(shù)。
5.4.1 可用性測試結(jié)果及分析
100名測試者,100人成功認(rèn)證運(yùn)行改進(jìn)的九宮格手勢認(rèn)證方法的手機(jī),認(rèn)證成功率為100%。手機(jī)完成單次認(rèn)證的時間如表2所示。
Table 2 Single mobilephone authentication time before and after improvement表2 改進(jìn)前與改進(jìn)后的認(rèn)證方法完成單次手機(jī)認(rèn)證時間 s
改進(jìn)后的圖案手勢認(rèn)證方法的平均認(rèn)證時間少于改進(jìn)前的,可以得出改進(jìn)后的認(rèn)證方法的便捷性優(yōu)于改進(jìn)前的。改進(jìn)后用戶認(rèn)證方法的最大認(rèn)證時間大于改進(jìn)前的,分析原因?yàn)椋?/p>
(1)當(dāng)次認(rèn)證點(diǎn)數(shù)為8點(diǎn),即認(rèn)證點(diǎn)數(shù)為當(dāng)前最大認(rèn)證點(diǎn)數(shù);
(2)改進(jìn)后的認(rèn)證系統(tǒng)還需生成隨機(jī)數(shù)與提取相應(yīng)的認(rèn)證密碼圖案。
以上2點(diǎn)原因造成了改進(jìn)后的認(rèn)證方法的最大認(rèn)證時間值大于改進(jìn)前的。但改進(jìn)后的認(rèn)證時間的最小值與平均值均少于改進(jìn)前的,認(rèn)證時間的最大值僅出現(xiàn)當(dāng)前認(rèn)證點(diǎn)數(shù)是8位的情況下,所以改進(jìn)后的圖案手勢認(rèn)證方法的便捷性優(yōu)于改進(jìn)前的。
由此實(shí)驗(yàn)結(jié)果,我們認(rèn)為改進(jìn)后的九宮格認(rèn)證方法的可用性優(yōu)于改進(jìn)前的。同時,100名測試者中有13人反映手勢有時有卡頓現(xiàn)象。改進(jìn)的九宮格手勢認(rèn)證方法的空間復(fù)雜度與時間復(fù)雜度均大于九宮格手勢認(rèn)證方法的,認(rèn)證程序占用手機(jī)內(nèi)存較多,手機(jī)有些許卡頓,優(yōu)化認(rèn)證方法是以后工作的一個重點(diǎn)。
5.4.2 安全性實(shí)驗(yàn)結(jié)果及分析
九宮格手勢認(rèn)證方法被破解的手機(jī)個數(shù)與改進(jìn)的九宮格手勢認(rèn)證方法被破解的手機(jī)個數(shù)如表3所示。
Table 3 Number of cracked cell phone表3 被破解的手機(jī)個數(shù) 個
從表3中可以看出,猜測攻擊、污漬攻擊、肩窺攻擊對破解九宮格手勢認(rèn)證方法的成功率要高于對破解改進(jìn)的九宮格手勢認(rèn)證方法的成功率。
(1)對于猜測攻擊。猜測攻擊九宮格手勢認(rèn)證方法,由于密碼的單一性,在充足的時間內(nèi),只要有耐心則成功率很高。而改進(jìn)的九宮格手勢認(rèn)證方法,存在密碼自動更新機(jī)制,提高了猜測攻擊的難度。
(2)對于污漬攻擊。實(shí)驗(yàn)中給予參與者的污漬照片清晰度高,九宮格手勢認(rèn)證方法的密碼單一性弊端又一次顯現(xiàn)出來,人們根據(jù)照片中的污漬痕跡,極易試出正確的解鎖圖案。改進(jìn)的九宮格手勢認(rèn)證方法,由于不存在固定的解鎖密碼,造成污漬照片中的污漬混亂,提高了抵抗污漬攻擊的能力。
(3)對于肩窺攻擊。九宮格手勢認(rèn)證方法只有一種手勢密碼,只要獲知該密碼,均可以成功認(rèn)證手機(jī),肩窺攻擊對改進(jìn)前的九宮格手勢認(rèn)證方法的認(rèn)證成功率為100%,對于改進(jìn)的九宮格手勢認(rèn)證方法則沒有效果,因?yàn)楦倪M(jìn)后的認(rèn)證方法沒有固定的認(rèn)證圖案。
根據(jù)表3可知,改進(jìn)后的九宮格認(rèn)證方法的安全性要優(yōu)于改進(jìn)前的九宮格認(rèn)證方法的安全性。
根據(jù)以上實(shí)驗(yàn)可以得出,改進(jìn)后的九宮格認(rèn)證方法在保證可用性的基礎(chǔ)上安全性更高。
隨著Android系統(tǒng)的智能手機(jī)的越來越大眾化,智能手機(jī)的隱私安全性越來越被人們關(guān)注。本文以提高手機(jī)安全性為目的,對Android系統(tǒng)的九宮格手勢認(rèn)證方法進(jìn)行了改進(jìn),設(shè)計實(shí)現(xiàn)了手機(jī)手勢圖案的動態(tài)認(rèn)證功能,提高了手機(jī)的安全性。
通過手機(jī)驗(yàn)證了本文所提方法可以正常運(yùn)行,且擁有動態(tài)認(rèn)證的特性。經(jīng)過測試,該認(rèn)證方法可以有效提高手機(jī)安全性,防止手機(jī)隱私被泄露。
在改進(jìn)的九宮格手勢認(rèn)證方法中,存在以下幾個方面可以深入研究:
(1)內(nèi)存優(yōu)化問題。目前只是初步針對九宮格手勢認(rèn)證方法存在的問題進(jìn)行改進(jìn),并未過多地涉及內(nèi)存優(yōu)化問題,目前改進(jìn)的認(rèn)證方法的時間復(fù)雜度與空間復(fù)雜度均高于改進(jìn)前的,所以程序稍顯卡頓,在內(nèi)存優(yōu)化方面尚有很大的改進(jìn)空間。
(2)認(rèn)證機(jī)制的安全問題。改進(jìn)后的圖案手勢認(rèn)證方法檢測到認(rèn)證失敗造成認(rèn)證密碼更新2次后,會自動發(fā)送智能設(shè)備位置到指定郵箱,并自動關(guān)機(jī),但關(guān)機(jī)后,仍可正常開機(jī),繼續(xù)進(jìn)行猜測攻擊,如何進(jìn)一步抵抗猜測攻擊是今后工作的另外一個重點(diǎn)。