• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      淺談JAVA語言環(huán)境下安全策略的實(shí)施

      2011-12-30 22:29:57
      關(guān)鍵詞:安全策略表達(dá)式調(diào)用

      王 暢

      (杭州國(guó)際服務(wù)工程學(xué)院,浙江 杭州 310000)

      1 安全策略形式定義

      基于規(guī)范的入侵檢測(cè)技術(shù)在描述和實(shí)施安全策略方面起著指導(dǎo)性作用,本文把安全策略看做是監(jiān)控一個(gè)程序的執(zhí)行使其行為不會(huì)破壞系統(tǒng)安全的準(zhǔn)則。從執(zhí)行的角度看,Java程序的行為可以粗略的看成是方法調(diào)用序列,有些方法可能是本地方法,會(huì)調(diào)用C語言函數(shù)庫(kù),某些C庫(kù)函數(shù)又可能調(diào)用系統(tǒng)調(diào)用,這些都構(gòu)成系統(tǒng)的潛在威脅。為了消除一些不正當(dāng)?shù)恼{(diào)用序列可能給系統(tǒng)帶來的威脅,一個(gè)基于模式的檢測(cè)方法被應(yīng)用到系統(tǒng)安全領(lǐng)域當(dāng)中,這一方法的核心是如何定義和實(shí)施安全策略。以系統(tǒng)調(diào)用為例,如果將系統(tǒng)調(diào)用抽象為事件,那么系統(tǒng)調(diào)用的參數(shù)就成了事件參數(shù),在系統(tǒng)調(diào)用序列中,一些系統(tǒng)調(diào)用的規(guī)律性出現(xiàn)將被理解成一種模式。反過來,這樣的模式就能夠匹配許許多多這樣的系統(tǒng)調(diào)用序列,以檢查這些系統(tǒng)調(diào)用序列是否安全。這便是基于模式的檢測(cè)方法的核心思想。安全策略可以定義在系統(tǒng)調(diào)用上,也可以定義在 JNC上,然而無論是定義在哪一級(jí),都和安全策略的組織形式無關(guān),下面從事件開始討論安全策略的組織形式。事件:是安全策略中最基本概念,是模式的組成部分,也是最簡(jiǎn)單的模式,是某一事件集中的元素,包括事件名和參數(shù),可以將 JNC調(diào)用或系統(tǒng)調(diào)用以及它們的返回看成事件。當(dāng)被監(jiān)控程序的執(zhí)行匹配了為其定制的某一模式,監(jiān)控程序?qū)⒉扇“ńK止其執(zhí)行在內(nèi)的手段來保護(hù)系統(tǒng)安全,這便是規(guī)則。

      2 程序整體結(jié)構(gòu)

      通過修改Kaffe源碼實(shí)現(xiàn)Java代碼的執(zhí)行監(jiān)控,改進(jìn)了安全策略實(shí)施框架:安全策略首先用SPDL語言定義出來,然后經(jīng)過編譯轉(zhuǎn)換成擴(kuò)展自動(dòng)機(jī)EFSA的中間表示,最后在監(jiān)控程序的輔助下強(qiáng)制實(shí)施。進(jìn)程級(jí)的監(jiān)視對(duì)于在Java層面所看不到的Linux系統(tǒng)調(diào)用部分仍然是有效的。整個(gè)安全策略的實(shí)施過程分為兩種情況,第一種情況:監(jiān)視進(jìn)程(父進(jìn)程 moni)首先啟動(dòng),在讀取安全策略之后把它編譯成擴(kuò)展有限自動(dòng)機(jī) (EFSA)的形式,利用 fork()和 exec()系統(tǒng)調(diào)用啟動(dòng)經(jīng)過修改的 Kaffe。此時(shí),監(jiān)視進(jìn)程和 Kaffe進(jìn)程同時(shí)工作:Kaffe的作用是解釋 Java字節(jié)碼,處理可能來自用戶的輸入和輸出;父進(jìn)程的作用是監(jiān)視子進(jìn)程的運(yùn)行,實(shí)施安全策略,可能對(duì)子進(jìn)程發(fā)出強(qiáng)制措施的指令,并寫入監(jiān)控記錄,直到子進(jìn)程終止,父進(jìn)程退出。父子進(jìn)程互通消息是通過信號(hào)實(shí)現(xiàn)的。在另一種情形下,也就是安全策略的事件集為 JNC調(diào)用的情形,父進(jìn)程在編譯完安全策略后,就進(jìn)入等待狀態(tài),直到子進(jìn)程退出。這時(shí),Kaffe在解釋主函數(shù)之前載入安全策略的 EFSA模型,安全策略的實(shí)施引擎將作為動(dòng)態(tài)鏈接庫(kù)的形式在 Kaffe上執(zhí)行。整個(gè)程序的模塊組成主要有四大部分:(1)支持模塊:主要有Hash表,雙向鏈表,數(shù)組,讀寫文件緩沖區(qū)等。讀寫文件緩沖主要是為了提高讀寫速度,提高程序效率,其中寫緩沖可以寫入文件,也可以寫入屏幕緩沖區(qū),或管道等,根據(jù)程序具體情況或有不同,給程序帶來極大靈活性。(2)安全策略分析模塊:包括詞法分析,語法分析和語義分析。(3)EFSA內(nèi)部表示:包括 EFSA內(nèi)部表示的各種表結(jié)構(gòu)和將這些結(jié)構(gòu)寫入或讀出文件的方法。表結(jié)構(gòu)包括變量表,事件表,轉(zhuǎn)換表和終止?fàn)顟B(tài)表,當(dāng)需要寫入文件時(shí),把這些表數(shù)據(jù)安順序?qū)懭雽懢彺?;?dāng)需要讀出文件內(nèi)容時(shí),通過詞法分析程序,按照EFSA文件格式順序讀取內(nèi)容到內(nèi)部表示。(4)安全策略實(shí)施模塊:通過一種實(shí)施機(jī)制實(shí)施 EFSA模型。在本文看來,實(shí)施模塊與實(shí)施機(jī)制是不一樣的,實(shí)施機(jī)制是具體到與系統(tǒng)相關(guān)的情況,或是進(jìn)程級(jí)的監(jiān)視,或是進(jìn)程內(nèi)部實(shí)現(xiàn),包括派生 kaffe進(jìn)程,注冊(cè)信號(hào)和監(jiān)視系統(tǒng)調(diào)用等,是面向系統(tǒng)調(diào)用或 JNC調(diào)用的。

      3 安全策略的編譯分析過程

      安全策略語言經(jīng)過編譯以后,得到一種EFSA形式的內(nèi)部表示,這種內(nèi)部表示不僅要包含安全策略語言提供全部信息,還要求實(shí)施過程的效率要高。分析過程包括詞法分析,語法分析和語義分析。詞法分析的另一個(gè)作用是將字符串常量轉(zhuǎn)換為字符串內(nèi)部數(shù)據(jù),存入 Hash表中,獲得字符串的句柄。無論是模式子樹還是表達(dá)式子樹,它們都是已經(jīng)按照操作符的優(yōu)先級(jí)順序表示的,模式子樹將在語義分析時(shí)轉(zhuǎn)化為自動(dòng)機(jī),表達(dá)式子樹將在語義分析時(shí)轉(zhuǎn)換為可執(zhí)行的二叉樹表示。語義分析是分析過程中最關(guān)鍵的一環(huán),因?yàn)樗獙⒄Z法樹轉(zhuǎn)換為 EFSA內(nèi)部表示。轉(zhuǎn)換過程包括三個(gè)主要方面:一是在構(gòu)造變量表的過程中,要解決變量類型,重名和初始化等問題;二是將用正則表達(dá)式表示的模式轉(zhuǎn)化為自動(dòng)機(jī)的過程;三是將可執(zhí)行的表達(dá)式轉(zhuǎn)化為二叉樹的表示形式,以方便執(zhí)行。下面分別討論三個(gè)方面。1.在構(gòu)造變量表時(shí),作如下規(guī)定:(1)規(guī)定全局變量聲明或在事件參數(shù)表中出現(xiàn)的變量為變量的定義性出現(xiàn),在表達(dá)式或語句中出現(xiàn)的變量為變量的使用性出現(xiàn),定義性出現(xiàn)的變量需要解決類型,重名問題,使用性出現(xiàn)的變量需要解決類型相容性的問題。(2)全局變量需要聲明,指定類型,且不能重名。(3)局部變量(又稱規(guī)則變量)根據(jù)事件集中事件的描述確定其類型。(4)用變量名和規(guī)則編號(hào)的二元結(jié)構(gòu)標(biāo)識(shí)一個(gè)變量,指定全局變量的規(guī)則編號(hào)可以為任意,這樣規(guī)則變量之間可以互相不影響,若全局變量和局部變量重名,則認(rèn)為是全局變量。2.實(shí)際上,構(gòu)造自動(dòng)機(jī)的過程,是確定狀態(tài)轉(zhuǎn)換矩陣和事件表兩個(gè)過程。3.主要是將樹形結(jié)構(gòu)的表達(dá)式轉(zhuǎn)換為二叉樹形式。表達(dá)式子樹在一般情況下每個(gè)節(jié)點(diǎn)之多有兩個(gè)子節(jié)點(diǎn),但序列運(yùn)算符除外(如函數(shù)調(diào)用實(shí)參和語句序列),這時(shí)只需要將序列運(yùn)算符下多個(gè)子節(jié)點(diǎn)順序的轉(zhuǎn)成二叉樹即可。

      4 監(jiān)控程序的實(shí)現(xiàn)細(xì)節(jié)

      在實(shí)施之前,還需要將內(nèi)部表示中的狀態(tài)轉(zhuǎn)換矩陣變成圖結(jié)構(gòu),因?yàn)橛孟∈杈仃嚤硎镜臓顟B(tài)轉(zhuǎn)換表很不利于查找,所有將其轉(zhuǎn)換為鄰接表表示。本文最終要實(shí)現(xiàn)的是一個(gè)監(jiān)控程序,是基于Linux操作系統(tǒng)上的用戶級(jí)的一個(gè)進(jìn)程監(jiān)視另一個(gè)進(jìn)程。監(jiān)控程序的實(shí)現(xiàn)分三步:第一步,修改 Kaffe源碼,重新編譯 Kaffe。Kaffe在解釋執(zhí)行 Java主方法前,根據(jù)命令行參數(shù)中的最后一個(gè)參數(shù)決定是由監(jiān)視進(jìn)程實(shí)施安全策略,還是由自己,若是由監(jiān)視進(jìn)程實(shí)施,則發(fā)送一個(gè)開始監(jiān)視的信號(hào)給監(jiān)視進(jìn)程;若是由自己實(shí)施,則需要載入 EFSA模型和實(shí)施引擎。主要的監(jiān)視工作應(yīng)該在 Kaffe中 sysdepCallMethod()函數(shù)之前和之后插入代碼完成。第二步,用 ptrace()系統(tǒng)調(diào)用進(jìn)行進(jìn)程監(jiān)視機(jī)制,因?yàn)?Java語言提供的本地方法調(diào)用,使得連Kaffe自己也不知道它所要解釋的Java方法有沒有進(jìn)行系統(tǒng)調(diào)用,所以必須用進(jìn)程級(jí)的監(jiān)視,這才是監(jiān)視進(jìn)程的工作重點(diǎn)。

      監(jiān)視進(jìn)程在fork()調(diào)用和exec(kaffe)調(diào)用之間要進(jìn)行ptrace(PTRACE_TRACEME)調(diào)用,使Kaffe處于被監(jiān)視狀態(tài),之后監(jiān)視進(jìn)程的每次ptrace(PTRACE_SYSCALL)中斷說明Kaffe進(jìn)行系統(tǒng)調(diào)用或返回。其中,ptrace(PTRACE_PEEKUSER可以獲得系統(tǒng)調(diào)用號(hào),用參數(shù) ptrace(PTRACE_GETREGS,®s)可以獲得系統(tǒng)調(diào)用的相關(guān)參數(shù)信息,用ptrace(PTRACE_PEEKUSER)可以獲得系統(tǒng)調(diào)用返回值的信息。第三步,給出實(shí)施細(xì)節(jié)。從事件發(fā)生開始,首先查找從當(dāng)前狀態(tài)表出發(fā)的是否有與之匹配的邊,再匹配參數(shù)類型,給變量賦值,檢查條件表達(dá)式是否為真,然后更新當(dāng)前狀態(tài)表,更新環(huán)境,最后如果當(dāng)前狀態(tài)表與終止?fàn)顟B(tài)表有交,則執(zhí)行終止?fàn)顟B(tài)所對(duì)應(yīng)的動(dòng)作函數(shù)。

      [1]金成植.程序理論和技術(shù)[M],吉林大學(xué)出版社,1997

      [2]劉磊等.編譯程序的設(shè)計(jì)與實(shí)現(xiàn)[M],高等教育出版社,2004

      猜你喜歡
      安全策略表達(dá)式調(diào)用
      基于認(rèn)知負(fù)荷理論的叉車安全策略分析
      基于飛行疲勞角度探究民航飛行員飛行安全策略
      一個(gè)混合核Hilbert型積分不等式及其算子范數(shù)表達(dá)式
      表達(dá)式轉(zhuǎn)換及求值探析
      核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
      淺析C語言運(yùn)算符及表達(dá)式的教學(xué)誤區(qū)
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      淺析涉密信息系統(tǒng)安全策略
      基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
      如何加強(qiáng)農(nóng)村食鹽消費(fèi)安全策略
      黄石市| 扎兰屯市| 宜兰市| 香格里拉县| 开远市| 博湖县| 云和县| 江津市| 慈利县| 屯昌县| 溧水县| 扶绥县| 分宜县| 淮南市| 千阳县| 正安县| 军事| 德钦县| 海晏县| 分宜县| 长治县| 西宁市| 日喀则市| 德昌县| 沐川县| 桂林市| 天等县| 汾阳市| 罗源县| 泗洪县| 聂拉木县| 钟山县| 新河县| 太原市| 广丰县| 宝丰县| 连江县| 泊头市| 青田县| 漳州市| 安平县|