李春杰 史正樂 高慧敏 顏智潤
(中國科學技術大學蘇州研究院 江蘇 蘇州 215000)
移動智能終端的個人隱私保護系統的開發設計
李春杰 史正樂 高慧敏 顏智潤
(中國科學技術大學蘇州研究院 江蘇 蘇州 215000)
Android系統是最熱門的移動智能終端之一,保護Android用戶的隱私非常重要。該終端加解密隱私保護系統,利用hook技術來捕捉并劫持用戶進程對文件的讀寫操作,通過添加具有加解密功能的函數模塊,替換用戶動態鏈接庫中原有的讀寫函數,從而達到加解密的目的。系統的核心加解密模塊采用具有易于實現且運行速度快的RC4算法,保證了運行效率。另外,在加解密過程中,用戶不需要額外操作,降低了系統的使用難度。
Android 隱私保護 hook技術 加解密功能 RC4
2007年11月5日,Google宣布推出了基于Linux、開放源碼的智能手機操作系統Android[1]。短短幾年間,Android已經成為了最熱門的智能終端開發平臺之一[2]。
智能手機成了新時代生活的必須品,用戶通過手機來進行正常的社交、工作與學習的現象很普遍。與此同時,手機涉及到了大量的商業秘密和個人信息等隱私數據。這些數據的形式包括圖片、視頻、短信和通訊錄等。對于移動手機終端的隱私保護,是基于現在的市場需求而存在的。
在Android移動手機平臺,安全防護是一個重要的研究方向。隱私保護屬于安全防護的一部分,目前市場上已經出現了大量優秀的軟件產品,比如QQ手機管家的隱私保護軟件,智能鎖等軟件。這些軟件主要是通過輸入密碼進入軟件,并通過選擇短信,照片,通訊錄等應用程序,再對軟件進行上鎖操作。用戶可以通過程序對需要加鎖的程序進行設定并修改。但是這些軟件并沒有從根本上實現對數據的加密保護。
目前國內外對與Android平臺的關于隱私保護的研究主要可以分為靜態分析和動態控制[3]。靜態分析主要是在對軟件進行掃描,判斷是否有惡意行為,類似于常見在電腦端的利用殺毒軟件對電腦進行掃描的方式[4]。動態控制是對軟件進行實時的監控,但是需要root權限[5]。
本文實現的隱私保護屬于動態控制,需要手機取得root權限。整個系統的工作模式如圖1所示。

圖1 終端加解密系統工作模式圖
該終端加解密系統的工作流程如圖2所示。用戶打開終端保護系統后,若已注冊則進行登錄操作,若未注冊則進行注冊操作,設置用戶名,密碼和安全問題答案。用戶設置的安全問題可用于用戶丟失密碼后重置賬戶密碼。用戶登錄后,判斷用戶是否合法,當用戶合法時,設置需要綁定的用戶進程和第三方APP。綁定完成后,判斷用戶對文件的操作是否為打開和關閉操作。若用戶關閉文件,則對文件進行加密。此時已經被加密后的文件不能被其他未被綁定的用戶進程或第三方APP打開,以密文存在系統中。如果用戶需要查看被加密的數據,則需在被綁定的進程或第三方APP中再次打開該文件,此時完成文件的解密操作。

圖2 終端加解密系統的工作流程圖
Android是基于Linux內核的開源系統,架構分為四個層,分別為應用程序層,應用程序框架層,系統運行庫層和Linux核心層[6]。
應用程序代碼由Java實現,由于其安全機制和設計特點,無法直接對系統硬件和底層設備進行操作,能夠實現功能相對簡單。對于Linux核心層,如果進行hook劫持進程操作,需要重新編譯源碼,移植性較差[7]。因此本系統選擇在系統運行庫層通過JNI(Java Native Interface)開發,并使用Linux提供的函數實現透明加解密功能[8]。
本文提出的終端加解密系統是基于系統運行庫層的開發,在應用程序層完成界面設計等工作。本文運用的鉤子透明加密解密的本質是劫持函數調用。在Linux的用戶態,每個進程都有獨立的進程空間。
為了在終端系統上實現透明加解密,先要找到被綁定的用戶進程和第三方APP中調用open和close函數所在的動態鏈接庫,然后通過底層hook代碼劫持該動態鏈接庫。通過找到被綁定的用戶進程和第三方APP的open和close函數的地址,利用終端加密系統的new_open函數和new_close函數對原有的函數進行替換,實現對文件的加解密功能。原有的open函數完成文件的打開操作,close函數完成文件的關閉操作。在new_open函數中,先完成文件的打開操作,再判斷文件是否被加密,若被加密,則進行解密操作。在 new_close函數中,先完成文件的關閉操作,再判斷文件是否處于加密狀態,若為非加密狀態,則對文件進行加密。當用戶通過被劫持的用戶進程或第三方APP打開文件,觸發new_open函數,對文件進行解密,文件以明文顯示;關閉文件時,觸發new_close函數,對文件進行加密,文件以密文存儲,除被劫持的用戶進程或第三方APP外的其它進程將無法打開該文件。
通過上文描述,本文提出的終端加解密系統的核心功能是通過進程攔截,對被劫持的用戶進程或第三方APP用具有解密功能的new_open函數和具有加密功能的new_close函數對原函數open和close進行替換,從而實現對私密數據的保護。
2.1 進程攔截
在終端隱私保護系統中,程序的整體流程如圖3所示。進程攔截的主要函數是inject_remote_process函數[9]。inject_remote_process函數的主要參數有:
1) library_path,被攔截的進程的動態鏈接庫文件的絕對路徑。在本終端隱私保護系統中,是open和close函數存在的動態鏈接庫。
2) function_name,想要執行的函數名,該函數為動態鏈接庫中的函數。在本終端隱私保護系統中,是open函數和close函數。
inject_remote_process函數的主要流程是:
1) 使用ptrace_attach函數指定目標進程,通過ptrace_getregs函數獲取目標進程的寄存器,保存現場。
由get_remote_add函數獲取目標進程mmap函數地址。
2) 調用ptrace_call_wrapper函數為所注入的具有加解密功能的new_open和new_close函數所在的動態鏈接庫文件分配內存,根據ptrace_retval函數從寄存器中獲取mmap函數返回申請的內存首地址,把要注入的動態鏈接庫文件拷貝到目標進程中。
3) 調用ptrace_retval函數從寄存器中獲取mmap函數返回申請的內存首地址。
4) 通過get_remote_addr函數依次獲取Linker中dlopen dlsym dlclose dlerror函數的地址, 將mmap函數返回申請到的內存首地址等為參數,調用dlopen得到返回值存放在sohandle中。通過sohandle和注入的函數名hook_entry調用dlsym函數返回注入函數hook_entry的地址。
5) 修改PC等相關寄存器,使其指向functionaddr,調用function即調用hook_entry。再次修改PC等相關寄存器,使其指向dlclose,調用dlclose(sohandle)關閉lib文件。
6) 調用ptrace_setregs恢復寄存器調用ptrace_detach退出ptrace。

圖3 程序的整體流程圖
在執行inject_remote_process函數主要流程中的第5步中,調用了hook_entry函數,在該函數中,完成了對open函數和close函數的替換。Hook_entry函數的主要流程如圖4所示。

圖4 hook_entry函數的流程圖
為了避免文件在加解密的過程中出現混亂,新建了一個名為hook的文件夾,存放new_open和new_close的臨時文件。該文件為open函數中根據參數path對應到的文件。為避免占用過多內存,可以刪除臨時文件。
由于一個APP會調用多個線程,在對應用程序進程進行綁定時,需要hook一個用戶組的進程。
通過find_pid_of函數根據所給的進程名返回對應的進程號后,hookAll_appProcess函數根據所給的進程號把屬于此進程的用戶組所用的進程號存入processID_group中。GetProcess_ui函數返回此進程的用戶組id。通過上述四個函數,完成hook一個用戶組的進程。
2.2 加密與解密
在終端隱私保護系統中,new_close函數中對文件執行加密操作,new_open函數中對文件進行解密操作,new_open和new_close函數的流程如圖5所示。

圖5 new_open和new_close函數流程圖
RC4是一種對稱加密算法,使用的密鑰為單鑰[10]。RC4通過字節流的方式依次加密明文中的每一個字節,解密的時候也是依次對密文中的每一個字節進行解密[11]。在終端隱私保護系統中,調用RC4算法,主要函數為RC4(unsigned char plaintext[],unsigned char key[],int keylength,unsigned char keystream[],unsigned char ciphertext[],int size),需要的參數分別為plaintext[]:需要加密的明文,key:初始密鑰,keylength:密鑰長度,keystream[]為擴展后的256位密鑰流,ciphertext[]為加密后的密文[12]。
進程注入需要先獲得root權限,所以測試時手機需要取得root權限。現通過對比測試終端隱私保護系統核心的加解密功能,測試機器是聯想P700,系統是Android4.0.3。在終端隱私保護系統未對系統進行加密時,通過Re管理器和TXT閱讀器打開手機內TXTDocument.txt文件可以正常顯示明文信息。其中Re管理器和TXT閱讀器均為第三方APP,可對系統中的文件進行操作。
啟動終端隱私保護系統,通過inject命令對Re管理器進行劫持,(其中inject命令是調用終端隱私保護系統生成的可執行程序)此時Re管理器的文件操作函數被hook為具有加解密功能的文件操作函數。這時通過Re管理器打開TXTDocument.txt,文件為明文狀態,如圖6所示,文件可讀。通過Re管理器關閉TXTDocument.txt,對文件進行加密操作,文件轉為密文。此時通過TXT閱讀器(非被劫持進程)打開TXTDocument.txt如圖7所示,文件已經處于密文狀態,打開的文件內容為亂碼(說明隱私終端保護系統的加密功能正常)。再次通過Re管理器(被劫持進程)打開上述加密文件如圖6所示,文件為明文狀態,文件可讀(說明隱私終端保護系統的解密功能正常)。

圖6 Re管理器打開TXTDocument.txt

圖7 TXT管理器打開TXTDocument.txt
上述測試結果表明該終端隱私保護系統可以順利完成對隱私數據的保護,讓被綁定的進程對文件的操作具有透明加解密功能。
Android系統已經成為主流的手機操作系統之一,本文針對android手機用戶的隱私保護提出并實現了一種保護方法。該方法通過劫持open和close函數,調用new_open和new_close函數,對文件進行了加密和解密,從根本上實現了對文件的保護。通過在手機上的測試,驗證了該方法是有效的。下一步的重點是實現監控系統的權限,從而達到對短信的監控。
[1] 彭國軍,邵玉如,王泰格.基于Android的手機隱私保護技術及實現[J].信息網絡安全,2012(4):54-57.
[2] 張玉清,王凱,楊歡,等.Android安全綜述[J].計算機研究與發展,2014,51(7):1385-1396.
[3] 宋杰,黨李成,郭振朝,等.AndroidOS手機平臺的安全機制分析和應用研究[J].計算機技術與發展,2010,20(6):152-155.
[4] 楊歡,張玉清,胡予濮,等.基于多類特征的Android應用惡意行為檢測系統[J].計算機學報,2014,37(1):15-27.
[5] 王偉,張之棟,雷雨詩,等.基于策略的Android應用檢測系統[J].信息網絡安全,2013(2):30-34.
[6] 乜聚虎,周學海,余艷瑋,等.Android安全加固技術[J].計算機系統應用,2011,20(10):74-77.
[7] 溫敏,艾麗蓉,王志國.Android智能手機系統中文件實時監控的研究與實現[J].科學技術與工程,2009(7):1716-1719.
[8] 詹成國,朱偉,徐敏.基于Android的測控裝置人機界面的設計與開發[J].電力自動化設備,2012,32(1):119-122.
[9]Android下通過hook技術實現透明加解密保障數據安全[J/OL].http://netsecurity.51cto.com/art/201311/417542.htm.
[10] 蔡傳安.RC4加密算法及其安全性研究[J].中國水運:下半月,2012(8):33-35.
[11] 李琴,曾凡平.RC4密碼的改進方法及其性能分析[J].計算機工程,2008,34(18):181-183.
[12] 常亞勤.對流密碼RC4的區分攻擊[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。江蘇省科技項目-基礎研究計劃(自然科學基金:BK20141209);蘇州市應用基礎研究項目(SYG201543)。李春杰,副研究員,主研領域:嵌入式系統設計與信息安全。史正樂,碩士。高慧敏,碩士。顏智潤,碩士。
TP3
A
10.3969/j.issn.1000-386x.2017.06.039