鄧蒞川 周 健 雷靈光 向 繼
1(中國科學院信息工程研究所信息安全國家重點實驗室 北京 100093)2(中國科學院大學 北京 100049)3(中國科學院數據與通信保護研究教育中心 北京 100093)
基于Android平臺的文檔保護方案設計與實現
鄧蒞川1,2,3周 健1,3雷靈光1,3向 繼1,3
1(中國科學院信息工程研究所信息安全國家重點實驗室 北京 100093)2(中國科學院大學 北京 100049)3(中國科學院數據與通信保護研究教育中心 北京 100093)
近年來,隨著Android平臺在移動設備上的普及以及企業移動辦公快速發展的趨勢,Android平臺上隱私文檔的保護顯得越發重要?;谝延形臋n保護方案的研究,提出一套可供普通應用程序使用的輕量級的移動終端文檔保護方案。該方案使用多重密鑰技術并結合密鑰拆分算法,在保證文檔安全性的同時,實現了對用戶透明的文檔加解密。該方案還可對受保護文檔進行實時監控,以保證其在整個生命周期內的安全性?;谠摲桨冈贏ndroid平臺上實現了一個原型系統,并在多個Android手機平臺上進行了測試,實驗結果驗證了該方案的可行性和兼容性。
文檔保護 Android 密鑰拆分 文檔監控 移動辦公
隨著移動通信技術的發展,移動辦公已成為大勢所趨。對于企業移動管控而言,移動辦公在提供便捷服務的同時,也帶來了一些安全隱患。層出不窮的手機病毒、木馬等使得手機環境不安全,文獻[1]表明中國企業普遍缺乏對電子文檔的保護措施;而SearchSecurity網站調查顯示,30%~40%企業機密泄露事件是由電子文檔泄漏造成[2]。Android系統自身的安全性同樣存在不足,如Android手機中的APP安裝缺乏有效監管,黑客可通過將惡意代碼注入正常APP中來竊取用戶私密信息。近年來,通過遠程控制竊取用戶文檔的事件時有發生[6]。
不同于iOS采取整盤加密的機制,Android文件系統的安全性主要依賴于Linux文件系統基于用戶身份的訪問控制保護機制,即不同的用戶組對文件有不同的讀寫權限。然而,Linux內核存在一些安全漏洞[13],一旦攻擊者利用這些漏洞獲取了系統的Root權限,則整個Linux文件系統都會暴露給惡意代碼,任何存儲位置都是不安全的。隨著普遍增加的企業文檔共享需求,基于Android平臺移動辦公的數據共享安全性也得到越來越多的關注。因此,如何實現Android平臺上隱私文檔的保護顯得越發重要。
國際上不少大學以及研究機構都在電子文檔安全管理研究方面取得了一些成果,如麻省理工學院(MIT)、IBM研究院等均各自提出了相應的理論及系統模型[7]。國內的清華大學、南京大學等高校學者也在電子文檔加密、數據分發、密鑰管理及訪問控制等方面做了深入研究[8-9];北京郵電大學的學者提出將可信計算引入到移動平臺中[14],實現對文檔的透明加解密,其安全性依賴于一個關鍵安全函數,但在對關鍵安全模塊的保護及性能開銷問題上還有待進一步研究。
將傳統PC文檔保護技術應用到移動終端,需考慮手機有限的計算及存儲能力,以及密鑰在Android平臺上存儲時缺乏信任根等問題。手機文檔保護需保證文檔存儲、傳輸和使用三個環節的安全性,其中對文檔數據傳輸和文檔載體進行管控是使用最為廣泛的措施[3]。目前手機文檔保護方案主要有以下幾種:一是不在客戶端存儲文檔,此時文檔的安全性依賴于客戶端和服務器端的安全傳輸以及服務器端的安全存儲[10],但這種方案并不能有效阻止本地惡意程序的攻擊;二是切斷其他數據傳輸通道,如禁止用戶在操作文檔時使用網絡服務[3],該方案同樣無法阻止本地惡意程序攻擊;三是改進文檔載體,如提供企業專用的文檔閱讀器來禁止一些不安全操作[12],但閱讀器的定制開發量大,且兼容性較差,還會在一定程度上影響用戶的操作習慣;四是對文檔進行單純加解密[11],在該方案中解密后的新建文件將被放入SD卡,缺乏有效的保護控制。因此,尋求一種能有效解決上述問題的手機文檔保護機制十分必要。
綜上所述,本文針對SD卡丟失問題及手機后臺惡意程序竊取機密文件的攻擊,提出了一套移動終端文檔保護機制;并以SDK的形式進行實現,方便第三方應用程序調用,具有良好的兼容性。本方案對需要保護的SD卡文檔進行多因素密鑰加密保護,且不在本地存儲密鑰,也無需密鑰傳輸操作,因而保證了密鑰的安全性;本方案將對解密后的臨時明文文檔進行全生命周期監控及進程間加鎖,確保臨時明文文檔的安全創建、訪問和銷毀,且僅能由指定程序訪問,還可以按需設置自定義監控策略;方案以SDK形式實現,方便應用程序使用,且無需對閱讀器進行任何修改,滿足了文檔共享的需求。實驗測試表明,本方案開銷較小,且支持對目前通用文檔格式的保護。
Android平臺主要提供以下五種文檔存儲和共享的方法:
? SharedPreference
它是Android提供用于存儲簡單配置信息的機制,采用Map數據結構來存儲數據,以鍵值的方式存儲。只能在應用程序內部使用。SharedPreferences以XML格式將數據存儲到設備中,文件系統中的位置在/data/data/
? SQLite數據庫
需對存儲數據進行較復雜操作,或數據量較大時,需要采用SQLite來更高效管理數據,它是一種獨立的無需服務進程,支持事務處理,可以使用SQL語言的數據庫。
? ContentProvider
即應用程序間共享數據的統一接口,只有擁有相應權限才可獲得Content provider,并查詢它們包含的數據。
? 文件存儲(內部存儲)
系統提供 openFileInput()和openFileOutput()方法來讀取設備上的文件,且只能在應用程序內部訪問。文件系統中存儲路徑一般為:/data/data/Package Name/files。文件存儲有四種操作模式:MODE_PRIVATE、MODE_ APPEND、MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE
? SD卡文件(外部存儲)
Android訪問外部存儲即SD卡文件需要“WRITE_EXTERNAL_STORAGE”權限,并需在使用前檢查外部存儲的可用性。
以上五種文檔存儲和共享方式中,內部存儲安全性較高,但共享性較低;外部存儲只需有相應權限即可訪問,相對安全性低,但共享性更高。為兼顧文檔安全性和共享性需求,本文將重點關注如何提高SD卡文件存儲的安全性。
由于智能移動終端有文檔保護和文檔共享的雙重需求,而現有的移動終端文檔保護方案很少能同時兼顧這兩點需求。因此,本文提出一套文檔保護方案,以期實現安全的文檔共享。本設計方案架構基于Android平臺,并以SDK形式實現,方便集成到第三方應用程序中,僅需用戶在程序初始化時提供用于身份認證和透明加解密的PIN碼,具有很好的普適性。本方案可以提供集中管理文檔的功能,適用于企業移動辦公。
2.1 攻擊模型
對于存儲在SD卡上的文檔,本文考慮以下幾種攻擊:
? 攻擊者通過竊取SD卡來獲取SD卡上文件;
? 惡意程序后臺訪問SD卡文件;
? 在手機root的情況下,惡意程序后臺訪問應用本地存儲。
本方案針對上述攻擊提出相應的防護策略,來自內部的信息泄露不在本文討論范圍。
2.2 保護模型
針對2.1節所述攻擊模型,本文提出保護模型如圖1所示。

圖1 保護模型圖
受保護文檔在SD卡上加密存儲,惡意程序后臺訪問SD卡文件時,由于沒有密鑰信息故無法破解密文。密文文檔當且僅當用戶通過APP進行顯式請求時,才會被解密,且密鑰只部分存儲在本地受保護區域,故敵手即使通過root拿到部分密鑰,也無法完成解密工作。
惡意程序在自己的dalvik虛擬空間內,無法訪問第三方APP的虛擬空間,故也只可獲取SD卡上的加密文檔。第三方APP接收到打開文檔的請求時,由用戶選擇閱讀器,進而申請閱讀文檔,文檔將在第三方APP的虛擬空間內被解密放到臨時空間中,由文檔監控模塊監控保護;閱讀器操作完成后即刻銷毀明文并回收臨時空間,該過程中惡意程序無法獲取文檔明文。
該保護方案相當于為APP提供了一塊私密且安全的“保險箱”,對文檔的加解密以及對明文空間的監控都與APP在同一個dalvik虛擬機[4]里。
(1) 密鑰機制
文檔安全性很大程度依賴于密鑰保護,因此,需設計一套完整、安全的密鑰生成、存儲、使用和管理機制。
本方案采用密鑰拆分和多重密鑰思想,主要涉及三種密鑰:用于加密文檔的密鑰SessionKey、用于加密SessionKey的主密鑰MasterKey、用于加密MasterKey的根密鑰KeyKey(只在程序啟動時動態獲取);以及用于身份認證的PIN碼。上述這些敏感數據都不在本地存儲,也無需傳輸,故安全性得到了保證。
由于本方案的實現均在客戶端進行,故采用對稱加密算法。
為了提高移動辦公的效率,本方案考慮把用于加解密文檔的密鑰暫存于手機客戶端,并引入MasterKey來保護文檔密鑰SessionKey,以杜絕密鑰泄露的風險;本方案中客戶端僅維護一個映射表:文檔唯一識別號和MasterKey [SessionKey] 加密后字符串一一對應。
符號表示如下: PIN為用于用戶驗證的字符串;RNG為根隨機數,用于生成保護主密鑰的密鑰,由固定密鑰加密存儲于設備;INFO為設備硬件信息,將密鑰與設備綁定,確保更換設備時當前密鑰失效,設備信息不存儲,直接從系統中提?。籸andom為每個文檔對應的隨機數,不存儲,只用于第一次加密時生成SessionKey;SK表示加密文檔的密鑰SessionKey(SK’表示加密后);MK表示加密SessionKey的密鑰MasterKey(MK’表示加密后);KK表示加密MasterKey的根密鑰KeyKey;m表示文檔明文,s表示文檔密文;E(*)表示對稱加密過程,D(*)表示對稱解密過程;P(*)為既定密鑰生成算法。
則 KK生成:KK = P( PIN + RNG + INFO)
主密鑰MK加密:MK’ = E(KK , MK)
主密鑰MK解密:MK = D(MK’ , KK)
SK生成:SK = P( PIN + random + INFO)
文檔密鑰SK加密:SK’ = E(SK , MK)
文檔密鑰SK解密:SK = D(SK’ , MK)
文檔加密:s = E(m , SK)
文檔解密:m = D(s , SK)
(2) 文檔監控
文檔保護方案一般涉及以下兩種情況:一種是文檔解密后使用指定閱讀器打開,從而保證其安全性,但這種方法兼容性和擴展性較差;另一種是將明文緩存,而緩存的明文易受攻擊,安全性較低。
本文方案由監控模塊監控針對文檔的各項操作。方案中在操作文檔的請求通過驗證并由用戶手動選擇第三方閱讀器后,才執行解密操作;文檔明文被放在監控模塊新建的臨時空間中,并通過設置該閱讀器打開文檔時的參數,以確保其他閱讀器對其無法訪問;閱讀器打開文檔耗時很短,臨時明文只存在很短的時間,故降低了本方案被攻擊的可能性;在閱讀器退出操作后,臨時文件空間被程序自動回收且文檔明文被即刻銷毀。
2.3 模塊設計
本方案以SDK形式實現,第三方APP可自行調用接口函數。SDK主要由以下幾個模塊組成:
? 密鑰管理模塊:主要負責生成密鑰,驗證用戶PIN碼;
? 數據加解密模塊:主要負責對文檔加解密,及對隨機數的加解密;
? 文檔監控模塊:提供對文檔整個生命周期的監控保護,解密后臨時明文存于新建臨時空間,并對臨時明文的操作進行實時監控,判斷閱讀器關閉文檔后銷毀明文。
模塊如圖2所示。

圖2 文檔保護方案模塊設計圖
由于Android4.1及之后的4.2、4.3統稱為Android Jelly Bean,包括后續的Android4.4是目前Android市場份額占有最大的系統版本。本節給出了一個基于Android平臺4.2及以上版本的手機文檔保護方案實現原型,分為初始化、加密和解密進行流程分析,最后進行相應的技術和性能分析。
3.1 實現流程
(1) 初始化
初始化流程如圖3所示。

圖3 文檔保護方案初始化流程圖
? 生成設備硬件信息INFO;
? 對指定信息INFO用指定算法進行一次加密,用于后續驗證PIN碼正確性;
? 生成一個“根隨機數”(RNG),存于私有空間;
? [PIN+RNG+INFO]用指定算法生成根密鑰KeyKey;
? 生成任意字段,即與保護密鑰無關的信息,作為主密鑰MasterKey;
? KeyKey[ MasterKey ]加密后存儲于私有空間。
初始化過程僅在程序啟動時執行,其余時候可以直接從內存讀取MasterKey。
(2) 加密
加密流程如圖4所示。

圖4 文檔保護方案加密流程圖
用戶輸入PIN碼,解密預存儲的PIN[INFO]進行判斷,解密成功則通過驗證,程序獲取MasterKey;身份認證失敗則提示用戶重新輸入PIN碼,連續錯誤五次即被鎖定,不能選擇文檔。用戶通過驗證后,在不退出程序的前提下可多次選擇文檔進行加密。
選定文檔后,后臺生成三個因素的字符串,即設備硬件信息、文檔對應隨機數、PIN碼,按指定算法生成密鑰SessionKey,用SessionKey加密文檔。
加密成功則將MasterKey [ SessionKey ]加密保護后存儲到程序私有空間;加密失敗則告知用戶,并可重新選擇文檔進行加密。
(3) 解密
解密流程如圖5所示。

圖5 文檔保護方案解密流程圖
用戶選擇想閱讀的文檔,程序需用戶輸入PIN碼,程序按(2)所述方法驗證PIN碼。
正確則進而判斷內存是否有MasterKey,有則用MasterKey解密得到SessionKey對文檔進行解密;
內存沒有MasterKey,即程序啟動初始化,后臺獲取三部分拆分信息,動態生成根密鑰KeyKey,解密得到MasterKey。用MasterKey獲取文檔SessionKey進而對文檔解密。
解密失敗則告知用戶,重新選擇文檔;解密成功則進入文檔監控周期。文檔監控周期處理流程如下:
① 文檔創建:監控模塊動態創建臨時空間,將密文文檔解密后暫時存放;
② 文檔打開:通過獲取sun.nio.FileChannel對象實現進程加鎖,其他程序進程無法訪問臨時明文空間,從而其他的第三方無法獲取到明文信息;
③ 文檔關閉:閱讀器對文檔的閱讀和操作都是在自己的dalvik虛擬空間中進行的,其他APP不能訪問該虛擬空間也不能獲知其是否操作完成,本方案利用Android系統提供的對SD卡監聽機制,周期性地監聽臨時明文空間下對文檔的操作,一旦發現臨時明文文件在預置時間長度內處于空閑狀態,即刻銷毀明文。
考慮到大文檔直接進行加解密處理可能效率很低,甚至可能出現內存溢出錯誤。本方案的文檔加解密使用分塊處理,則對于大小文件的處理在內存消耗上差異不大, 3.2節的實驗分析亦驗證了這一點。
3.2 分析及實驗
(1) 性能分析
? 安全性
本方案可以抵抗以下幾種安全威脅:
a) SD卡丟失,由于密鑰需設備硬件號生成,SD卡丟失無法獲取密鑰。
b) 惡意程序后臺訪問SD卡文件,沒有用戶PIN碼;即使竊取得到用戶PIN碼,亦無法訪問內部存儲,因而無法獲取完整密鑰。
c) 惡意程序通過root獲取內部存儲的部分密鑰,也無法獲取完整密鑰。
? 可用性
a) 加解密透明,無需改變用戶使用習慣。
b) 本方案采用的算法對文檔進行分塊處理,文檔加解密過程性能開銷較小。
c) 無需定制閱讀器,對通用閱讀器均能支持。
? 算法性能分析
本文先用普通對稱加密算法(AES)對不同大小的文件進行加解密,實驗結果表明加解密開銷與文件大小呈正相關關系,且大文件(如大于30 MB)的加解密造成時間開銷過大,會對用戶操作造成不良影響。假設文件大小為N,此時加解密算法復雜度為:O(N)。
在對大文件的處理方面,本方案做了如下優化,對文檔進行預處理操作,分為大小為[1024×1024]位的塊,再調用對稱加密算法進行加解密,從而加解密的性能開銷只與分塊大小有關。下面將通過實驗進行分析驗證。
(2) 實驗分析
本文針對方案的兼容性和性能開銷進行了實驗。兼容性即本方案支持通用的幾種Android平臺閱讀器可用,支持通用的幾種文檔格式可加解密;性能開銷即受本方案保護的APP對設備內存開銷較小。
表1為普通對稱加密算法、分塊優化后的算法,以及不同分塊大小造成的性能開銷。

表1 分塊優化文檔保護方案性能開銷

續表1
表1中0、1、2、3、4分別代表:未分塊、分塊大小為[2048×2048]、[1024×1024]、[512×512]、[256×256]。
表1內存和電池功耗均為本方案原型的開銷,時間延遲為加密、存儲、解密,及閱讀器解析打開文件的總時間,其中文檔中存在閱讀器不能識別的內容,或媒體文件過多,會增加解析時間,引起更多的時間延遲;從時間延遲看出未分塊的加密算法在處理大文件時延遲嚴重,而本方案對文檔進行分塊處理,從實驗數據可以看出能夠一定程度上減少時間延遲,且下一步還可加入多線程并行處理多個分塊,將進一步優化算法性能,將時間復雜度降低至O(n),n為分塊大小;通用文檔格式均能正常加解密,且不同格式文檔加解密性能開銷差異不大,打開文檔的性能開銷與閱讀器處理識別不同格式文檔有關。
表2為本方案原型在不同手機上對小文件(小于1MB)和大文件(大于30MB)進行加解密的性能開銷。

表2 文檔保護方案在不同手機平臺上性能開銷
表2中電池功耗為文檔加解密時的手機當前功耗,可以看出在不同手機平臺上加解密功耗均小于1W;手機在應用程序運行時的內存用量普遍保持在20MB以下,且由于分塊技術的使用,在對大小文檔的加解密時內存用量差異不大;CPU占用率普遍不超過5%。以上實驗在通用第三方文檔閱讀器,即WPSOffice、PolarisOffice、QuickOffice、ThinkFreeOffice及金軟Office上均進行了實驗,均能正常使用本原型系統。實驗表明本方案原型系統整體性能開銷較小,且對大文件和小文件的加解密處理開銷差異不大,故本方案可行。
手機文檔安全對企業移動管理至關重要,僅靠現有的Android安全機制難以滿足企業需求。本文設計開發了一套基于Android的輕量級手機文檔保護方案,提供一套能滿足企業移動辦公需求的密鑰管理體系,實現了文檔的透明加解密功能,并兼容現有通用第三方閱讀器方便通用文檔的讀取。本方案中的文檔操作全程受后臺監控,一旦操作完畢臨時明文空間即被收回且文檔明文被即刻銷毀。經測試,本文實現的原型系統開銷較小,具有較好的可用性和兼容性。在本方案的具體實現中,分組加密為串行處理,因此大文件可能帶來一定的可感知延遲,實際應用中采用并行處理,將進一步降低時間復雜度,減少可感知延遲。
[1] 企業電子文檔的安全調查報告[R/OL].http://wenku.baidu.com/link?url=ga6q6-NGJdMPhIUwJTNPm9OezAUn49t-kO3dtYG3S_otCWnQzMYi3BAxhtWBBt9LTxhxGzeuqB_zi2asjYmzTRS1_VNn0u2mREkt9GVApjO.
[2] 百度百科.電子文檔保護[DB/OL].http://baike.baidu.com/view/1743385.htm.
[3] 施超.信息安全的重要性與文檔加密技術在企業中的應用[J].中國管理信息化,2015,18(6):203.
[4]Wikipedia.Dalvik(Software)[DB/OL].http://en.wikipedia.org/wiki/Dalvik_(software).
[5] Android系統各版本市場份額進化圖[OL].http://www.199it.com/archives/311622.html.
[6] 巧艷.Android遠程控制惡意軟件興起 可竊取用戶信息[OL].http://www.newhua.com/2013/0718/224074.shtml.
[7] Hennessy S D,Lauer G D,Zunic N,et al.Data-centric security:Intergrating data privacy and data security[J].IBM Journal of Research and Development,2009,53(2):208-224.
[8] 鄭磊,馬兆豐,顧明.基于文件系統過濾驅動的安全增強型加密系統技術研究[J].小型微型計算機系統,2007,28(7):1181-1184.
[9] 劉岸,吳琨,仲海駿,等.基于策略機制的分布式文件保護系統PFICS[J].計算機工程,2004,30(18):119-121.
[10] 廉喆.手機文檔保護系統的設計與實現[D].北京郵電大學,2010.
[11] 周巧扣,倪紅軍.基于Android的文件加密系統的設計與實現[J].計算機光盤軟件與應用,2013(16):245-246,248.
[12] 朱筱赟,胡愛群,邢月秀,等.基于Android平臺的移動辦公安全方案綜述[J].信息網絡安全,2015(1):76-83.
[13] CVE 2009-1185[OL].https://launchpad.net/bugs/cve/2009-1185.
[14] Yu X,Wen Q,Yan T.A novel solution to document protection on mobile platform[M]//Future Wireless Networks and Information Systems.Springer,2012:447-455.
DESIGN AND IMPLEMENTATION OF DOCUMENT PROTECTION SCHEME BASED ON ANDROID PLATFORM
Deng Lichuan1,2,3Zhou Jian1,3Lei Lingguang1,3Xiang Ji1,3
1(StateKeyLaboratoryofInformationSecurity,InstituteofInformationEngineering,ChineseAcademyofSciences,Beijing100093,China)2(UniversityofChineseAcademyofSciences,Beijing100049,China)3(DataAssuranceandCommunicationSecurityResearchCenter,ChineseAcademyofSciences,Beijing100093,China)
As mobile devices of Android are becoming more and more prevalent among enterprises as well as the individuals, the protection of private documents on Android platform is getting more and more important. On the basis of existing researches, a lightweight mobile document protection scheme for general applications is proposed, which used the technology of key splitting and multiple-key system. The process of encryption and decryption is transparent to the user without any perceptible delay. The scheme provided real-time monitoring to protect the confidentiality of documents during the whole lifecycle. Moreover, a prototype system on Android platform has been implemented based on the scheme, and it had been tested on several Android platforms. Experiment results show that the scheme is practical and compatible with the mainstream Android platforms.
Document protection Android Key split Document monitor Mobile office
2015-12-14。國家高技術研究發展計劃項目(2013AA01A214)。鄧蒞川,碩士生,主研領域:移動終端安全。周健,助理研究員。雷靈光,助理研究員。向繼,高級工程師。
TP3
A
10.3969/j.issn.1000-386x.2017.02.057