基本介紹
概念意義,實驗前提,實驗約定,測試例構造方法,4.1 差模注入實驗,4.2 時間協同差模實驗,4.3 N-1模注入實驗,4.4 N模注入實驗,4.5 反饋控制環路注入測試,4.6 性能度量,
概念意義
基準功能實驗對象一般是採用功能等價條件下的冗餘算法或結構的實體,即由可歸一化攻擊表面封閉的擬態構造系統。其評估指標主要是差模擾動抑制率和共模擾動逃逸機率,測試方法一般是將差模攻擊測試例直接或間接的注入到某個冗餘執行體中,或者將共模攻擊測試例注入到多個冗餘執行體中,再用可歸一化攻擊表面的通道和方法激活這些測試例,然後觀察統計差模擾動的抑制機率和共模擾動的逃逸機率。這種實驗方法不依賴實驗者經驗和技巧的情況,可以用制式化的實驗流程給出可量化的度量結論,但是需要被測對象設計人員配合設計差模和共模測試例。
實驗前提
基準功能實驗是以被測目標給定算法或構造的威脅分析和安全性設計為基本依據,以提供的輸入通道、語法語義、規則方法等作為可歸一化的攻擊表面,實驗目標對象在“白盒條件下”,通過歸一化表面攻擊通道注入給定的差模和共模測試例或測試例集合,檢定其安全性、可靠性、可用性設計是否滿足聲稱的可量化指標。需要指出的是,內源性安全功能是目標對象不可分割的功能,白盒注入測試方法只用於檢定算法或構造的內生安全功能和相關性能,不應當造成被測對象其他服務功能和性能的不可恢復損壞,也不包括對可歸一化攻擊表面外的安全性、可靠性、可用性進行測試的內容。
實驗約定
(1)一個注入測試例,由嵌入被測對象源程式的測試接口代碼和通過攻擊可達路徑注入的測試代碼兩部分組成。
(2)凡是嵌入被測對象執行體或運行場景中的測試接口代碼功能相同,包括通過攻擊表面通道與合規方法接收指令代碼和數據包或更新測試內容的功能,以及激活或關閉測試例的功能。
(3)通過測試接口注入的測試代碼屬於記憶體駐留型的可執行代碼,且不應當導致被測對象功能不可恢復的損壞。
(4)測試代碼應當具有影響所在執行體或運行場景輸出矢量內容或控制其輸出的能力。
(5)凡是測試代碼功能兩兩不相同的測試例稱為“差模測試例”,兩兩相同的稱為“共模測試例”。
(6)所有執行體或運行場景F內原則上都還可以設定測試接口,但是同時駐留測試代碼的數量f需滿足n≤f≤F/2,n當前服務場景的余度數。
(7)實驗階段需開啟系統管理界面以便整個實驗過程可觀察。
測試例構造方法
由於被測對象的異構執行體或運行場景軟硬體支撐環境常常只有可執行目標代碼甚至只是物理器件,測試例不僅構造困難而且往往不可注入,即使能夠植入,功能驗證也頗具挑戰性。所以,在應用程式原始碼層面上構建測試例接口、設計調用功能是可能的選擇。測試接口應設計成具有通過可歸一化攻擊表面輸入通道及合規方法請求激活的“後門功能”,能夠藉助攻擊表面接收上傳的測試代碼,並可通過應用程式實施線上控制注入測試代碼的執行。當然,有條件情況下也不排除在其他層面(例如作業系統層面)設定測試接口及相關功能的做法。需要指出的是,除了測試接口代碼外,上傳的目標對象測試代碼應當是記憶體駐留型的可執行代碼,以便靈活的定義或改變測試功能,增強注入測試的完備性。
在套用層設定實驗接口及通過攻擊表面注入測試代碼還可達成另外二個目的:一是實驗效果具有置信度。事實上,無論基於什麼層面漏洞後門的攻擊,只要能精確控制目標對象執行體或運行場景輸出矢量的表達,也就是攻擊所能達成的最高目標了。因而只要保證套用軟體按約定的要求調用測試接口功能,激活注入的測試代碼,就能直接或間接的威脅系統設定的安全目標;二是可通過系統管理界面觀察執行體或運行場景異構資源配置情況。變化注入測試代碼可以驗證運行環境的CPU類型、OS版本或其他相關環境信息等,並可為測試代碼確定目標執行環境。以擬態構造為背景說明如下:
4.1 差模注入實驗
前提:假如一個被測目標功能函式滿足I【p1,p2,p3,…,pn】O,其中,所有功能pi相同,即p1=p2=…=pn。但是所有pi的實現算法都不相同,即pc1≠pc2≠…≠pci。如果存在一個測試例e1可以使p1產生正常回響序列之外的輸出矢量s1。以此類推,測試例e2 e3 ei可以使p2 p3 pi產生輸出矢量s2 s3 si且s1≠s2≠s3≠si。那么,按照冗餘構造理論定義,將相互之間沒有配合關係的測試例e1 e2 e3 ei通過攻擊表面分別注入p1 p2 p3 pi執行體或防禦場景,在I【P】O的擬態界上不應該出現任何si。被測對象的防禦功能應該能夠清晰的表明,除了不能自動恢復的停機-制癱事件之外,從機理上說,只要是不存在協同關係的“獨狼式攻擊”差模測試例,且該測試例一旦產生裁決器可感知的動作,並能在下一個測試例激活前可被策略性的清除或移除,對差模測試例的抑制效果應相當可觀,例如擬態構可達到100%。
圖中是一個3餘度擬態功能的實驗場景,所有落在A、B、C三個執行體區域內的差模(功能各不相同的)測試例都應該設計成能被多模裁決環節感知的場景。如果目標對象採用的是擬態構造的反饋控制策略和疊代收斂後向驗證機制,實驗的預期結果應該是:問題執行體或運行場景本身要么被替換或重構重組,要么附著有注入測試例的執行體或運行場景被清洗復位或重啟。相關實驗場景、操作過程及回響結果應該是可觀察的。
4.2 時間協同差模實驗
在差模測試例注入實驗的基礎上,將f個差模測試例均勻分布在擬態構造內n個執行體的m種防禦場景上(m≥n),差模測試例數量f與m的占比F=f/m﹡100%,滿足34%≤F≤50%。實驗者通過攻擊表面連續地發出f個測試例的激活指令,觀察目標對象在服務功能和性能上會有什麼樣的表現。重點關注,①實驗過程中是否會產生差模逃逸;②實驗對象在此過程中,其服務功能和性能的劣化程度;③反覆地傳送f個測試例的激活指令,測量實驗對象的問題規避機制需要多長時間才能使相關防禦場景不再被調用。
實驗方案:①抽樣測試執行體防禦場景恢復時間以便確定f個測試例的連續激活策略;②在占比F為34%、40%、50%的情況下,確定f個測試例在m種場景中的部署策略(例如均勻分布);③在實驗過程中,測量目標對象服務功能和性能,驗證可靠性與可用性設計指標,重點是測量同一組時間協同差模測試例從“攻擊可達到攻擊不可達”的時間,檢驗目標對象問題場景規避機制的有效性;④其他方法和操作參照差模測試例注入實驗。需要指出的是,F的相關取值均應高於經典異構冗餘構造(DRS)故障容忍極限f≤(n-1)/2。例如,當n=m=3時,DRS允許f≤1,對應的占比F≤33.3%。而時間協同差模測試例的實驗取值,F=34%、40%、50%則分別對應DRS在n=3、5以及冗餘度無限大時的最壞情況。
4.3 N-1模注入實驗
該實驗是為了檢驗可歸一化攻擊表面內一旦產生n-1共模有感逃逸(n為當前服務集冗餘度),檢驗該構造或算法是否具有從逃逸狀態下恢復的能力,證明該構造或算法是否能在出現共模逃逸事件時仍然具有預期的機率屬性。儘管n-1共模逃逸在安全性量化設計中屬於小機率或極小機率事件,但是目標對象工程實現中如果不能達成共模逃逸的解脫功能,則發生首次逃逸事件後,該攻擊經驗將可複製且不再屬於機率問題了。n-1共模逃逸實驗不僅要驗證冗餘功能的正確性還要測試恢復過程的持續時間,後者可量化評價抗共模逃逸性能高低。同理,整個實驗過程和效果應當是可觀察的。
n-1模測試例注入實驗規定,如果目標算法或構造當前服務集內的執行體或防禦場景數量為n,假定存在一個測試例ti可分別注入到n-1個執行體或防禦場景內,並能以某種方式通過攻擊表面激活且可產生n-1個相同輸出矢量si。按照冗餘構造定義,在可歸一化的I【P】O界面上,此時雖然能出現大機率的共模逃逸現象,但是裁決器卻可感知到多模輸出矢量間存在不一致狀態。換言之,n-1共模逃逸屬於可感知的逃逸。假如構造內設計有反饋控制環節,則根據預先設計的後向驗證策略(為了區別差模場景和n-1共模場景間的不同需要引入輔助判決策略),決定怎樣通過漸進或疊代收斂方式改變攻擊表面內的防禦場景,使之退化成差模實驗形態,最終被移除或清除,如擬態構造那樣。
圖中是一個3餘度擬態構造的抗n-1共模逃逸場景示意。顯示了共模測試例a、b、c分別注入到執行體(防禦場景)A和B的交集區、A和C的交集區、B和C的交集區的情況,以及這些測試例從執行體或運行場景內移除或清除的路徑(不同顏色虛線所示)。假定n-1共模測試例能夠注入任意2個執行體或運行場景的功能交集內,且可通過攻擊表面輸入通道合規的激勵訊息使之產生相同的輸出矢量。按照擬態防禦定義,裁決器此時能感知到多模輸出矢量中存在不一致的情況,但不能直接甄別出問題執行體或運行場景,需要通過後向驗證機制區分並消除注入的測試例影響:首先,對輸出矢量不一致的執行體或運行場景作清除重啟或替換操作,如果裁決器狀態仍未改變,則在輸出矢量相同的執行體或運行場景中按照某種策略選擇一個對象實施前述操作。其次,觀察裁決器狀態,如果發生狀態逆轉則就會退化為差模狀態,此時只要再對服務集內未更新過的執行體重複上述操作,注入的測試例將會被從當前服務集內清除或移出。因此,按照擬態防禦定義,即便n-1共模攻擊成功,其逃逸狀態也不具有穩定魯棒性。
需要指出的是,即使n-1模測試例在攻擊表面意義上能被同時激活,由於擬態構造固有機制原因可能會被識別為差模攻擊,因而不能保證n-1模逃逸狀態的穩定呈現,需要反覆注入和激勵直到出現實驗期望的n-1模逃逸狀態為止。整個實驗過程應當是可觀察的。
由此不難看出,擬態構造的系統具有“即使逃逸成功也無法穩定維持”的特性,雖然不可能替代傳統信息安全手段的全部作用,但是卻具有後者所不具備的柔韌性或彈性功能。尤其是對企圖利用差模攻擊獲取敏感信息或者破壞信息完整性的攻擊者而言,擬態防禦可能比一般的加密措施更具有比較優勢,因為擬態防禦不屬於可計算問題,所以也不會陷入“一旦被暴力破解就全線崩潰”的困境。
4.4 N模注入實驗
按照擬態構造定義,擬態構造存在極小機率的n模逃逸情況且可量化設計。但與n-1模逃逸情況不同,從機理上說擬態構造對於n模逃逸是不能感知的,需要通過外部或內部的某種策略,擾動反饋控制環路,改變擬態括弧內的當前運行環境,使之轉變為n-1模的可感知形態,並進入相應的解脫或恢復進程,確保n模逃逸即使發生,仍屬於機率性事件。這一功能需要通過注入測試例的白盒方式進行檢驗,並根據設定的環路擾動策略,測量驗證解脫恢復過程的標稱時間。
假定注入的n模測試例如果能在3個執行體A∩B∩C的功能交集內產生一致的輸出矢量,則擬態裁決環節理論上應當無感。但按照擬態防禦定義,即使裁決器未發現輸出矢量異常,當前服務集內的執行體或防禦場景也可能因為外部控制指令發生強制的、非確定性的替換或清洗重啟操作,這意味著n模注入測試條件下的逃逸狀態一定是不穩定的,當執行體或防禦場景自身具有清洗重啟或可重構重組功能時,n模無感逃逸的情況應當隨著恢復過程的推移自動轉變為n-1模有感逃逸狀態,並最終退化為差模情景並被無感移除。換言之,通過攻擊表面注入服務集內的n模測試例會因為宿主執行體或運行場景被外部指令策略性的清洗重啟或重構重組操作而移除。假如後向驗證策略約定,執行體C作例行清洗後再重新加入當前服務集(也可直接重構或替換執行體C),當C(或替換執行體)輸出矢量與A和B仍舊不同時,反饋環路則會優先清洗或替換運行時間最長的執行體(譬如A)。於是,當裁決器發現AC輸出矢量不同於B的情況時,表明前述場景中出現過逃逸現象,再對B實施上述操作直至裁決器不再有感。按上圖虛線所示遷移軌跡,n模測試例場景會退變為n-1模測試場景,最後會退變到差模測試場景直至全部移除。由此可見,在擬態防禦環境內即使攻擊者有能力實施n模或跨域協同攻擊構成一時的逃逸狀態,但是從機理上因為無法獲得保持穩定逃逸的能力,從而使攻擊成果的魯棒性利用成為難以克服的挑戰。需要指出的是,即使n模測試例在攻擊表面意義上能被同時激活,由於擬態構造固有機制原因可能會被識別為差模或n-1模攻擊,因而不能保證n模逃逸狀態的穩定呈現,需要反覆注入和激勵直到出現實驗期望的n模逃逸狀態為止。
4.5 反饋控制環路注入測試
擬態反饋控制環路包括輸入分配與代理、輸出裁決與代理及反饋控制三個部分。按照擬態防禦定義,反饋環路與執行體和擬態括弧的輸入/輸出通道之間只存在“單向聯繫機制”,且允許反饋控制環路記憶體在漏洞(事實上也很難杜絕)但不存在惡意代碼之前提條件(低複雜度時,工程實踐上通常可以滿足)。
按照嚴格的單向聯繫機理,執行體內的病毒木馬等應當無法利用反饋環路中的漏洞注入攻擊代碼或實現隧道穿越。同理,擬態括弧功能對於外部攻擊者而言通常是“透明的”,即無論是輸入通道上的輸入分配與代理環節,還是輸出通道的輸出裁決與代理環節,或者僅用於內部策略調度的反饋控制環節都應當是“不可見的”。因為理論上,擬態括弧既不解析輸入激勵序列內容也不關心多模輸出矢量的語法和語義,所以應當具有威脅目標的不可達性。然而,工程實現上,有時不得不關心輸入激勵序列的隔離導入和負載均衡等功能而必須引入代理機制,也常常因為擬態裁決無法迴避異構冗餘執行體多模輸出矢量某些可選項值域、通信序列號等不確定性,甚至是計算精度上的差異而使之必須對其語法、語義等作非透明性的預處理。因此,隨著括弧部件功能複雜性或智慧型處理能力的增強,未知漏洞存在的可能性也隨之增大。但是,如果在設計上能保證擬態括弧部件即使存在漏洞也無法被利用,則可以認為滿足基本安全性要求。 “白盒驗證”方式,就是要檢驗能否在相關部件上設定“漏洞測試接口”,能否利用“漏洞接口”上傳“測試代碼”,以及能否利用上傳的測試代碼實現擬態逃逸。不過,這種方式有時會因為目標對象的實現技術形態而不能實施,例如,用無源光分配器或布線邏輯器件作為輸入代理部件時,就無法設定“漏洞測試接口”以及“上傳並執行測試代碼”。倘諾如此,可以認為輸入代理部件具有“漏洞不可利用”的固有屬性。同理,如果無法藉助從擬態括弧規定的輸入通道,途徑輸入代理部件和異構執行體輸出,上傳“測試代碼”到輸出代理部件或裁決器上的“測試漏洞”並執行之,則可以認為輸出代理部件或裁決器也具有“漏洞不可利用”的屬性。顯然,這一屬性並非是這些部件的固有屬性,很大程度上是由於擬態構造效應帶來的。需要強調指出的是,任何測試例即使能從擬態界外注入擬態括弧相關部件的“測試漏洞”,但只要不能實現擬態逃逸之目的,仍可認為該括弧滿足“漏洞不可利用”的安全性假設。總之,工程實踐上常常需要綜合套用相關的安全技術,以確保擬態括弧上即使存在設計漏洞也不能使之成為既定安全目標的“防禦短板”。