呂樂樂,董偉,趙云飛,馮志,李致成,張雅勤
(華北計(jì)算機(jī)系統(tǒng)工程研究所,北京 102209)
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)應(yīng)用已經(jīng)融入現(xiàn)實(shí)生活的方方面面。為了登錄不同的網(wǎng)絡(luò)應(yīng)用,用戶需要注冊不同網(wǎng)站的賬號信息[1],并維護(hù)相應(yīng)網(wǎng)站的賬號和口令,低效而麻煩。認(rèn)證授權(quán)協(xié)議允許第三方服務(wù)在無需用戶提供賬戶和口令的情況下訪問用戶的私有資源,解決了當(dāng)前開放云平臺下的第三方授權(quán)問題,提高了用戶的體驗(yàn)。但是當(dāng)前網(wǎng)絡(luò)環(huán)境復(fù)雜多樣,且協(xié)議實(shí)體之間的交互存在著復(fù)雜的關(guān)系和制約,使得認(rèn)證協(xié)議在交互處理中存在不確定性。因此,協(xié)議在實(shí)際使用時可能存在安全漏洞[2],攻擊者會利用協(xié)議本身的邏輯缺陷對信息系統(tǒng)進(jìn)行攻擊。
針對協(xié)議進(jìn)行安全性分析是揭示協(xié)議缺陷和安全漏洞的重要方法。模糊測試是進(jìn)行漏洞挖掘的常規(guī)方法[3],其本質(zhì)是變異報(bào)文字段取值,而非變異協(xié)議本身邏輯,因而只能發(fā)現(xiàn)協(xié)議編碼實(shí)現(xiàn)的漏洞,不能發(fā)現(xiàn)協(xié)議邏輯上的漏洞。形式化方法是尋找協(xié)議邏輯缺陷的重要方法,其主要通過形式化分析工具對目標(biāo)系統(tǒng)進(jìn)行形式化建模[4],但期間若存在較復(fù)雜的邏輯影響因素(如時延),會使模型變得非常復(fù)雜,一方面可能會產(chǎn)生失真,另一方面可能會出現(xiàn)狀態(tài)空間爆炸問題[5]。
為了避免“常規(guī)模糊測試查不了邏輯,形式化方法模型復(fù)雜”的問題,本文提出一種新型方法-基于模糊仿真的漏洞挖掘方法,根據(jù)協(xié)議規(guī)約進(jìn)行建模,基于Dolev-Yao 模型[6]引入模糊體角色,以此制造交互過程中協(xié)議實(shí)體動作序列的不確定,結(jié)合SA-Q 強(qiáng)化學(xué)習(xí)算法,協(xié)助模糊體進(jìn)行動作選擇與判斷,挖掘協(xié)議邏輯漏洞。
認(rèn)證協(xié)議是在通信過程中應(yīng)用密碼學(xué)技術(shù)隱藏或解密信息,達(dá)到身份認(rèn)證以及消息正確發(fā)送的目的。在近年內(nèi)許多提出的認(rèn)證協(xié)議出現(xiàn)之初被認(rèn)為是安全的[7],但是在使用多年之后卻被發(fā)現(xiàn)存在很嚴(yán)重的安全漏洞。
認(rèn)證協(xié)議通常僅由幾條消息組成,但是由于協(xié)議安全屬性多樣、邏輯結(jié)構(gòu)復(fù)雜等特點(diǎn),導(dǎo)致實(shí)際運(yùn)用中存在諸多安全隱患,各種欺騙性和破壞性的攻擊表明,其設(shè)計(jì)是一項(xiàng)高難度的工作[8]。若在邏輯上存在缺陷,執(zhí)行過程中一個微小的安全漏洞就可能導(dǎo)致用戶敏感數(shù)據(jù)暴露,使得攻擊者在未授權(quán)的情況下訪問系統(tǒng),破壞網(wǎng)絡(luò)服務(wù)的安全性。目前越來越多的認(rèn)證協(xié)議正在涌現(xiàn),關(guān)于其安全性性質(zhì)的討論方興未艾。因此,在使用協(xié)議之前,對其進(jìn)行安全性檢測與分析至關(guān)重要。
強(qiáng)化學(xué)習(xí)本質(zhì)上是一種基于馬爾科夫決策過程(Markov Decision Process),訓(xùn)練智能體與環(huán)境交互,以實(shí)現(xiàn)智能體策略改進(jìn)的機(jī)器學(xué)習(xí)算法[9]。其中典型算法Q 學(xué)習(xí)利用三元組(S,A,R)來表征其智能體模型,如圖1所示。
強(qiáng)化學(xué)習(xí)的目的是尋找一個策略π,使得每個狀態(tài)的值函數(shù)Qπ(s)達(dá)到最大。在決策過程中,智能體通過對當(dāng)前狀態(tài)的認(rèn)知選擇動作,環(huán)境接收該動作之后發(fā)生狀態(tài)的轉(zhuǎn)移[10],智能體可以感知當(dāng)前的狀態(tài)st。交互環(huán)境會對該決策進(jìn)行回應(yīng),給出相應(yīng)的回報(bào)R=R(st,at),之后進(jìn)入下一個狀態(tài)st+1[5]。狀態(tài)值函數(shù)如式(1)所示:
其中,α 為學(xué)習(xí)率,0≤α≤1。
認(rèn)證協(xié)議模糊仿真建模主要包括兩部分:一是編碼合法協(xié)議體交互過程和通信時的數(shù)據(jù)流;另一部分是構(gòu)建模糊體,可通過選擇模糊策略產(chǎn)生“混沌”交互的海量場景,利用SA-Q 學(xué)習(xí)算法對協(xié)議狀態(tài)分析,同時將智能體角色功能賦予給模糊體,通過維護(hù)Q 表為下一步的行為提供建議,協(xié)助模糊體進(jìn)行決策。模型框架圖如圖2 所示。
針對認(rèn)證協(xié)議自身的特點(diǎn),設(shè)置以下前提條件:
(1)經(jīng)過加密的消息只有知道正確的密鑰才能對其進(jìn)行解密;
(2)模糊體是參與協(xié)議交互的合法主體;
(3)模糊體熟知協(xié)議,有通信打包、解包、調(diào)用加解密算法的能力。
首先根據(jù)協(xié)議RFC(Request For Comments)規(guī)約,分析參與協(xié)議的實(shí)體對象和報(bào)文參數(shù),對目標(biāo)協(xié)議的交互時序深入研究,構(gòu)建協(xié)議交互模型,確認(rèn)交互達(dá)到預(yù)期行為,搭建一個動態(tài)仿真環(huán)境代替真實(shí)運(yùn)行環(huán)境。
在協(xié)議實(shí)體中參與者分為不同的角色,如圖3 所示。協(xié)議實(shí)體即遵守協(xié)議RFC 規(guī)約參與協(xié)議交互的主體,包括誠實(shí)主體和模糊體。誠實(shí)主體是嚴(yán)格按照協(xié)議規(guī)范執(zhí)行協(xié)議交互的主體,如認(rèn)證用戶、第三方網(wǎng)站、服務(wù)器等;模糊體是以破壞協(xié)議交互邏輯為目標(biāo)的實(shí)體,其采用模糊策略擾亂交互順序,期望在不被察覺的情況下獲得誠實(shí)主體的信任,從而對協(xié)議的某個目標(biāo)造成破壞。
基于Dolev-Yao 攻擊者模型[6]的思想,引入模糊體角色。在協(xié)議交互過程中,模糊體采取主動攻擊的思想,根據(jù)當(dāng)前各狀態(tài)機(jī)的狀態(tài)選擇模糊策略,協(xié)議交互環(huán)境將做出相應(yīng)的改變。模糊策略包括:
(1)當(dāng)前狀態(tài)在轉(zhuǎn)換處“選擇點(diǎn)”時,可以選擇非正常的狀態(tài)遷移。測試過程從協(xié)議的第一次交互開始,測試時模糊體根據(jù)當(dāng)前自身狀態(tài)和環(huán)境狀態(tài),改變交互對象并且基于自己已有的知識庫組合或重放報(bào)文。
(2)插入或者截獲某段交互過程[11]。
(3)竊聽其他交互消息。
在強(qiáng)化學(xué)習(xí)算法中,每一個動作可以視為一個攻擊向量,用<target,operation>表示,其中target 表示交互的對象,operation 表示采取的模糊策略。環(huán)境的狀態(tài)空間使用四元組(inter_phase,dat,own_state,env_state)表示,其中inter_phase 表示運(yùn)行到協(xié)議交互第幾階段,data 表示接收的數(shù)據(jù),own_state 表示交互之后協(xié)議主體自身的狀態(tài),env_state 表示當(dāng)前環(huán)境狀態(tài)或者其他主體狀態(tài)。
認(rèn)證協(xié)議最終需要按照協(xié)議規(guī)約,通過多次交互,達(dá)到參與者之間的單向認(rèn)證或者雙向認(rèn)證。因此若違背認(rèn)證協(xié)議的安全屬性[12],則表明協(xié)議存在邏輯漏洞:
(1)如果最后模糊體以其他合法實(shí)體的身份認(rèn)證成功,卻不符合協(xié)議規(guī)約的認(rèn)證關(guān)系;
(2)模糊體獲得其他用戶的保密信息、關(guān)鍵參數(shù)等情況。
為了引導(dǎo)測試走向深入,提高測試效率,采用SA-Q算法優(yōu)化模糊體的決策行為。將認(rèn)證協(xié)議漏洞挖掘的過程建模為馬爾科夫決策模型,基于強(qiáng)化學(xué)習(xí)算法利用交互環(huán)境獲取獎賞,訓(xùn)練模糊體選擇最佳響應(yīng)動作。
在訓(xùn)練過程中,模糊體初始回合對狀態(tài)動作的經(jīng)驗(yàn)了解較少,Q 學(xué)習(xí)算法基于貪婪策略容易導(dǎo)致局部最優(yōu)[13]。SA-Q 學(xué)習(xí)算法將模擬退火算法的Metropolis 準(zhǔn)則[14]應(yīng)用到動作搜索過程中,以解決局部最優(yōu)的問題。當(dāng)智能體選擇動作時,除了迄今為止學(xué)習(xí)到的策略,也嘗試選擇當(dāng)前最優(yōu)策略以外的動作來探索,動作選擇的概率表示為:
其中,Q(s,ar)是隨機(jī)選擇動作的Q 值;Q(s,ag)是基于εgreedy 策略選擇動作的Q 值;Temperature 為退火溫度值,按照幾何比例因子準(zhǔn)則遞減。初始回合訓(xùn)練時,Temperature 值較大,模糊體探索的隨機(jī)性概率較高;后續(xù)隨著溫度下降,基于ε-greedy策略選擇動作逐漸占據(jù)主導(dǎo)策略,以達(dá)到動作探索和利用的平衡[14]。
算法中回報(bào)函數(shù)反映了當(dāng)前狀態(tài)下執(zhí)行不同動作的效果,發(fā)現(xiàn)漏洞的效率很大程度取決于對執(zhí)行動作的評價。本文動作評價標(biāo)準(zhǔn)如下:如果模糊體通過動作選擇之后達(dá)到下一個狀態(tài)節(jié)點(diǎn),沒有按照協(xié)議規(guī)約的動作序列且交互環(huán)境產(chǎn)生新的狀態(tài),根據(jù)模糊體當(dāng)前處于的交互階段給予獎勵,公式如下:
其中,phase(fuzzy body)代表模糊體利用模糊策略進(jìn)行到協(xié)議交互的第幾個階段,如果交互階段越偏后,說明模糊體越有可能攻擊成功,因此回報(bào)值的大小與協(xié)議交互的階段成比例;Scale factor 代表折扣因子,取值為0.6。實(shí)驗(yàn)采用回合制的方式進(jìn)行,在每次回合中,通過一次次的動作選擇,與外界環(huán)境交互得到反饋結(jié)果,計(jì)算回報(bào)函數(shù),不斷優(yōu)化更新Q 表從而實(shí)現(xiàn)策略改進(jìn)。
Needham-Schroeder 協(xié)議(NSPK 協(xié)議)是一個經(jīng)典的安全協(xié)議,一直被優(yōu)先選為新的協(xié)議分析方法的測試對象。協(xié)議最終的目的是通信雙方完成雙向的身份認(rèn)證。本節(jié)以NSPK 協(xié)議為例進(jìn)行測試,分別基于Q 學(xué)習(xí)算法、SA-Q 算法建模,在相同交互環(huán)境下測試實(shí)驗(yàn)效果。
本文方法的流程圖如圖4 所示。
模糊仿真協(xié)議建模的第一步是構(gòu)建協(xié)議交互實(shí)體,參數(shù)設(shè)置如表1 所示。
表1 協(xié)議參數(shù)
其中,Alice、Bob、Eve 是協(xié)議本身的合法主體,除此之外Eve 為模糊體。Eve 基于SA-Q 學(xué)習(xí)算法的決策方法根據(jù)當(dāng)前協(xié)議體狀態(tài)選擇動作,充當(dāng)一個有經(jīng)驗(yàn)考慮長久化利益的交互體,以期待從交互中獲得長期積累獎勵的最大值。若交互中檢測到協(xié)議體產(chǎn)生新的狀態(tài),則給予獎賞。算法中設(shè)置學(xué)習(xí)率α=0.01,貪心策略ε=0.9,折扣因子γ=0.8,降溫等比系數(shù)為0.6,溫度Temperature取值350,增加模糊體選擇隨機(jī)動作的概率。
從初始狀態(tài)開始,協(xié)議交互的部分路徑簡化如下所示,其中Eve()代表Eve 沒有偽裝其他主體的情況,僅接收或發(fā)送消息;Eve(user)代表Eve 冒充user 身份進(jìn)行交互、重放或者修改交互數(shù)據(jù)。
路徑1:
路徑2:
路徑3:
路徑4:
實(shí)驗(yàn)結(jié)果表明初始訓(xùn)練時,由于Q 表尚未完善,模糊體學(xué)習(xí)軌跡偏向于隨機(jī)化,會呈現(xiàn)多種交互情況;后續(xù)隨著Q 表迭代更新,學(xué)習(xí)效率逐漸提高,表明易于在協(xié)議混亂交互環(huán)境下發(fā)現(xiàn)攻擊路徑。上述路徑4 表明算法發(fā)現(xiàn)了該協(xié)議的邏輯漏洞,NSPK 協(xié)議測試中,模糊體Eve 通過偽裝協(xié)議體Alice,維護(hù)Alice 的狀態(tài)機(jī)和合法身份的狀態(tài)機(jī),完成了與Bob 的身份認(rèn)證,是典型攻擊中的穿插攻擊,并且最終發(fā)現(xiàn)的攻擊路徑和形式化軟件Scyther[15]發(fā)現(xiàn)的攻擊路徑相同,其攻擊軌跡如下所示:
3.3.1 算法性能
基于控制變量的方法,在實(shí)驗(yàn)場景下使用同樣的一組超參數(shù)測試Q 學(xué)習(xí)算法、SA-Q 學(xué)習(xí)算法的性能,選擇平均獎勵值作為評價指標(biāo),算法在一定交互次數(shù)之后得到的平均獎勵值數(shù)據(jù)對比如表2 所示,數(shù)據(jù)變化趨勢如圖5 所示。
表2 算法改進(jìn)前后訓(xùn)練結(jié)果對比
圖5中,SA-Q 的獎勵值在訓(xùn)練初始階段小于Q 學(xué)習(xí)算法的獎勵值,隨著訓(xùn)練回合數(shù)增加,模糊體對環(huán)境知識的認(rèn)知提高,大約在137 步之后獎勵值趨于收斂?;綫 學(xué)習(xí)算法在大約150 步學(xué)習(xí)之后性能仍次于前者,并且獎勵值還未達(dá)到收斂狀態(tài)。因此可以得出結(jié)論:(1)基于SA-Q 探索算法在一段時間學(xué)習(xí)之后其動作策略優(yōu)于Q 學(xué)習(xí)算法的策略;(2)SA-Q 學(xué)習(xí)算法的收斂速度更快,獎勵值更快趨于穩(wěn)定。
一次訓(xùn)練回合結(jié)束后,如果模糊體發(fā)現(xiàn)攻擊路徑代表一次勝利[16]。勝利概率是訓(xùn)練過程中勝利次數(shù)的總和與總的回合數(shù)episode 的比值,模糊體在不同回合下的勝利概率如圖6 所示。
從圖6 中可以看出,在訓(xùn)練初始階段,Q 學(xué)習(xí)算法的勝利概率相對較高;但后續(xù)SA-Q 學(xué)習(xí)算法在接近30回合時超過Q 學(xué)習(xí)算法的勝利概率,并且隨著訓(xùn)練回合數(shù)的增加,勝率概率逐漸趨于1。
3.3.2 漏洞探測能力
基于SA-Q 學(xué)習(xí)模糊仿真模型參照協(xié)議RFC 規(guī)約和交互報(bào)文,清晰直觀地描述協(xié)議實(shí)體交互過程和相應(yīng)的狀態(tài)機(jī),實(shí)現(xiàn)了協(xié)議全范圍的模擬仿真。
該模型發(fā)現(xiàn)了NSPK 協(xié)議的邏輯漏洞,從攻擊過程可知NSPK 協(xié)議的安全性依賴于不同參與者的合法身份標(biāo)識,側(cè)面反映認(rèn)證中心和協(xié)議體之間的密鑰加密并不是完全可靠的。通過設(shè)置模糊策略,呈現(xiàn)出協(xié)議深入交互的多場景,實(shí)現(xiàn)協(xié)議多角色身份交互的動態(tài)測試,有助于發(fā)掘更深層次的新型協(xié)議漏洞。
本文針對傳統(tǒng)測試技術(shù)缺乏對認(rèn)證協(xié)議邏輯漏洞挖掘的問題,提出了一種基于SA-Q 學(xué)習(xí)算法的模糊仿真測試方法,以Needham-Schroeder 公鑰協(xié)議為例,確定協(xié)議參與者和協(xié)議認(rèn)證的安全屬性,結(jié)合Dolev-Yao 模型引入模糊體角色,在擁有合法身份的前提下進(jìn)行邏輯模糊,檢測出協(xié)議的穿插攻擊,證實(shí)了建模的準(zhǔn)確性和有效性。
模糊仿真思想考慮了協(xié)議多會話交互、多方參與的特殊場景,在模擬系統(tǒng)各部分的協(xié)議交互中,增設(shè)有關(guān)機(jī)制模糊化處理,對協(xié)議交互邏輯進(jìn)行深入分析。本文將SA-Q 學(xué)習(xí)算法與Q 學(xué)習(xí)算法進(jìn)行對比分析,初步結(jié)果表明,SA-Q 學(xué)習(xí)算法在收斂速度方面優(yōu)于標(biāo)準(zhǔn)Q 學(xué)習(xí)算法。當(dāng)前基于強(qiáng)化學(xué)習(xí)的漏洞挖掘仍處于模擬驗(yàn)證階段,但使用虛擬化手段在仿真環(huán)境訓(xùn)練智能體是未來的研究方向,在后續(xù)的工作中,針對復(fù)雜交互的認(rèn)證協(xié)議,需要進(jìn)一步完善模型和模糊策略,考慮使用基于神經(jīng)網(wǎng)絡(luò)的強(qiáng)化學(xué)習(xí)算法來調(diào)整模糊規(guī)則庫和狀態(tài)動作空間,使之具有泛化能力,增強(qiáng)模型的擴(kuò)展性。