周 波 王樹磊
(*南京信息職業(yè)技術學院電子信息學院 南京 210023) (**常州工學院民航飛行學院 常州 213032)
軟件定義網絡[1](software defined network,SDN)是一種區(qū)別于傳統(tǒng)計算機網絡的新型網絡架構模式,自提出以來得到了學術界乃至工業(yè)界的廣泛關注。SDN吸取了ForCES架構[2]的思想,將網絡的控制層與數據層分離,該設計不僅有利于降低網絡當中的硬件成本,還使得網絡管理員能夠方便地對來自不同廠商的設備進行集中化的調試和管理。相比傳統(tǒng)計算機網絡,SDN具備前者所沒有的性能優(yōu)勢,但SDN的一系列安全問題[3]卻成為了阻礙其進一步廣泛應用的難題。其中最關鍵的問題之一就是,如何在遠程控制環(huán)境下保證由SDN控制器掌控的用戶和設備敏感信息不被攻擊者竊取[4]。SDN的控制器負責管理流表,而流表包含敏感的控制信息,對于數據的轉發(fā)起到了決定性的作用。然而當前的SDN架構允許應用程序接口輕易地調用流表而無需權限認證。更為嚴重的是相當一部分接口具備公開信息的權限。因此SDN控制器必須保證只有經過授權的設備才能獲取以上的敏感信息。如今許多大型的SDN架構都采用了多控制器管理域間通信,控制器除了與數據轉發(fā)設備進行交互,還要與各個控制器之間保證規(guī)則統(tǒng)一與信息同步。因此在SDN當中必須采用一種機制,該機制不僅能夠保證SDN流表的安全性還必須對流表的訪問權限進行靈活、細粒度的控制。
Ethane系統(tǒng)[5]作為SDN前身提供了集中化的網絡安全管理方案。該系統(tǒng)利用規(guī)定的安全信道實現控制信息在控制器和交換機之間的傳輸,但其過于簡單,無法滿足在大規(guī)模部署時的安全需求。文獻[6]根據OpenFlow規(guī)則說明書提出,控制器與數據轉發(fā)設備間必須通過傳輸層安全協(xié)議(transport layer security protocol,TLS)實現雙向認證,以避免非法用戶偽裝成控制器與交換機進行通信。然而并沒有規(guī)定域間訪問的控制方法,這使得大型SDN架構有可能面臨未知的非法規(guī)則插入或規(guī)則修改操作。文獻[7]提出了一種針對SDN控制器的訪問控制系統(tǒng)。為實現不同SDN組件訪問權限的配置,該系統(tǒng)首先將SDN的各個組件在邏輯上進行隔離,其次對不同組件的訪問權限進行詳細的描述,然后在用戶試圖對組件進行訪問和控制時必須對用戶進行身份認證。此外,該方案配置了一種用戶訪問沖突的解決機制,保證多個用戶可以同時訪問同一個組件。文獻[8]提出了一種面向SDN控制層和應用層的訪問控制方案,該方案對不同網絡組件的可執(zhí)行指令做出了不同程度的限制,使得在云計算環(huán)境下實現安全、快速地訪問控制。Kamath等人[9]設計了一種SDN認證架構,該架構提供一種靈活的身份認證和訪問控制方法,同時將所有未授權的設備隔離起來以保證網絡資源的安全性。盡管在訪問控制領域有大量的研究成果,但是SDN控制器始終面臨的是一種動態(tài)變化的網絡結構,這使得SDN控制器在執(zhí)行訪問控制操作時必須具備相當的靈活性、安全性以及高效率。這對現有的訪問控制理論提出了嚴峻的挑戰(zhàn),然而現有的訪問控制方法幾乎無法滿足這樣的需求。
屬性加密[10](attribute-based encryption,ABE)是近些年來提出的一種功能加密算法,它能夠從密碼學原理上填補以上的空白。ABE為數據加解密操作賦予了一套訪問策略以及具備一定描述性的屬性集合。只要屬性集合與訪問策略的相似度超過事先設定的閾值,那么解密者就可以成功解密。具體來說目前有2種主要的ABE算法。一種是基于密鑰策略的ABE算法[11](key policy ABE,KP-ABE),它將訪問策略嵌入到密鑰當中,而屬性集合則嵌入到密文當中,最早提出的ABE算法正是這種KP-ABE;一種是基于密文策略的ABE算法[12](ciphertext policy ABE,CP-ABE ),它將訪問策略嵌入到密文當中,而屬性集合則嵌入到密鑰當中。由于CP-ABE算法允許加密者自由制定訪問策略,而密鑰當中嵌入的屬性集合又能夠表征不同解密者的身份,因而CP-ABE更適合構建一種安全又靈活的云存儲訪問控制算法。文獻[13]提出了一種基于多屬性權威的ABE算法,每個屬性權威擁有各自的主密鑰,這使得單個屬性權威不再擔負過重的計算任務。文獻[14]提出了一種基于雙向安全計算產生主密鑰的機制,同時設計了一種高效的撤銷方法,在提高計算效率的同時也豐富了ABE的功能。文獻[15]采用零知識證明使2個屬性權威互動產生主密鑰,從而有效防止密鑰托管問題的產生,同時支持密鑰追責防止用戶將自己的私鑰交由他人使用。文獻[16]提出了一種CP-ABE的屬性直接撤銷方法保證了用戶更新的靈活性,同時使得其密文、私鑰和公鑰的長度都有所優(yōu)化。文獻[17]提出了一種不需要進行配對運算的ABE算法,但是由于使用閾值門作為訪問策略,因此算法整體顯得不夠靈活。文獻[18]提出了一種分布式的CP-ABE密鑰管理協(xié)議,同時利用外包解密使得終端用戶無需進行任何配對計算就可以進行解密,但是算法整體的計算負載仍然較大。
ABE算法在大型訪問控制系統(tǒng)上的應用潛力已被相關領域學者所認可,但是其復雜的計算將造成系統(tǒng)運算負載急劇上升,現有的ABE算法還遠不能達到在SDN中實際部署的水平。尤其在大型SDN環(huán)境下,來自各類廠商的設備性能不同,如果性能稍有限制,就不能保證SDN訪問控制的靈活性、即時性和安全性。文獻[19]提出了在SDN環(huán)境中應用屬性加密算法并提出了一種基于等級CP-ABE的SDN訪問控制方案,使得SDN控制器能夠靈活管理SDN的用戶、設備和流表數據。文獻[20]提出基于代理群的ABE算法,把復雜計算全部交給可信的代理節(jié)點群處理。雖然降低了ABE算法的計算門檻,但是系統(tǒng)整體的安全性不再單純依賴于ABE算法的安全性,而在某種程度上幾乎依賴于代理節(jié)點的可信等級。此外,代理節(jié)點群的存在使得加解密過程中產生了額外的通信開銷。
本文結合SDN實際環(huán)境在現有的CP-ABE方案基礎上對算法的安全性、計算效率進行了改進。提出了一種抗密鑰暴露的密文策略屬性快速加密算法(anti-key-exposure ciphertext policy attribute-based fast encryption,AKE-CP-ABFE),首先利用預計算技術(pre-computation technique,PCT)將必要的元素計算出來并存儲起來,加密者在進行加密時無需進行任何復雜的指數運算或雙線性映射,提高了屬性加密的計算效率。同時基于拓展圖技術(expander Graph technique,EGT)減少了預計算產生的元素數量,進一步降低了預計算產生的存儲開銷。除此之外,本文將用戶或者設備的MAC地址嵌入到私鑰當中,如果私鑰當中的地址信息與設備本身不符,則無法完整解密。這保證了即使將私鑰有意或者無意地暴露給其他非法用戶或者設備,他們也無法獲取此私鑰獲取敏感信息。理論分析證明AKE-CP-ABFE具備良好的安全性?;谠撍惴嫿艘环N針對多控制器設置的SDN域間信息訪問控制系統(tǒng)模型,該模型降低了開源API造成的用戶或者網絡設備敏感信息泄露的風險。仿真實驗表明,該系統(tǒng)能夠在部署多控制器的大型SDN環(huán)境下以較高的計算效率保證敏感信息域間分享的安全性和靈活性。
設{P1,P2,…,Pn}是由若干元素組成的集合,訪問策略A是集合{P1,P2,…,Pn}的非空子集,即A∈2{P1, P2,…, Pn}
若滿足S∈A,則集合S是關于訪問策略A的合法集合,反之,則稱S為非法集合。
令Γ是一個樹形的訪問策略。Γ中每一個節(jié)點由一個閾值門表示,閾值門由該節(jié)點的子節(jié)點個數及一個閾值組成。設任意節(jié)點x的子節(jié)點個數為numx,閾值為kx,那么0≤kx≤numx。當kx=1時該閾值門表示的是一個“或”門,而當kx=numx時表示的是一個“與”門。對于Γ當中的葉節(jié)點,其表示的是一個屬性,此類節(jié)點的閾值是1。為便于展開討論,定義以下函數:
(1)parent(x):返回節(jié)點x的父節(jié)點;
(2)att(x):返回葉節(jié)點x所代表的屬性;
(3)index(x):返回節(jié)點x的索引號,訪問樹Γ為每一個節(jié)點設置了唯一的索引號。
對于一個屬性集合S和訪問樹Γ,若S滿足Γ則表示為Γ(S)=1。通過如下的迭代方法來判斷S是否滿足Γ:假設R是訪問樹Γ的根節(jié)點,Γx是關于節(jié)點x的子樹。如果x是非葉節(jié)點,設其任意的子節(jié)點為z并首先計算Γz(S)。當且僅當kx個子節(jié)點的返回值為1才使得Γx(S)=1成立。若x是葉節(jié)點,當且僅當att(x)∈S才使得Γx(S)=1成立。
設G1和G2是2個階為大素數p的循環(huán)群,G是G1的一個生成元,映射e:G1×G1→G2是關于G1和G2的雙線性映射,當且僅當e滿足以下性質:
(1)雙線性:對于任意的u,v∈G1以及a,b∈Zp,都有e(ua,vb)=e(u,v)ab;
(2)非退化性:存在生成元G,使得e(G,G)≠1,其中1是G2的單位元;
(3)可計算性:對于任意的u,v∈G1,存在多項式時間算法能夠有效計算出e(u,v)的值。
由于即時的雙線性映射會消耗相當多的計算資源,這直接成為了ABE算法在效率上難以提高的瓶頸。雖然也有學者提出了去雙線性化的思想,但是去雙線性化后的安全性始終無法與原有的ABE算法相提并論。雙線性映射預計算的基本思想是將一系列雙線性映射預先計算并存儲起來,因此在ABE算法上采用預計算方法能夠在運算負載、存儲負載以及算法安全性上達到更好的平衡,從而使得ABE算法更適用于構建SDN域間信息訪問控制系統(tǒng)。
預計算的基本思想是,首先產生一個橢圓曲線上的生成元P,其次提前計算好n個元組(ri,riP)。在此基礎上,每一個新的元組都由k個已有的元組共同產生,即:
r=∑1≤i≤krimodp
rP=∑1≤i≤kriPmodp
也就是說,通過k-1次模加操作來代替相對復雜的橢圓曲線點乘操作。為了進一步提高計算效率,本文采用了一種基于拓展圖的預計算方法來降低參數k的值。
本方法的安全性建立在判定雙線性Diffie-Hellman困難假設(decisional bilinear Diffie-Hellman assumption, DBDH)上。
設G1是一個根據安全參數生成的階為素數p的群。產生3個秘密的隨機數a,b,c∈Zp。若敵手已知一組參數{P,aP,bP,cP},那么該敵手難以區(qū)分e(P,P)abc與e(G,G)z。若存在一個敵手A在獲得參數{P,aP,bP,cP,Y}后,輸出1表示Y=e(P,P)abc,反之輸出0表示Y=e(P,P)z。敵手A能夠以優(yōu)勢ε解決DBDH問題,當且僅當:
AKE-CP-ABFE模型涉及以下4類交互角色。
(1)屬性權威:是一個可信的權威機構,負責所有屬性的認證以及公鑰私鑰的發(fā)布。
(2)SDN控制器:負責收集、存儲和管理SDN流表、路由以及數據量等重要信息,其中包含各類用戶或者設備的敏感信息。本方案針對大型SDN采用多控制設置,將SDN劃分為多個SDN域,每一個域內部署唯一的SDN控制器。每個SDN控制器管理各自域內的重要信息,同時負責與其他域的SDN控制器交互。
(3)加密者:是數據的初始擁有者(可以是用戶,也可以是產生數據的SDN設備),能夠上傳自己的數據并根據自己的意愿或需求自由制定相應的訪問策略。
(4)解密者:是試圖獲取SDN控制器內信息的用戶或者設備,其身份用一個屬性集合來表示。解密者擁有一個與其屬性集合相對應的私鑰,并通過私鑰來解密密文。
AKE-CP-ABFE算法包括初始化算法、私鑰生成算法、預計算算法、快速加密算法和解密算法共5個主要算法,算法框架如下:
(1)初始化算法:由屬性權威執(zhí)行。算法輸入一個安全參數k,輸出公鑰PK和主密鑰MSK,其中公鑰PK向全網公開,而主密鑰MSK由屬性權威秘密保存。
(2)私鑰生成算法:由屬性權威執(zhí)行。解密者發(fā)起密鑰生成請求時輸入其唯一的MAC地址AMAC、屬性集合S、公鑰PK以及主密鑰MSK,最終輸出與其MAC地址以及屬性集合相對應的私鑰SK。
(3)預計算算法:由屬性權威執(zhí)行。算法由2個子算法組成,分別是預處理子算法以及元組生成算法。預處理子算法輸入公鑰PK,輸出兩組列表L和L′。元組生成算法輸入一個訪問樹Γ,輸出與訪問樹Γ相對應的元組Tuple1和Tuple2。
(4)快速加密算法:由加密者執(zhí)行,算法首先輸入一個訪問樹Γ、公鑰PK以及消息明文M,然后通過調用預處理算法輸出與訪問樹Γ對應的密文CT,最后將密文CT上傳至域內的SDN控制器。
(5)解密算法:由解密者執(zhí)行,輸入其MAC地址AMAC、密文CT以及私鑰SK,當解密者的屬性集合滿足訪問策略,同時其MAC地址與隱藏在私鑰SK當中的MAC地址信息相吻合時,才會輸出消息明文M,否則退出執(zhí)行。
基于以上算法本文構建了面向多控制器SDN的域間訪問控制系統(tǒng)模型。該模型在2個SDN域之間進行信息分享的工作流程如圖1所示,系統(tǒng)啟動時屬性權威執(zhí)行初始化算法生成公鑰PK和主密鑰MSK。與此同時,屬性權威執(zhí)行預計算算法生成一系列參數并存儲在列表L和L′當中用于后續(xù)的快速加密。當由解密者請求生成私鑰時,屬性權威執(zhí)行密鑰生成算法產生與其屬性集合S以及其MAC地址AMAC相關的私鑰SK。對于加密者產生的流表等各類信息,加密者制定相應的訪問樹Γ并通過快速加密算法生成密文CT并將密文CT上傳給當前SDN域的控制器。對于不同域的解密者,當其發(fā)出解密請求時,當前SDN域控制器首先將密文CT發(fā)送給另一個SDN域控制器,然后將密文CT轉發(fā)給解密者。如果此時解密者的屬性集合S滿足密文當中的訪問樹Γ,而且解密者本身的MAC地址AMAC與私鑰SK當中嵌入的MAC地址信息吻合,那么解密者才能獲取該信息的訪問權限。反之則無法獲取任何有用的信息。
圖1 基于AKE-CP-ABFE的SDN域間訪問控制系統(tǒng)模型
為方便算法構建,首先假設G1和G2是階為大素數p的雙線性群,P是G1的一個生成元,e:G1×G1→G2是群G1到群G2的雙線性映射。取一個安全參數k,這個參數決定了大素數p的比特位數。然后定義拉格朗日函數Δi,S(x),使得集合S當中的任意一個元素i都有:
此外定義2個哈希函數H1:{0,1}*→G1和H2:{0,1}48→Zp。其中H1將任意一串二進制數組映射為群G1中的元素,H1將48 bit的MAC地址映射為Zp上的元素。
初始化算法首先輸入全局的屬性集合Ω={att1,att2,att3,…,attn}以及一個安全參數k,根據參數k生成2個階為p的雙線性群G1和G2,其次選擇G1的一個生成元P以及一個雙線性映射e:G1×G1→G2。然后定義2個哈希函數H1:{0,1}*→G1和H2:{0,1}48→Zp,并選擇2個隨機數α,β∈Zp。最后生成如下公鑰:
PK={p,P,e,Ω,e(P,P)α,
同時保存如下的主密鑰:
MSK={αP,β}
SK={S,D=((α+rH2(AMAC))/β)P,
預計算算法由2個子算法組成,分別為預處理算法和元組生成算法。為方便算法描述,本文定義了一些變量,變量定義說明如表1所示。
表1 變量定義說明
預處理算法預處理算法的執(zhí)行流程如下。
(1)生成n個隨機數r1,r2,…,rn∈Zp;
(2)對于?i∈[1,n],計算e(P,P)αri、riP以及{?attj∈Ω:riH1(attj)};
(3)生成一張空列表L,對于?i∈[1,n]將{e(P,P)αri,riP, {?attj∈Ω:riH1(attj)}}添加到列表L當中;
(4)計算ne=c(ε)loG2(p)并生成ne個隨機數d1,…,dne∈Zp;
(5)對于?i∈[1,ne],計算e(P,P)αdi、diP以及{?attj∈Ω:diH1(attj)};
(6)生成一張空列表L′,對于?i∈[1,ne]將{e(P,P)αdi,diP, {?attj∈Ω:diH1(attj)}}添加到列表L′當中;
(7)隨機選擇di,初始化參數t=di、T1=e(P,P)αdi、T2=diP以及{?attj∈Ω:T3, j=diH1(attj)}。
元組生成算法元組生成算法輸入一個訪問樹Γ,輸出與訪問樹Γ相關的2個元組。該算法由A1和A22個算法組成,算法執(zhí)行流程如下。
對于訪問樹Γ的根節(jié)點,執(zhí)行A1算法。
(1)在列表L′當中隨機選擇一組元素{e(P,P)αdi,diP, {?attj∈Ω:diH1(attj)}};
(2)重新賦值T1=T1e(P,P)αdi、T2=T2+diP以及?attj∈UR:T3, j=T3, j+diH1(attj);
(3)隨機提取一個集合S?[1,n]使得|S|=k;
(4)從列表L當中隨機地抽取一組元素{e(P,P)αri,riP, {?attj∈Ω:riH1(attj)}};
(5)聲明并初始化變量e(P,P)αs=T1∏i∈Se(P,P)αri,如果e(P,P)αs是群G2的單位元則立即返回步驟(1)重新計算;
(6)聲明并初始化變量sP=T2+∑i∈SriP以及?attj∈UR:sH1(attj)=T3, j+∑i∈SriH1(attj),最終返回元組:
Tuple1=(e(P,P)αs,sP,{?attj∈UR:sH1(attj)})。 對于訪問樹中的任意節(jié)點x,執(zhí)行A2算法。
(1)聲明并初始化常量d=kx-2;
(2)從列表L′中隨機選擇一組元素{e(P,P)αdi,diP, {?attj∈Ω:diH1(attj)}};
(3)重新賦值變量T2=T2+diP以及?attj∈Ux:T3, j=T3, j+diH1(attj);
(4) 隨機提取一個集合Sd?[1,n]使得|Sd|=k;
(5)從列表L中隨機選擇一組元素{e(P,P)αri,riP,{?attj∈Ω:riH1(attj)}};
(6)聲明并初始化變量cdP=T2+∑i∈SdriP,若cdP是群G1中的單位元則立即返回步驟(1)重新計算;
(7)從列表L′當中隨機選擇一組元素{e(P,P)αdi,diP, {?attj∈Ω:diH1(attj)}};
(8)對于?u∈[0,d-1]重新賦值變量T2=T2+diP;
(9)對于?u∈[0,d]重新賦值變量?attj∈Ux:T3, j=T3, j+diH1(attj);
(10) 隨機選擇一個集合Su?[1,n]使得|Su|=k;
(11)在列表L當中隨機選擇一組元素{e(P,P)αri,riP, {?attj∈Ω:riH1(attj)}};
(12)對于?u∈[0,d-1]聲明并賦值變量cuP=T2+∑i∈SuriP;
(13)對于?u∈[0,d]聲明并賦值變量?attj∈Ux:cuH(attj)=T3, j+∑i∈SuriH1(attj),返回元組:
Tuple2={?i∈[0,d]:Dx,i=ciP,
為了生成明文M與訪問樹Γ相對應的密文,快速加密算法需要對訪問樹Γ當中任意一個節(jié)點x產生一個次數為kx-1的隨機多項式。為了減小加密的計算負擔,利用預計算算法來生成每個節(jié)點的隨機多項式。根據訪問樹Γ的結構,這種方法采用一種自上而下的迭代方式。
對于訪問樹的根節(jié)點R,快速加密算法調用A1算法獲取元組:
(e(P,P)αs,sP, {?attj∈UR:sH1(attj)})
如果kR-1≠0,則繼續(xù)調用A2算法獲取元組:
{?i∈[0,kR-2]:DR,i=ciP,
利用獲取的以上2個元組,同時聲明并初始化常量dR=kR-2,然后定義一個次數為dR的多項式:
r(X)=∑0≤i≤dRciXi
隨后,關于根節(jié)點R的完整多項式為
qR(X)=r(X)·X+s
對于?l∈SR, ?j∈UR計算:
qR(index(l))P=∑0≤i≤dRindex(l)i+1DR,i+sP
+sH1(attj)
對于訪問樹Γ當中的任意節(jié)點x,調用A2算法獲取元組:
{?i∈[0,kx-2]:Dx,i=ciP,
聲明并初始化常量dx=kx-2,利用上式中的系數ci定義一個次數為dx的多項式:
r(X)=∑0≤i≤dxciXi
然后生成關于節(jié)點x的完整多項式:
qx(X)=r(X)·X+qparent(x)(index(x))
對于?l∈Sx, ?j∈Ux計算:
qx(index(l))P=∑0≤i≤dxindex(l)i+1Dx,i
+qparent(x)(index(x))P
+qparent(x)(index(x))H1(attj)
因此對于任意的葉節(jié)點x,快速加密算法通過迭代得到了qx(0)P和qx(0)H1(att(x))。最終生成如下的密文。
如果x是葉節(jié)點,則令atti=att(x)并進行如下的判斷與計算。
(1)若atti∈S則計算并輸出以下結果
=e(P,P)rqx(0)
(2)若atti?S則輸出以下結果表示放棄該節(jié)點的計算
DecryptNode(CT,SK,x)=⊥
如果x是非葉節(jié)點,那么對于其任意子節(jié)點z調用函數DecryptNode并記其返回結果為Fz。然后進行如下的判斷與計算。
(1)判斷是否存在關于節(jié)點x的包含kx子節(jié)點的集合Sx,使得?z∈Sx:Fz≠⊥成立。若不存在,那么輸出⊥表示放棄該節(jié)點的計算。
(2)若存在集合Sx,計算并輸出以下結果:
=e(G,G)rqx(0)
到目前為止,本文定義了函數DecyrptNode,現在進一步定義解密算法。算法首先從訪問樹Γ的葉節(jié)點開始調用函數DecyrptNode。如果屬性集合S滿足訪問樹,那么就可以通過層層迭代獲取隱藏在根節(jié)點R當中的秘密,記作:
A=DecryptNode(CT,SK,R)=e(P,P)rqR(0)
=e(P,P)rs
隨后通過如下計算就可以得到明文:
=M
反之,如果屬性集合S不能滿足訪問樹Γ,那么將無法在多項式時間內恢復出根節(jié)點R當中的秘密。與此同時,如果當前的MAC地址信息與私鑰SK當中的MAC地址信息不吻合,即使恢復出根節(jié)點R當中的秘密也無法通過進一步的計算得到消息明文。以上兩步中只要任何一步不滿足條件,都將導致解密算法退出執(zhí)行。
本小節(jié)給出AKE-CP-ABFE的安全證明。通過規(guī)約至DBDH困難假設,證明了AKE-CP-ABFE具備密文的不可區(qū)分性。首先給出如下定理。
定理(不可區(qū)分性)給定2段長度相同的明文,如果DBDH問題是難解的,那么一定不存在多項式時間內的敵手能夠以不可忽略的優(yōu)勢辨別出AKE-CP-ABFE的密文來自于哪段明文。
證明為證明以上定理本文設計了一個挑戰(zhàn)游戲,該游戲涉及敵手A、模擬器B以及挑戰(zhàn)者C 3個角色。
首先,游戲進入初始化階段,該階段的流程如下:
(1)敵手A向模擬器B發(fā)送一個挑戰(zhàn)訪問樹Γ*;
(2)挑戰(zhàn)者C產生3個秘密隨機數a,b,c∈Zp和一個雙線性群G1,然后選擇該群上的一個生成元P,最后將P、P1=aP、P2=bP、P3=cP和Z發(fā)送給模擬器B;
(3)模擬器B產生一個隨機數β∈Zp、一個雙線性群G2、一個雙線性映射e:G1×G1→G2、一個全局屬性集合Ω={att1,att2,att3,…,attn}以及一個隨機預言機 和H:{0,1}*→G1。最后,模擬器B把如下的公鑰發(fā)送給敵手A。
其次,游戲進入詢問階段,在該階段敵手A向模擬器B進行有限次數的參數詢問,參數詢問包括私鑰詢問和加密詢問。
私鑰詢問的流程如下:
(1)敵手A向模擬器B發(fā)送一個屬性集合S;
(2)模擬器B產生2個隨機數R1,R2∈Zp,然后對于屬性集合S當中的任意屬性attj產生一個對應的秘密隨機數rj∈Zp,最終返回私鑰:
SK={S,D=R1P,?attj∈S:Dj
(3)模擬器B將元組{S,R1,R2}添加到一個列表L1當中。
加密詢問的流程如下:
(1)敵手A向模擬器B選擇一個消息明文M以及一個訪問樹Γ;
(2)模擬器B選擇一個秘密數s∈ZP,然后按照真實的PB-CP-ABFE調用快速加密算法和預計算算法,輸入公鑰PK、訪問樹Γ以及消息明文M并最終產生密文:
再次,游戲進入挑戰(zhàn)階段,該階段的流程如下:
(1)敵手A向模擬器B提交2個長度相同的消息M1和M2;
(2)模擬器B選擇一個秘密數s∈Zp以及一個隨機的比特θ∈{0,1}并返回如下的挑戰(zhàn)密文給敵手A:
然后,游戲再次進入詢問階段。在本階段,敵手A繼續(xù)向模擬器B發(fā)送有限次數的私鑰詢問或加密詢問。在敵手A發(fā)送詢問的過程中始終存在如下的限制:
(1)所有在私鑰詢問包含的屬性集合S必須滿足Γ(S)≠1;
(2)不能將元組(Γ*,M1)或(Γ*,M2)作為加密詢問的輸入。
最后,游戲進入最終猜測階段,該階段的流程如下:
(1)敵手A輸出θ′∈{0,1}作為對θ值的猜測;
(2)模擬器B判斷θ′值,如果θ′=θ那么敵手A贏得挑戰(zhàn)游戲,同時模擬器B輸出1表示其認為挑戰(zhàn)者C產生的DBDH難題答案為Z=e(P,P)abc;
(3)如果θ′≠θ那么敵手A輸掉挑戰(zhàn)游戲,同時模擬器B輸出0表示其認為DBDH難題答案為Z=e(P,P)z。
當Z=e(P,P)abc,模擬器產生的挑戰(zhàn)密文CT*與真實的AKE-CP-ABFE密文服從相同的分布。假設敵手A在真實的AKE-CP-ABFE算法中區(qū)分密文來自于哪段消息明文的優(yōu)勢為ε′,那么模擬器B輸出1的概率為
Pr[B(P,P1,P2,P3,Z=e(G,G)abc)=1]
=Pr[θ=1|Z=e(P,P)abc]
·Pr[Z=e(P,P)abc]
當Z=e(P,P)z,敵手A獲取的挑戰(zhàn)密文CT*是完全隨機分布的,所以敵手A實際上只能隨機地輸出θ′值。于是模擬器B輸出1的概率是
Pr[B(P,P1,P2,P3,Z=e(G,G)z)=1]
=Pr[θ=1|Z=e(P,P)z]
·Pr[Z=e(P,P)z]
于是模擬器B成功解出挑戰(zhàn)者C提出的DBDH難題的優(yōu)勢滿足:
因此可以斷定,如果DBDH難題假設成立,即不存在多項式時間算法能夠以不可忽略的優(yōu)勢ε解決DBDH問題,那么也一定不存在多項式時間敵手A能夠以不可忽略的優(yōu)勢ε′區(qū)分出密文來自于哪一段消息明文。
本文針對幾種典型的SDN訪問控制系統(tǒng)的功能進行了分析比較,比較結果如表2所示。
表2 SDN訪問控制方案功能比較
在文獻[7]的方案里,為了將SDN的各個組件在邏輯上進行隔離,事先對不同組件的訪問權限進行了詳細的描述。文獻[8]則是對不同網絡組件的可執(zhí)行指令做出了不同程度的約束,從而實現安全快速的訪問控制。以上2種方案不僅對SDN控制器當中的流表、路由等信息進行加密,還不支持訪問策略的靈活制定,因此在不同程度上限制了訪問控制方案的安全性和可擴展性。文獻[19]基于等級CP-ABE設計了一種SDN訪問控制方案,使得SDN控制器能夠靈活管理SDN的用戶、設備和流表數據。相比文獻[7]和文獻[8]的方案,該方案在安全性和可擴展性上有所提升,同時支持細粒度的訪問策略。但是考慮到等級CP-ABE龐大的計算量,并不能很好地兼顧整個方案的計算效率。在本文設計的基于AKE-CP-ABFE的SDN域間信息訪問控制系統(tǒng),在現有的ABE算法優(yōu)勢基礎上利用預計算技術實現了快速加密。除此之外,即使SDN用戶或者設備暴露了私鑰,其他非法用戶也無法通過該私鑰獲取任何有用的消息明文,可以有效防止私鑰暴露產生的信息泄露風險。因此在訪問控制的功能上,本文提出的方案具有顯著的優(yōu)勢。
為進一步驗證基于AKE-CP-ABFE的SDN跨間訪問控制模型的性能,進行了一系列加解密仿真實驗。本系統(tǒng)的仿真硬件為Intel (R)Core(TM) i7-5600U@2.6 GHz,內存為8 G,系統(tǒng)為Cent OS 6.7, 使用代碼庫為JPBC 1.2.1,實驗基于256位的橢圓曲線,曲線階為120 bit的大素數。實驗分別基于文獻[12]、文獻[18]以及AKE-CP-ABFE構建了SDN域間訪問控制模型,并在不同的屬性數量條件下記錄了20次加解密所需的平均時間。
基于以上3種算法構建的SDN域間訪問控制模型在不同屬性數量情況下的平均加密時間如圖2所示??梢钥闯?,基于文獻[18]算法的方案的加密時間要高于基于文獻[12]算法的方案,這是因為文獻[18]的方案構建了一種重加密機制,使得方案在執(zhí)行解密的過程中可以將龐大的解密計算部分外包給第三方,同時方便解密者更新屬性集合。而在相同屬性數量條件下,基于AKE-CP-ABFE的SDN訪問控制方案的平均解密時間約為基于文獻[12]方案的50%,即只需要一般的算力就可以完成相同的加密計算。因此本文提出的模型具備較高的加密效率。
圖2 平均加密時間對比
圖3展示了基于3種方案構建的SDN域間訪問控制模型在不同屬性數量情況下的平均解密時間。可以看出在不同屬性數量情況下,文獻[18]的方案所需的解密時間都是最多的,而且隨著屬性數量增加,與文獻[12]方案以及AKE-CP-ABFE方案的解密時間差越大。這是因為屬性越多,額外關于重加密以及屬性更新的計算操作就越復雜。而基于AKE-CP-ABFE算法構建的SDN訪問控制模型在解密時間上與文獻[12]方案相當,但在解密過程中需要進行MAC地址驗證所以要多消耗平均9 ms的計算時間,總體來說幾乎不產生過多的計算量。因此本文提出的方案在解密過程中仍能保持較好的計算效率。
圖3 平均解密時間對比
隨著計算機網絡規(guī)模的擴大,網絡管理的難度與日俱增,大型復雜網絡呈現爆發(fā)式增長。SDN作為一種控制與數據分離的新型網絡架構,為大型網絡提供了全新的集中化管理與配置方法。與此同時如何提供安全的信息保護以及靈活的訪問控制機制以保證用戶及設備的隱私,正成為部署SDN尤其是多控制器設置下的大型SDN的關鍵問題。本文提出了一種抗密鑰暴露快速屬性加密算法,利用預計算技術使得加密者在進行加密時無需進行任何復雜運算,提高了加密效率。同時基于拓展圖技術進一步降低了預計算的存儲開銷。除此之外,將用戶或者設備的MAC地址嵌入到私鑰當中,即使將私鑰有意或者無意地暴露給其他非法用戶或者設備也不會泄露任何敏感信息。理論分析和仿真實驗表明,基于該算法構建的SDN域間信息訪問控制系統(tǒng)模型,降低了開源API造成的用戶或者網絡設備敏感信息泄露的風險,同時能以較高的計算效率保證敏感信息域間分享的安全性和靈活性。如何在屬性動態(tài)變化的環(huán)境中保證SDN訪問控制的有效性將是下一步的研究方向。