龐鵬飛 韓文聰 薛 源 于長富 謝常達
1(北京理工大學計算機學院 北京 100081)
2(中國人民解放軍32133部隊 山西大同 037034)
(664522431@qq.com)
隨著科學技術的發(fā)展,網絡設備和無線網絡的覆蓋范圍越來越大,人們對智能手機的青睞逐漸超過了PC.移動互聯(lián)網的發(fā)展和智能手機的普及促使市場上涌現(xiàn)出許多智能手機操作系統(tǒng)[1].Android系統(tǒng)作為源碼開放的智能手機操作系統(tǒng),暴露的漏洞和面臨的風險越來越多[2].
Android手機存在數(shù)據(jù)安全風險.相關手機平臺的統(tǒng)計數(shù)據(jù)表明,Android平臺的惡意軟件非常之多[3],給廣大Android手機用戶帶來不可估量的損失[4].這些惡意軟件和病毒大都使用偽裝的方式,騙取用戶信任[5],通過獲取設備權限收集用戶隱私信息,并隱蔽上傳到遠程服務器[6].手機最為重要的特征是移動性,這使得它更容易暴露在不同的威脅環(huán)境中,并且其使用不依賴于外部物理安全[7].手機一旦脫離用戶視線,很容易受到離線攻擊竊取用戶隱私數(shù)據(jù)[8].根據(jù)相關安全研究人員發(fā)布的公告,Android設備在Web View編程接口方面存在漏洞[9],黑客利用這個漏洞能遠程下載手機SD卡的內容,并能捕獲應用程序相關數(shù)據(jù)[10].Android手機存在權限濫用、離線攻擊、漏洞攻擊等許多風險[11],因此有必要使用安全技術為用戶數(shù)據(jù)提供安全.
為了防止應用程序濫用權限,Google在Android6.0中引入了動態(tài)權限管理機制(runtime permission)[12],使得Android系統(tǒng)的權限管理更加嚴格完善[13].由于Android系統(tǒng)沒有對惡意軟件濫用權限的行為提供檢測機制,這給用戶手機安全特別是數(shù)據(jù)安全埋下隱患[14].為提升Android手機數(shù)據(jù)安全,Google從Android3.0開始引入全磁盤加密技術(full disk encryption,FDE)[15].許多黑客利用FDE統(tǒng)一管理密鑰的漏洞進行攻擊,來破解FDE加密技術,比如冷啟動攻擊、仆人攻擊等[16].Android系統(tǒng)的FDE加密密鑰存儲在高通驍龍芯片的TrustZone區(qū)域中,這個區(qū)域用來運行可信執(zhí)行環(huán)境(trusted execution environment)[17-18].為了克服FDE的缺點,Google從Android7.0開始,提供了文件級加密(file based encryption,FBE)[19].雖然FBE能夠通過不同密鑰實現(xiàn)更細粒度的文件加密[20],但是FBE也存在一些不足而無法滿足用戶的安全要求.首先,使用FBE加密文件占用計算機很多資源,性能明顯下降;其次,FBE是文件級加密,其產生的數(shù)據(jù)明文碎片容易造成數(shù)據(jù)泄露;最后,FBE只能對內部存儲器實施加密,無法對外部存儲實施保護.
為了解決Android系統(tǒng)的數(shù)據(jù)安全問題,本文實現(xiàn)了一種基于Android內核擴展的數(shù)據(jù)保護技術,即在Android內核文件系統(tǒng)中過濾用戶隱私文件并進行文件重定向,然后攔截文件數(shù)據(jù),接著利用AES加密技術,將用戶數(shù)據(jù)分塊加密,最后將加密數(shù)據(jù)寫入隱藏的data分區(qū)塊組.
本文的貢獻如下:
1)對Android手機內核進行深度定制以實現(xiàn)用戶隱私數(shù)據(jù)分塊加密;
2)通過所提出的方案實現(xiàn)了塊設備級數(shù)據(jù)存儲,提升了數(shù)據(jù)存儲的安全性.
本節(jié)通過介紹國內外學者對Android系統(tǒng)權限管理和數(shù)據(jù)保護的研究現(xiàn)狀,分析其不足并提出本文的設計方案.
Android手機的系統(tǒng)保護主要是基于Android權限管理機制,許多資源比如GPS,Camera都是通過系統(tǒng)服務實現(xiàn)訪問控制[21],這是一種粗粒度的訪問控制技術[22],不能有效地阻止手機程序對系統(tǒng)資源的濫用[23],很多Android惡意代碼借此進行攻擊.針對Android系統(tǒng)權限被濫用的問題,研究人員主要從應用行為和隱私數(shù)據(jù)2個方面檢測惡意應用.
1)基于應用行為檢測惡意應用.賓夕法尼亞州立大學的Enck等人[24]發(fā)現(xiàn)Android平臺的大部分應用都會使用與自身無關的權限,竊取用戶隱私數(shù)據(jù)并上傳到服務器.Enck等人[25]提出了基于安全規(guī)則的輕量級權限檢查方法,通過對危險權限組合進行分類來識別惡意應用.Burguera等人[26]提出了基于Android系統(tǒng)惡意行為的檢測系統(tǒng)Crowdroid,通過收集并分析應用程序產生的系統(tǒng)調用,檢測惡意行為為用戶提供安全保護.
2)基于隱私數(shù)據(jù)檢測惡意應用.北京大學的王磊[27]提出了一種Android系統(tǒng)增強型權限控制機制,在應用程序安裝和運行時執(zhí)行權限檢測.北京郵電大學的湯瑾[28]通過對隱私數(shù)據(jù)添加標記來實現(xiàn)數(shù)據(jù)保護,利用網絡數(shù)據(jù)包攔截技術限制應用向外傳輸帶標記的數(shù)據(jù),避免發(fā)生泄密隱患.上海交通大學的苑舉立[29]提出了一種用來檢測Android系統(tǒng)應用權限泄露的靜態(tài)分析方法,通過將應用權限轉化為規(guī)則,使用控制流圖和數(shù)據(jù)流圖驗證組件包含的權限,并生成權限泄露報告.
雖然許多學者提出可行性方案來檢測惡意應用,但是由于模型復雜不容易推廣.本文提出了一種基于Android內核驅動程序的權限管理方案,針對性強,容易實現(xiàn).
圖1 拍照程序流程圖
針對Android系統(tǒng)數(shù)據(jù)被竊取的問題,許多學者研究了Android系統(tǒng)的數(shù)據(jù)保護技術.Huang等人[30]提出了一種基于用戶空間文件系統(tǒng)(FUSE)保護隱私數(shù)據(jù)的方案.該方案通過為應用程序引入新的GID細化了Android系統(tǒng)權限控制機制,實現(xiàn)外部存儲器中用戶隱私數(shù)據(jù)的隔離.Lu等人[31]提出了一種通過整合加密和散列方案,實現(xiàn)了數(shù)據(jù)安全高效存儲.該方案通過掃描Android用戶應用程序和隱私數(shù)據(jù)清單,借助加密模型實現(xiàn)隱私數(shù)據(jù)的保護控制.Gao等人[32]提出了一種基于隱藏加密卷和數(shù)據(jù)卷的方式實現(xiàn)的數(shù)據(jù)保護技術.該技術通過Google FDS加密系統(tǒng)Dmcrypt實現(xiàn)數(shù)據(jù)底層透明加解密,用戶需要通過啟動手機來切換正常模式和隱藏模式.
雖然已經有大量學者提出了Android系統(tǒng)數(shù)據(jù)保護方案,但只能實現(xiàn)離線攻擊保護.這些方案由于加解密同機操作,隱私數(shù)據(jù)在磁盤和內存以明文顯示,同時產生磁盤碎片,容易被黑客劫持數(shù)據(jù).本文提出了一種基于Android內核的數(shù)據(jù)保護方案,首先將用戶隱私數(shù)據(jù)分塊加密,然后寫入隱藏的data分區(qū)塊組,最后通過文件提取工具,分塊解密用戶數(shù)據(jù)并還原為原始文件.
Android應用層圖像、視頻程序面臨許多風險:首先,Camera應用獲取的用戶數(shù)據(jù)經過多層傳遞,容易被竊取;其次,這些應用生成的圖像、視頻數(shù)據(jù)在內存以明文存儲,容易受到黑客的攻擊;最后,應用層存在文件存儲風險,惡意軟件可以輕易獲取用戶數(shù)據(jù)文件,文件存儲缺乏隱蔽性.因此,本文需要重新設計圖像、視頻程序,并實現(xiàn)用戶數(shù)據(jù)文件的安全存儲.首先是通過分析Camera接口與函數(shù)調用,開發(fā)拍照原生程序;其次是通過分析MediaRecorder接口與函數(shù)調用,開發(fā)錄像原生程序;最后,選擇隱藏的數(shù)據(jù)分區(qū)塊組,用于存儲加密后的圖像、視頻數(shù)據(jù).
如圖1所示,Android系統(tǒng)拍照流程主要包括創(chuàng)建Camera實例、設置預覽參數(shù)、啟動預覽、拍照和停止預覽.拍照程序每次監(jiān)測到拍照命令,首先要調用函數(shù)autoFoucus()實現(xiàn)自動對焦,然后調用函數(shù)takePicture()進行加密保護,最后調用函數(shù)stopPreview()停止預覽.如果要多次拍攝照片,停止預覽后需要重新調用startPreview()啟動預覽.函數(shù)takePicture(int msg Type)接收的參數(shù)值為CAMERA-MSG-COMPRESSED-IMAGE,所以Camera會調用函數(shù)handleCompressedPicture()處理回調的數(shù)據(jù),然后通過函數(shù)dataCallback()對圖像數(shù)據(jù)實施保護.本文采取分塊寫入策略實施圖像數(shù)據(jù)保護,每塊寫入4 096 b,數(shù)據(jù)寫入流程如圖2所示:
圖2 圖像數(shù)據(jù)存儲流程圖
Android Camera圖像數(shù)據(jù)寫入流程為:
①msg Type值是否為256,如果不是,執(zhí)行步驟⑦;如果是,執(zhí)行步驟②;
②計算寫入數(shù)據(jù)的次數(shù)N;
③初始化計數(shù)變量i=0;
④判斷i≤N,如果是,執(zhí)行步驟⑤,如果不是,執(zhí)行步驟⑦;
⑤將tempBuffer寫入文件,計算寫入temp-Buffer數(shù)據(jù):如果i<N,從Buffer中取出4096 B數(shù)據(jù)給tempBuffer;如果i=N,將Buffer中剩余數(shù)據(jù)復制到tempBuffer;
⑥計數(shù)變量i自增,返回步驟④;⑦程序結束.
依據(jù)Android開發(fā)者官網上提供的MediaRecorder video works程序流程,錄像程序開發(fā)大致分為:初始化Camera對象、初始化surface對象、初始化MediaRecorder對象、設置相關視頻參數(shù)、預覽、開始錄制、停止錄制7個部分,具體流程如圖3所示.
錄像程序流程為:
①初始化Camera對象;
圖3 錄像程序流程圖
②通過函數(shù)getCameraService()獲取Camera服務,然后執(zhí)行Connect Camera.Android Camera包括前置和后置2種,需要指明CameraId;
③初始化surface對象,設置預覽圖像尺寸、像素格式;
④ 初始化 MediaRecorder對象,并設置將Camera對象賦予MediaRecorder;
⑤設置相關視頻參數(shù),比如音視頻來源、輸出文件格式、音視頻編碼、比特率、視頻分辨率、文件輸出路徑和幀率等;
⑥通過函數(shù)prepare()和start(),準備并啟動錄像;
⑦監(jiān)測用戶命令,判斷是否停止錄像,如果否,執(zhí)行步驟⑧;否則,執(zhí)行步驟⑨;
⑧保存視頻數(shù)據(jù),繼續(xù)執(zhí)行步驟⑦;
⑨停止錄像,釋放資源.
MediaRecorder提供了接口函數(shù)setOutput-File()來保存視頻文件,但是沒有數(shù)據(jù)回調函數(shù),無法使用分塊加密技術對視頻數(shù)據(jù)進行保護.
本文將用戶隱私數(shù)據(jù)分塊加密并寫入隱藏的data分區(qū).要想隱藏部分data分區(qū),首先將空數(shù)據(jù)的磁盤鏡像文件刷入data分區(qū),然后找到連續(xù)空閑的磁盤塊組進行屏蔽,用于存儲用戶隱私數(shù)據(jù).本文實驗手機是HTC E9pw,具體操作步驟如下.
首先,cd是Linux中用于切換目錄的命令,此處表示切換到指定目錄后,然后執(zhí)行l(wèi)l命令查找data分區(qū)位置為mmcblk0p43.
其次,cd到/sys/block/mmcblk0/mmcblk0p43目錄,使用cat size命令得到data分區(qū)size=49037312,大小為23 GB.
然后,通過dd命令制作大小為23 GB的空磁盤鏡像文件,并將鏡像文件刷入手機.
接著,通過cd到proc/fs/ext4/mmcblk0p43目錄,使用cat mb-groups命令查看塊組使用情況,其中free為當前空閑的block數(shù)目,如果是32768說明當前塊組未被使用,可以找出5 GB的空閑塊組,用于制作隱藏的userdata分區(qū).
最后,在Android內核源碼中通過修改mballoc.c文件,將隱藏的塊組進行屏蔽.由于寫入塊組需要特殊權限,所以要修改selinux/avc.c文件和fs/namei.c文件,賦予內核數(shù)據(jù)保護程序特殊權限,允許將隱私數(shù)據(jù)寫入隱藏的data分區(qū)塊組.
如圖4所示,Camera數(shù)據(jù)的保護分為開機前、后2部分.開機前,Android系統(tǒng)啟動內核和Android系統(tǒng)相關服務,通過定制的Camera驅動程序,阻止其他應用程序訪問Camera設備,避免權限濫用,同時借助Android系統(tǒng)自啟動服務嵌入Camera監(jiān)聽程序.開機后,用戶通過特殊命令啟動數(shù)據(jù)保護工作模式,執(zhí)行拍照、錄像原生程序,內核數(shù)據(jù)保護程序會根據(jù)用戶輸入的密鑰對圖像、視頻數(shù)據(jù)進行加密和文件重定向.
圖4 基于Android內核的數(shù)據(jù)保護實現(xiàn)流程圖
執(zhí)行拍照、錄像的原生程序前需要實現(xiàn)3個關鍵步驟:控制Camera權限、啟動數(shù)據(jù)保護模式,啟動原生程序.
1)根據(jù)Android Camera分層架構可知,Camera在底層通過調用內核的驅動程序實現(xiàn)拍照、預覽功能.通過研究Android內核,利用Linux內核日志信息,尋找控制Camera設備的相關驅動,添加Camera訪問控制邏輯,實現(xiàn)Camera的權限控制.
2)數(shù)據(jù)保護模式是數(shù)據(jù)保護的總開關,只有啟動數(shù)據(jù)保護模式才能開啟圖像、視頻數(shù)據(jù)保護功能.本文通過Android文件系統(tǒng)的重命名操作實現(xiàn)數(shù)據(jù)保護開關.文件重命名函數(shù)為vfs-rename,包含4個參數(shù),其中old-dir是舊的文件目錄,old-dentry是舊的目錄項對象,new-dir是新的文件目錄,new-dentry是新的目錄項對象,通過目錄項可以獲取用戶輸入的文件名.通過以上分析可以確定實現(xiàn)數(shù)據(jù)保護開關的方案:首先通過文件重命名將用戶命令傳入內核層;然后內核層函數(shù)vfs-rename()分析處理用戶命令,實現(xiàn)數(shù)據(jù)保護開關控制.
3)啟動Camera原生程序需要解決面臨3個問題:首先,怎么啟動監(jiān)聽拍照、錄像程序;其次,用戶命令怎么在應用層、Framework層和Linux內核層實現(xiàn)消息傳輸;最后,如何控制拍照、錄像程序運行.
本文選擇開機啟動的Debuggerd進程來嵌入監(jiān)聽主程序.在內核/system/core/debuggerd.cpp程序中,可以找到啟動Debuggerd進程的main函數(shù),在這里可以編寫自定義的拍照、錄像監(jiān)聽程序.監(jiān)聽程序每5 s執(zhí)行一次,掃描用戶是否發(fā)出命令,如果接收到用戶命令就調用子程序執(zhí)行拍照、錄像事件.
本文利用uptime命令實現(xiàn)消息傳遞,具體方案為:內核層將用戶命令嵌入到uptime中,Framework層監(jiān)聽程序讀取uptime命令的結果,然后執(zhí)行相應業(yè)務邏輯.
本文通過監(jiān)控手機按鍵事件實現(xiàn)手機拍照、錄像的啟動和結束.Android源碼frameworks層提供了實現(xiàn)手機按鍵事件的C程序代碼input.h,該文件定義了事件常量枚舉值.只要對input.h文件注冊監(jiān)聽事件就可以檢測用戶的按鍵操作.
用戶隱私數(shù)據(jù)的安全存儲包含3個步驟:密鑰獲取、文件捕獲和重定向、數(shù)據(jù)存儲.
首先,本系統(tǒng)采用主流的AES對稱加密算法加解密數(shù)據(jù),需要根據(jù)用戶的密碼生成加密密鑰.通過文件重命名的方式,將用戶命令和加密密碼傳遞到內核加密程序,實現(xiàn)數(shù)據(jù)的加密.
其次,Android系統(tǒng)虛擬文件層用來處理文件的打開、關閉和讀寫操作.函數(shù)do-filp-open()用來打開并返回文件對象,其包含4個參數(shù),dfd是文件描述符,pathname是文件路徑,op是文件操作,flag是標志值.本文通過校驗pathname→name中的文件后綴名,捕獲圖像視頻文件,然后通過在函數(shù)path-openat()中對參數(shù)pathname進行重新賦值,將捕獲的圖像、視頻文件重定向到保護目錄.
最后,利用虛擬文件層的函數(shù)vfs-write()來實現(xiàn)數(shù)據(jù)寫入.函數(shù)vfs-write()有4個參數(shù):filp是文件對象,存儲文件名、inode等信息;buffer是緩沖區(qū),存儲文件數(shù)據(jù);length是寫文件的數(shù)據(jù)大小;pos是寫文件的數(shù)據(jù)位置.本文利用vfs-write()監(jiān)控圖像、視頻數(shù)據(jù),將buffer中緩沖數(shù)據(jù)寫入隱藏的data分區(qū)塊組,實現(xiàn)用戶隱私數(shù)據(jù)的安全存儲.
如圖5所示,對于隱藏的data分區(qū)塊組,按照每塊4096B重新劃分,整體分為2個部分:索引部分和數(shù)據(jù)部分.索引部分前16 B用于存儲當前可用的空閑塊組地址,其余部分依次存儲每個文件的相關索引信息,比如文件類型、密鑰和文件地址等信息.
圖5 隱藏data分區(qū)的文件存儲結構
圖6 緩沖區(qū)數(shù)據(jù)結構
用戶隱私數(shù)據(jù)分為順序寫入和數(shù)據(jù)回寫2種類型,比如照片文件是一次性順序寫入,視頻數(shù)據(jù)存在分時寫入和數(shù)據(jù)回寫問題.對于順序寫入只要分塊加密并將數(shù)據(jù)依次寫入塊組即可,而針對視頻文件的數(shù)據(jù)回寫問題,需要設計專用的緩沖區(qū)數(shù)據(jù)結構來存儲數(shù)據(jù).緩沖區(qū)數(shù)據(jù)結構如附圖6所示,本發(fā)明采用分塊寫入數(shù)據(jù),每塊大小為4096 B,源緩沖區(qū)是函數(shù)vfs-write傳輸?shù)碾[私數(shù)據(jù),目的緩沖區(qū)是寫入隱藏userdata分區(qū)塊組的數(shù)據(jù),inoffset是源緩沖區(qū)寫入起始位置,out-offset是目的緩沖區(qū)寫入起始位置,write-size是當前可以寫入目的緩沖區(qū)的數(shù)據(jù)大小.
數(shù)據(jù)寫入策略為:1)如果源緩沖區(qū)中準備寫入的數(shù)據(jù)塊小于write-size空閑塊時,當前數(shù)據(jù)塊容量滿足要求,寫入結束.如果寫入的數(shù)據(jù)超出空閑塊大小時,需要計算寫入的數(shù)據(jù)塊位置in-offset,out-offset和準備寫入的數(shù)據(jù)塊大小writesize.2)對于回寫的數(shù)據(jù)比如視頻數(shù)據(jù),需要判斷當前寫入位置的數(shù)據(jù)是否存在回寫,如果是,先取出當前數(shù)據(jù)塊進行解密,再寫入本次視頻數(shù)據(jù)并加密;否則,直接寫入加密的數(shù)據(jù)塊.
為了檢驗基于Android內核擴展的圖像、視頻數(shù)據(jù)保護方案的有效性,本節(jié)從加密前后數(shù)據(jù)內容、加密前后文件大小和加密前后CPU占用率3個方面進行測試以驗證方案的有效性.本實驗是在HTC E9pw(Android OS version:Lollipop,Kernel version:3.1)手機進行測試.
本文對照片、視頻數(shù)據(jù)內容采用了AES加密,改變文件的格式和內容從而實現(xiàn)數(shù)據(jù)的保護.下面分別對加密前后照片和視頻數(shù)據(jù)內容進行對比分析.
JPEG照片的EXIF信息由許多標記塊組成,常用的標記塊有:Start of Image(SOI)0xFFD8,End of Image(EOI)0xFFD9和Application(APP1)0xFFE1等.如圖7和圖8所示,可以看出加密前后的照片16進制數(shù)據(jù)變化.
1)加密前的SOI是“FFD8”,加密后的SOI是“62D3”;
2)加密前的APP1是“FFE1”,加密后的APP1是“1E39”;
3)加密前的EOI是“FFD9”,加密后的EOI是“7056”.
圖7 圖像加密前16進制數(shù)據(jù)
圖8 圖像加密后16進制數(shù)據(jù)
圖9 視頻加密前16進制數(shù)據(jù)
MPEG4視頻由許多Box組成的,Box排列順序是FTYP,MDAT,MOOV.如圖9和圖10所示,可以看出加密前后的視頻16進制數(shù)據(jù)變化.
1)加密前FTYP前4B內容為“0x00000018”,加密后為“0x5B565BDF”;
2)加密前MDAT前4B內容為“0x00000001”,加密后為“71BDD71C”;
3)加密前MOOV前4B內容為“0x00000ED3”,加密后為“0x3D21D929.
通過Win Hex對加密前后視頻數(shù)據(jù)的對比,發(fā)現(xiàn)JPEG照片的EXIF信息標記塊、視頻數(shù)據(jù)的MPEG格式發(fā)生了變化,數(shù)據(jù)受到破壞.這說明AES數(shù)據(jù)加密有明顯的效果,可以實現(xiàn)數(shù)據(jù)保護.
為了研究本文的數(shù)據(jù)保護技術對生成文件的影響,通過區(qū)分不同場景,測試了照片和視頻文件的大小.如表1和表2所示,3種場景的加密前后圖像、視頻大小完全一致.本文采用AES的循環(huán)冗余對稱加密算法,每輪采用異或運算,不影響數(shù)據(jù)大小.
圖10 視頻加密后16進制數(shù)據(jù)
表1 加密前后圖片文件大小 KB
表2 加密前后視頻文件大小 MB
本文采用Linux的top命令,測試了Camera工作時數(shù)據(jù)保護前后CPU的占用率.為了測試拍照過程mediaserver進程的CPU占用率,本文采用相關的測試方法:首先分別采集數(shù)據(jù)保護前和保護后的圖像數(shù)據(jù),3 s 1張,10張照片為1組,測試10組數(shù)據(jù);然后利用top命令計算每組數(shù)據(jù)mediaserver進程的CPU平均占用率.如圖11所示,對拍照進行數(shù)據(jù)保護后,mediaserver進程的CPU占用率有所上升.這是由于:1)本文采用基于AES的加密算法,寫入前要進行加密,寫入速度有所延遲;2)本文調用自定義的拍照程序,逐塊寫入文件,沒有采用高速緩沖區(qū),所以對CPU資源的消耗較大.
圖11 圖像數(shù)據(jù)加密前后CPU占用率
為了測試視頻保護前后CPU占用率,本文采用了相關測試方法:首先分別采集數(shù)據(jù)保護前、后視頻數(shù)據(jù),視頻時長20 s,一共采集10組測試數(shù)據(jù);然后利用top命令計算每組數(shù)據(jù)mediaserver進程的CPU平均占用率.如圖12所示,對視頻數(shù)據(jù)實施保護后mediaserver進程CPU占用率有所上升.這是因為:1)本文采用特殊策略對視頻數(shù)據(jù)進行了回寫處理;2)對視頻數(shù)據(jù)采用分塊加密處理,耗費系統(tǒng)資源.
圖12 視頻數(shù)據(jù)加密前后CPU占用率
本文針對Android設備權限濫用和數(shù)據(jù)被竊取風險,通過研究Camera,MediaRecorder接口與函數(shù)調用,開發(fā)了拍照、錄像原生程序,并提出了基于Android內核擴展的Camera數(shù)據(jù)保護技術解決方案.本文使用HTC E9pw型號手機進行了真機測試.實驗表明,本方案可以在Android內核底層對圖像、視頻數(shù)據(jù)實現(xiàn)分塊加密,而且還可以推廣到其他設備,為用戶提供數(shù)據(jù)安全.本方案是基于Android內核擴展的數(shù)據(jù)保護,實驗需要修改內核,可移植性差.在以后的研究中,我們需要繼續(xù)研究更加通用、安全、便捷的數(shù)據(jù)保護技術,為數(shù)據(jù)保護領域提供思路,貢獻自己的一份力量.
[1]Jiang F,Huang X.Development Report on China's wearable devices in 2014[M]//Development Report on China's New Media.Berlin:Springer,2017:129-145
[2]Enck W,Ongtang M,Mcdaniel P.Understanding Android security[J].IEEE Security&Privacy,2009,7(1):50-57
[3]Shen J,Gong S,Bao W.Analysis of network security in daily life[J].Information and Computer Security,2018,1(1):1-9
[4]Yu L,Luo X,Liu X,et al.Can We trust the privacy policies of Android apps?[C]//Proc of IEEE/IFIP Int Conf on Dependable Systems and Networks.Piscataway,NJ:IEEE,2016:538-549
[5]Basu P,Rajamanikkam C,Bal A,et al.FIFA:Exploring a focally induced fault attack strategy in near-threshold computing[J].IEEE Embedded Systems Letters,2017,(99):1-1
[6]李金龍.基于內核擴展的智能手機安全加固技術[D].北京:北京理工大學,2015
[7]Prashantjawade P,Thakre SS.Physical security for nobile devices using novel application lockbox[J].International Journal of Innovative Research in Computer&Communication Engineering,2013,1(5):1238-1245
[8]Cortier V,Filipiak A,Florent J,et al.Designing and proving an EMV-compliant payment protocol for mobile devices[C]//Proc of 2017 IEEE European Symp on Security and Privacy(EuroS&P).Piscataway,NJ:IEEE,2017:467-480
[9]Shezan F H,Afroze S F,Iqbal A.Vulnerability detection in recent Android apps:An empirical study[C]//Proc of 2017 Int Conf on Networking,Systems and Security(NSysS).Piscataway,NJ:IEEE,2017:55-63
[10]Hong S,Liu C,Ren B,et al.Poster:Sdguard:An Android application implementing privacy protection and ransomware detection[C]//Proc of Int Conf on Mobile Systems,Applications,and Services.New York:ACM,2017:149-149
[11]Cai S,Huang R,Yang N,et al.Research on dynamic safe loading techniques in Android application protection system[C]//Proc of Int Conf on Smart Computing and Communication.Berlin:Springer,2017:134-143
[12]Wijesekera P,Baokar A,Tsai L,et al.The feasibility of dynamically granted permissions:Aligning mobile privacy with user preferences[C]//Proc of 2017 IEEE Symp on Security and Privacy(SP).Piscataway,NJ:IEEE,2017:1077-1093
[13]Andriotis P,Sasse M A,Stringhini G.Permissions snapshots:Assessing users'adaptation to the Android runtime permission model[C]//Proc of IEEE Int Workshop on Information Forensics and Security.Piscataway,NJ:IEEE,2016:1-6
[14]楊博.Android系統(tǒng)下應用程序的安全性研究[D].上海:上海交通大學,2013
[15]Hong S,Liu C,Cheng B,et al.MobiGemini:Sensitivebased data and resource protection framework for mobile device[J].China Communications,2017,14(7):1-11
[16]Müller T,Spreitzenbarth M.FROST[C]//Proc of Int Conf on Applied Cryptography and Network Security.Berlin:Springer,2013:373-388
[17]Rosculete L,Rosculete L,Mitra T,et al.Automated partitioning of Android applications for trusted execution environments[C]//Proc of IEEE/ACM Int Conf on Software Engineering.Piscataway,NJ:IEEE,2017:923-934
[18]Zhang Y,Zhao S,Qin Y,et al.Trust TokenF:A generic security framework for mobile two-factor authentication using trustzone[C]//Proc of IEEE Trustcom/Bigdatase/Ispa.Los Alamitos,CA:IEEE Computer Society,2015:41-48
[19]Gao C,Yang C H.File-based encryption with SM4[C]//Proc of the 2nd IEEE Int Conf on Data Science in Cyberspace(DSC).Piscataway,NJ:IEEE,2017:426-430
[20]Hazra S,Mateti P.Challenges in Android forensics[C]//Proc of Int Symp on Security in Computing and Communication.Berlin:Springer,2017:286-299
[21]Cai X,Gu X,Wang Y,et al.Enforcing ACL access control on Android platform[C]//Proc of Int Conf on Information Security.Berlin:Springer,2017:366-383
[22]Chang R,Jiang L,Chen W,et al.Towards a multilayered permission-based access control for extending Android security[J].Concurrency&Computation Practice&Experience,2018,30(5):e4414
[23]Wu J,Yang M,Luo T.PACS:Pemission abuse checking system for Android applictions based on review mining[C]//Proc of 2017 IEEE Conf on Dependable and Secure Computing.Piscataway,NJ:IEEE,2017:251-258
[24]Enck W,Octeau D,Mcdaniel P,et al.A study of Android application security[C]//Proc of USENIX Conf on Security.Berkeley,CA:USENIX Association,2011:21-21
[25]Enck W,Ongtang M,McDaniel P.On lightweight mobile phone application certification[C]//Proc of the 16th ACM Conf on Computer and Communications Security.New York:ACM,2009:235-245
[26]Burguera I,Zurutuza U,Nadjm-Tehrani S.Crowdroid:Behavior-based malware detection system for Android[C]//Proc of ACM Workshop on Security and Privacy in Smartphones and Mobile Devices.New York:ACM,2011:15-26
[27]王磊.Android增強型權限控制機制的設計與實現(xiàn)[D].北京:北京大學,2011
[28]湯瑾.Android平臺下的隱私數(shù)據(jù)保護方法的研究與實現(xiàn)[D].北京:北京郵電大學,2014
[29]苑舉立.Android應用的權限泄露分析[D].上海:上海交通大學,2014
[30]Huang F,Wu W,Yang M,et al.A fine-grained permission control mechanism for external storage of Android[C]//Proc of IEEE Int Conf on Systems,Man,and Cybernetics.Piscataway,NJ:IEEE,2017:002911-002916
[31]Lu Y F,Kuo C F,Fang Y Y.Efficient storage encryption for Android mobile devices[C]//Proc of Int Conf on Research in Adaptive and Convergent Systems.New York:ACM,2016:213-218
[32]Gao H,Guo X Y.Android oriented deniable and transparent encryption system[J].Computer Engineering&Design,2016,37(2):319-323