一種基于安全威脅等級的自適應(yīng)遺傳算法
引 言
加密和認(rèn)證是無線傳感器網(wǎng)絡(luò)安全中常用的防范手段, 但由于電池容量和計算開銷等方面存在局限,僅通過對節(jié)點(diǎn)進(jìn)行加密和認(rèn)證,雖然可以應(yīng)對安全威脅等級保持不變的情形,但是當(dāng)威脅等級不斷變化時,如果加密和認(rèn)證功能太弱, 則可能威脅到通信安全,如果太強(qiáng)則增加能耗。因此需要根據(jù)威脅等級對安全屬性(即加密和認(rèn)證)進(jìn)行動態(tài)調(diào)整,使二者相互匹配,既保證通信安全,又不額外增加能量消耗。
本文提出了一種基于威脅等級來調(diào)整安全屬性的遺傳算法,它根據(jù)匯聚節(jié)點(diǎn)感知到的威脅等級,通過認(rèn)證和加密的動態(tài)轉(zhuǎn)換,實(shí)現(xiàn)安全屬性的自適應(yīng)調(diào)整,改善了現(xiàn)有的安全防范方式。
1 遺傳算法中安全節(jié)點(diǎn)適應(yīng)度函數(shù) SNF的構(gòu)建
在遺傳算法的應(yīng)用中,需要對適應(yīng)度函數(shù)進(jìn)行評估,從而決定啟用傳感器節(jié)點(diǎn)安全要素的最佳時機(jī)。當(dāng)通信數(shù)據(jù)的完整性受到威脅時,安全節(jié)點(diǎn)適應(yīng)度(Secure Node Fitness, SNF)支持啟用節(jié)點(diǎn)的安全元素。匯聚節(jié)點(diǎn)會持續(xù)跟蹤特定路徑上的所有不規(guī)范數(shù)據(jù)包。如果路徑(簇頭節(jié)點(diǎn)→匯聚節(jié)點(diǎn)) 傳輸“錯誤的數(shù)據(jù)包”或“重發(fā)的數(shù)據(jù)包”,將會受到懲罰。 SNF 表示為:
其中,λ1+λ2=1,λ2 是加密的“貢獻(xiàn)獎勵”,R 表示路由總數(shù)量,θi 表示路由 i 受到的威脅等級(由匯聚節(jié)點(diǎn)計算),Ki 表示路由 i 上開啟認(rèn)證和加密的節(jié)點(diǎn)數(shù)量,N 表示路由 i上節(jié)點(diǎn)的總數(shù)量。 如果路由 i上節(jié)點(diǎn) n 開啟認(rèn)證,那么 Iin=1,否則 Iin=0。Fin( ·) 表示在路由 j 上的節(jié)點(diǎn) i 開啟接入控制而產(chǎn)生的懲罰函數(shù),函 數(shù)中的 Q 和 ψ 分別表示電池的量化等級和使用率。
2 啟用安全屬性的遺傳算法
主密鑰 MK 可導(dǎo)出對稱加密密鑰 Kencr、消息認(rèn)證密鑰 Kauth,并生成偽隨機(jī)數(shù)密鑰 Krand。這些導(dǎo)出的密鑰可以根據(jù) 匯聚節(jié)點(diǎn)的需求任意改變。主密鑰由節(jié)點(diǎn)和匯聚節(jié)點(diǎn)共享,是 節(jié)點(diǎn) - 匯聚節(jié)點(diǎn)之間信息傳遞的唯一密鑰。偽隨機(jī)數(shù)由導(dǎo)出密 鑰 Krand 和計數(shù)器 C 共同產(chǎn)生,為避免受到“明文”攻擊,在 信息被加密之前插入此偽隨機(jī)數(shù)。
節(jié)點(diǎn)間的通信密鑰 INCK 由兩個節(jié)點(diǎn)共享,并對兩個節(jié) 點(diǎn)之間傳輸?shù)男畔⑦M(jìn)行認(rèn)證,認(rèn)證密鑰為 INCKmac。匯聚節(jié) 點(diǎn)根據(jù)路由的層次結(jié)構(gòu),以及應(yīng)用于端口 0 和 1 的 MAC 密 鑰 INCK0mac 和 INCK1mac 為參與信息認(rèn)證的每個簇間路由器 ICR(或簇頭節(jié)點(diǎn) CH)提供一種封裝的通信密鑰 INCK,即 INCK={(INCK0mac),(INCK1mac)}。每個節(jié)點(diǎn)根據(jù)自身的 Kencr (由主密鑰導(dǎo)出)對封裝的數(shù)據(jù)包進(jìn)行解密,并提取出 INCK。 與 SPIN 協(xié)議相似的是,算法采用“計數(shù)器模式分組密碼”進(jìn) 行加密 / 解密,并采用“CBC-MAC”模式認(rèn)證。
每個傳感器節(jié)點(diǎn)的安全策略用兩位二進(jìn)制數(shù)表示,這些 安全策略形成染色體串,即節(jié)點(diǎn)。定義為:(e1a1a2…aN)1(e1a1a2… aN)2…(e1a1a2…aN)R。其中,(e1a1a2…aN)i 表示路由 i上節(jié)點(diǎn) n 的安全屬性(en&an),en 和 ai 分別表示加密位和認(rèn)證位。通 過設(shè)置 en=1,就可以對 CH 的數(shù)據(jù)進(jìn)行加密。根據(jù)以上原理, 圖 1中安全屬性染色體 =11011,節(jié)點(diǎn) 2 在端口 0 處不需要信息 認(rèn)證,但是在端口 1 處需要,因此 INCK1mac2=INCK0mac3。匯聚節(jié)點(diǎn)在 ICR 和 CH 端口處生成 INCK 密鑰,啟動基于安全 屬性染色體(遺傳算法產(chǎn)生)的認(rèn)證過程如圖 1 所示。
算法流程如圖 2所示。產(chǎn)生初始種群的染色體串一部分由隨機(jī)數(shù)發(fā)生器(RNG)產(chǎn)生,另一部分則由以前的種群樣本產(chǎn)生。算法采用 標(biāo)準(zhǔn)加權(quán)輪盤 方式,選擇 n個染色體串投入到 配對庫 中,以 交叉概率 產(chǎn)生 N個染色體。染色體繁殖期間,多個交叉點(diǎn)的位置由隨機(jī)數(shù)發(fā)生器(RNG)計算產(chǎn)生。變異時將生成的 N個染色體放入突變庫,突變算子根據(jù)自適應(yīng)突變概率(與平均適應(yīng)度成反比)使其發(fā)生突變,采用類似拋硬幣的方式來決定是否要將比特位進(jìn)行逆變處理(即0 → 1,1→ 0)。在選擇階段,根據(jù)適應(yīng)度值,從 N+n個(n個雙親,N 個孩子)染色體中選取 n個染色體延續(xù)到下一代。比較每一次迭代得到的最優(yōu)適應(yīng)度,如果最大適應(yīng)度值和平均適應(yīng)度值變化不大、趨于穩(wěn)定,那么此適應(yīng)度值即為近似全局最優(yōu)解。
3 仿真與分析
仿真的實(shí)驗(yàn)場景由100個節(jié)點(diǎn)組成,這些節(jié)點(diǎn)隨機(jī)分布在 3030的區(qū)間內(nèi),每個節(jié)點(diǎn)具有唯一的UUID,隨機(jī)分配量化值為 0 ~15 之間的電池容量,坐標(biāo)介于(0,0)~(30, 30)之間,覆蓋范圍為 3 3。GA 運(yùn)行時的交叉率為 60%,初始變異率為 6%。實(shí)驗(yàn)?zāi)M匯聚節(jié)點(diǎn)的運(yùn)行,NS-2 軟件模擬網(wǎng)絡(luò)流量。
根據(jù)匯聚節(jié)點(diǎn)感知到的威脅等級,通過認(rèn)證和加密的動態(tài)轉(zhuǎn)換,改善已有的安全防范方式,如圖 3 所示。在基于威 脅等級調(diào)整安全屬性的過程中,由于計算開銷和處理數(shù)據(jù)包 頭部的開銷均有所降低,安全節(jié)點(diǎn)的能耗也降低,這在一定 程度上有效促進(jìn)了電池的使用,最大限度地減少了異常節(jié)點(diǎn)帶 來的不利影響。
4 結(jié) 語
本文提出了一種基于威脅等級來調(diào)整安全屬性的遺傳算 法,它根據(jù)匯聚節(jié)點(diǎn)感知到的威脅等級,通過認(rèn)證和加密的 動態(tài)轉(zhuǎn)換實(shí)現(xiàn)安全屬性的自適應(yīng)調(diào)整,使威脅等級和安全屬 性相互匹配,此舉既提高了通信的安全性,也有利于改善傳 感器節(jié)點(diǎn)的能效。