国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種提高軟件系統(tǒng)安全性的軟件熱插拔方法

      文檔序號:6466000閱讀:274來源:國知局
      專利名稱:一種提高軟件系統(tǒng)安全性的軟件熱插拔方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及的是一種軟件熱插拔方法,尤其是基于中間接口表技術(shù)的軟件熱 插拔方法。
      (二)
      背景技術(shù)
      隨著計(jì)算機(jī)性能的不斷提升,計(jì)算機(jī)系統(tǒng)變得越來越復(fù)雜。軟件系統(tǒng)復(fù)雜性 的增加給系統(tǒng)的配置和維護(hù)帶來很大的困難,很多系統(tǒng)和軟件的維護(hù)工作需要經(jīng) 過特殊培訓(xùn)的人員才能完成。并且系統(tǒng)的復(fù)雜性仍然在不斷的提升。許多軟件系 統(tǒng)需要為客戶提供不間斷服務(wù),軟件的動態(tài)升級技術(shù)因此成為當(dāng)今軟件維護(hù)領(lǐng)域 的一個(gè)重要研究課題。
      軟件熱插拔概念是基于軟件動態(tài)升級的需求提出的,但是由于軟件系統(tǒng)的高 復(fù)雜性及各種條件的限制,國內(nèi)外相關(guān)研究并不多。比較有代表性的文章只有 《Enabling autonomic behavior in systems software with hot swapping》(IBM SYSTEMS JOURNAL, VOL 42, NO 1, 2003)(譯《利用熱插拔技術(shù)實(shí)現(xiàn)軟件系 統(tǒng)的自律行為》(IBM系統(tǒng)期刊第42巻,第1期,2003年)),《SwapBox: a Hot-Swapping Framework for Swappable JavaBeans》 (In Proc. of the 6th International Workshop on Component-Oriented Programming —WCOP 2001 at the 15th European Conference on Object-Oriented Programming - ECOOP 2001 (Budapest, Hungary, June 2001). On-line at:
      http:〃www.research.microsoft.com/ cszypers/events/WCOP2001/Esfandiari.doc)
      (譯《SwapBox: —種可交換JavaBeans的熱交換框架》(第十五屆面向?qū)ο蟪?序設(shè)計(jì)歐洲會議第六屆面向組件程序設(shè)計(jì)國際會議(布達(dá)佩斯,匈牙利,2001年 6月)))以及《Dynamic evolution of network management software by software hot-swapping》(Integrated Network Management Proceedings, 2001 IEEE/IFIP International Symposium on, 14-18 May 2001 Page(s):63 - 76)(譯:《利用軟件熱 插拔技術(shù)實(shí)現(xiàn)網(wǎng)絡(luò)管理軟件的動態(tài)演化》(200l年度IEEE/IFIP國際學(xué)術(shù)會議集 成網(wǎng)絡(luò)管理專題討論會,2001年5月14日一18日,63—76頁))三篇提出了具
      體的軟件熱插拔方法。《Enabling autonomic behavior in systems software with hot swapping》的熱插拔實(shí)驗(yàn)中,采用對象翻譯表解決功能對象引用的透明性問題, 該表維護(hù)某對象對其他對象的所有引用指針,表的結(jié)構(gòu)較為復(fù)雜并且對指針的維 護(hù)存在隱患。SwapBox文章中提出的方法需修改BeanBox (BeanBox是BDK中 自帶的一個(gè)用于測試Beans的工具,可以用它可視地管理Beans的屬性和事件)。 BeanBox只是一個(gè)測試工具,修改后的SwapBox仍是一個(gè)測試工具,因此該方 法沒有實(shí)際應(yīng)用價(jià)值。第三篇文章提出的方法采用代理模式,為每個(gè)功能模塊配 置相應(yīng)的代理,解決了客戶引用透明性問題,該方法的缺點(diǎn)是,維護(hù)與功能模塊 數(shù)量相同的Proxy所產(chǎn)生的系統(tǒng)開銷很大,甚至可能超過系統(tǒng)本身。上海交大的 梁哲聰在其碩士論文中提到了標(biāo)準(zhǔn)面向?qū)ο缶幊趟枷搿媒涌趯?shí)現(xiàn)對象引用 透明,但是并沒有用到表的概念(這與本發(fā)明在實(shí)際操作中很不相同,其文中提 到的表用來做狀態(tài)傳遞而非熱插拔動作),而且直接通過接口訪問對象在實(shí)現(xiàn)熱 插拔時(shí)會遇到很多技術(shù)問題在該文中也并沒有說明解決辦法,如動態(tài)編譯等。其 它的文章都是針對現(xiàn)有方法提出的一些系統(tǒng)模型和約束條件等。
      軟件熱插拔只是一種概念,其實(shí)現(xiàn)方法并不唯一,現(xiàn)有的熱插拔方法并不完 善。如沒有考慮軟件安全性等因素;系統(tǒng)開銷過大,占用資源甚至超過系統(tǒng)本身; 實(shí)現(xiàn)方法較復(fù)雜,如需修Java虛擬機(jī)等。
      發(fā)明內(nèi)容
      本發(fā)明的目的在于提供一種能夠加強(qiáng)系統(tǒng)的自我保護(hù)能力從而提高系統(tǒng)的 安全性;使軟件的結(jié)構(gòu)更加清晰與易于管理;降低系統(tǒng)開銷的一種提高軟件系統(tǒng) 安全性的軟件熱插拔方法。
      本發(fā)明的目的是這樣實(shí)現(xiàn)的
      1)將目標(biāo)系統(tǒng)中每個(gè)類的公有方法和公有變量抽象為一個(gè)接口,存放于一 個(gè)接口文件夾中,每個(gè)類實(shí)現(xiàn)對應(yīng)的接口;
      2) 通過對接口文件夾的遍歷,以接口名為鍵值,該接口類實(shí)例為返回值, 建立一個(gè)包含所有接口的中間接口表;
      3) 調(diào)用者提出對被調(diào)用類的訪問要求,中間接口表屏蔽直接訪問,處理該 請求;
      4) 中間接口表通過被調(diào)用類接口的名字,查找匹配的鍵值;
      5) 若為首次訪問該接口,轉(zhuǎn)步驟6);若非首次訪問,轉(zhuǎn)步驟9);
      6) 中間接口表問詢監(jiān)視器,判斷軟件主體和類冗余文件包中的對應(yīng)文件的 大小以及修改日期是否發(fā)生變化,只要發(fā)生文件改變,轉(zhuǎn)步驟7);若無文件改 變,轉(zhuǎn)步驟8);
      7) 中間接口表調(diào)用類定位方法,將接口重定向于類冗余文件包中實(shí)現(xiàn)該接 口的類,將其載入內(nèi)存并返回該類的實(shí)例,轉(zhuǎn)步驟12);
      8) 將軟件主體中實(shí)現(xiàn)該接口的類載入內(nèi)存并返回其實(shí)例,轉(zhuǎn)步驟12);
      9) 判斷接口定向若接口定向于軟件主體中的類文件,重復(fù)6) 8);若接 口定向于類冗余文件包中的類文件,轉(zhuǎn)步驟10);
      10) 只檢查類冗余文件包中的類文件的大小以及修改日期是否發(fā)生變化如 發(fā)生變化,視為系統(tǒng)的升級操作,動態(tài)編譯該文件并將其載入內(nèi)存;如未發(fā)生變 化,轉(zhuǎn)步驟ll);
      11) 返回類冗余文件包中實(shí)現(xiàn)該接口的類實(shí)例,轉(zhuǎn)步驟12);
      12) 系統(tǒng)繼續(xù)向下執(zhí)行。
      本發(fā)明利用面向?qū)ο笳Z言的多態(tài)性,提出中間接口表技術(shù),并提出類冗余文 件包的概念。需將軟件中的每一個(gè)類都抽象成一個(gè)接口。能夠使用本熱插拔方法 的軟件應(yīng)具有如附圖1所示的體系結(jié)構(gòu)。包括一個(gè)全局代理、軟件主體以及一個(gè) 類冗余文件包。接下來對各部分進(jìn)行詳細(xì)說明。
      全局代理中間接口表由全局代理維護(hù),表中的每個(gè)元素的鍵值為接口名, 返回值為該接口類的對象。它能夠接收監(jiān)視器傳來的消息,然后對發(fā)生變化的類 做接口重定向操作。
      監(jiān)視器存在于全局代理中,對軟件主體和類冗余文件包中每一對對應(yīng)的類 文件進(jìn)行監(jiān)視。當(dāng)發(fā)現(xiàn)軟件主體或者類冗余文件包中任何一個(gè)類文件發(fā)生變化 時(shí),通知代理做接口重定向操作。
      軟件主體即軟件編譯后的結(jié)構(gòu)目錄。
      類冗余文件包這個(gè)包的目錄結(jié)構(gòu)與軟件主體的目錄結(jié)構(gòu)完全相同,只是根 目錄不同。而之所以將其稱為類冗余文件包,是因?yàn)樗⒎擒浖黧w完全的冗余, 它只是目錄結(jié)構(gòu)與軟件主體相同,相對應(yīng)的文件名相同,而文件內(nèi)容可以不同(在 系統(tǒng)運(yùn)行的最初是相同的),以便完成文件的升級。
      本發(fā)明基于軟件熱插拔的特點(diǎn)將其用于提高系統(tǒng)安全性,迄今為止還沒有人 涉足這一領(lǐng)域。并且,提出了一種新的軟件熱插拔方法以及適用該方法的軟件應(yīng) 滿足的條件,經(jīng)驗(yàn)證,該方法具有一定的實(shí)用價(jià)值和發(fā)展前景。相對于現(xiàn)有的軟 件熱插拔方法,本發(fā)明的優(yōu)點(diǎn)有(1)本方法能用于容忍軟件被攻擊、某些程序 文件被惡意修改等破壞并采取對應(yīng)防護(hù)行為,能夠加強(qiáng)系統(tǒng)的自我保護(hù)能力從而 提高系統(tǒng)的安全性,現(xiàn)有的軟件熱插拔方法均未考慮或被用來提高軟件系統(tǒng)的安 全性;(2)不同于現(xiàn)有的熱插拔方法,提出中間接口表技術(shù),維護(hù)一個(gè)結(jié)構(gòu)相對 簡單的表并使軟件的結(jié)構(gòu)更加清晰與易于管理;(3)不同于現(xiàn)有的熱插拔方法,
      只使用一個(gè)全局代理,降低了系統(tǒng)開銷。
      (四)


      圖1為應(yīng)用本方法的軟件體系結(jié)構(gòu)。 圖2為本發(fā)明的流程圖。
      具體實(shí)施方式
      下面結(jié)合附圖舉例對本發(fā)明做更詳細(xì)地描述
      結(jié)合圖2,本發(fā)明的提高軟件系統(tǒng)安全性的軟件熱插拔方法的工作流程如下
      1) 將系統(tǒng)中每個(gè)類的公有方法和公有變量抽象為一個(gè)接口,存放于一個(gè)接 口文件夾中,每個(gè)類實(shí)現(xiàn)對應(yīng)的接口;
      2) 通過對接口文件夾的遍歷,以接口名為鍵值,該接口類實(shí)例為返回值, 建立一個(gè)包含所有接口的中間接口表;
      3) 調(diào)用者提出對被調(diào)用類的訪問要求,中間接口表屏蔽直接訪問,處理該 請求;
      4) 中間接口表通過被調(diào)用類接口的名字,查找匹配的鍵值;
      5) 若為首次訪問該接口,轉(zhuǎn)步驟6);若非首次訪問,轉(zhuǎn)步驟9);
      6) 中間接口表問詢監(jiān)視器,判斷軟件主體和類冗余文件包中的對應(yīng)文件的
      大小以及修改日期是否發(fā)生變化。若軟件主體中的文件發(fā)生改變,說明系統(tǒng)受到
      了攻擊,因?yàn)檎G闆r下軟件主體中的文件是不允許修改的;若類冗余文件包中 的文件發(fā)生變化,說明管理員對系統(tǒng)進(jìn)行了升級。(類冗余文件包的路徑是隱蔽 的,由系統(tǒng)管理員維護(hù))只要發(fā)生文件改變,轉(zhuǎn)步驟7);若無文件改變,轉(zhuǎn)步 驟8);
      7) 中間接口表調(diào)用類定位方法,將接口重定向于類冗余文件包中實(shí)現(xiàn)該接 口的類,將其載入內(nèi)存并返回該類的實(shí)例,轉(zhuǎn)步驟12);
      8) 將軟件主體中實(shí)現(xiàn)該接口的類載入內(nèi)存并返回其實(shí)例,轉(zhuǎn)步驟12);
      9) 判斷接口定向若接口定向于軟件主體中的類文件,重復(fù)6) 8);若接 口定向于類冗余文件包中的類文件,轉(zhuǎn)步驟10);
      10) 只檢査類冗余文件包中的類文件的大小以及修改日期是否發(fā)生變化如 發(fā)生變化,視為系統(tǒng)的升級操作,動態(tài)編譯該文件并將其載入內(nèi)存;如未發(fā)生變 化,轉(zhuǎn)步驟ll);
      11) 返回類冗余文件包中實(shí)現(xiàn)該接口的類實(shí)例,轉(zhuǎn)步驟12);
      12) 系統(tǒng)繼續(xù)向下執(zhí)行。
      本發(fā)明的方法需要如附圖1所示的軟件體系結(jié)構(gòu)支持,訪問者通過代理中的 中間接口表訪問被調(diào)用者,中間接口表屏蔽接口重定向,完成熱插拔操作。中間 接口表中的接口不同于普通編程中的接口 ,普通編程中的接口是在程序設(shè)計(jì)時(shí)先 設(shè)計(jì)接口,再設(shè)計(jì)實(shí)現(xiàn)接口的類,而中間接口表中的接口是在類設(shè)計(jì)完成時(shí)對一 個(gè)類的抽象。中間接口表技術(shù)不影響類對其它普通接口的實(shí)現(xiàn)。
      雖然要實(shí)現(xiàn)通過代理訪問對象,但是要做到良好封裝,使調(diào)用時(shí)盡量簡潔, 示例代碼中調(diào)用如下所示
      Sort sl = (Sort)myProxy.createSpecialInstance("Sort");
      sl.sortlmpl();
      sl.sortMethod();
      隱藏中間接口表等復(fù)雜操作,只留給用戶一個(gè)createSpecialInstance ()方法 顯式調(diào)用,之后對實(shí)例的操作便與普通程序相同。
      實(shí)施例將中間接口表封裝于createSpecialInstance ()中, 一系列的熱插拔邏 輯與操作都在這里實(shí)現(xiàn)。能在出現(xiàn)軟件主體中文件被修改的攻擊行為,以及冗余 文件包中文件被修改或Java文件被修改等升級操作的情況下,實(shí)現(xiàn)以類文件為 單位的軟件熱插拔。該方法示例代碼如下 String classNam:
      className = htForClassName.get(interfaceName).toString(); Object o = this.htForLoadedClass.get("swap." + className); if(o==null)
      Object ol = this.htForLoadedClass.get("src." + className); if(ol==null)
      {
      if(this.monitor("src", className)&&this.monitor("swap", className))
      ol = myClassLoader.load("src" ,"src," + className); this.htForLoadedClass.put("src." + className,ol); return ol^
      else
      o = myClassLoader.load("swap" ,',swap." + className); this.htForLoadedClass.put("swap." + className,o); return o;
      else if(this else
      o = myClassLoader.load("swap" ,"swap." + className); this.htForLoadedClass.put("swap." + className,o); return o;
      ■monitor(',src", className)&&this.monitor("swap", className)) return ol;
      else
      String[] args2 ={"C:/Documents and
      Settings/Administrator/workspace/Impl/swap/" + className + "Java" ^
      String Writer err = new String Writer();
      Print Writer errPrinter = new Print Writer(err);
      String argsl[] = buildJavacArgs(args2);
      int resultCode = com.sun.tools.javac,Main,cj^7e(argsl,
      errPrinter);
      errPrinter.close();
      o = myClassLoader.load("swap" ,"swap," + className); this,htForLoadedClass.put("swap.', + className,o); return o;
      其中需要用到的輔助方法有monitor ()、 buildJavacArgs ()等。Monitor () 方法為監(jiān)視器的被動實(shí)現(xiàn),負(fù)責(zé)監(jiān)視文件是否發(fā)生變化,其部分示例代碼如下-modifiedTime = f.lastModified(); if(((String)htForClassTime.get(packages + "■" + className)).equals(Long.fo5W"g(modifiedTime))) return true;
      else
      return false;
      buildJavacArgs ()方法功能為當(dāng)某類文件源代碼發(fā)生改變時(shí),將其動態(tài)編譯,
      其部分示例代碼如下
      ArrayList args = new ArrayList(); for (int i = 0; i < srcFiles.length; i++)
      args.add(srcFiles[i]); return (String[]) args.toArray(new String[args.size()]);
      本實(shí)施例是對本發(fā)明的驗(yàn)證性實(shí)現(xiàn),證明了本方法能夠在軟件被惡意修改及 動態(tài)升級時(shí)能夠?qū)崿F(xiàn)軟件熱插拔,提高了軟件的安全性并兼容了軟件動態(tài)升級的 需求。本實(shí)施例只是本發(fā)明的一種簡單實(shí)現(xiàn),并非最優(yōu),僅供驗(yàn)證之用(如未實(shí) 現(xiàn)主動周期性監(jiān)視等)。現(xiàn)有方法中己提出很多傳遞狀態(tài)的方案,本方法采用了 java反射機(jī)制來進(jìn)行狀態(tài)傳遞。實(shí)驗(yàn)結(jié)果表明,本方法切實(shí)有效,達(dá)到了預(yù)期效 果。
      權(quán)利要求
      1.一種提高軟件系統(tǒng)安全性的軟件熱插拔方法,其特征是1)將目標(biāo)系統(tǒng)中每個(gè)類的公有方法和公有變量抽象為一個(gè)接口,存放于一個(gè)接口文件夾中,每個(gè)類實(shí)現(xiàn)對應(yīng)的接口;2)通過對接口文件夾的遍歷,以接口名為鍵值,該接口類實(shí)例為返回值,建立一個(gè)包含所有接口的中間接口表;3)調(diào)用者提出對被調(diào)用類的訪問要求,中間接口表屏蔽直接訪問,處理該請求;4)中間接口表通過被調(diào)用類接口的名字,查找匹配的鍵值;5)若為首次訪問該接口,轉(zhuǎn)步驟6);若非首次訪問,轉(zhuǎn)步驟9);6)中間接口表問詢監(jiān)視器,判斷軟件主體和類冗余文件包中的對應(yīng)文件的大小以及修改日期是否發(fā)生變化,只要發(fā)生文件改變,轉(zhuǎn)步驟7);若無文件改變,轉(zhuǎn)步驟8);7)中間接口表調(diào)用類定位方法,將接口重定向于類冗余文件包中實(shí)現(xiàn)該接口的類,將其載入內(nèi)存并返回該類的實(shí)例,轉(zhuǎn)步驟12);8)將軟件主體中實(shí)現(xiàn)該接口的類載入內(nèi)存并返回其實(shí)例,轉(zhuǎn)步驟12);9)判斷接口定向若接口定向于軟件主體中的類文件,重復(fù)6)~8);若接口定向于類冗余文件包中的類文件,轉(zhuǎn)步驟10);10)只檢查類冗余文件包中的類文件的大小以及修改日期是否發(fā)生變化如發(fā)生變化,視為系統(tǒng)的升級操作,動態(tài)編譯該文件并將其載入內(nèi)存;如未發(fā)生變化,轉(zhuǎn)步驟11);11)返回類冗余文件包中實(shí)現(xiàn)該接口的類實(shí)例,轉(zhuǎn)步驟12);12)系統(tǒng)繼續(xù)向下執(zhí)行。
      全文摘要
      本發(fā)明提供的是一種提高軟件系統(tǒng)安全性的軟件熱插拔方法。利用面向?qū)ο笳Z言的多態(tài)性,提出中間接口表技術(shù)、類冗余文件包的概念。全局代理中間接口表由全局代理維護(hù),表中的每個(gè)元素的鍵值為接口名,返回值為該接口類的對象。監(jiān)視器存在于全局代理中,對軟件主體和類冗余文件包中每一對對應(yīng)的類文件進(jìn)行監(jiān)視。軟件主體即軟件編譯后的結(jié)構(gòu)目錄。類冗余文件包這個(gè)包的目錄結(jié)構(gòu)與軟件主體的目錄結(jié)構(gòu)完全相同,只是根目錄不同。本發(fā)明的優(yōu)點(diǎn)有能夠加強(qiáng)系統(tǒng)的自我保護(hù)能力從而提高系統(tǒng)的安全性;提出中間接口表技術(shù),維護(hù)一個(gè)結(jié)構(gòu)相對簡單的表并使軟件的結(jié)構(gòu)更加清晰與易于管理;只使用一個(gè)全局代理,降低了系統(tǒng)開銷。
      文檔編號G06F21/00GK101369228SQ20081013732
      公開日2009年2月18日 申請日期2008年10月14日 優(yōu)先權(quán)日2008年10月14日
      發(fā)明者周玉新, 王慧強(qiáng), 王海峰, 董璽坤 申請人:哈爾濱工程大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1