軟體基因

軟體基因(Software Gene)是軟體體上具有功能或承載信息的二進制片段,其概念的靈感來源於生物基因,並借鑑生物信息學中關於基因分析的研究思路分析和度量軟體,解決現今軟體工程領域的分析難題。

與傳統的特徵不同,軟體基因實現了物質性與信息性的統一,具有原子性、表意性、穩定性、進化性等特性,從基因同源、遺傳變異、衍生進化的角度解釋軟體升級、代碼克隆、惡意代碼變種等問題。

一種可行的方法是將軟體體上的一段一致執行代碼定義為一個軟體基因。一致執行代碼是指在任何用戶輸入條件下,其中包含的每條指令要么全部被執行,要么全部不被執行。這與事務(Transaction)的概念十分類似,體現了軟體基因的原子性。

基本介紹

  • 中文名:軟體基因
  • 外文名:Software Gene
  • 提出組織:MalwareBenchmark
  • 載體:二進制代碼片段
一、起源,二、定義,三、表現形式,四、特性,4.1 原子性,4.2 表意性,4.3 穩定性,4.4 進化性,五、套用探索,5.1基因,5.2套用,六、學術活動,

一、起源

猶如生物進化,軟體在系統環境不斷變化和安全防護手段持續升級的對抗中,自身也逐漸進化,而且這種進化衍生的速度和隱蔽性遠遠高於自然生物進化的過程,這種進化和衍生的效率和危害,使得傳統的軟體分析方法失效,人們更多從大數據視角、關聯分析中尋找線索和規律。由此,在信息領域內引入基因研究的方法出現了。
生物學中的基因是一段連續的DNA序列,由鹼基為A、T、C、G的脫氧核糖核苷酸排列組成,遺傳信息則存儲在A、T、C、G的特定排列之中。而信息學中的軟體基因是攜帶信息的連續二進制片段,其決定著樣本的功能和行為特性,同時又是物理可檢測的二進制片段,這與決定生物性狀的生物基因具有DNA序列的物理可檢測形式,是完全對應的,這也是軟體基因概念以及分析方法提出的靈感來源,如圖1所示。軟體基因經過CPU中指令集翻譯,形成彙編碼,並由多段軟體基因共同構成了一個複雜的軟體功能。
軟體基因
圖1 生物基因與軟體基因的對應關係

二、定義

軟體基因是軟體體上具有功能或承載信息的二進制片段,是軟體功能實現的原子單位,支撐著軟體的基本構造,存儲著軟體生命周期的全部信息,是軟體編制者的語義實現、編譯器、基礎庫和系統環境互相依賴、影響、制約的結果。
一個軟體基因的長度是比較短的,代表的功能一般較為簡單。一個程式的某個複雜功能需要由多個軟體基因組合起來共同完成,這種組合的方式是依據控制流來決定的,我們將其稱為基因網路(Gene Network),用以描述不同基因之間的關聯關係。
下表從含義、特性、優勢、意義等四個方面詳細對比了傳統的特徵檢測技術與軟體基因分析技術的差異所在。
-
傳統特徵
軟體基因
定義
可以標識目標軟體的二進制片段
軟體體上具有功能或承載信息的二進制片段
特性
唯一標識性
原子性、表意性、穩定性、進化性
優勢
簡單且識別過程快
從微觀視角認知以實現化繁為簡
意義
實現對目標軟體的一一映射
揭示遺傳變異和衍生進化規律
傳統的特徵通常是指可以標識目標軟體的二進制片段,其特性是唯一標識性;而軟體基因關注的重點不在於唯一性,而是所提取的二進制片段是否具有功能語義或承載軟體的關鍵信息,這些片段具備原子性、表意性、穩定性、進化性等特性。相對而言,特徵檢測的思想較為簡單,算法匹配效率高,但其內容並不一定具備關鍵語義信息,且易被繞過,而基因則是從微觀視角認知軟體,實現化繁為簡。
軟體基因的提出最重要意義就在於:與傳統的特徵檢測技術不同,軟體基因檢測方法不僅可以識別出目標樣本,還能分析與目標樣本存在相似性或具備同源性的其他潛在樣本,從而實現關聯挖掘和衍生進化規律的探索。

相關詞條

熱門詞條

聯絡我們