本發明專利技術所述的一種基于COP的增強軟件安全性的方法,首先定義應用程序中每個類需要的上下文信息所相關的層;采用一個規約描述語言解析器,自動生成符合COP方法的有安全規約驗證的新代碼,動態插入原先的代碼中;在應用程序運行過程,上下文信息收集線程按一定頻率采集傳感器數據及函數的調用情況,并發送到事件處理器;如果滿足定義的安全觸發條件則激活對原有程序流程的反饋控制,暫停或改變原有程序的執行;如果條件狀態由滿足變為不滿足則恢復原有程序的執行。本發明專利技術提供了一個以上下文保存為核心的運行支撐機制,提高了程序運行的安全性。
【技術實現步驟摘要】
本專利技術涉及一種基于COP ( -Oriented Programming,面向編程)的增強軟件安全性的方法,特別涉及了控制軟件中對系統傳感器的抽象描述方法,動態地增加傳感器以達到增強系統環境感知能力,提高系統安全性的目的。
技術介紹
軟件的上下文正成為軟件開發要面對的一個非常重要的問題,但是主流編程語言幾乎沒有提供準確地描述上下文的能力,COP編程方法的出現很好的彌補了這一不足。COP中任何計算訪問信息都被視為上下文信息,任何一種COP的方法都應該包含以下一些屬性 1)行為變量(Behavioralvariations)行為變量表示那些能替代或者改變軟件基本行為的行為集合; 2)行為層(Layers):行為層是那些相關的上下文依賴行為變量的集合; 3)動態行為變量激活(Activation):C0P編程方法中行為變量能在運行時刻被激活從而影響系統的行為的機制; 4)上下文(Context):所有可計算的和可獲取的信息都可以成為行為變量所依賴的上下文; 5)作用域(Scoping):精確控制激活或注銷Layer的作用域,同一個行為變量在同一時刻可能在不同的作用域中分別被激活或注銷。COP語言的一個設計問題就是對layer激活的控制,即什么時候、哪個Layer應該在程序執行過程的什么位置被激活或注銷的問題。目前的研究提出主要有兩類方法,一種采用的是一種稱為塊結構體(block-structured)的方法,如ContextJ中的with表達式。這種方法的特點是上下文環境的改變和對應行為的激活/注銷是在程序的同一處或者同一個線程內進行的,同時在退出表達式塊后即注銷了對應的Layer。另一種方法是針對Appeltauer等人指出的很多layer的激活/注銷是由外部事件所引發,而這類行為的激活不適宜采用塊結構體的方法來實現。為此Tetsuo等人設計了 EventCJ,采用的是一種稱為事件驅動的方法(Event-based Context Transition),這種方法可以分離上下文環境的變化檢測與行為的激活。目前大部分的COP語言采用的是塊結構體的方法,這類方法多采用線程粒度的layer激活策略,雖然塊語句可以很方便的表示在一個具體的方法調用中何時激活layer,但是對于那些由程序執行過程中隨時發生的外部事件(如進入某座建筑或者傳感器數據發生變化)觸發的上下文變化并不適用。對于安全控制而言,危險狀態是隨機發生并且對其的響應處理需要非常及時,即任何線程的執行都有可能隨時被打斷。因此線程粒度的layer激活不適用于軟件的安全性升級。EventCJ基于事件和由事件觸發的layer切換規則來管理layer的激活。在EventCJ中,事件由類似AspectJ切點的方式定義,layer切換規則由基于規則的描述語言定義。EventCJ中事件的發生可以立即觸發layer的切換發生,從而影響程序的執行流程,因此對于軟件的安全控制是合適的,但是EventCJ的不足之處在于,首先其事件的描述能力較弱,它只能描述程序中變量或函數的當前狀態,對于狀態的變化過程則無法直觀地表達;其次EventCJ雖然提供了 layer切換規則描述,但是對于切換時layer的信息沒有提供保存和恢復的功能,這對于我們前面提到的程序行為切換時臨界資源的訪問控制不能提供明確的支持。
技術實現思路
本專利技術所要解決的技術問題是提供一種基于COP的控制軟件安全性增強方法,其可以較好的支持系統安全需求的動態變化。如圖1,本專利技術所述的一種基于COP的增強軟件安全性的方法,其包括以下步驟 1)定義應用程序中每個類需要的上下文信息所相關的層;· 2)采用一個規約描述語言解析器,自動生成符合COP方法的有安全規約驗證的新代碼,動態插入原先的代碼中;新代碼中包括有傳感器數據信息; 3)在應用程序運行過程,上下文信息收集線程按一定頻率采集傳感器數據及函數的調用情況,并發送到事件處理器; 4)事件處理器檢測事件是否滿足定義的安全控制觸發條件,根據結果分別為; a.如果滿足定義的安全觸發條件則激活對原有程序流程的反饋控制,暫停或改變原有程序的執行; b.如果條件狀態由滿足變為不滿足則恢復原有程序的執行。上述步驟2)所述新代碼中,對于上下文信息用一個向量〈J,S〉表示,其中J表示在Java程序中對應的表示變量,S表示對應的傳感器,并默認一個傳感器一次采集的數據可以在Java中找到對應的數據類型來表示;S包括屬性向量〈N,P, G, S〉,分別表示傳感器名稱,傳感器端口,獲取數據方法和屬性設置。上述步驟4)事件處理器在運行過程中維護一張保存所有監控信息當前值的表,當收到信息時就更新該表,然后驗證所有定義的事件和條件的真值,并判斷是否滿足定義的安全控制觸發條件。傳統的控制軟件設計按照功能來劃分模塊,但是由于系統的傳感器、執行器會根據需要有額外的增刪,系統的上下文信息會有動態的改變,本專利技術按照軟件的執行環境來劃分模塊,并且根據COP的編程方法,在經典的ECA(Event-Condition-Action)模型基礎上,改進了 Action部分在實際應用中的局限性,提供了一個以上下文保存為核心的運行支撐機制,提高了程序運行的安全性,為此編寫了一個安全規約描述腳本語言的解析器及其Eclipse插件工具,實現自定義升級規則的描述語言。附圖說明圖I是本專利技術的流程圖。具體實施例方式本專利技術的描述 本專利技術采用新的環境上下文信息描述語言,用于形式化的描述新增的傳感器數據采樣信息,數據格式信息等等。上下文信息用一個向量〈J, S〉表不,其中J表不在Java程序中對應的表不變量,S表示對應的傳感器。我們默認一個傳感器一次采集的數據可以在Java中找到對應的數據類型來表示,例如光傳感器采集的光強度值可以用一個Integer類型來表示。傳感器S包括屬性向量〈N,P, G, S〉,分別表示傳感器名稱,傳感器端口,獲取數據方法和屬性設置。屬性的設置一般包括采樣頻率、數據的過濾方式等等。上下文信息收集作為一個單獨的線程運行,可以根據指定的頻率采集傳感器信息,數據發送到事件處理器,事件處理器和信息收集線程通過Java提供的管道流 PipeInputStream, PipeOutputStream 通信。事件E和條件C的語法關系如下 〈C〉::= C [ <E>, <E> ) I !〈C〉I〈C〉&&〈C〉I〈C〉I I〈C〉I〈C〉=>〈C〉<E> ::= e I start ( <C> ) | end( <C> ) | <E> && <E> | <E> | | <E> | <E> when<C>。事件處理器需要隨時判定定義的事件是否發生。設想上下文信息收集線程不斷把監測的傳感器數據或者監控的函數的調用情況發送到事件處理器,一旦收到傳來的信息,處理器就需要驗證。事件處理器在運行過程中維護一張保存所有監控信息當前值的表,當收到信息時就更新該表,然后驗證所有定義的事件和條件的真值。因為條件是定義在監控變量上的一個布爾表達本文檔來自技高網...
【技術保護點】
一種基于COP的增強軟件安全性的方法,其特征在于包括以下步驟:1)定義應用程序中每個類需要的上下文信息所相關的層;2)采用一個規約描述語言解析器,自動生成符合COP方法的有安全規約驗證的新代碼,動態插入原先的代碼中;新代碼中包括有傳感器數據信息;3)在應用程序運行過程,上下文信息收集線程按一定頻率采集傳感器數據及函數的調用情況,并發送到事件處理器;4)事件處理器檢測事件是否滿足定義的安全控制觸發條件,根據結果分別為;a.如果滿足定義的安全觸發條件則激活對原有程序流程的反饋控制,暫停或改變原有程序的執行;b.如果條件狀態由滿足變為不滿足則恢復原有程序的執行。
【技術特征摘要】
【專利技術屬性】
技術研發人員:呂建,徐鋒,陳智勇,
申請(專利權)人:南京大學,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。