衛(wèi)志剛 張曉龍
摘 要:在智能手機的普遍應用過程中,大量Android的應用程序存在著一定的密碼誤用問題,對此相關(guān)學者對密碼學誤用檢測方式進行了系統(tǒng)的研究分析。在常規(guī)狀況之下,密碼學誤用是在程序操作以及實現(xiàn)過程中對于密碼的各種算法調(diào)用出現(xiàn)了失誤問題,導致密碼機制無法實現(xiàn)既定的安全標準的狀況。而通過動靜結(jié)合的分析方式對密碼學誤用進行檢測,精準度相對較高,可以精準檢測各種誤用狀況。
關(guān)鍵詞:Android應用程序 密碼學誤用 檢測方法
中圖分類號:TN919 文獻標識碼:A 文章編號:1672-3791(2018)03(b)-0011-02
1 基于Android CMA的靜態(tài)密碼學誤用檢測模塊
基于smali文件內(nèi)容生成控制圖以及調(diào)用圖,并根據(jù)控制流圖和調(diào)用圖,對應用程序與密碼相關(guān)的函數(shù)調(diào)用進行分析,得到密碼相關(guān)的函數(shù)名以及執(zhí)行密碼函數(shù)調(diào)用的路徑以及分支。靜態(tài)分析的具體流程如圖1所示。
在基于Android CMA的靜態(tài)密碼學誤用檢測模塊中,首先要對APK文件解壓,獲得dex文件,再利用Baksmali以及smali0將dex文件進行轉(zhuǎn)換,使其變?yōu)閟mali格式。再對smali文件進行分析,生成控制流圖以及調(diào)用圖。在整個控制流圖中主要是通過節(jié)點、連接節(jié)點的邊構(gòu)成,這些節(jié)點是基本塊。在Android CMA中,這些基本塊主要是通過不同的dalvik字節(jié)碼共同構(gòu)建形成,其連接節(jié)點的邊主要是基于jump指令以及異常處理兩個程序共同構(gòu)建形成。在進行控制流圖的構(gòu)建過程中,先通過jump指令以及異常處理程序的目的地址對各個基本塊進行鏈接處理。在調(diào)用圖中要先對調(diào)用的入口進行分析,基于Android自身的系統(tǒng)特征,對不同的活動的程序如onCreate、onResume、onStart以及onPause等作為主要的調(diào)用操作的入口,基于這些入口對其進行系統(tǒng)分析,進而將不同的函數(shù)信息進行鏈接應用。
2 基于Android CMA的動態(tài)密碼學誤用檢測模塊
基于Android CMA的動態(tài)密碼學誤用檢測模塊主要是基于靜態(tài)分析過程中獲得的各項數(shù)據(jù)信息以及結(jié)果,通過執(zhí)行密碼函數(shù)調(diào)用的路徑分支,對不同的函數(shù)密碼進行調(diào)用監(jiān)控處理,了解不同函數(shù)以及參數(shù)信息,詳實記錄整理。
動態(tài)密碼學誤用檢測模塊在實踐中主要應用的技術(shù)手段是APK重打包技術(shù)。APK重打包利用API monitor工具開展操作,在APK中嵌入一個日志代碼,獲得相關(guān)運行記錄。
在進行Android應用程序密碼學誤用檢測方法的動態(tài)處理過程中應用的是動態(tài)污點分析方式,是一種在應用程序運行過程中,對于各種信息記錄進行動態(tài)的標記、跟蹤以及分析的實時性檢測技術(shù)與手段。在應用程序的安全中,因為動態(tài)污點分析方式可以有效地組織一些廣泛范圍的攻
圖1 基于Android CMA的靜態(tài)密碼學誤用檢測模塊流程
圖2 Android 密碼誤用案例
擊,可以對緩沖區(qū)溢出攻擊、命令注入攻擊、格式字符串攻擊以及跨站點腳本攻擊等攻擊方式進行處理,檢測相對較為精準。
2.1 污點源
污染源是基于Android CMA的動態(tài)密碼學誤用檢測模塊中的重點內(nèi)容,是在相關(guān)應用程序數(shù)據(jù)被一些污點標記過程中的初始化的描述處理,是通過何種污點標記對特定的污染敏感數(shù)據(jù)進行標記的方式手段。在程序數(shù)據(jù)中涵蓋了不同的污染類型,主要是變量名(variable names)以及函數(shù)返回值(function-return values)、數(shù)據(jù)讀取與I/O流等相關(guān)內(nèi)容,其涵蓋了文件傳遞以及網(wǎng)絡(luò)信息系統(tǒng)的鏈接。
2.2 傳播策略
傳播策略在基于Android CMA的動態(tài)密碼學誤用檢測模塊中的主要作用是對執(zhí)行污點標記過程中的傳播方式進行分析。在進行污點傳播過程中可以將其具體步驟進行如下概括分析,設(shè)置特定的語句S,將其產(chǎn)生的數(shù)據(jù)叫做起始數(shù)據(jù)信息,利用控制污點標記的方式進行函數(shù)的分配,其稱之為映射函數(shù)。在實踐中對于S結(jié)果產(chǎn)生影響的稱之為影響數(shù)據(jù)描。因為初始數(shù)據(jù)是各種信息數(shù)據(jù)的集合,識別相對較為容易,這些數(shù)據(jù)在寄存器或者內(nèi)存中進行存儲,其各項信息數(shù)值會基于S的執(zhí)行也出現(xiàn)不同的變化。同時,也有不同的模式識別影響相關(guān)數(shù)據(jù)以及定義映射函數(shù),因為在操作中其既定的目標具有一定的靈活性。對此可以基于實際的狀況,進行傳播策略的定義與處理。
2.3 污點池
污點池是基于Android CMA的動態(tài)密碼學誤用檢測模塊中的代碼地址,在操作中,用戶要想對多個或者幾個存儲單元中的污點進行標準監(jiān)測,可以基于ID地址、內(nèi)存地址以及代碼地址,在特定代碼地址中綜合關(guān)聯(lián)此內(nèi)存地址的污點標記執(zhí)行一個或者多個不同的檢測與操作。其中ID是被用戶分配給一組匯點或者一個匯點的整數(shù)數(shù)值。
3 基于Android CMA的密碼誤用檢測模塊
在基于Android CMA的密碼誤用檢測模塊中,主要是通過對各種記錄結(jié)果進行分析,獲得其需要的密碼誤用分析結(jié)果。在操作中要利用密碼誤用檢測模塊進行函數(shù)名的匹配分析,了解其各項參數(shù)信息,是否存在與預先設(shè)定的密碼誤用模型相吻合的模型,然后進行各項參數(shù)信息的分析處理。密碼誤用識別模塊對記錄結(jié)果進行分析,得到密碼誤用漏洞分析結(jié)果。
在實踐中使用基于Android CMA的密碼誤用檢測模塊,對一些使用了密碼機制保護用戶敏感數(shù)據(jù)的應用程序進行驗證分析,發(fā)現(xiàn)一半以上的應用都存在密碼勿用。觀察某一應用的程序調(diào)用如圖2所示,其中第一行中的函數(shù)參數(shù)為MD5,這種狀況就是密碼誤用中的hash算法勿用。
4 結(jié)語
在常規(guī)狀況之下,密碼學誤用是在程序操作以及實現(xiàn)過程中對于密碼的各種算法調(diào)用出現(xiàn)了失誤問題,導致密碼機制無法實現(xiàn)既定的安全標準的狀況。而通過動靜結(jié)合的分析方式對密碼學誤用進行檢測,精準度相對較高,可以精準檢測各種誤用狀況。
參考文獻
[1] 邵帥,王眉林,時志偉,等.Android和iOS應用軟件密碼誤用漏洞分析[A].信息安全漏洞分析與風險評估大會[C].2014.
[2] 曹歡歡.Android平臺下的安全檢測軟件的設(shè)計與實現(xiàn)[D].江蘇科技大學,2015.