一種軟件定義網(wǎng)絡(luò)下的流規(guī)則合法性認(rèn)證方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計(jì)算機(jī)應(yīng)用領(lǐng)域,具體涉及一種軟件定義網(wǎng)絡(luò)下的流規(guī)則合法性認(rèn)證 方法。
【背景技術(shù)】
[0002] 軟件定義網(wǎng)絡(luò)(Software Defined Networking, SDN)是典型的流規(guī)則驅(qū)動(dòng)型網(wǎng) 絡(luò),流規(guī)則SDN是基礎(chǔ)設(shè)施層執(zhí)行轉(zhuǎn)發(fā)、數(shù)據(jù)包處理等操作的重要依據(jù);同時(shí),網(wǎng)絡(luò)中的信 息流是否流經(jīng)某個(gè)網(wǎng)絡(luò)設(shè)備以及何時(shí)經(jīng)過(guò)該設(shè)備,均由控制器下發(fā)的流規(guī)則決定,物理的 安全設(shè)備自身并不具有決定權(quán)。因此,在由流規(guī)則驅(qū)動(dòng)的SDN網(wǎng)絡(luò)中,對(duì)流規(guī)則的合法性和 正確性進(jìn)行認(rèn)證,防止惡意和非法流規(guī)則的擴(kuò)散,將是保障SDN網(wǎng)絡(luò)安全運(yùn)行的關(guān)鍵。
[0003] SDN中的流規(guī)則通常由系統(tǒng)管理員、OpenFlow應(yīng)用程序、安全服務(wù)類應(yīng)用程序和 其他一些輔助應(yīng)用程序共同參與制定,并通過(guò)控制器下發(fā)至基礎(chǔ)設(shè)施層的網(wǎng)絡(luò)設(shè)備中。流 規(guī)則在生成和下發(fā)的過(guò)程中,可能被惡意篡改或偽造,不同的流規(guī)則之間也可能相互沖突, 而SDN基礎(chǔ)設(shè)施層的網(wǎng)絡(luò)設(shè)備對(duì)控制器下發(fā)的流規(guī)則完全信任,一旦由虛假控制器或惡意 應(yīng)用程序生成的非法流規(guī)則被執(zhí)行,將會(huì)給SDN網(wǎng)絡(luò)帶來(lái)嚴(yán)重威脅。
[0004] 由于流規(guī)則是SDN基礎(chǔ)設(shè)施層執(zhí)行轉(zhuǎn)發(fā)、數(shù)據(jù)包處理等操作的主要依據(jù),攻擊者 一旦能夠偽造或篡改SDN中的部分流規(guī)則,將可能控制整個(gè)SDN網(wǎng)絡(luò);可編程性是SDN實(shí)現(xiàn) 統(tǒng)一管理、配置網(wǎng)絡(luò)設(shè)備的重要依托,但它也降低了攻擊者對(duì)SDN中流規(guī)則的攻擊門檻,使 得攻擊者僅通過(guò)軟件編程即可實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)的攻擊。攻擊者如果能夠偽裝成一些具有流規(guī)則 生成權(quán)限的合法應(yīng)用程序,或?qū)戏☉?yīng)用程序的部分流規(guī)則生成權(quán)限加以篡改,便可能破 壞SDN中正常的流規(guī)則生成機(jī)制,使得攻擊者的一些非法數(shù)據(jù)包繞開SDN中部署的各種安 全設(shè)備,從而導(dǎo)致SDN中預(yù)先部署的各種安全服務(wù)失效。
[0005] 此外,由于現(xiàn)有的大多數(shù)控制器如 NOX、POX、Floodlight、OpenDaylight、Beacon、 Onix、Ryu N0S、0N0S等,在設(shè)計(jì)和開發(fā)之初,研究人員主要關(guān)注的是網(wǎng)絡(luò)資源的調(diào)度和控 制,如鏈路發(fā)現(xiàn)、拓?fù)涔芾?、流?guī)則下發(fā)等功能,基本沒(méi)有對(duì)流規(guī)則的合法性問(wèn)題詳加考慮。
[0006] 針對(duì)SDN中流規(guī)則的合法性檢測(cè)與認(rèn)證問(wèn)題,現(xiàn)有的研究方案主要包括兩種思 路:(1)基于應(yīng)用程序的角色和優(yōu)先級(jí),對(duì)流規(guī)則的等級(jí)進(jìn)行劃分;(2)采用形式化分析的 方法,對(duì)不同流規(guī)則之間的一致性和沖突進(jìn)行匹配和分析。
[0007] 第一種研究思路首先對(duì)參與制定SDN流規(guī)則的應(yīng)用程序進(jìn)行角色和優(yōu)先級(jí)的劃 分,如將應(yīng)用程序劃分為系統(tǒng)管理員級(jí)、安全應(yīng)用級(jí)和其他應(yīng)用程序三類,各應(yīng)用程序根據(jù) 自身的角色對(duì)其生成的流規(guī)則進(jìn)行簽名。當(dāng)流規(guī)則被插入控制器流規(guī)則庫(kù)時(shí),控制器便根 據(jù)流規(guī)則的簽名信息對(duì)其合法性進(jìn)行判斷。這種方法僅將生成流規(guī)則的實(shí)體劃分為管理 員、安全類應(yīng)用程序和其它應(yīng)用程序三類角色,而實(shí)際情況中,參與流規(guī)則制定的實(shí)體角色 更為復(fù)雜。如多個(gè)同為安全類應(yīng)用的程序?qū)嶓w,采用基于角色的流規(guī)則來(lái)源劃分方法時(shí),將 無(wú)法對(duì)生成某個(gè)流規(guī)則的具體應(yīng)用程序進(jìn)行識(shí)別;同時(shí),由于同一角色的應(yīng)用程序生成的 流規(guī)則優(yōu)先級(jí)相同,但這些流規(guī)則之間又可能相互沖突,這些因素均給流規(guī)則的更新和認(rèn) 證帶來(lái)了諸多問(wèn)題。因此,需要采用更細(xì)粒度的流規(guī)則認(rèn)證和優(yōu)先級(jí)劃分機(jī)制,來(lái)對(duì)流規(guī)則 合法性進(jìn)行約束。
[0008] 第二種研究思路首先對(duì)流規(guī)則進(jìn)行形式化描述,并將描述信息和目標(biāo)流規(guī)則一同 輸入到一個(gè)指定的形式化分析工具中,依據(jù)分析工具輸出的分析結(jié)果,對(duì)流規(guī)則的一致性 和沖突情況進(jìn)行檢驗(yàn),然而,SDN的網(wǎng)絡(luò)狀態(tài)和配置信息動(dòng)態(tài)變化,這種流規(guī)則檢測(cè)方法雖 然可以在流規(guī)則執(zhí)行的過(guò)程中對(duì)其一致性進(jìn)行細(xì)粒度地檢測(cè),但卻無(wú)法防止惡意應(yīng)用程序 向控制器注入虛假流規(guī)則。
[0009] 因此,針對(duì)SDN中的流規(guī)則合法性問(wèn)題,本發(fā)明針對(duì)SDN流規(guī)則生成機(jī)制和下發(fā)機(jī) 制的特點(diǎn),結(jié)合應(yīng)用程序權(quán)限管理和身份簽名算法等思想,提出了一種軟件定義網(wǎng)絡(luò)下的 流規(guī)則合法性認(rèn)證方法。
【發(fā)明內(nèi)容】
[0010] 本發(fā)明旨在至少解決上述技術(shù)問(wèn)題之一。
[0011] 為此,本發(fā)明的一個(gè)目的在于提出一種軟件定義網(wǎng)絡(luò)下的流規(guī)則合法性認(rèn)證方 法。
[0012] 為了實(shí)現(xiàn)上述目的,本發(fā)明的實(shí)施例公開了一種軟件定義網(wǎng)絡(luò)下的流規(guī)則合法性 認(rèn)證方法,包括以下步驟:S1 :構(gòu)造應(yīng)用程序的流規(guī)則生成權(quán)限集,對(duì)應(yīng)用程序的流規(guī)則生 成權(quán)限進(jìn)行細(xì)化,所述步驟S1進(jìn)一步包括:S11 :為應(yīng)用程序的各項(xiàng)流規(guī)則生成權(quán)限設(shè)定權(quán) 限值,所述權(quán)限值的大小用于表示應(yīng)用程序是否具有該項(xiàng)權(quán)限;S12 :構(gòu)造所述應(yīng)用程序的 有效流規(guī)則生成權(quán)限集合,當(dāng)所述應(yīng)用程序某項(xiàng)流規(guī)則生成權(quán)限值為最大值時(shí),所述應(yīng)用 程序的該項(xiàng)流規(guī)則生成權(quán)限有效;S13 :構(gòu)造所述應(yīng)用程序的待分配流規(guī)則生成權(quán)限集合, 當(dāng)所述應(yīng)用程序某項(xiàng)流規(guī)則生成權(quán)限的權(quán)限值為最小值時(shí),所述應(yīng)用程序的該項(xiàng)流規(guī)則生 成權(quán)限待分配;S14 :構(gòu)造所述應(yīng)用程序的流規(guī)則生成權(quán)限全集,所述流規(guī)則生成權(quán)限全集 包括所述權(quán)限值為所述最大值或所述最小值時(shí)所對(duì)應(yīng)的流規(guī)則生成權(quán)限的總和,包括讀取 狀態(tài)信息方面的流規(guī)則生成權(quán)限、信息變動(dòng)提示方面的流規(guī)則生成權(quán)限和寫入信息方面的 流規(guī)則生成權(quán)限;S2 :新應(yīng)用程序在參與流規(guī)則生成服務(wù)前,應(yīng)向可信第三方私鑰生成中 心獲取用于流規(guī)則生成服務(wù)的合法身份標(biāo)識(shí),并通過(guò)SDN控制器的App認(rèn)證模塊對(duì)所述合 法身份標(biāo)識(shí)和所述有效流規(guī)則生成權(quán)限集合進(jìn)行注冊(cè);S3 :采用基于身份的簽名算法對(duì)所 述新應(yīng)用程序生成的流規(guī)則信息進(jìn)行簽名,所述SDN控制器接收到具有簽名的所述流規(guī)則 之后,由所述App認(rèn)證模塊對(duì)所述流規(guī)則和生成所述流規(guī)則的應(yīng)用程序的有效流規(guī)則生成 權(quán)限進(jìn)行驗(yàn)證;若通過(guò)驗(yàn)證,則判定所述流規(guī)則合法,所述SDN控制器接受所述流規(guī)則。
[0013] 根據(jù)本發(fā)明實(shí)施例的一種軟件定義網(wǎng)絡(luò)下的流規(guī)則合法性認(rèn)證方法,可對(duì)合法應(yīng) 用程序生成的越權(quán)流規(guī)則進(jìn)行及時(shí)過(guò)濾,并能夠防止合法應(yīng)用程序在被惡意攻擊者非法使 用時(shí),給控制器帶來(lái)的流表?xiàng)l目污染和內(nèi)存耗盡問(wèn)題;采用基于身份的簽名算法對(duì)應(yīng)用程 序生成的各項(xiàng)流規(guī)則進(jìn)行簽名,在流規(guī)則插入控制器時(shí),控制器可根據(jù)流規(guī)則的簽名信息 及其來(lái)源應(yīng)用程序的流規(guī)則生成權(quán)限,對(duì)流規(guī)則的合法性進(jìn)行認(rèn)證,拒絕非法應(yīng)用程序提 供的虛假流規(guī)則生成服務(wù),從而有效防止虛假流規(guī)則對(duì)SDN控制器的惡意攻擊。
[0014] 另外,根據(jù)本發(fā)明上述實(shí)施例的一種軟件定義網(wǎng)絡(luò)下的流規(guī)則合法性認(rèn)證方法, 還具有如下附加的技術(shù)特征:
[0015] 進(jìn)一步地,所述步驟S2進(jìn)一步包括:S21 :當(dāng)新應(yīng)用程序加入系統(tǒng)時(shí),所述新應(yīng)用 程序向可信第三方私鑰生成中心發(fā)送基本信息申請(qǐng)用于流規(guī)則生成服務(wù)的所述合法身份 標(biāo)示,所述基本信息包括開發(fā)者、名稱、大小和開發(fā)日期;S22 :所述可信第三方私鑰生成中 心對(duì)所述新應(yīng)用程序的基本信息進(jìn)行審核,若審核通過(guò),所述可信第三方私鑰生成中心為 所述新應(yīng)用程序頒發(fā)所述合法身份標(biāo)示;
[0016] S23 :在所述新應(yīng)用程序首次向所述SDN控制器提供流規(guī)則生成服務(wù)時(shí),所述新應(yīng) 用程序向所述App認(rèn)證模塊提供所述合法身份標(biāo)示和所述有效流規(guī)則生成權(quán)限集合,由所 述App認(rèn)證模塊對(duì)所述應(yīng)用程序的所述合法身份標(biāo)示和所述有效流規(guī)則生成權(quán)限集合進(jìn) 行審核;S24 :若通過(guò)審核,所述App認(rèn)證模塊會(huì)將權(quán)限登記結(jié)果返回給所述新應(yīng)用程序;若 未通過(guò)審核,所述App認(rèn)證模塊將拒絕接受所述新應(yīng)用程序的流規(guī)則服務(wù)。
[0017] 進(jìn)一步地,所述步驟S3進(jìn)一步包括:S31 :可信第三方私鑰生成中心生成系統(tǒng)的公 開參數(shù)params和主密鑰;S32 :新應(yīng)用程序向所述可信第三方私鑰生成中心發(fā)送所述合法 身份標(biāo)識(shí),所述可信第三方私鑰生成中心為所述新應(yīng)用程序生成對(duì)應(yīng)的私鑰;S33 :所述新 應(yīng)用程序根據(jù)所述私鑰和所述的合法身份標(biāo)識(shí),采用基于身份的簽名算法對(duì)所述流規(guī)則進(jìn) 行簽名;S34 :所述App認(rèn)證模塊根據(jù)所述新應(yīng)用程序的所述身份標(biāo)識(shí),對(duì)所述流規(guī)則的簽 名信息進(jìn)行驗(yàn)證,若簽名合法,則接受所述流規(guī)則,并將所述流規(guī)則更新至系統(tǒng)流規(guī)則庫(kù)。
[0