亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        TaintDroid數(shù)據(jù)流動(dòng)態(tài)監(jiān)控關(guān)鍵技術(shù)研究

        2017-01-06 12:00:12孫夢陽
        中國新通信 2016年21期
        關(guān)鍵詞:系統(tǒng)

        孫夢陽

        【摘要】 Android 系統(tǒng)憑借其開源、易用等特點(diǎn)備受應(yīng)用開發(fā)商青睞,但隨之而來的用戶隱私泄露問題確越發(fā)嚴(yán)重,如何保護(hù)用戶的個(gè)人隱私數(shù)據(jù)已成為行業(yè)研究熱點(diǎn)。本文首先介紹了Android平臺邏輯和Dalvik實(shí)現(xiàn)原理,分析了TaintDroid 的功能結(jié)構(gòu),重點(diǎn)研究了TaintDroid數(shù)據(jù)流動(dòng)態(tài)監(jiān)控關(guān)鍵技術(shù),最終給出了 TaintDroid 存在的缺陷,為今后TaintDroid系統(tǒng)的拓展和研究指出了方向。

        【關(guān)鍵字】 Android 系統(tǒng) TaintDroid 數(shù)據(jù)流動(dòng)態(tài)監(jiān)控

        引言

        近年來,隨著智能移動(dòng)終端的普及,移動(dòng)應(yīng)用市場得到眾多商家青睞,其中,Android 系統(tǒng)憑借其開源、易用、自由性等特點(diǎn)占據(jù)較大市場份額,針對Android平臺開發(fā)設(shè)計(jì)的應(yīng)用也以指數(shù)級增長。正是由于Android系統(tǒng)的開放性等特點(diǎn),不法開發(fā)者有了可乘之機(jī),使得用戶的許多隱私數(shù)據(jù)外泄,給用戶造成精神和經(jīng)濟(jì)方面的巨大損失。針對這些問題,許多研究者開始致力于安卓用戶隱私數(shù)據(jù)的保護(hù)研究,2010 年 Enck 等人在 Android2.1 系統(tǒng)上,經(jīng)過對系統(tǒng)出口源代碼進(jìn)行修改,實(shí)現(xiàn)了系統(tǒng)數(shù)據(jù)流動(dòng)態(tài)檢測系統(tǒng)---TaintDroid,而后一系列基于TaintDroid 的系統(tǒng)和隱私檢測工具也相繼問世,由于該項(xiàng)技術(shù)近幾年剛剛起步,對其進(jìn)行深入研究與拓展意義深遠(yuǎn)。

        一、Android平臺邏輯結(jié)構(gòu)及Dalvik實(shí)現(xiàn)原理

        1.1 Android平臺邏輯結(jié)構(gòu)

        Android是一個(gè)基于Linux內(nèi)核的移動(dòng)操作系統(tǒng),代碼是開源的,系統(tǒng)分為四層,分別是Linux內(nèi)核層,系統(tǒng)運(yùn)行庫和Java運(yùn)行時(shí)環(huán)境Dalvik Virtual Machine層,應(yīng)用程序框架層和應(yīng)用程序?qū)印?/p>

        其實(shí)現(xiàn)邏輯是:通過linux內(nèi)核層的內(nèi)核代碼實(shí)現(xiàn)最基本的OS操作,而在第二層中,有些已經(jīng)被編譯打包好的系統(tǒng)運(yùn)行庫,可以直接被上層框架調(diào)用運(yùn)行,這部分不是Java代碼而是可以直接調(diào)用的接口;除此之外,這一層還有對于Android至關(guān)重要的虛擬機(jī)——Dalvik運(yùn)行時(shí)環(huán)境,用于Java代碼的執(zhí)行,其作用相當(dāng)于PC系統(tǒng)中的JVM。而第三層的應(yīng)用程序框架層則基本都是由Java代碼編寫完成的,其中包括一些Android的組件和控件的實(shí)現(xiàn)過程和操作,這一部分的代碼就需要借助下層的Android Runtime來完成,并且有些需求還依賴于封裝好的系統(tǒng)運(yùn)行庫。最頂層的應(yīng)用程序?qū)颖闶俏覀兙帉慉ndroid程序所在層,它調(diào)用框架層提供的框架,使用框架層的方法來實(shí)現(xiàn)用戶APP想要實(shí)現(xiàn)的功能。

        除此之外,某些對于Android系統(tǒng)的分層方法還包括一層HAL——Android系統(tǒng)的硬件抽象層,它運(yùn)行在用戶空間中,它向下屏蔽硬件驅(qū)動(dòng)模塊的實(shí)現(xiàn)細(xì)節(jié),向上提供硬件服務(wù)訪問。通過硬件抽象層,Android系統(tǒng)分兩層來支持硬件設(shè)備。

        1.2 Dalvik實(shí)現(xiàn)原理

        Dalvik是一個(gè)面向Linux作為嵌入式操作系統(tǒng)設(shè)計(jì)的虛擬機(jī),可以看做是Android為了執(zhí)行Java代碼而搭建的,和普通Java虛擬機(jī)不同,Dalvik主要是完成對象生命周期管理、堆棧管理、線程管理、安全和異常管理以及垃圾回收等等重要功能。除此之外,Dalvik不僅僅可以執(zhí)行Java代碼,也可以執(zhí)行Native代碼,即C和C++的代碼。正是針對于這一特性,Android的Dalvik選擇使用C++編寫Java接口的實(shí)現(xiàn)方法,這樣做的好處是讓系統(tǒng)的運(yùn)行更加高效和穩(wěn)定。TaintDroid基于Android Dalvik的修改大部分就是基于Native代碼的修改,由此可以在編譯時(shí)便封裝進(jìn)環(huán)境里去。

        Dalvik結(jié)構(gòu)如下圖所示:Android系統(tǒng)中包含一個(gè)虛擬機(jī)VM,它的作用是一句一句執(zhí)行Java翻譯成的dex文件。同時(shí),在Dalvik中還包含有一系列的C、C++代碼,這些代碼自身就可以執(zhí)行一系列的操作,并且他們會在系統(tǒng)編譯啟動(dòng)是便編譯完成,作為機(jī)器指令存放于系統(tǒng)中,在VM執(zhí)行Java任務(wù)的過程中,可以對這些機(jī)器指令進(jìn)行調(diào)用,這些調(diào)用是可見的,也有很多是VM自身對這些機(jī)器指令的引用。

        Dalvik在底層實(shí)現(xiàn)了對上層對象的定義,在源文件中可以看到Dalvik對于上層Object在底層是如何定義的。同時(shí),Dalvik還備有上層函數(shù)處理底層對象數(shù)據(jù)域的接口,并在文件中做了聲明。由此,上層的函數(shù)也可以通過虛擬機(jī)訪問真實(shí)的數(shù)據(jù),這樣的結(jié)構(gòu)使得我們通過修改VM虛擬機(jī)來添加一些對Java開發(fā)者不可見的附加操作變得可能。

        二、 TaintDroid數(shù)據(jù)流動(dòng)態(tài)監(jiān)控技術(shù)原理剖析

        TaintDroid不是Android平臺的一個(gè)應(yīng)用程序,跟常規(guī)的App應(yīng)用不同,它是通過改寫 Android 的接口代碼來實(shí)現(xiàn)的,因此對Android系統(tǒng)版本有絕對的依賴性。到目前為止TaintDroid 分別在Android2.1、Android2. 3、Android4. 1 和 Android4. 3 版本上進(jìn)行了移植。TaintDroid是首次在Android使用污點(diǎn)追蹤技術(shù),它是在相關(guān)的API調(diào)用處把隱私數(shù)據(jù)標(biāo)記為污染數(shù)據(jù)來實(shí)現(xiàn)對隱私數(shù)據(jù)的動(dòng)態(tài)監(jiān)測。

        TaintDroid系統(tǒng)想要實(shí)現(xiàn)動(dòng)態(tài)監(jiān)測功能需要解決幾個(gè)系統(tǒng)的挑戰(zhàn):

        (1)污點(diǎn)的存儲

        (2)解釋代碼污點(diǎn)傳播

        (3)原生代碼污點(diǎn)傳播

        (4)IPC污點(diǎn)傳播

        (5)二級存儲污染

        2.1 TaintDroid關(guān)鍵技術(shù)

        TaintDroid主要由如下幾部分構(gòu)成:

        (1)給數(shù)據(jù)的定義類內(nèi)添加污點(diǎn)字段

        在Dalvik對于虛擬機(jī)的Object定義的地方加一個(gè)成員變量taint,每一個(gè)Object都包含一個(gè)taint變量。由于是在Dalvik源代碼里做的修改,因此上層Java語言不可見。

        (2)添加訪問污點(diǎn)字段數(shù)據(jù)域的函數(shù)接口

        在函數(shù)和對象數(shù)據(jù)域之間的接口聲明的文件中,聲明Taint接口(函數(shù)和數(shù)據(jù)域),這一步的作用是可以讓其它與之關(guān)聯(lián)的C++代碼可以使用這些接口來操作這些Taint標(biāo)記。

        (3)實(shí)現(xiàn)接口功能

        使用底層的C++語言來實(shí)現(xiàn)Java呈現(xiàn)出來的接口,接口和實(shí)現(xiàn)之間的關(guān)聯(lián)則通過接口

        聲明來實(shí)現(xiàn)。具體代碼如下例:

        }

        總的來說,TaintDroid的功能主要由上述兩部分構(gòu)成:Java環(huán)境可見的主動(dòng)接口調(diào)用,和Java環(huán)境不可見的底層標(biāo)記及被動(dòng)傳遞。

        具體各個(gè)修改細(xì)節(jié)見圖片所示

        TaintDroid修改細(xì)節(jié)

        首先,我們將所有的TaintDroid系統(tǒng)分為兩部分,分別代表修改虛擬機(jī)定義的部分和針對污點(diǎn)操作的部分。在虛擬機(jī)定義的部分,修改每個(gè)Java對象對應(yīng)于C++代碼的現(xiàn)實(shí)對象的聲明,添加一個(gè)Tag用來標(biāo)記Taint污點(diǎn)記錄。顯然這個(gè)記錄是Java不可見的,通過重寫相關(guān)運(yùn)算,可以實(shí)現(xiàn)在Java開發(fā)者不知情的情況下將Taint Tag傳遞下去。這一部分定義了Taint污點(diǎn)并允許其被動(dòng)繼承,通過重寫相關(guān)函數(shù)來實(shí)現(xiàn)。在針對污點(diǎn)操作的部分,主要針對那些系統(tǒng)中的各個(gè)隱私組件Frameworks,例如GPS和MIC,這些組件本身就是污

        點(diǎn)數(shù)據(jù)的源頭,并且也是基于Java代碼級別的功能,因此需要一個(gè)Java層可見的接口來處理這些不可見的Taint Tag。所以TaintDroid系統(tǒng)中還包含Taint.java這一部分。而它的實(shí)現(xiàn)很顯然不可以使用Java,因?yàn)樗鼘aintTag不可見,要用C++來實(shí)現(xiàn),這一部分實(shí)現(xiàn)的代碼就是上文所說的Native代碼部分。

        虛擬機(jī)對于Dex字節(jié)碼的運(yùn)行有如下兩個(gè)階段:1.解析Dex字節(jié)碼并了解其含義; 2.根據(jù)其含義進(jìn)行相關(guān)的C/ C++操作。TaintDroid并不關(guān)注于如何解釋Dex字節(jié)碼,因?yàn)镈ex字節(jié)碼有其特殊規(guī)范,而解釋這些字節(jié)碼需要了解其規(guī)范,這不在TaintDroid的考慮范圍之內(nèi)。TaintDroid只關(guān)注與C/C++如何實(shí)現(xiàn)字節(jié)碼所描述的含義的。換句話說,虛擬機(jī)對于dex字節(jié)碼有翻譯和執(zhí)行兩個(gè)部分,而TaintDroid則主要關(guān)注于執(zhí)行這一部分。

        TaintDroid所能檢測到的數(shù)據(jù)類型的范圍正如緒論所言,而這些隱私數(shù)據(jù)類型也在其實(shí)現(xiàn)中被體現(xiàn)了出來,具體代號如下:

        TAINT CLEAR

        TAINT LOCATION

        TAINT CONTACTS

        ……

        TaintDroid使用整型來定義這些隱私數(shù)據(jù)類型,譬如TAINT LOCATION代表的就是0x00000001,而TAINT CONTACTS就代表的是0x00000002,TAINT MIC就是0x00000004??梢?,每一個(gè)數(shù)據(jù)都是2的次方數(shù)。

        這樣表示有一個(gè)顯著的好處,就是可以以最快捷高效的方式實(shí)現(xiàn)污點(diǎn)數(shù)據(jù)的污點(diǎn)傳遞邏輯。譬如一個(gè)數(shù)據(jù)C是由一個(gè)數(shù)據(jù)A和另一個(gè)數(shù)據(jù)B生成的,則C的污點(diǎn)邏輯為:

        C.taint = A.taint | B.taint;

        若A的污點(diǎn)標(biāo)記是1,B的污點(diǎn)標(biāo)記是2,則C的污點(diǎn)標(biāo)記就是1 | 2 = 3。而我們一看到3,就知道它是由1和2兩個(gè)2的次方數(shù)構(gòu)成的。不可能有別的組合情況。也就是說,我們知道了C包含LOCATION污點(diǎn)和CONTACTS污點(diǎn)。

        2.2 TaintDroid的數(shù)據(jù)類型

        提到TaintDroid的數(shù)據(jù)類型,其實(shí)有兩個(gè)含義,一個(gè)是TaintDroid可以添加污點(diǎn)的Java基本數(shù)據(jù)類型范圍,這其中就包括Int、String、Array、Char等類型。針對于這些Java基本類型,TaintDroid給每一個(gè)類型提供了添加污點(diǎn)的接口調(diào)用。同時(shí)在能夠真正看到taint標(biāo)記的C++層面實(shí)現(xiàn)這些聲明過的接口。

        另一個(gè)有關(guān)“數(shù)據(jù)類型”的含義指的是TaintDroid隱私數(shù)據(jù)的隱私類型,也就是說數(shù)據(jù)到底是GPS數(shù)據(jù)、還是IEMI數(shù)據(jù)等。

        三、TaintDroid缺陷分析

        TaintDroid雖然能夠很好的實(shí)現(xiàn)隱私數(shù)據(jù)流的檢測,但是其自身還是存在一定不足。

        (1)能夠檢測的控件組件類型有局限性

        TaintDroid可以檢測GPS位置等諸多隱私數(shù)據(jù),但系統(tǒng)中還有許多隱私數(shù)據(jù)沒有被TaintDroid檢測到,譬如我們在許多的場合會遇到讓用戶輸入用戶名和密碼的行為,這些行為最終都會被歸結(jié)到基于EditText控件的使用,而TaintDroid確缺省了對該控件信息的監(jiān)控,也就是說,TaintDroid能夠監(jiān)測到的隱私數(shù)據(jù)源有局限性。

        (2)隱私數(shù)據(jù)源路經(jīng)不明確

        TaintDroid只能了解到途徑網(wǎng)絡(luò)API的各個(gè)數(shù)據(jù)包中是否有添加了污點(diǎn)的隱私數(shù)據(jù),但并不能了解這些隱私數(shù)據(jù)所途徑的過程,它們?nèi)绾伪患用埽鼈內(nèi)绾伪粋鬟f,它們?nèi)绾伪焕^承等等。

        這主要是因?yàn)門aintDroid在隱私傳播的過程中使用了被動(dòng)的污點(diǎn)繼承算法,只有虛擬機(jī)才能清楚的知道數(shù)據(jù)的污點(diǎn)是來自于哪些數(shù)據(jù)的繼承,可是利用Java語言寫的檢測程序則無法通過數(shù)據(jù)本身獲得任何這方面的信息。

        (3)關(guān)于加密的問題

        加密問題是TaintDroid的固有缺陷,它主要涉及兩方面:

        ? 當(dāng)變量只在邏輯上有關(guān),而在代碼和內(nèi)存上無關(guān)的時(shí)候,TaintDroid顯然無法追蹤到數(shù)據(jù)的傳遞,因?yàn)檎嬲哪莻€(gè)數(shù)據(jù)根本沒有被賦值給任何內(nèi)存。這是無法改良和完善的,因此TaintDroid并不適用于解決加密數(shù)據(jù)的監(jiān)控問題。

        ? 當(dāng)一個(gè)數(shù)組中有某幾個(gè)數(shù)組項(xiàng)是隱私數(shù)據(jù),但是整個(gè)數(shù)組并沒有隱私標(biāo)記的時(shí)候,這個(gè)數(shù)組在繼續(xù)傳遞自己的數(shù)據(jù)的同時(shí)的確可以避開污點(diǎn)傳遞算法的調(diào)用。換而言之,TaintDroid無法跟蹤如下污點(diǎn):在一個(gè)數(shù)組類型的數(shù)據(jù)中,某一位或幾位的字符是有污點(diǎn)的,其它沒有污點(diǎn),那么,整個(gè)數(shù)組是沒有污點(diǎn)的。

        四、結(jié)語

        本文在介紹Android系統(tǒng)邏輯及Dalvik結(jié)構(gòu)基礎(chǔ)上,重點(diǎn)對TaintDroid數(shù)據(jù)流動(dòng)態(tài)監(jiān)測關(guān)鍵技術(shù)進(jìn)行了剖析,結(jié)果表明, TaintDroid工作原理是基于動(dòng)態(tài)污點(diǎn)跟蹤技術(shù),其在一定程度上實(shí)現(xiàn)了對用戶隱私數(shù)據(jù)的保護(hù),但該系統(tǒng)還存在諸多缺陷,比如監(jiān)控范圍有局限性、隱私數(shù)據(jù)源路經(jīng)不清晰、加密數(shù)據(jù)的監(jiān)控等,這些都是未來研究與拓展的方向。

        猜你喜歡
        系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機(jī)系統(tǒng)
        ZC系列無人機(jī)遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于PowerPC+FPGA顯示系統(tǒng)
        基于UG的發(fā)射箱自動(dòng)化虛擬裝配系統(tǒng)開發(fā)
        半沸制皂系統(tǒng)(下)
        FAO系統(tǒng)特有功能分析及互聯(lián)互通探討
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        一德系統(tǒng) 德行天下
        PLC在多段調(diào)速系統(tǒng)中的應(yīng)用
        国产成年无码久久久免费| 精品久久久无码人妻中文字幕豆芽| 韩日午夜在线资源一区二区| 老熟女毛茸茸浓毛| 国产高清一区在线观看| 五月婷婷开心五月激情| 丰满少妇被粗大猛烈进人高清| 亚洲中文字幕在线综合| 99精品国产一区二区三区不卡| y111111少妇影院无码| 一本色道久久综合狠狠躁中文| 初尝人妻少妇中文字幕在线| 户外精品一区二区三区| 我爱我色成人网| 国产亚洲精品看片在线观看| 久久免费精品视频老逼| 新中文字幕一区二区三区| 超清纯白嫩大学生无码网站| 国产成人综合久久久久久| 天堂av无码大芭蕉伊人av孕妇黑人 | 女人下面毛多水多视频| 国产高清吃奶成免费视频网站| 国产免费一区二区三区在线观看 | 亚洲色AV天天天天天天| 国产中文字幕亚洲国产| 九九影院理论片私人影院| 亚洲国产精品成人无码区| аⅴ天堂国产最新版在线中文| 成人短篇在线视频夫妻刺激自拍 | 完整版免费av片| 国产精品成人国产乱| 婷婷色综合成人成人网小说| 亚洲黄色大片在线观看| 日韩 亚洲 制服 欧美 综合| 精品少妇人妻av一区二区| 亚洲电影中文字幕| 女同重口味一区二区在线| 亚洲乱码无人区卡1卡2卡3| 久久精品国产亚洲av网站| av无码精品一区二区三区四区 | 亚洲hd高清在线一区二区|