李春杰 史正樂 高慧敏 顏智潤
(中國科學(xué)技術(shù)大學(xué)蘇州研究院 江蘇 蘇州 215000)
移動智能終端的個人隱私保護(hù)系統(tǒng)的開發(fā)設(shè)計
李春杰 史正樂 高慧敏 顏智潤
(中國科學(xué)技術(shù)大學(xué)蘇州研究院 江蘇 蘇州 215000)
Android系統(tǒng)是最熱門的移動智能終端之一,保護(hù)Android用戶的隱私非常重要。該終端加解密隱私保護(hù)系統(tǒng),利用hook技術(shù)來捕捉并劫持用戶進(jìn)程對文件的讀寫操作,通過添加具有加解密功能的函數(shù)模塊,替換用戶動態(tài)鏈接庫中原有的讀寫函數(shù),從而達(dá)到加解密的目的。系統(tǒng)的核心加解密模塊采用具有易于實現(xiàn)且運(yùn)行速度快的RC4算法,保證了運(yùn)行效率。另外,在加解密過程中,用戶不需要額外操作,降低了系統(tǒng)的使用難度。
Android 隱私保護(hù) hook技術(shù) 加解密功能 RC4
2007年11月5日,Google宣布推出了基于Linux、開放源碼的智能手機(jī)操作系統(tǒng)Android[1]。短短幾年間,Android已經(jīng)成為了最熱門的智能終端開發(fā)平臺之一[2]。
智能手機(jī)成了新時代生活的必須品,用戶通過手機(jī)來進(jìn)行正常的社交、工作與學(xué)習(xí)的現(xiàn)象很普遍。與此同時,手機(jī)涉及到了大量的商業(yè)秘密和個人信息等隱私數(shù)據(jù)。這些數(shù)據(jù)的形式包括圖片、視頻、短信和通訊錄等。對于移動手機(jī)終端的隱私保護(hù),是基于現(xiàn)在的市場需求而存在的。
在Android移動手機(jī)平臺,安全防護(hù)是一個重要的研究方向。隱私保護(hù)屬于安全防護(hù)的一部分,目前市場上已經(jīng)出現(xiàn)了大量優(yōu)秀的軟件產(chǎn)品,比如QQ手機(jī)管家的隱私保護(hù)軟件,智能鎖等軟件。這些軟件主要是通過輸入密碼進(jìn)入軟件,并通過選擇短信,照片,通訊錄等應(yīng)用程序,再對軟件進(jìn)行上鎖操作。用戶可以通過程序?qū)π枰渔i的程序進(jìn)行設(shè)定并修改。但是這些軟件并沒有從根本上實現(xiàn)對數(shù)據(jù)的加密保護(hù)。
目前國內(nèi)外對與Android平臺的關(guān)于隱私保護(hù)的研究主要可以分為靜態(tài)分析和動態(tài)控制[3]。靜態(tài)分析主要是在對軟件進(jìn)行掃描,判斷是否有惡意行為,類似于常見在電腦端的利用殺毒軟件對電腦進(jìn)行掃描的方式[4]。動態(tài)控制是對軟件進(jìn)行實時的監(jiān)控,但是需要root權(quán)限[5]。
本文實現(xiàn)的隱私保護(hù)屬于動態(tài)控制,需要手機(jī)取得root權(quán)限。整個系統(tǒng)的工作模式如圖1所示。
圖1 終端加解密系統(tǒng)工作模式圖
該終端加解密系統(tǒng)的工作流程如圖2所示。用戶打開終端保護(hù)系統(tǒng)后,若已注冊則進(jìn)行登錄操作,若未注冊則進(jìn)行注冊操作,設(shè)置用戶名,密碼和安全問題答案。用戶設(shè)置的安全問題可用于用戶丟失密碼后重置賬戶密碼。用戶登錄后,判斷用戶是否合法,當(dāng)用戶合法時,設(shè)置需要綁定的用戶進(jìn)程和第三方APP。綁定完成后,判斷用戶對文件的操作是否為打開和關(guān)閉操作。若用戶關(guān)閉文件,則對文件進(jìn)行加密。此時已經(jīng)被加密后的文件不能被其他未被綁定的用戶進(jìn)程或第三方APP打開,以密文存在系統(tǒng)中。如果用戶需要查看被加密的數(shù)據(jù),則需在被綁定的進(jìn)程或第三方APP中再次打開該文件,此時完成文件的解密操作。
圖2 終端加解密系統(tǒng)的工作流程圖
Android是基于Linux內(nèi)核的開源系統(tǒng),架構(gòu)分為四個層,分別為應(yīng)用程序?qū)樱瑧?yīng)用程序框架層,系統(tǒng)運(yùn)行庫層和Linux核心層[6]。
應(yīng)用程序代碼由Java實現(xiàn),由于其安全機(jī)制和設(shè)計特點,無法直接對系統(tǒng)硬件和底層設(shè)備進(jìn)行操作,能夠?qū)崿F(xiàn)功能相對簡單。對于Linux核心層,如果進(jìn)行hook劫持進(jìn)程操作,需要重新編譯源碼,移植性較差[7]。因此本系統(tǒng)選擇在系統(tǒng)運(yùn)行庫層通過JNI(Java Native Interface)開發(fā),并使用Linux提供的函數(shù)實現(xiàn)透明加解密功能[8]。
本文提出的終端加解密系統(tǒng)是基于系統(tǒng)運(yùn)行庫層的開發(fā),在應(yīng)用程序?qū)油瓿山缑嬖O(shè)計等工作。本文運(yùn)用的鉤子透明加密解密的本質(zhì)是劫持函數(shù)調(diào)用。在Linux的用戶態(tài),每個進(jìn)程都有獨立的進(jìn)程空間。
為了在終端系統(tǒng)上實現(xiàn)透明加解密,先要找到被綁定的用戶進(jìn)程和第三方APP中調(diào)用open和close函數(shù)所在的動態(tài)鏈接庫,然后通過底層hook代碼劫持該動態(tài)鏈接庫。通過找到被綁定的用戶進(jìn)程和第三方APP的open和close函數(shù)的地址,利用終端加密系統(tǒng)的new_open函數(shù)和new_close函數(shù)對原有的函數(shù)進(jìn)行替換,實現(xiàn)對文件的加解密功能。原有的open函數(shù)完成文件的打開操作,close函數(shù)完成文件的關(guān)閉操作。在new_open函數(shù)中,先完成文件的打開操作,再判斷文件是否被加密,若被加密,則進(jìn)行解密操作。在 new_close函數(shù)中,先完成文件的關(guān)閉操作,再判斷文件是否處于加密狀態(tài),若為非加密狀態(tài),則對文件進(jìn)行加密。當(dāng)用戶通過被劫持的用戶進(jìn)程或第三方APP打開文件,觸發(fā)new_open函數(shù),對文件進(jìn)行解密,文件以明文顯示;關(guān)閉文件時,觸發(fā)new_close函數(shù),對文件進(jìn)行加密,文件以密文存儲,除被劫持的用戶進(jìn)程或第三方APP外的其它進(jìn)程將無法打開該文件。
通過上文描述,本文提出的終端加解密系統(tǒng)的核心功能是通過進(jìn)程攔截,對被劫持的用戶進(jìn)程或第三方APP用具有解密功能的new_open函數(shù)和具有加密功能的new_close函數(shù)對原函數(shù)open和close進(jìn)行替換,從而實現(xiàn)對私密數(shù)據(jù)的保護(hù)。
2.1 進(jìn)程攔截
在終端隱私保護(hù)系統(tǒng)中,程序的整體流程如圖3所示。進(jìn)程攔截的主要函數(shù)是inject_remote_process函數(shù)[9]。inject_remote_process函數(shù)的主要參數(shù)有:
1) library_path,被攔截的進(jìn)程的動態(tài)鏈接庫文件的絕對路徑。在本終端隱私保護(hù)系統(tǒng)中,是open和close函數(shù)存在的動態(tài)鏈接庫。
2) function_name,想要執(zhí)行的函數(shù)名,該函數(shù)為動態(tài)鏈接庫中的函數(shù)。在本終端隱私保護(hù)系統(tǒng)中,是open函數(shù)和close函數(shù)。
inject_remote_process函數(shù)的主要流程是:
1) 使用ptrace_attach函數(shù)指定目標(biāo)進(jìn)程,通過ptrace_getregs函數(shù)獲取目標(biāo)進(jìn)程的寄存器,保存現(xiàn)場。
由get_remote_add函數(shù)獲取目標(biāo)進(jìn)程mmap函數(shù)地址。
2) 調(diào)用ptrace_call_wrapper函數(shù)為所注入的具有加解密功能的new_open和new_close函數(shù)所在的動態(tài)鏈接庫文件分配內(nèi)存,根據(jù)ptrace_retval函數(shù)從寄存器中獲取mmap函數(shù)返回申請的內(nèi)存首地址,把要注入的動態(tài)鏈接庫文件拷貝到目標(biāo)進(jìn)程中。
3) 調(diào)用ptrace_retval函數(shù)從寄存器中獲取mmap函數(shù)返回申請的內(nèi)存首地址。
4) 通過get_remote_addr函數(shù)依次獲取Linker中dlopen dlsym dlclose dlerror函數(shù)的地址, 將mmap函數(shù)返回申請到的內(nèi)存首地址等為參數(shù),調(diào)用dlopen得到返回值存放在sohandle中。通過sohandle和注入的函數(shù)名hook_entry調(diào)用dlsym函數(shù)返回注入函數(shù)hook_entry的地址。
5) 修改PC等相關(guān)寄存器,使其指向functionaddr,調(diào)用function即調(diào)用hook_entry。再次修改PC等相關(guān)寄存器,使其指向dlclose,調(diào)用dlclose(sohandle)關(guān)閉lib文件。
6) 調(diào)用ptrace_setregs恢復(fù)寄存器調(diào)用ptrace_detach退出ptrace。
圖3 程序的整體流程圖
在執(zhí)行inject_remote_process函數(shù)主要流程中的第5步中,調(diào)用了hook_entry函數(shù),在該函數(shù)中,完成了對open函數(shù)和close函數(shù)的替換。Hook_entry函數(shù)的主要流程如圖4所示。
圖4 hook_entry函數(shù)的流程圖
為了避免文件在加解密的過程中出現(xiàn)混亂,新建了一個名為hook的文件夾,存放new_open和new_close的臨時文件。該文件為open函數(shù)中根據(jù)參數(shù)path對應(yīng)到的文件。為避免占用過多內(nèi)存,可以刪除臨時文件。
由于一個APP會調(diào)用多個線程,在對應(yīng)用程序進(jìn)程進(jìn)行綁定時,需要hook一個用戶組的進(jìn)程。
通過find_pid_of函數(shù)根據(jù)所給的進(jìn)程名返回對應(yīng)的進(jìn)程號后,hookAll_appProcess函數(shù)根據(jù)所給的進(jìn)程號把屬于此進(jìn)程的用戶組所用的進(jìn)程號存入processID_group中。GetProcess_ui函數(shù)返回此進(jìn)程的用戶組id。通過上述四個函數(shù),完成hook一個用戶組的進(jìn)程。
2.2 加密與解密
在終端隱私保護(hù)系統(tǒng)中,new_close函數(shù)中對文件執(zhí)行加密操作,new_open函數(shù)中對文件進(jìn)行解密操作,new_open和new_close函數(shù)的流程如圖5所示。
圖5 new_open和new_close函數(shù)流程圖
RC4是一種對稱加密算法,使用的密鑰為單鑰[10]。RC4通過字節(jié)流的方式依次加密明文中的每一個字節(jié),解密的時候也是依次對密文中的每一個字節(jié)進(jìn)行解密[11]。在終端隱私保護(hù)系統(tǒng)中,調(diào)用RC4算法,主要函數(shù)為RC4(unsigned char plaintext[],unsigned char key[],int keylength,unsigned char keystream[],unsigned char ciphertext[],int size),需要的參數(shù)分別為plaintext[]:需要加密的明文,key:初始密鑰,keylength:密鑰長度,keystream[]為擴(kuò)展后的256位密鑰流,ciphertext[]為加密后的密文[12]。
進(jìn)程注入需要先獲得root權(quán)限,所以測試時手機(jī)需要取得root權(quán)限?,F(xiàn)通過對比測試終端隱私保護(hù)系統(tǒng)核心的加解密功能,測試機(jī)器是聯(lián)想P700,系統(tǒng)是Android4.0.3。在終端隱私保護(hù)系統(tǒng)未對系統(tǒng)進(jìn)行加密時,通過Re管理器和TXT閱讀器打開手機(jī)內(nèi)TXTDocument.txt文件可以正常顯示明文信息。其中Re管理器和TXT閱讀器均為第三方APP,可對系統(tǒng)中的文件進(jìn)行操作。
啟動終端隱私保護(hù)系統(tǒng),通過inject命令對Re管理器進(jìn)行劫持,(其中inject命令是調(diào)用終端隱私保護(hù)系統(tǒng)生成的可執(zhí)行程序)此時Re管理器的文件操作函數(shù)被hook為具有加解密功能的文件操作函數(shù)。這時通過Re管理器打開TXTDocument.txt,文件為明文狀態(tài),如圖6所示,文件可讀。通過Re管理器關(guān)閉TXTDocument.txt,對文件進(jìn)行加密操作,文件轉(zhuǎn)為密文。此時通過TXT閱讀器(非被劫持進(jìn)程)打開TXTDocument.txt如圖7所示,文件已經(jīng)處于密文狀態(tài),打開的文件內(nèi)容為亂碼(說明隱私終端保護(hù)系統(tǒng)的加密功能正常)。再次通過Re管理器(被劫持進(jìn)程)打開上述加密文件如圖6所示,文件為明文狀態(tài),文件可讀(說明隱私終端保護(hù)系統(tǒng)的解密功能正常)。
圖6 Re管理器打開TXTDocument.txt
圖7 TXT管理器打開TXTDocument.txt
上述測試結(jié)果表明該終端隱私保護(hù)系統(tǒng)可以順利完成對隱私數(shù)據(jù)的保護(hù),讓被綁定的進(jìn)程對文件的操作具有透明加解密功能。
Android系統(tǒng)已經(jīng)成為主流的手機(jī)操作系統(tǒng)之一,本文針對android手機(jī)用戶的隱私保護(hù)提出并實現(xiàn)了一種保護(hù)方法。該方法通過劫持open和close函數(shù),調(diào)用new_open和new_close函數(shù),對文件進(jìn)行了加密和解密,從根本上實現(xiàn)了對文件的保護(hù)。通過在手機(jī)上的測試,驗證了該方法是有效的。下一步的重點是實現(xiàn)監(jiān)控系統(tǒng)的權(quán)限,從而達(dá)到對短信的監(jiān)控。
[1] 彭國軍,邵玉如,王泰格.基于Android的手機(jī)隱私保護(hù)技術(shù)及實現(xiàn)[J].信息網(wǎng)絡(luò)安全,2012(4):54-57.
[2] 張玉清,王凱,楊歡,等.Android安全綜述[J].計算機(jī)研究與發(fā)展,2014,51(7):1385-1396.
[3] 宋杰,黨李成,郭振朝,等.AndroidOS手機(jī)平臺的安全機(jī)制分析和應(yīng)用研究[J].計算機(jī)技術(shù)與發(fā)展,2010,20(6):152-155.
[4] 楊歡,張玉清,胡予濮,等.基于多類特征的Android應(yīng)用惡意行為檢測系統(tǒng)[J].計算機(jī)學(xué)報,2014,37(1):15-27.
[5] 王偉,張之棟,雷雨詩,等.基于策略的Android應(yīng)用檢測系統(tǒng)[J].信息網(wǎng)絡(luò)安全,2013(2):30-34.
[6] 乜聚虎,周學(xué)海,余艷瑋,等.Android安全加固技術(shù)[J].計算機(jī)系統(tǒng)應(yīng)用,2011,20(10):74-77.
[7] 溫敏,艾麗蓉,王志國.Android智能手機(jī)系統(tǒng)中文件實時監(jiān)控的研究與實現(xiàn)[J].科學(xué)技術(shù)與工程,2009(7):1716-1719.
[8] 詹成國,朱偉,徐敏.基于Android的測控裝置人機(jī)界面的設(shè)計與開發(fā)[J].電力自動化設(shè)備,2012,32(1):119-122.
[9]Android下通過hook技術(shù)實現(xiàn)透明加解密保障數(shù)據(jù)安全[J/OL].http://netsecurity.51cto.com/art/201311/417542.htm.
[10] 蔡傳安.RC4加密算法及其安全性研究[J].中國水運(yùn):下半月,2012(8):33-35.
[11] 李琴,曾凡平.RC4密碼的改進(jìn)方法及其性能分析[J].計算機(jī)工程,2008,34(18):181-183.
[12] 常亞勤.對流密碼RC4的區(qū)分攻擊[J].計算機(jī)工程,2011,37(3):119-120.
DEVELOPMENT AND DESIGN OF PERSONAL PRIVACY PROTECTION SYSTEM OF MOBILE INTELLIGENT TERMINAL
Li Chunjie Shi Zhengle Gao Huimin Yan Zhirun
(SuzhouInstituteforAdvancedStudy,UniversityofScienceandTechnologyofChina,Suzhou215000,Jiangsu,China)
Android is one of the most popular mobile intelligent terminal operating system, and it is very important to protect the privacy of Android users. The terminal encryption and decryption of the privacy protection system uses hook technology to capture and hijack the read-write operations of the user process to the documents. By adding a function with encryption and decryption function module, it replaces the original read-write function in user’s dynamic link library to achieve the purpose of encryption and decryption. The core encryption and decryption module of the system adopts the RC4 algorithm which is easy to implement and run fast, and ensures the running efficiency. Also in the encryption and decryption process, the user does not require additional operations, reducing the difficulty of using the system.
Android Privacy protection Hook technology Encrypt declassify RC4
2016-05-24。江蘇省科技項目-基礎(chǔ)研究計劃(自然科學(xué)基金:BK20141209);蘇州市應(yīng)用基礎(chǔ)研究項目(SYG201543)。李春杰,副研究員,主研領(lǐng)域:嵌入式系統(tǒng)設(shè)計與信息安全。史正樂,碩士。高慧敏,碩士。顏智潤,碩士。
TP3
A
10.3969/j.issn.1000-386x.2017.06.039