一、Information-Flow tracking,Realtime Privacy Monitoring。信息流動追蹤,實時動態監控。數據庫
二、TaintDroid是一個全系統動態污點跟蹤和分析系統,能同時跟蹤多個敏感信息源。經過監控敏感數據讓用戶瞭解第三方app的使用行爲。數組
三、監控30款經常使用的應用程序,其中20款中發現68例濫用用戶位置信息和設備識別信息的行爲。服務器
四、移動平臺操做系統對app訪問隱私權限只提供粗粒度訪問控制,不能瞭解究竟是被如何使用的。只能盲目相信app會合理使用隱私信息。網絡
五、TaintDroid使用細粒度動態污點跟蹤,即位於數據項或變量中的標籤。架構
六、TaintDroid利用Android虛擬化架構整合了四種粒度的污點傳播: Message-level,Variable-level,Method-level,File-level。app
七、性能
經過VM解釋器對不受信任的app代碼中進行variable-level跟蹤,更側重於數據上而不是代碼上存儲污點標誌。操作系統
應用程序之間採用Message-level跟蹤,開銷低,範圍擴展到整個系統。設計
系統原生庫採用Method-level跟蹤。3d
永久性信息以File-level形式跟蹤,確保以保守的方式保留污點標誌。
八、
信息在可信的app處被tainted(1),污點接口調用一個native方法(2),此方法interface一個DVM解釋器,每一個解釋器中都有一個Virtual Taint Map,存儲特定的污點標記tag。當可信app使用tainted數據時,DVM傳輸taint tags(3)。當可信app進行IPC通訊時若使用tainted信息,則Binder(4)會確保該信息包會包含taint tag,此tag反映信息包中全部數據的污點標籤信息。該 信息包 經過 binder kernel module(5)進行傳輸,而後被遠程的不可信 app 接收。更改後的binder從信息包中獲取taint tag(6),遠程DVM解釋器將taint tag傳給不可信app(7)。當不可行app調用一個動態庫,則該庫會從待發數據中抽取tainted tag,並報告此事件(8)。
九、以上結構須要克服的問題:
(1)、taint tag存儲:將污點標籤存儲在與變量相鄰的內存中,減小存儲開銷。
(2)、解釋型代碼污點傳播:(這一部分不是很懂) 污點傳播邏輯 tainted對象引用
(3)、原生庫代碼污點傳播:不受監控。 內部VM方法:被解釋後的代碼直接調用,傳遞一個指向32位寄存器參數數組的指針,返回一個指向返回值的指針。通常無需修改。 JNI方法:(Java Native Interface)。TaintDroid詢問一個方法 profile表,該表用於傳播信息的更新。一個方法 profile 是一個(from,to)數據對的 list,用於指示變量之間的數據流(這些變量多是參數、類的變量、返回值等)。
(4)、IPC污點傳播:跟蹤app之間的通訊時發送的數據包中的敏感信息。
(5)、二次存儲污點傳播:確保被污染的數據存入文件時,污點標記會在稍後文件被讀取時恢復。
十、隱私Hook的放置
(1)、低帶寬傳感器:信息常變換,被多個app使用,如位置、加速器
(2)、高帶寬傳感器:傳輸大量數據。只被一個app使用,如攝像頭
(3)、信息數據庫:電話簿、短信等,存於文件數據庫
(4)、設備標識符:設備的惟一標識,如IMEI,SIM
(5)、網絡流動站:信息傳遞時的網絡接口
十一、應用程序研究:
(1)、實驗共生成1130個TCP鏈接,正確標記了105個含有受污染的隱私敏感信息鏈接。
(2)、半數應用程序將位置信息發送到廣告服務器。
(3)、30款app中20款要求獲取手機狀態並獲取訪問互聯網權限。
(4)、設備惟一ID IMEI遭到泄露。app經過收集手機標識符來跟蹤用戶行爲,如手機號、社交網絡、用戶資料、電子郵件等。且會被長期追蹤難清除。
十二、性能研究:
TaintDroid只引入了很小的性能開銷。由於:(1)大多數應用程序主要出於「等待狀態」,(2)重量級運算如屏幕更新、網頁渲染等均不發生在受監控的原生庫中。 TaintDroid整體平均CPU消耗爲14%,內存開銷爲4.4%。
1三、方法設計侷限性:
爲了下降開銷,TaintDroid只跟蹤信息流(顯式流),而不跟蹤控制流(隱式流)。惡意軟件可能使用控制流泄露隱私敏感信息。要跟蹤控制流則須要進行靜態分析。信息離開手機後,服務器會返回網絡應答數據,TaintDroid沒法跟蹤。
實現上的侷限性:
DirectBuffer對象使用PlatformAddress類中的原生地址,而文件IO操做中對直接變量進行讀寫操做的API會默認這些原生地址來自於DirectBuffer。而DirectBuffer中的數據以非透明的形式存儲在本地,因此TaintDroid不能跟蹤。
污點來源侷限性:
當被跟蹤信息包含配置標識符時,會發生誤報。因此對包含配置參數的污點來源,應對個別變量進行污染。