

摘 要:隨著Android系統的普遍使用,有關Android系統的第三方惡意軟件越來越多,其中用來竊取用戶數據的居多。由于Android系統中應用產生的數據均放在data/data/第三方應用包名的目錄下,并且其采用DAC(自主訪問控制),因此容易被第三方惡意軟件獲取用戶數據。為了解決這一問題,文章研究并提出一種數據安全隔離方案,該方案是通過數據隔離使其用戶的數據存放在data/自定義的文件夾目錄/第三方應用包的目錄下,并引入SEAndroid機制,采用MAC(強制訪問控制)模式來保障用戶數據安全。
關鍵詞:Android系統;數據隔離;DAC(自主訪問控制);MAC(強制訪問控制)
1 概述
Android智能手機給用戶帶來方便的同時,也給用戶帶來了諸如個人隱私安全,個人信息安全以及個人財產安全等問題。根據360公司2016年第一季度中國手機安全狀況報告得知,Android平臺新增惡意程序樣本339.6萬個,移動端用戶感染惡意程序8829.7萬人次,其中獲取用戶隱私的惡意程序占5.0%。由于Android系統的開源性,以及部分代碼的碎片化問題,從而導致用戶數據的嚴重泄露[1]。為了保障用戶數據安全,可以根據隱私數據的泄漏與否來判斷其安全性[2],對Android權限進行詳細劃分,禁止敏感權限[3],也可以對系統應用程序的進程進行監控[4],但是這些保護機制根本上還是采用DAC訪問模式來保護數據。為了解決這一問題,文章將對需要保護的數據隔離出來,并采用MAC機制來保障其安全性。
2 SEAndroid安全機制分析
2.1 Android自身安全機制
在引進SEAndroid機制之前,Android系統的安全機制主要是在系統內核以及應用程序兩個方面。應用程序的安全問題主要是Android的權限問題,如果某個應用需要訪問敏感或者特權權限時,就需要在AndroidManifest.xml文件中申請相應的權限,并在安裝的過程中Y由用戶決定是不是允許賦予相應的權限。安裝之后一般會有系統服務使用這些權限,在使用之前,系統服務會檢查權限是否通過。而內核級別的安全機制就是傳統的Linux的UID和GID,每個用戶都會有一個ID,也會擁有一個用戶組ID,分別稱為UID和GID。Linux系統就是通過用戶進程,文件的UID和GID的屬性來進行管理的,也即是人們常說的Android沙箱機制。
這種安全機制存在很大的問題,當某個用戶想讓另外一個用戶訪問自己創建的文件時,只需要修改一下文件的訪問權限即可,因此Android原來安全機制中文件的權限控制在所有者手中。這種權限控制方式是自主式的,英文全名為Discretionary Access Control,簡稱為DAC。DAC權限控制方式會可能因為用戶執行了錯誤的命令,負責執行用戶命令的程序受到攻擊,或者是負責執行用戶命令的程序出現BUG,都會引起用戶隱私數據的泄露。
2.2 SEAndroid安全機制
針對Linux操作系統,NSA開發了一套安全機制SELinux,用來增強其安全性。Android系統是基于Linux實現的,但是它又有獨立的用戶空間,因此SELinux并不完全適用于Android系統,為此,NSA針對Android系統在SELinux基礎上開發了SEAndroid。以SELinux文件系統接口為邊界,SEAndroid安全機制包含有內核空間和用戶空間兩部分[5]。在內核空間,主要涉及到一個稱為SELinux LSM的模塊,其SELinux LSM模塊負責內核資源的安全訪問控制。在用戶空間中主要有Security Context、Security Server、SEAndroid Policy模塊。
SEAndroid采用MAC訪問控制模型,在MAC機制中,用戶、進程或者文件的權限是由管理策略決定的,而不是由它們自主決定的。SEAndroid安全機制如圖1所示,在SEAndroid中,每一個進程和文件都會關聯一個安全上下文。這個安全上下文由用戶、角色、類型、安全級別四個部分組成。當每一個進程和文件都關聯上一個安全上下文之后,系統管理員就可以基于這些安全上下文制定一個安全訪問策略,用來規定進程可以訪問相對應的文件。圖1中,u:r:unstructed_app:s0描述的是用戶安裝的APK所運行在該進程的安全上下文,而u:object_r:app_data_file:s0描述的是用戶安裝的APK在運行過程中生成數據文件的安全上下文。
SEAndroid安全機制與傳統的Linux UID/GID安全機制是并存的,當進程訪問文件時,首先要通過DAC安全檢查,然后才能進入SEAndroid的MAC安全檢查,若有一個檢查不通過,就會禁止訪問。
3 數據安全隔離方案的設計與實現
3.1 數據安全隔離方案的設計
Android手機系統中無論是系統應用還是第三方應用的數據都放在data/data/ 目錄下,并且其訪問采用的是DAC模式,一定程度上會造成用戶數據的泄露。本方案首先是對數據進行隔離,使用戶數據存放在data/safedata 目錄下或者任意文件下(本方案實例是將數據存放在data/safedata/ 目錄下),并同時對隔離數據采用MAC模式保護,即使獲取手機root權限也很難獲取隔離的數據。方案整體設計框架如圖2所示。
3.2 數據安全隔離方案的實現
3.2.1 數據隔離的實現
由于Android手機中無論是系統應用還是第三方應用的用戶數據均存放在data/data 目錄下,因此為了保護用戶數據的安全,可以將數據存放在另一個目錄下而達到數據隔離的目的。本設計是將數據存放在data/safedata目錄下,此目錄的等級和手機中data/data地位平等。首先,data根目錄是由分區影像文件ramdisk.imag在內核啟動的時候調用init中的mount函數生成。然后在data目錄下通過mount(\"data\",\"data/\",\"data\",0,NULL)操作生成索引節點再通過mkdir data/safedata 生成data根目錄下的safedata目錄。最后在應用開發過程中將數據庫的存放路徑PATH為data/safedata。這樣就可以將應用的數據隔離開來。
3.2.2 對隔離數據的MAC控制實現
利用SEAndroid安全機制中的策略配置文件實現對隔離數據的MAC控制。本方案不僅需要對隔離的安全空間進行te策略文件的配置,還需要對第三方應用能在隔離安全空間中運行以及訪問權限來進行te策略文件配置。具體的配置框架見圖3。
通過以上可以看到經過SEAndroid配置權限以后,其訪問權限是先進行DAC模式檢查,然后再進行MAC模式檢查,當以超級用戶root權限進行訪問數據時,DAC檢查通過,但是由于沒有MAC權限,因此操作data/safedata目錄下的數據時而被禁止,從而進一步增強了應用的安全性,只有具備策略文件中的訪問權限,才可以操作其文件和數據。
5 結束語
文章主要是在Android平臺上的一種數據安全隔離方案的設計,以此來保護用戶的敏感數據。隨著Android系統的廣泛使用,獲取用戶數據的惡意軟件每年都在快速的增長,因此本方案的設計可以為以后保護用戶的隱私數據提供一個新思路,并且可以根據用戶的需求來開發相應的安全隔離系統。
參考文獻
[1]周圣韜.Android安全技術揭秘與防范[M].北京:人民郵電出版社,2015:6-12.
[2]彭智俊,張源,楊眠.用靜態信息流分析檢測Android應用中的日志隱患[J].小型微型計算機系統,2013(6).
[3]戴威,鄭滔.基于Android權限機制的動態隱私保護模型[J].計算機應用研究,2012,29(9):3478-3482.
[4]Hwan-Taek Lee, Dongjin Kim, Minkyu Park, Seong-je Cho. Protecting data on Android platform against privilege escalation attack[J].International Journal of Computer Mathematics, 2016, 93(2):401-414.
[5]李駿.深入理解Android 5源代碼[M].人民郵電出版社,2016: 586-615.
作者簡介:劉魁(1988-),男,河南省商丘市人,學士學位,重慶郵電大學通信與信息工程學院碩士研究生,主要研究方向:智能終端與軟件。