本發明屬于網絡安全技術領域,特別涉及一種網絡安全的攻擊異或項求解方法,通過引入約束系統,求解攻擊異或項,具有良好的擴展性。
背景技術:
異或運算具有如下特點,可以用如下等式理論形式描述:結合律(x⊕y)⊕z=x⊕(y⊕z);
交換律x⊕y=y⊕x;逆元x⊕x=e;單位元x⊕e=x。Scyther工具是由Cremers團隊開發的一款自動化協議分析器。在協議模型方面,其借鑒了串空間的思想,在搜索算法上吸收了Athena算法的精髓,并設計多種啟發式的搜索規則,可以看作串空間和Athena的傳承。Scyther工具都采用Dolev-Yao攻擊者模型,Dolev-Yao模型采用自由代數假設的代數機構,忽略諸多代數性質。許多安全協議的基礎都依賴于密碼原語的代數屬性,如基于Diffie-Hellman密鑰交換的IKE、JFK協議。攻擊者可利用這些代數性質構造出特殊的攻擊異或項形成攻擊,針對NSPK-XOR協議攻擊正是攻擊者利用了異或項特殊性質。
當前解決代數性質(包括異或運算)問題的主要方法是基于項重寫理論,項重寫以等式邏輯為基礎,結合邏輯元素,泛代數和自動化理論證明等內容,它將代數性質轉化為項重寫規則。但該理論協議語義、狀態定義不同,并不能很好的應用于Scyther中。由函數in(e)和out(e),以及解密鏈的定義可知,尋找目標源的過程,體現了攻擊者對項拆分操作和解密操作的能力,但是并沒有考慮異或操作。但是異或項與鏈接項相比,滿足交換、結合等特殊性質,不可簡單的將異或操作考慮為鏈接項,否則狀態擴展過程中忽略了攻擊者利用異或項性質攻擊的情況。因此Scyther工具是不支持異或運算協議的驗證的。
技術實現要素:
為克服現有技術中的不足,本發明提供一種網絡安全的攻擊異或項求解方法,改進解密合一化過程,將攻擊者異或操作考慮在內,具有良好的擴展性。
按照本發明所提供的設計方案,一種網絡安全的攻擊異或項求解方法,包含如下步驟:
步驟1、依據協議規范,確定消息項類型集合,生成攻擊者初始知識;
步驟2、依據狀態轉移規則,選擇執行事件,確定公開目標;
步驟3、通過變量定義異或操作Txor、及異或最小解密合一化,用異或最小解密合一化替換最小解密合一化;
步驟4、構造約束系統,包含類型約束和/或值域約束和/或合一化等式約束;
步驟5、針對攻擊異或項,依據約束系統進行解密;
步驟6、根據解密結果,確定攻擊者信息。
上述的,步驟1中的消息項類型集合表示為{S1,S2,S3,S4,S5},其中,S1為主體名類型,S2為異或項類型,S3為函數項類型,S4為加密項類型,S5為新鮮數類型。
上述的,所述步驟2中,依據狀態轉移規則,從一個狀態轉移到另外一個狀態,直到到達可實現狀態,其中,狀態轉移過程是以執行事件為驅動,通過后繼狀態生成算法,為所有的對應事件尋找與之形成通信關系的事件,達到可實現狀態。
上述的,步驟3具體包含如下內容:異或操作Txor表示:設有置換σ:v/t,操作Txor使得σ:v/xor(t,X),記為Txor(σ),其中,X為變量;
最小解密合一化表示為:其中,為合一化子,L是零或多個消息項的連接,且滿足:
(1)
(2)
(3)
異或最小解密合一化表示為:MGDUxor(t1,t2)),設S=MGDUxor(t1,t2),則有:
(1)對于
(2)以及置換因子
上述的,類型約束根據協議規范規定類型及異或操作接受類型進行約束。
優選的,類型約束表示為:其中,type(epos)表示協議規范規定類型,type(rpos)表示異或操作實際可接受類型。
上述的,步驟4中,值域約束根據異或操作Txor及攻擊者知識集合進行約束。
上述的,步驟4中,合一化等式約束根據消息項進行合一化處理形成最小合一化子,最小合一化子中的置換采用等式形式表示。
本發明的有益效果:
本發明針對異或項與鏈接項的不同性質及現有技術不支持異或運算協議運算的問題,攻擊者利用異或運算的性質對協議進行攻擊,通過異或操作形成一些特殊的消息項,稱之為攻擊異或項,攻擊異或項極為精妙,協議設計者難以想到;在協議安全分析中,判斷一個協議是否存在針對異或性質的攻擊等價于求解攻擊異或項的結構,攻擊者理論上可對任何項進行異或操作,但欲構造出符合協議運行規范能被合法主體接收的攻擊異或項,需滿足諸多條件;本發明通過引入約束求解的方法,構造約束系統,解出攻擊異或項,從而獲取攻擊者信息,有效保證網絡環境的安全。
附圖說明:
圖1為本發明的流程示意圖;
圖2為NSPK協議可實現狀態示意圖;
圖3為實施例三中具體實例狀態搜索示意圖;
圖4為實施例三中Scyther-xor對NSPk-XOR協議的檢測攻擊示意圖。
具體實施方式:
為便于理解,下面將本發明涉及到的術語做進一步解釋說明:
密碼協議(cryptography protocol):又稱為安全協議(security protocol),是建立在密碼體制基礎上的一種網絡交互通信協議,其目的是為網絡環境提供各種安全服務,通常運用密碼算法和協議邏輯來實現網絡中各種實體之間的身份認證、密鑰分配等重要安全目標,是網絡安全的一個重要組成部分。攻擊異或項:攻擊者利用異或運算的性質對協議進行攻擊,通常是通過異或操作形成一些特殊的消息項(稱之為攻擊異或項)?;炯希築asic set::=V|R|C|F|A。其中V為變量集合,R為角色集合,C為常量集合,F為函數名集合,A為主體名集合。協議中的消息用項Term來表示,項分為基本項和復合項,基本項由V、R和C的元素組成,復合項由基本項通過鏈接(Term,Term)、加密Term(Term)、異或xor(Term,Term)和函數操作F(Term*)合成。另外,pk(_)表示公鑰,sk(_)表示私鑰。置換σ:v/t:置換是一個函數σ:v/t,表示將一個變量v置換為項t,σ(x)可簡記為xσ。合一化子:令s,t為兩個項,若存在置換,使得σ(s)=σ(t),則稱s和t可合一,σ為s和t的合一化子,對于任意σ’為s,t的合一化子,σ”為置換,若σ’=σσ”,則σ為最一般合一化子,記為mgu(s,t)。協議事件Event:協議的收發事件采用協議事件來表示。send(r,r’,t)表示r發送消息t給r’,read(r,r’,t)表示r’接收來自r的t。攻擊者事件AdvEvent:攻擊者事件用來表示攻擊者的行為。decr(Term(RTerm))表示解密,encr(Term(RTerm))表示加密,app(Func(Term*))表示函數合成。角色Role=RoleKnow×{Event}:角色由角色知識RoleKnow和事件序列{Event}組成,RoleKnow是主體執行該角色功能所需的消息項集合,{Event}定義了角色應該執行的事件及其順序關系,Pro(R)表示Pro協議中的R角色,以NSPK協議為例,發起者NSPK(Init)為:
NSPK(Init)={(Init,Resp,Na,pubk(Resp),prik(Init)},send(Init,Resp,(Na,Init)pk(Resp))·read(Init,Resp,(Na,V)pk(Init))·send(Init,Resp,(V)pk(Resp)))。實例因子Inst=Rid×(R/A)×(V/Term):其中Rid表示運行輪次,R/A角色置換為主體名,V/Term變量置換為Term項。角色實例RoleInst=Inst×Role:角色實例表示主體對某協議的一次運行。函數unpair:函數unpair表示鏈接項的拆分操作,當t=(t1,t2),unpair(t)=unpair(t1)∪unpair(t2)否則unpair(t)=t。
下面結合附圖和技術方案對本發明作進一步詳細的說明,并通過優選的實施例詳細說明本發明的實施方式,但本發明的實施方式并不限于此。
實施例一,參見圖1所示,一種網絡安全的攻擊異或項求解方法,包含如下步驟:
步驟1、依據協議規范,確定消息項類型集合,生成攻擊者初始知識;
步驟2、依據狀態轉移規則,選擇執行事件,確定公開目標;
步驟3、通過變量定義異或操作Txor、及異或最小解密合一化,用異或最小解密合一化替換最小解密合一化;
步驟4、構造約束系統,包含類型約束和/或值域約束和/或合一化等式約束;
步驟5、針對攻擊異或項,依據約束系統進行解密;
步驟6、根據解密結果,確定攻擊者信息。
本發明針對攻擊者異或項,通過變量定義異或操作、最小解密合一化、及異或最小解密合一化,引入約束求解,進而完成異或攻擊的解密,獲取攻擊者信息,具有良好的擴展性。
實施例二,參見圖1~4所示,一種網絡安全的攻擊異或項求解方法,包含如下步驟:
依據協議規范,確定消息項類型集合,生成攻擊者初始知識,其中,消息項類型集合表示為{S1,S2,S3,S4,S5},其中,S1為主體名類型,S2為異或項類型,S3為函數項類型,S4為加密項類型,S5為新鮮數類型。
依據狀態轉移規則,選擇執行事件,確定公開目標。依據狀態轉移規則,從一個狀態轉移到另外一個狀態,直到到達可實現狀態,其中,狀態轉移過程是以執行事件為驅動,通過后繼狀態生成算法,為所有的對應事件尋找與之形成通信關系的事件,達到可實現狀態。狀態轉移規則為Scyther工具所原有的,Scyther狀態擴展基本思想如下:依據狀態轉移規則,從一個狀態轉移到另外一個狀態,直到到達可實現狀態。狀態轉移過程是以Read事件為驅動的,通過后繼狀態生成算法,為所有的read()事件尋找之形成通信關系的事件,即達到可實現狀態。。
通過變量定義異或操作Txor、及異或最小解密合一化,用異或最小解密合一化替換最小解密合一化,最小解密合一化是Scyther中的機制,但是不支持包含異或項的協議,因此定義異或最小解密合一化,可以支持包含異或項的協議,進行替換,具體內容如下:
異或操作Txor表示:設有置換σ:v/t,操作Txor使得σ:v/xor(t,X),記為Txor(σ),其中,X為變量;
最小解密合一化表示為:其中,為合一化子,L是零或多個消息項的連接,且滿足:
(1)
(2)
(3)
異或最小解密合一化表示為:MGDUxor(t1,t2)),設S=MGDUxor(t1,t2),則有:
(1)對于
(2)以及置換因子
例如,U和V是變量,類型為隨機數。項Na#1和{U,{V}}的異或最一般解密合一為:
.MGDUxor(Na#1,(U,Vk))={({U/xor(Na#1,X)},[]),({V/xor(Na#1,X)},Vk)}
對應的解密鏈如下:
MGDUxor過程被置換的項應為xor(Na#1,X)而不是Na#1體現了攻擊者異或操作的能力。xor(Na#1,X)即為攻擊異或項,X為變量。
構造約束系統,包含類型約束和/或值域約束和/或合一化等式約束,其中,類型約束根據協議規范規定類型及異或操作接受類型進行約束,表示為:
其中,type(epos)表示協議規范規定類型,type(rpos)表示異或操作實際可接受類型,異或操作可以項的類型,當其作用于S1、S3或S4類型的項時,將變為不可接受的類型;若作用于S2和S5類型的項,依據上述約束關系依然是可接受的;值域約束根據異或操作Txor及攻擊者知識集合進行約束,操作Txor中變量X滿足X∈AtK,AtK為攻擊者知識;合一化等式約束根據消息項進行合一化處理形成最小合一化子,最小合一化子中的置換采用等式形式表示,如σ:v→t??杀硎緸関=t。
針對攻擊異或項,依據約束系統進行解密。
根據解密結果,確定攻擊者信息。
為驗證本發明的有效性,下面結合具體的實例對本發明作進一步解釋說明:
協議狀態:Patten=({RoleInst},{→}),{{RoleInst}}表示角色實例集合,{→}表示通信關系集合。
可實現狀態:若Patten滿足存在e1使得e1→e,則Patten為可實現狀態。圖1給出NSPK-XOR一個可實現狀態,其有兩個角色實例NSPK-XOR(Alice)和NSPK-XOR(Bob),所有的read()事件都有相應的事件與之形成通信關系。
Scyther狀態擴展基本思想如下:依據狀態轉移規則,從一個狀態轉移到另外一個狀態,直到到達可實現狀態。狀態轉移過程是以Read事件為驅動的,通過后繼狀態生成算法,為所有的read()事件尋找之形成通信關系的事件,即達到可實現狀態。
函數in(e)和out(e)是從攻擊者事件到項集合的映射,用于計算攻擊者事件和攻擊者知識的關系。
in(e)表示事件e出現時攻擊者知識應包含的知識,out(e)表示執行完某事件后攻擊者增加的知識,表1給攻擊者事件與項的對應關系;
表1 in(e)和out(e)示例
解密鏈對于事件e和e',若則稱e和e'形成解密鏈,t稱之為目標項,e是e'形成的必要條件。
設有解密鏈對于Read事件ge,e可能有三種來源:
(1)C0,e是攻擊者事件,攻擊者通過函數操作或加密操作合成gt。
(2)DeEx,e在現有狀態的角色實例事件中,可通過重復的解密、鏈接項拆分或者實例化變量合成gt。
(3)DeNew,e在新增角色實例的事件中,可通過重復的解密、鏈接項拆分或者實例化變量合成gt。
也就是說Scyther在處理每一個Read事件時,都有三種擴展分支。
參見圖3所示,以具體實例驗證本發明有效性:
1)、在處理事件read(A,B,(W,A)pk(B))時,存在公開目標(W,A)pk(B),按照Scyther狀態擴展算法,將會有C0、DeEx和DeNew三個分支,當采用C0分支時,攻擊者可通過函數操作或加密操作合成(W,A)pk(B),由于(W,A)pk(B)為加密項類型,采取事件encr((W,A)pk(B));又因in(encr((W,A)pk(B))={A,W,pk(B)},由于pk(B)和A屬于Atk(Scyther認為公鑰和主體名都為攻擊者已知),故目標只有W;對于目標W,因type(w)=S1,scyther假設中攻擊者不可能生成合法主體的隨機數,故C0分支擴展失敗,應采用DeNew分支,這時會調用FEchainxor進行解密合一化操作,由于:
MGDUxor(W,(Na#1,Alice)pk(B))=(W/xor(Na#1,X1),(Na#1,Alice)pk(B))
即存在長度為1的解密鏈:
由于sk(B)為私鑰,在Scyther中攻擊者得到主體的私鑰唯一的可能就是B為非法主體,在本文中非法主體用Charlie來表示,即B/Charlie。
xor(Na#1,X1)=W
B=Charlie
X1∈AtK;(C1)
type(xor(Na#1,X1))=S5;
2)、在處理事件read(B,A,xor(Na,B)pk(A))時,當采用DeEx分支時,此時read事件可與send事件形成通信關系,也可采用C0分支,依據合一化等式約束可得:
xor(Na#1,Clarlie)=xor(Na#1,X1,Bob)(C2)
對結合約束關系C1和C2,可求解得到X1=xor(Charlie,Bob)。
NSPK-XOR協議存在如下攻擊,I為攻擊者:
1.A→C:(Na,A)pk(C)
1’.C(A)→B:(xor(Na,B,C),A)pk(B)
2’.B→C(A):(Nb,xor(Na,B,C,B))pk(A)
2.C→A:(Nb,xor(Na,B,I,B))pk(A)
3.A→C:(Nb)pk(C)
如圖4所示,將該方法應用與Scyther方法中,可檢測出該攻擊。
本發明不局限于上述具體實施方式,本領域技術人員還可據此做出多種變化,但任何與本發明等同或者類似的變化都應涵蓋在本發明權利要求的范圍內。