黃 珂,黃 方
(1.上海交通大學 電子信息與電氣工程學院,上海 200240;2.電子科技大學 資源與環(huán)境學院,四川 成都 611731)
基于安卓平臺的行為指紋安全認證
黃 珂1,黃 方2
(1.上海交通大學 電子信息與電氣工程學院,上海 200240;2.電子科技大學 資源與環(huán)境學院,四川 成都 611731)
傳統(tǒng)密碼認證易被竊取,人們開始尋找新的安全認證方式。行為指紋是指用戶對手機的操作數(shù)據(jù),由多元素組成。這些數(shù)據(jù)可以作為用戶獨特的身份信息運用到安全領(lǐng)域之中。該文將行為指紋應用于手機安全認證,開發(fā)出一款基于安卓平臺的行為指紋安全認證應用軟件,在建模和識別的算法上,將一類和二類向量機相結(jié)合,應用一類支持向量機(SVM)、二類SVM識別的方法,提高了行為識別的準確率。測試結(jié)果表明該軟件能夠運用于手機的安全認證中。
行為指紋; 安全認證; 安卓; 手機
目前手機的主流認證方式有密碼認證、手勢認證、生物特征識別等,其中生物特征識別又包括射頻識別技術(shù)、指紋識別技術(shù)、人臉識別技術(shù)、說話人識別技術(shù)和虹膜識別技術(shù)等[1]。密碼認證和手勢認證易被竊??;生物特征識別安全持續(xù)、準確度較高,但需要傳感器支持。現(xiàn)有傳感器識別方法主要有基于環(huán)境傳感器的行為識別和基于可穿戴或手機傳感器的行為識別[2],其中的手機傳感器的行為識別利用手機傳感器獲取用戶的各種操作數(shù)據(jù)。科研工作者已經(jīng)能夠通過在人體各部位放上的傳感器來監(jiān)測人當前的生理狀況。目前智能手機的多種內(nèi)置傳感器如加速度傳感器、陀螺儀、磁力計和方向傳感器等可以對不同的運動、方向和外部環(huán)境進行感知,特別在監(jiān)測設(shè)備的移動和位置變化時,能獲得較精確的原始三維數(shù)據(jù)[3]。本文針對智能手機內(nèi)置的多種傳感器,將行為指紋識別技術(shù)應用到手機安全防護之中,深入到android內(nèi)核采用C語言進行編程,將用戶的行為習慣通過若干屬性將其抽象化并進行數(shù)字化描述,并訓練分析采集的數(shù)據(jù),對未知的數(shù)據(jù)進行分類和預測。
常見的分類分析一般分為兩個步驟:
1)使用分類算法如決策樹、貝葉斯算法、人工神經(jīng)網(wǎng)絡(luò)或支持向量機等建立模型[4];
2)使用分類模型對未知的數(shù)據(jù)點進行分類預測。支持向量機(support vector machine,SVM)方法是根據(jù)有限的樣本信息在模型的復雜性(即對特定訓練樣本的學習精度)和學習能力(即無錯誤地識別任意樣本的能力)之間尋求最佳折中,以求獲得最好的推廣能力。訓練SVM的算法歸結(jié)為求解一個受約束的凸二次優(yōu)化問題[5],對于小規(guī)模的二次優(yōu)化問題,現(xiàn)在有比較成熟的牛頓法和內(nèi)點法,當數(shù)據(jù)規(guī)模足夠大時則可以使用塊算法、分解算法、序貫最小優(yōu)化算法以及增量與在線學習算法等[6]。
1.1 系統(tǒng)設(shè)計
系統(tǒng)主要包括5個設(shè)計模塊,如圖1所示。各個設(shè)計模塊之間的關(guān)系如圖2所示。
圖1 系統(tǒng)設(shè)計圖
圖2 模塊關(guān)系圖
首先數(shù)據(jù)采集模塊利用Android NDK native進行編程[7],采集到數(shù)據(jù)后交給數(shù)據(jù)處理模塊進行處理。數(shù)據(jù)處理模塊采集到屏幕事件數(shù)據(jù)和傳感器數(shù)據(jù)這兩組不同的數(shù)據(jù)。屏幕點擊事件數(shù)據(jù)格式為(deviceName,type,code,value),其意義可參考安卓源碼分析文檔,需要處理為所需的數(shù)據(jù)格式{x坐標,y坐標,時長,壓力};屏幕點擊屬性處理好以后,還需要將傳感器數(shù)據(jù){線加速度(加速器),角加速度(陀螺儀)}合并到點擊屬性中。模型建立模塊應用針對SVM分類的庫libsvm[8],使用libsvm提供的訓練函數(shù)sve_train.main(arg)訓練得到模型文件,并針對其核心部分函數(shù)進行二次開發(fā)。起初只有主人數(shù)據(jù),使用one-class SVM得到訓練模型model 1,當具有一定的客人數(shù)據(jù)后,使用two-class SVM得到新的訓練模型model 2,這個模型提供更準確的判斷。
1.2 系統(tǒng)框架
系統(tǒng)框架圖如圖3所示,系統(tǒng)框架分為訓練和識別兩個部分。在訓練階段建立用戶行為模型;識別階段是當用戶與手機交互時,根據(jù)觀察數(shù)據(jù)來判斷當前用戶是不是符合之前訓練的模型,通過采集用戶數(shù)據(jù)屬性,然后使用SVM對其進行分類處理,預測設(shè)備收集到的輸入信息是否屬于手機主人。
圖3 系統(tǒng)框架圖
其中,手機主人的數(shù)據(jù)采集根據(jù)函數(shù)F={x坐標,y坐標,時長,壓力,線加速度(加速器),角加速度(陀螺儀)},
設(shè)計將每個應用的獨立安卓程序組件Activity數(shù)據(jù)分開,為各個Activity建立相應的one-class SVM模型,當數(shù)據(jù)量足夠多時,one-class SVM建立成功。手機當前用戶身份將通過one-class SVM進行鑒別,判斷是主人還是客人,并保存相應數(shù)據(jù),達到身份認證目的。由于one-class SVM準確度通常不夠,往往需要通過 two-class SVM進行訓練以達到更高的判斷準確度。
2.1 數(shù)據(jù)處理模型
該模型處理屏幕事件數(shù)據(jù)和傳感器數(shù)據(jù),由于收集數(shù)據(jù)的觸發(fā)條件不同,這兩組數(shù)據(jù)無法放置到同一個線程中,但程序需要的是同一時刻的兩種數(shù)據(jù),所以需要一種算法將兩種數(shù)據(jù)聯(lián)合在一起。
由于屏幕點擊事件(點擊、滑動)具有一定時間長度,通過設(shè)計給每組數(shù)據(jù)加上一個時間戳,就可以挑出一定時間范圍內(nèi)的傳感器數(shù)據(jù)。具體實現(xiàn)為以下5個步驟。
1)建立鏈表nodes,暫時保存一個事件的所有節(jié)點(一個滑動有多個節(jié)點,一個點擊只有一個節(jié)點);建立兩個阻塞隊列,用accelerator和gyroscope分別保存加速器和陀螺儀的數(shù)據(jù);建立兩個緩沖隊列bufferedQueue 1和bufferedQueue 2,當傳感器隊列accelerator 和 gyroscope被阻塞時,傳感器的數(shù)據(jù)寫入緩沖隊列中,當傳感器隊列恢復時再把緩沖隊列里的值添加到其中,清空緩沖隊列。轉(zhuǎn)到步驟2)。
2)運行狀態(tài)機,事件開始時,第一個節(jié)點開始,新建一個節(jié)點,當這個節(jié)點結(jié)束時添加該節(jié)點到鏈表nodes中。若是一個新的節(jié)點開始,轉(zhuǎn)到步驟2);若事件結(jié)束,轉(zhuǎn)到步驟3)。
3)flag置為1,表明accelerator和gyroscope阻塞;新建一個ScreenEvent對象,傳入?yún)?shù)為nodes, accelerator和gyroscope,轉(zhuǎn)至步驟4)。
4)處理流程,處理完畢轉(zhuǎn)至步驟5)。
5)調(diào)用ScreenEvent成員函數(shù)judge()函數(shù)進行判斷是否是主人,調(diào)用save()函數(shù)持久化該組數(shù)據(jù)。轉(zhuǎn)至步驟2)。
2.2 交互模型
當用戶與手機交互時,根據(jù)點擊(如打字、點擊菜單等)和滑動(如瀏覽網(wǎng)頁、讀電子書)兩個最基本動作的不同的點擊特征和設(shè)備反應,對于每一個動作定義一個標識O={A,G,F}中,其中,A為當前的Activity,G為當前的動作,F(xiàn)為當前動作的若干屬性:x坐標、y坐標、時長、壓力、線加速度、角加速度。
坐標、時長、壓力可以由手機自帶的傳感器獲得;用戶拿手機不同的姿勢,將會導致不同的傳感器值。已有實驗研究證實[9-10],這些屬性可以用來分辨不同人的行為習慣。
然而對于這4個屬性,一般的編程方法是無法實現(xiàn)后臺監(jiān)聽屏幕點擊事件的;所以程序需要深入系統(tǒng)內(nèi)核(android內(nèi)核為linux),嘗試截取相關(guān)文件的內(nèi)容來獲取這些數(shù)據(jù)。經(jīng)過研究,發(fā)現(xiàn)/dev/input/eventX下的這幾個文件與系統(tǒng)輸入有關(guān),即手機接收到的所有輸入事件,比如屏幕點擊、按鍵等,都是會寫入到/dev/input/下的幾個文件中,然后android系統(tǒng)進行處理封裝分發(fā)事件。于是程序在讀取這些數(shù)據(jù)后經(jīng)過處理,獲得了可以進行建模的數(shù)據(jù)。
對訓練集數(shù)據(jù)使用一類向量機進行建模時,采用的核函數(shù)為多項式內(nèi)核:
K(xi,xj)=[xi*xj+1]·3
(1)
將當前的六維空間的數(shù)據(jù)F= (x1,x2,x3,x4,x5,x6),通過K映射到更高位的空間中,然后通過序列最小優(yōu)化算法(sequential minimal optimization, SMO)實現(xiàn)SVM分類,并通過訓練集循環(huán)迭代計算出松弛變量和懲罰因數(shù)。
2.3 識別策略
對于用戶的每一個動作(點擊,滑動)Ji都可算出判定是主人的概率ε(Ji)。因此,每次從屏幕開啟時維持一個變量P代表開啟屏幕以來所有敏感操作判斷是主人的可能性
P=1-∏(1-εi(Ji))
(2)
當P超過閾值Pθ時,即可認為是主人在操作,執(zhí)行下一步動作。當屏幕關(guān)閉時,P值置為0。
有以下兩點需要說明。
1)變量P從屏幕開啟時開始計算,關(guān)閉時重置。從屏幕開啟后開始計算該用戶是否是主人,若是則可以停止監(jiān)控。若程序一直在后臺監(jiān)聽,由于程序注冊了傳感器事件,耗電量較大,必須采取策略以達到省電目的。所以當程序判定使用者為主人的概率達到一定數(shù)值后即可暫停監(jiān)控。
2)敏感操作指的是對于敏感應用(如短信、郵箱、QQ和微信等涉及隱私的應用)的操作。當用戶切換到敏感應用時,監(jiān)聽服務應該立即被啟動以判斷用戶是否是主人。
上述兩點設(shè)計是基于耗電和對手機性能影響而考慮的,也是當前手機用戶最為關(guān)注的;如果為了安全而犧牲省電和高性能,也會得不償失,且無法吸引用戶。
2.4 識別后反應
當系統(tǒng)識別出當前用戶的身份以后,需要對下面兩種情況作出反應,主要包括手機交互反應(如彈出對話框、發(fā)送郵件)和模型反饋更新(后臺默默進行)。
1)當前用戶是主人,則選取被判定為主人的部分數(shù)據(jù),加入原來主人訓練集中,并移除一部分存在時間最長的數(shù)據(jù),維持訓練集的最優(yōu)尺寸[8],再進一步進行訓練得到更新的模型。
2)當前用戶不是主人,則彈出警告對話框要求輸入密碼,并向之前預留的郵箱發(fā)送郵件提醒手機主人。同時選取被判定為客人的部分數(shù)據(jù)加入客人訓練集中,如果客人訓練集未達到最優(yōu)訓練集尺寸,則不做處理;若達到最優(yōu)尺寸,即維持訓練集最新;若此時模型為one-class SVM,聯(lián)合主人客人訓練集進行two-class SVM訓練以獲得新的模型,若此時模型已經(jīng)為two-class SVM,則將更新后的訓練集進行重新訓練,更新模型。
3.1 程序輸入數(shù)據(jù)可行性測試與分析
加速計和陀螺儀均提供了(X,Y,Z)三軸坐標數(shù)據(jù),在點擊的時候為了得到手機振動幅度,需要對三軸數(shù)據(jù)進行取模處理。每次點擊時可以使手機傳感器的加速計和陀螺儀的數(shù)據(jù)發(fā)生一次跳動。這些傳感器參數(shù)可能帶有錯誤數(shù)據(jù)和噪聲,為了去除這些噪聲,需要對加速計和陀螺儀在每次點擊事件發(fā)生時的平均擾動值進行計算。
為了測量手機設(shè)備在點擊屏幕事件下的振動幅度和轉(zhuǎn)動幅度,將手機的觸摸屏分割為2515的小格子,計算每塊分割區(qū)域的平均振動幅度和平均旋轉(zhuǎn)幅度。測試結(jié)果表明,手機振動和轉(zhuǎn)動變化趨勢可以反映出一種特定的手機持握姿勢,這是一種生物行為模型。可以作為有效數(shù)據(jù)收集進行身份識別的重要的特征參數(shù)。
隨機選擇了13人進行測試,記錄在使用手機時不同的參數(shù)表現(xiàn)。測試結(jié)果表明,不同人在拖動屏幕進行操作時具有明顯區(qū)別,無論是何種屏幕操作,振動和轉(zhuǎn)動幅度的屏幕數(shù)據(jù)反映結(jié)果差異十分明顯。進一步測試發(fā)現(xiàn)不同人對于屏幕滾動操作的時間長度為200~1200 ms之間不等,點擊屏幕的壓力值也具有明顯不同。因此,壓力、時間長度、振動幅度和轉(zhuǎn)動幅度這4個數(shù)據(jù)是可以有效區(qū)別用戶身份的數(shù)據(jù)。
3.2 數(shù)據(jù)采集模塊測試
通過使用Android的Getevent,可以生成所需要的屏幕輸入事件數(shù)據(jù)流。這些數(shù)據(jù)流按照{(diào)事件類型,鍵碼類別,具體的數(shù)值} 的形式顯示。屏幕事件的類型在目前主流智能手機上都是以EV_ABS的形式出現(xiàn)的。
圖4 滑動事件后臺采集數(shù)據(jù)圖
圖4是在測試過程中用戶在QQ啟動界面上的一次滑動事件。滑動事件在Android系統(tǒng)中被處理成一系列單點觸摸事件。在滑動過程中會每隔一段時間進行數(shù)據(jù)采集。點擊數(shù)據(jù)視整個滑動操作的時間長短而定??梢钥吹缴鲜龌瑒訒r間因為滑動距離較短,完成時間很短,所以觸摸屏總共捕獲了兩個數(shù)據(jù)點,分別為始末節(jié)點的位置信息。此外,傳感器數(shù)據(jù)需要通過調(diào)用系統(tǒng)api獲得。
3.3 數(shù)據(jù)處理模塊測試
3.4 識別模塊測試
選取了點擊、滾動和滑動3個手勢進行測試,結(jié)果如表1所示。
表1 測試數(shù)據(jù)情況表
進一步的測試發(fā)現(xiàn)100個人對于屏幕滾動操作的時間長度為200~1200 ms之間等,點擊屏幕的壓力值也是在2~40之間有著明顯不同。因此,壓力、時間長度、振動幅度、轉(zhuǎn)動幅度這4個數(shù)據(jù)是可以有效區(qū)別用戶身份的數(shù)據(jù)。
在數(shù)據(jù)準備階段,選取若干實驗者分別作為手機主人進行了數(shù)據(jù)采集。每個手勢均采集了1 000條左右的記錄。另外邀請了20人以客人身份進行數(shù)據(jù)采集,從每個人的屏幕操作中采集每種手勢50條左右的記錄。
通過“統(tǒng)計產(chǎn)品與服務解決方案”軟件(statistical product and service solutions,SPSS),嘗試將滑動的時間長度和手指移動的距離這兩個屬性通過圖形軟件進行顯示,如圖5所示。圖中淺色數(shù)據(jù)代表主人在滑動操作下的數(shù)據(jù),深色數(shù)據(jù)代表某一客人數(shù)據(jù)。結(jié)果表明兩種數(shù)據(jù)之間可以分割和區(qū)分。將處理后的主人屏幕操作數(shù)據(jù)作為輸入,進行SVM訓練,并對客人數(shù)據(jù)進行預測。對于每組客人數(shù)據(jù)都會給出程序判斷數(shù)據(jù)屬于客人的概率,然后通過計算連續(xù)k次的聯(lián)合概率來做出更為準確的判斷,如圖6所示。
圖5 使用SPSS將滑動操作數(shù)據(jù)可視化結(jié)果圖
圖6 預測誤報率圖
4.5 程序安全性測試
由于程序會采集用戶的操作數(shù)據(jù)并存儲在自身的數(shù)據(jù)庫中,所以保證數(shù)據(jù)庫安全非常重要。這里使用了SQLCipher來解決數(shù)據(jù)庫安全問題。SQLCipher在SQLite的基礎(chǔ)上增加了數(shù)據(jù)加密功能,存儲數(shù)據(jù)時通過它來對數(shù)據(jù)進行加密。經(jīng)過測試,Root權(quán)限的Android手機文件瀏覽器無法打開經(jīng)過加密的數(shù)據(jù)庫文件,保證了存儲的屏幕操作數(shù)據(jù)的機密性,防止入侵者獲得用戶的機密數(shù)據(jù)。
手機使用者希望擁有一種更加安全、便捷而又不需要太高硬件支持的認證方式。行為指紋認證方式能夠滿足這些要求。行為指紋認證未來可以在以下3方面得到應用:
1)應用于手機中的第二道安全防線,阻止非法用戶訪問手機中的私密文件,保證用戶的手機數(shù)據(jù)不被泄露。
2)運用在其他的安卓設(shè)備上,例如平板設(shè)備,并保護這些設(shè)備的數(shù)據(jù)安全,甚至可以移植到其他移動設(shè)備平臺(IOS、Windows phone等)。
3)和手機安全軟件公司合作,將認證方式融入軟件之中,與其他認證方式聯(lián)合,實現(xiàn)全方位的持續(xù)保護。
[1] 武芳.芻議身份鑒別技術(shù)的發(fā)展[J].電腦編程技巧與維護, 2015(9):84-85.[2] 趙瑞.基于手機傳感器的行為識別和行為習慣分析[D].廈門:廈門大學, 2013.[3] 陳龍彪, 李石堅, 潘綱.智能手機:普適感知與應用[J].計算機學報, 2015, 38(2):423-438.
[4] 談恒貴, 王文杰, 李游華.數(shù)據(jù)挖掘分類算法綜述[J].微型機與應用, 2005, 24(2):4-6.[5] 劉江華, 程君實, 陳佳品.支持向量機訓練算法綜述[J].信息與控制, 2002, 31(1):45-50.
[6] 王書舟, 傘冶.支持向量機的訓練算法綜述[J].智能系統(tǒng)學報, 2008, 3(6):467-475.
[7] 趙宏偉.Android NDK開發(fā)環(huán)境實現(xiàn)與應用[J].電腦知識與技術(shù), 2010, 06(35):10055-10057.
[8] 丁世飛, 齊丙娟, 譚紅艷.支持向量機理論與算法研究綜述[J].電子科技大學學報, 2011, 40(1):2-10.[9] MILUZZO E, VARSHAVSKY A, BALAKRISHNAN S, et al.Tapprints: your finger taps have fingerprints[C]// International Conference on Mobile Systems, Applications, and Services.[S.l.]:ACM, 2012:323-336.
[10] XU Z, BAI K, ZHU S.TapLogger: inferring user inputs on smartphone touchscreens using on-board motion sensors[C]// ACM Conference on Security and Privacy in Wireless and Mobile Networks.[S.l.]:ACM, 2012:113-124.[11] 吳東洋, 業(yè)巧林, 業(yè)寧,等.一種SVM訓練樣本集尋優(yōu)算法[J].計算機應用與軟件, 2010, 27(9):14-16.
The Security Certification by Behavior Fingerprint on Android Platform
HUANG Ke1, HUANG Fang2
(1.School of Electrical and Information Engineering, Shanghai Jiao Tong University, Shanghai 200240, China;2.School of Resources and Environment, University of Electronic Science and Technology of China, Chengdu 611731, China)
Traditional password is easy to leak.People try to find a new kind of security certification.Behavior fingerprint is the user’s operating data on the phone which consists of a lot of elements.These data can be used as user’s identity information.In this paper, behavior fingerprint is used in mobile security certification and an Android application is developed.Based on modeling and identifying algorithm, class I and Class II support vector machine (SVM)are jointed and applied as identifying method, thus improved the accuracy for identifying user’s behavior.
behavior fingerprint; security certification; android; mobile phone
2016-03-12;修改日期:2016-07-15
黃珂(1994-),男,本科,主要從事信息安全方面的研究。
黃方,副教授,huangfang@uestc.edu.cn。
TP309
A
10.3969/j.issn.1672-4550.2017.01.017