面向pyhon的客流控制模型_第1頁(yè)
面向pyhon的客流控制模型_第2頁(yè)
面向pyhon的客流控制模型_第3頁(yè)
面向pyhon的客流控制模型_第4頁(yè)
面向pyhon的客流控制模型_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

面向pyhon的客流控制模型

0基于動(dòng)態(tài)凈化的優(yōu)化設(shè)計(jì)隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,網(wǎng)絡(luò)規(guī)模和網(wǎng)絡(luò)用戶的快速增長(zhǎng),web服務(wù)為人們的生活帶來了極大的便利。與此同時(shí),針對(duì)Web服務(wù)的各種攻擊手段及技術(shù)層出不窮,安全形勢(shì)日益嚴(yán)峻。而Web應(yīng)用不可避免地會(huì)存在一些脆弱點(diǎn),導(dǎo)致攻擊者能夠竊取服務(wù)端的秘密數(shù)據(jù)、破壞系統(tǒng)完整性,并影響服務(wù)的可用性。污點(diǎn)分析是查找軟件脆弱點(diǎn)的一種自動(dòng)化方法,常用于檢測(cè)Web程序中的漏洞動(dòng)態(tài)污點(diǎn)分析通過監(jiān)測(cè)程序的運(yùn)行狀態(tài),實(shí)時(shí)跟蹤程序運(yùn)行過程中污點(diǎn)數(shù)據(jù)的流向,可以精確檢測(cè)程序中的漏洞。因此,目前的Web應(yīng)用程序更傾向于采用動(dòng)態(tài)污點(diǎn)分析。研究人員通過修改Perl、Ruby、PHP的解釋器,增加一種特殊的運(yùn)行模式———污點(diǎn)模式,實(shí)現(xiàn)了面向Web腳本語(yǔ)言的動(dòng)態(tài)污點(diǎn)分析但是,上述動(dòng)態(tài)污點(diǎn)分析方法大多只提供Web應(yīng)用的污點(diǎn)跟蹤和分析,缺乏完善的信息流策略和模型,對(duì)信息流的控制也較為粗糙。因此,為了更好地滿足Web服務(wù)的安全需求,需要在動(dòng)態(tài)污點(diǎn)分析的基礎(chǔ)上,設(shè)計(jì)并實(shí)施有效的信息流控制。現(xiàn)有的基于動(dòng)態(tài)污點(diǎn)分析的信息流控制(informationflowcontrol,IFC)方法及模型大部分是在操作系統(tǒng)進(jìn)程級(jí)實(shí)現(xiàn)的基于上述分析,本文提出了一個(gè)面向Python的信息流控制模型(informationflowcontrolforPython,PIFC)。模型的基本思想是,將Python程序中的對(duì)象抽象為實(shí)體并賦予相應(yīng)的能力和標(biāo)記;將信息流控制轉(zhuǎn)換為方法調(diào)用所涉及實(shí)體間(調(diào)用者、被調(diào)用者、參數(shù)及返回值)的信息交互控制;引入實(shí)體的降密及凈化能力來防止污點(diǎn)積累。依據(jù)此模型設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)Python庫(kù)LPIFC,提供污點(diǎn)標(biāo)記存儲(chǔ)及標(biāo)記的動(dòng)態(tài)調(diào)整支持。PIFC模型實(shí)現(xiàn)了應(yīng)用程序內(nèi)部的實(shí)時(shí)污點(diǎn)傳播和跟蹤,以及細(xì)粒度、完整的、靈活的信息流控制,有效地防止了PythonWeb應(yīng)用程序漏洞導(dǎo)致的信息泄露及系統(tǒng)完整性破壞等安全問題;LPIFC庫(kù)的實(shí)現(xiàn)輕量、易用、簡(jiǎn)潔,充分利用Python中裝飾器和動(dòng)態(tài)分發(fā)機(jī)制等高級(jí)特性1基于python的信息流檢測(cè)模型1.1對(duì)象不同1)實(shí)體O應(yīng)用程序中的對(duì)象,即在Python中,類、類實(shí)例和方法等一切都是對(duì)象。2)標(biāo)簽(污點(diǎn))一個(gè)標(biāo)簽t3)標(biāo)記一個(gè)標(biāo)記L4)能力一個(gè)能力C5)權(quán)限映射函數(shù)f(t6)決策集D={allow,reject},其中allow表示允許實(shí)體間的信息流動(dòng),reject表示拒絕實(shí)體間的信息流動(dòng)。1.2實(shí)體b標(biāo)記中的標(biāo)簽在Python、Ruby等面向?qū)ο蟮恼Z(yǔ)言中,類、類實(shí)例和方法等一切都是對(duì)象。因此,本文將對(duì)象抽象為信息流控制模型的基本實(shí)體。對(duì)象的屬性和方法記錄了該對(duì)象的狀態(tài)信息和行為,程序中的所有信息流都是由對(duì)象的方法調(diào)用所產(chǎn)生的1)信息流動(dòng)規(guī)則信息可以從實(shí)體A流向?qū)嶓wB,當(dāng)且僅當(dāng),對(duì)于實(shí)體A的標(biāo)記中的任意標(biāo)簽,實(shí)體B的能力中都包含該標(biāo)簽,不論該標(biāo)簽的權(quán)限為正還是為負(fù)。例如,L2)污點(diǎn)傳播規(guī)則當(dāng)實(shí)體A的污點(diǎn)信息流向具有相應(yīng)被污染能力的實(shí)體B時(shí),實(shí)體B將會(huì)受到相應(yīng)的污染,發(fā)送能力將變?nèi)?。也就是說,如果允許信息從實(shí)體A流向?qū)嶓wB,那么,若實(shí)體A標(biāo)記中的標(biāo)簽在實(shí)體B的能力中權(quán)限為正,則該標(biāo)簽將會(huì)被添加到實(shí)體B的標(biāo)記中。3)污點(diǎn)去除規(guī)則當(dāng)實(shí)體A的污點(diǎn)信息流向具有相應(yīng)去污能力的降密器或凈化器B時(shí),實(shí)體A的標(biāo)記中的相應(yīng)標(biāo)簽將會(huì)被去除。例如,L該模型中只對(duì)需要跟蹤的敏感實(shí)體明確地賦予相應(yīng)的標(biāo)記和能力。而對(duì)于其他未明確授權(quán)的實(shí)體,隱含一個(gè)默認(rèn)能力C1.3實(shí)體特色功能完整性意味著被保護(hù)的實(shí)體不接收其能力范圍外的不可信數(shù)據(jù)。首先,將實(shí)體的能力標(biāo)簽集初始化為空,即該實(shí)體不具備任何接收能力和被污染能力,因而無(wú)法接收任意帶有惡意污點(diǎn)類型標(biāo)簽的信息;然后,對(duì)可能產(chǎn)生攻擊的用戶惡意輸入數(shù)據(jù)設(shè)置相應(yīng)的污點(diǎn)標(biāo)簽,如XSS標(biāo)簽(跨站腳本攻擊)、SQLI標(biāo)簽(SQL注入攻擊)等;最后,分析應(yīng)用程序的完整性需求,根據(jù)實(shí)體的完整性保護(hù)級(jí)別,賦予實(shí)體相應(yīng)的被污染能力,即向?qū)嶓w的能力標(biāo)簽集中添加相應(yīng)的標(biāo)簽。因此,當(dāng)攻擊者試圖通過注入數(shù)據(jù)來實(shí)施完整性破壞時(shí),信息流控制的實(shí)施將阻止惡意數(shù)據(jù)流向敏感實(shí)體。2)保密性保密性意味著防止敏感秘密數(shù)據(jù)被非法泄露給不可信實(shí)體。首先,對(duì)秘密數(shù)據(jù)或秘密數(shù)據(jù)源設(shè)置相應(yīng)的污點(diǎn)標(biāo)簽,如secret標(biāo)簽(秘密數(shù)據(jù))、privacy標(biāo)簽(個(gè)人隱私數(shù)據(jù))等,保證該標(biāo)簽會(huì)在整個(gè)應(yīng)用程序中傳播;然后,對(duì)具有秘密數(shù)據(jù)處理能力的實(shí)體賦予相應(yīng)的能力標(biāo)簽。因此,當(dāng)攻擊者試圖將秘密數(shù)據(jù)泄露給未授權(quán)的第三方不可信實(shí)體時(shí),將會(huì)自動(dòng)被信息流控制規(guī)則所阻止。3)降密/凈化降密/凈化的本質(zhì)是移除實(shí)體的相應(yīng)污點(diǎn)標(biāo)簽,以防止污點(diǎn)數(shù)據(jù)積累所導(dǎo)致的實(shí)體發(fā)送能力越來越弱。例如,病人的病歷中一般包括病人的個(gè)人隱私信息和相關(guān)疾病記錄,病歷實(shí)體標(biāo)記為L(zhǎng)2基于實(shí)驗(yàn)庫(kù)的實(shí)驗(yàn)本文充分利用Python面向?qū)ο蟮奶攸c(diǎn)及動(dòng)態(tài)分發(fā)機(jī)制,在不修改Python解釋器的前提下,針對(duì)Python應(yīng)用程序?qū)崿F(xiàn)了一個(gè)污點(diǎn)函數(shù)庫(kù),其核心功能是為Python應(yīng)用程序中類、實(shí)例、方法等對(duì)象提供污點(diǎn)標(biāo)記及信息流控制的支持。2.1網(wǎng)絡(luò)地理類型的選擇在Python中,類、類實(shí)例和方法等一切都是對(duì)象,Python解釋器內(nèi)建二十多種對(duì)象類型污點(diǎn)標(biāo)簽總是依附于對(duì)象,用于標(biāo)志對(duì)象的污點(diǎn)信息類型,并隨著對(duì)象間的信息流動(dòng)自動(dòng)調(diào)整,因此污點(diǎn)存儲(chǔ)應(yīng)伴隨對(duì)象從創(chuàng)建到消亡的整個(gè)生命周期。為了滿足這一要求,需要擴(kuò)展對(duì)象內(nèi)容以提供對(duì)象污點(diǎn)標(biāo)記和動(dòng)態(tài)調(diào)整的支持。2.1.1tstr的繼承針對(duì)不可變性對(duì)象創(chuàng)建后值無(wú)法修改的特點(diǎn),采用繼承不可變性對(duì)象所屬的類對(duì)象來創(chuàng)建新的子類,通過在子類中添加污點(diǎn)信息的屬性字段,并重載父類方法的方式來支持污點(diǎn)分析和信息流控制。在具體實(shí)現(xiàn)中,以不可變字符串str為例,創(chuàng)建新類t_str作為str的子類,t_str繼承了父類str的全部屬性和方法。此外,在t_str中新增兩個(gè)集合類屬性字段taints和capabilities,分別表示t_str的標(biāo)記和能力;同時(shí),再創(chuàng)建兩個(gè)字典類型字段meth_taints和meth_capabilites,分別表示t_str中方法的標(biāo)記和能力,字典中鍵列表對(duì)應(yīng)方法名,值列表分別對(duì)應(yīng)方法的標(biāo)記值和能力值。不可變性對(duì)象污點(diǎn)存儲(chǔ)如下:功能:污點(diǎn)存儲(chǔ)方法taint_class()函數(shù)的作用是為不可變類對(duì)象提供污點(diǎn)標(biāo)記存儲(chǔ)的支持。首先為目標(biāo)類創(chuàng)建一個(gè)子類對(duì)象,然后在子類中定義并初始化污點(diǎn)信息字段,最后調(diào)用propagate_method()函數(shù)重載父類方法。taint_class()函數(shù)中使用了Python提供的自省(introspection)模塊中的功能函數(shù)。2.1.2生成分類結(jié)果可變性對(duì)象一般都是復(fù)合類型,既支持任意組合的多層次嵌套且沒有固定類型的約束,可分為用戶自定義可變性對(duì)象和內(nèi)建可變性對(duì)象兩種情況討論。對(duì)于用戶自定義的類,可以直接在類定義語(yǔ)句外通過賦值變量名給該類增加屬性。對(duì)于用戶自定義的類實(shí)例,也可以在實(shí)例創(chuàng)建后直接賦值變量名給該對(duì)象增加屬性。Python動(dòng)態(tài)創(chuàng)建屬性如下所示:這是由Python語(yǔ)言的動(dòng)態(tài)性決定的:類和實(shí)例只是命名空間對(duì)象,屬性可以通過賦值語(yǔ)句動(dòng)態(tài)建立;類似地,方法也可以完全獨(dú)立地在任意類對(duì)象和實(shí)例對(duì)象的外部動(dòng)態(tài)創(chuàng)建。根據(jù)上述特點(diǎn),可以為用戶自定義的類和類實(shí)例對(duì)象動(dòng)態(tài)增加屬性字段taints和capabilities用于存儲(chǔ)污點(diǎn)信息,同時(shí)也增加污點(diǎn)信息的相關(guān)處理方法,如get_taint_tags()方法,獲取對(duì)象污點(diǎn)值。內(nèi)建類中的可變性對(duì)象通常作為容器使用,容器大小可按需動(dòng)態(tài)調(diào)整。因此,可以不用單獨(dú)為這種可變性對(duì)象增加污點(diǎn)屬性字段,而是通過容器內(nèi)嵌套的基本對(duì)象污點(diǎn)標(biāo)記的集合作為該對(duì)象污點(diǎn)標(biāo)記。2.2增設(shè)加害流程見圖1本文將Python程序依次分解為模塊、語(yǔ)句、表達(dá)式以及對(duì)象。其中,程序由多個(gè)功能模塊構(gòu)成,每個(gè)模塊由包含表達(dá)式的語(yǔ)句組成,表達(dá)式則用于建立并處理對(duì)象。程序中的一切數(shù)據(jù)都是以對(duì)象的形式出現(xiàn)———包括Python解釋器提供的內(nèi)建對(duì)象及用戶自定義的類和類實(shí)例對(duì)象。根據(jù)Python語(yǔ)言的語(yǔ)法和語(yǔ)義可知,Python支持的基本語(yǔ)句集共有八大類,即賦值語(yǔ)句、調(diào)用語(yǔ)句、print打印、if/elif/else判斷語(yǔ)句、for/while循環(huán)語(yǔ)句、pass占位符、break/continue語(yǔ)句、異常語(yǔ)句Python中的方法可以通過多種方式輸入并產(chǎn)生輸出,方法的整個(gè)執(zhí)行周期分為兩個(gè)階段,即方法調(diào)用階段和返回階段,如圖1所示。信息流控制是要跟蹤和控制方法執(zhí)行時(shí)涉及到的調(diào)用者、被調(diào)用者、參數(shù)與返回值四個(gè)實(shí)體間任何可能的信息流動(dòng)?;谠撍枷耄疚脑O(shè)計(jì)并實(shí)現(xiàn)了污點(diǎn)傳播及信息流控制流程:a)在方法調(diào)用之前,收集方法調(diào)用者、被調(diào)用者及參數(shù)列表的污點(diǎn)信息;b)分別比較調(diào)用者標(biāo)記、參數(shù)標(biāo)記與被調(diào)用者的能力;c)若檢查通過,則將調(diào)用者和參數(shù)的污點(diǎn)標(biāo)記傳播給被調(diào)用者;d)調(diào)用方法,將方法的污點(diǎn)標(biāo)記傳播給返回值;e)再次驗(yàn)證是否允許信息從返回值流向方法調(diào)用者,若允許,傳播返回值污點(diǎn)信息至調(diào)用者。該流程的基本實(shí)現(xiàn)如下所示:功能:信息流控制參數(shù):方法對(duì)象返回值:原方法返回值Python中的裝飾器是一種由@符號(hào)標(biāo)志的特殊函數(shù),其后緊接一個(gè)方法或函數(shù)的定義(元函數(shù)),本質(zhì)上是對(duì)元函數(shù)的運(yùn)行時(shí)聲明,用于修飾和管理元函數(shù)。taint_analysis()是本文實(shí)現(xiàn)的一個(gè)裝飾器函數(shù),通過控制污點(diǎn)對(duì)象的方法調(diào)用流程實(shí)現(xiàn)污點(diǎn)傳播及信息流控制。本文實(shí)現(xiàn)了用于支持污點(diǎn)存儲(chǔ)及信息流控制的Python庫(kù)LPIFC(libraryofinformationflowcontrolforpython),表2中是LPIFC庫(kù)提供的API接口函數(shù)。3示例分析與性能試驗(yàn)3.1信息安全需求本節(jié)以GNUHealth病人信息管理涉及的病人信息包括個(gè)人信息和醫(yī)療信息(如疾病信息、處方信息和診斷信息等)。實(shí)際的應(yīng)用場(chǎng)景中,為了進(jìn)行藥物研究或醫(yī)學(xué)實(shí)驗(yàn),或者為了聯(lián)合會(huì)診應(yīng)對(duì)疑難雜癥,Health的各個(gè)端點(diǎn)(如醫(yī)院、醫(yī)藥公司、醫(yī)療機(jī)構(gòu))之間需要共享醫(yī)療信息。然而,為了保護(hù)用戶的個(gè)人隱私,病人信息的所有者不能將病人信息直接發(fā)送給其他端點(diǎn)。因此,需要對(duì)個(gè)人信息提供機(jī)密性保護(hù),對(duì)醫(yī)療信息提供完整性保護(hù),保證這兩類信息是相互隔離且相互獨(dú)立的。針對(duì)上述安全需求,現(xiàn)有的信息流控制方法,文獻(xiàn)系統(tǒng)安全需求可描述為:端點(diǎn)B擁有接收病人個(gè)人信息和醫(yī)療信息的能力,端點(diǎn)C只擁有接收病人醫(yī)療信息的能力。GNUHealth應(yīng)用LPIFC庫(kù)后,一旦B接收A的信息,B即被污染,B的標(biāo)記中將增加標(biāo)簽{private,medical}。此后,B的發(fā)送能力變?nèi)?,LPIFC將自動(dòng)阻止B直接向C發(fā)送病人信息。實(shí)驗(yàn)結(jié)果表明,通過實(shí)施本文的信息流控制模型,即使Health的某個(gè)端點(diǎn)存在安全漏洞,LPIFC也能保證患者醫(yī)療數(shù)據(jù)的完整性,以及個(gè)人隱私數(shù)據(jù)的機(jī)密性。3.2模擬真實(shí)場(chǎng)景本節(jié)測(cè)試LPIFC庫(kù)對(duì)系統(tǒng)性能的影響。在服務(wù)器(X56602.80GHz,Ubuntu10.04.2)上安裝GNUHealth2.4.1,模擬真實(shí)的Health應(yīng)用場(chǎng)景。LPIFC對(duì)系統(tǒng)性能的影響主要表現(xiàn)在方法調(diào)用的執(zhí)行時(shí)間上,分析LPIFC開啟前后方法調(diào)用完成所需要的時(shí)間,結(jié)果如表3所示。測(cè)試結(jié)果表明,LPIFC引入的開銷較小,延遲率為11%~14%,在用戶可接受的范圍內(nèi)。4基于fpgac的程序模擬本文提出了一個(gè)面向PythonWeb應(yīng)用的信息流控制模型PIFC,該模型通過控制方

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論