陳 明,張宏亮,鄧 軍,唐 文,龔 萍
(中國電子科技集團公司第三十研究所,四川 成都 610041)
隨著計算機網(wǎng)絡(luò)的不斷深入發(fā)展,信息安全問題日益受到人們廣泛關(guān)注和重視。在影響網(wǎng)絡(luò)安全的因素中,重放攻擊是一種常見的、危害巨大的網(wǎng)絡(luò)主動攻擊手段。重放攻擊是指將通過竊聽等手段獲取的信息再次發(fā)出以產(chǎn)生非授權(quán)的效果[1-2],針對重放攻擊原理與防范手段的研究也日益出現(xiàn)。文獻[3]對常用的抗重放方案進行了總結(jié)概述,但沒有給出詳細實施方案和平臺。文獻[4]提出基于時間戳/消息ID方式實現(xiàn)應(yīng)用層抗重放攻擊的方法,但該方法不適用于高速IP數(shù)據(jù)傳輸網(wǎng)絡(luò)。文獻[5]提出了一種針對可信平臺模塊的抗重放攻擊方案。文獻[6]設(shè)計了一種適用于車載CAN總線網(wǎng)絡(luò)協(xié)議的抗重放實現(xiàn)方案,適用于低速現(xiàn)場總線網(wǎng)絡(luò)。文獻[7]提出了一種在VPN隔離網(wǎng)關(guān)使用軟件實現(xiàn)抗重放技術(shù),但沒有深入分析高速多路通信的抗重放并行處理機制。
為了解決上述問題,同時結(jié)合工程應(yīng)用中網(wǎng)絡(luò)設(shè)備多個物理子網(wǎng)之間的互通需求,本文創(chuàng)造性提出一種基于FPGA硬件平臺實現(xiàn)多路安全連接抗重放技術(shù)的機制,該方案充分利用FPGA支持高速、并行處理的特點,滿足快速檢測網(wǎng)絡(luò)中多路重放攻擊,并迅速做出報警響應(yīng)的需求,同時不影響設(shè)備正常工作,最終達到既實現(xiàn)安全通信,又滿足網(wǎng)絡(luò)高速互通的目的。
安全連接[8]數(shù)據(jù)處理流程如圖1所示,網(wǎng)絡(luò)設(shè)備的物理端口從邏輯上劃分為N個獨立的安全連接邏輯通道,對于網(wǎng)絡(luò)接入側(cè),支持同一個物理子網(wǎng)的不同業(yè)務(wù)分別接入到不同的邏輯通道,也支持不同的物理子網(wǎng)分別接入不同的邏輯通道。邏輯通道之間相互獨立,數(shù)據(jù)處理互不干擾,為用戶提供類似專用線路的使用體驗。
圖1 安全連接數(shù)據(jù)處理示意圖
在標(biāo)準(zhǔn)以太網(wǎng)數(shù)據(jù)幀定義[9]基礎(chǔ)上,自定義私有網(wǎng)絡(luò)通信數(shù)據(jù)幀格式如圖2所示,具體說明如下:
圖2 數(shù)據(jù)幀結(jié)構(gòu)定義
MAC地址:DMAC和SMAC都是6 B。
Type:以太網(wǎng)類型,2 B。
安全連接索引:用于指示安全連接通道號,2 B。
協(xié)議頭:自定義協(xié)議頭,16 B。
SN:抗重放序列號,單調(diào)遞增,4 B。
數(shù)據(jù):凈荷數(shù)據(jù)。
FCS:以太網(wǎng)CRC32計算值,4 B。
自定義數(shù)據(jù)幀中安全連接索引、協(xié)議頭和SN屬于增加的額外開銷,長度為22 B,當(dāng)數(shù)據(jù)幀發(fā)送給對端用戶子網(wǎng)時需要提前丟掉。數(shù)據(jù)發(fā)送與接收處理流程如下:本地網(wǎng)絡(luò)數(shù)據(jù)需要發(fā)送到對端網(wǎng)絡(luò)時,按照圖2的數(shù)據(jù)幀格式封裝好后傳輸?shù)骄€路上;對端接收數(shù)據(jù),進行合法性判斷和抗重放解析后,正確的數(shù)據(jù)包去掉自定義封裝數(shù)據(jù)字段,再發(fā)送給目的用戶網(wǎng)絡(luò),非法數(shù)據(jù)包直接丟棄。
每一個數(shù)據(jù)幀包含了一個唯一的序列號字段(SN),用于標(biāo)識一定時間范圍內(nèi)唯一的數(shù)據(jù)幀,具體定義如圖2所示。當(dāng)創(chuàng)建一個新的安全連接時,序列號計數(shù)器會初始化為0,每發(fā)送一個有效數(shù)據(jù)幀,發(fā)送方的序列號計數(shù)器的值加1并寫入對應(yīng)數(shù)據(jù)段。序列號是一個連續(xù)單調(diào)遞增的4 B十六進制數(shù),當(dāng)安全連接更新時,一般不超過24 h,對序列號清0重新開始計數(shù)。
網(wǎng)絡(luò)數(shù)據(jù)在經(jīng)過傳輸網(wǎng)到達目的網(wǎng)絡(luò)設(shè)備時,由于網(wǎng)絡(luò)設(shè)備內(nèi)部處理、路由轉(zhuǎn)發(fā)、數(shù)據(jù)丟包等原因,導(dǎo)致接收端數(shù)據(jù)可能存在亂序的情況,因此,需要使用滑動窗口來提高對數(shù)據(jù)亂序的容忍度。根據(jù)實際工程應(yīng)用經(jīng)驗,一般規(guī)定窗口寬度W為8,16,32,64,128等數(shù)值[3]。窗口寬度設(shè)置過大,可消耗更多存儲資源,抗重放效果增加不明顯;窗口寬度設(shè)置過小,對數(shù)據(jù)報文亂序的容忍度降低,易導(dǎo)致丟包率增加,影響到正常通信。結(jié)合本文所述網(wǎng)絡(luò)特點,窗口寬度設(shè)置為64能夠滿足使用要求。
初始化時,窗口最右側(cè)序列號為X,左邊依次為X-1,X-2,…,X-W+2,最左側(cè)序列號為X-W+1,滑動窗口工作原理[10]如圖3所示。每收到一個數(shù)據(jù)幀,接收端按如下流程進行處理:
(1)接收端提取待處理數(shù)據(jù)幀序列號SN,如果SN大于X-W+1且小于X,查詢對應(yīng)的序列號標(biāo)志位,如圖3所示。如果標(biāo)志位為0,表示從未收到過該包數(shù)據(jù),數(shù)據(jù)合法,并將標(biāo)志位置1;如果標(biāo)志位為1,表示曾收到過該數(shù)據(jù),當(dāng)前數(shù)據(jù)幀為重放包,丟棄。
圖3 滑動窗口工作原理示意圖
(2)如果待處理數(shù)據(jù)幀序列號SN小于X-W+1,表明該數(shù)據(jù)幀的序列號在窗口之外,判定該數(shù)據(jù)為重放包,丟棄。
(3)如果待處理數(shù)據(jù)幀序列號SN大于X,則計算兩者之間的差值β,如果β大于設(shè)定的窗口閾值,則判定為非法包,丟棄;反之將窗口序列號X向右偏移β,并將bit0位置1。
由于單條安全連接只能實現(xiàn)兩個子網(wǎng)通信功能,無法滿足實際應(yīng)用中多個子網(wǎng)的互通需求,因此本文在已有研究基礎(chǔ)上,對多路安全連接抗重放技術(shù)進行了深入研究,設(shè)計了多路安全連接抗重放實現(xiàn)方案,并通過實驗對方案進行驗證。
每一個數(shù)據(jù)幀包含了一個安全連接索引,用于標(biāo)識該數(shù)據(jù)幀歸屬的安全連接通信數(shù)據(jù),具體定義如圖2所示,安全連接索引長度為2 B,理論上能夠支持建立215-1=65 535條安全連接。通過安全連接索引,能夠解析出并發(fā)數(shù)據(jù)流各條網(wǎng)絡(luò)數(shù)據(jù),提取數(shù)據(jù)序列號,從而實現(xiàn)多條安全連接抗重放攻擊檢測。
多路安全連接抗重放方案設(shè)計如圖4所示,主要功能模塊包括數(shù)據(jù)處理、調(diào)度管理、序列號緩存、抗重放判決等。數(shù)據(jù)處理模塊完成以太網(wǎng)入口數(shù)據(jù)預(yù)處理,根據(jù)安全連接索引分離出各安全連接的有效數(shù)據(jù)幀;調(diào)度管理模塊輪詢訪問輸入的數(shù)據(jù)緩存,并提取序列號,完成序列號緩存管理控制;抗重放判決模塊根據(jù)輸入的序列號,完成合法性判斷,輸出有效數(shù)據(jù)。
圖4 多路安全連接抗重放實現(xiàn)方案圖
網(wǎng)絡(luò)設(shè)備在創(chuàng)建多條新的安全連接時,每條連接產(chǎn)生獨立的序列號SN,并進行控制管理,發(fā)送方向序列號產(chǎn)生機制如圖5所示,數(shù)據(jù)處理流程如下:
圖5 發(fā)送方向序列號產(chǎn)生流程
(1)設(shè)備接收子網(wǎng)待處理數(shù)據(jù)幀,提取安全連接索引。
(2)根據(jù)地址映射表,產(chǎn)生該連接對應(yīng)的序列號SN緩存讀地址。
(3)讀取序列號SN后,執(zhí)行+1運算后輸出給數(shù)據(jù)發(fā)送模塊,按照自定義數(shù)據(jù)幀格式封裝SN,發(fā)送到網(wǎng)絡(luò)中;同時執(zhí)行原地址回寫操作,將更新后的SN寫回緩存,為下一幀數(shù)據(jù)處理做準(zhǔn)備。
(4)完成數(shù)據(jù)處理后,狀態(tài)機回到開始狀態(tài),等待處理下一路數(shù)據(jù)幀。
從網(wǎng)絡(luò)設(shè)備接收的以太網(wǎng)數(shù)據(jù)分離出各安全連接獨立的數(shù)據(jù)幀,多路數(shù)據(jù)抗重放工作流程如圖6所示,詳細處理流程如下:
圖6 抗重放工作流程圖
(1)設(shè)備接收網(wǎng)絡(luò)數(shù)據(jù),提取各路數(shù)據(jù)的安全連接索引和序列號SN,寫入寄存器。
(2)根據(jù)序列號SN和窗口標(biāo)志狀態(tài)位緩存地址映射規(guī)則,產(chǎn)生緩存讀地址,讀取該連接存儲的上一幀數(shù)據(jù)的序列號SN和對應(yīng)的窗口標(biāo)志狀態(tài)位。
(3)將待處理數(shù)據(jù)幀的序列號SN_new與緩存的序列號SN_old比較,進行合法性判斷。如果SN_old-SN_new≤64,表示待處理數(shù)據(jù)幀序列號在窗口范圍內(nèi),查詢對應(yīng)的窗口狀態(tài)標(biāo)志位,如果標(biāo)志位為0,表示從未收到過該包數(shù)據(jù),數(shù)據(jù)合法,并將標(biāo)志位置1;如果標(biāo)志位為1,表示曾收到過該數(shù)據(jù),當(dāng)前數(shù)據(jù)幀為重放包,丟棄。如果SN_old-SN_new>64,表示待處理數(shù)據(jù)幀序列號在窗口范圍外,直接丟棄。如果SN_new>SN_old,計算兩者之間的差值β,如果β大于設(shè)定的窗口閾值,則判定為非法包,丟棄;反之將窗口序列號X向右偏移β,同步更新窗口狀態(tài)位信息。
(4)完成數(shù)據(jù)幀抗重放合法性判決后,輸出正確的數(shù)據(jù),重放的數(shù)據(jù)則丟棄,并將更新后的序列號和狀態(tài)標(biāo)識原地址寫回緩存。
(5)完成數(shù)據(jù)處理后,狀態(tài)機開始處理下一路數(shù)據(jù)幀。
對于存儲序列號和窗口狀態(tài)的緩存結(jié)構(gòu),在FPGA中使用雙口RAM來實現(xiàn)。雙口RAM擁有獨立的讀寫地址、數(shù)據(jù)和控制信號,讀寫操作互不影響,通過采用狀態(tài)機方式,能夠保證讀寫信號時序正確。以序列號SN緩存為例,緩存具體實現(xiàn)結(jié)構(gòu)如下:
抗重放功能模塊主要實現(xiàn)窗口計算,完成窗口狀態(tài)判斷,并輸出數(shù)據(jù)抗重放檢測結(jié)果。在FPGA中只需要1個時鐘完成上述所有功能,大大提高了數(shù)據(jù)吞吐率??怪胤殴δ苣K的主要代碼實現(xiàn)如下:
窗口滑動模塊主要完成窗口狀態(tài)位更新,F(xiàn)PGA主要源代碼實現(xiàn)如下:
為驗證本設(shè)計的正確性,開展了實際的工程應(yīng)用測試。兩臺網(wǎng)絡(luò)設(shè)備模擬建立了四條安全連接,使用IXIA公司的XGS2以太網(wǎng)測試儀雙向同時發(fā)送8組數(shù)據(jù)流,即每條安全連接配置2條流,數(shù)據(jù)幀長度為1 024 B,速率設(shè)置為1 Gb/s,總數(shù)據(jù)吞吐量達到8 Gb/s,測試結(jié)果如圖7所示。
圖7 多路安全連接通信測試結(jié)果圖
從測試結(jié)果可以看出,收發(fā)數(shù)據(jù)幀計數(shù)(Tx Frames Rates和Rx Frames Rates)是一致的,丟包計數(shù)為0,說明安全連接工作正常,8條數(shù)據(jù)流通信正常,沒有功能缺陷和數(shù)據(jù)丟失問題發(fā)生。
為驗證多路安全連接抗重放攻擊檢測的正確性,以4路安全連接抗重放攻擊測試為例,開展抗重放攻擊檢測實驗。使用信而泰公司以太網(wǎng)測試儀bigtao 220作為抗重放測試儀器,該儀器能夠抓取線路上的數(shù)據(jù)包,再重放到線路上發(fā)送給接收端,通過查看測試儀的收發(fā)兩端計數(shù),驗證測試結(jié)果是否符合預(yù)期。4路安全連接抗重放攻擊測試結(jié)果如圖8所示。
圖8 抗重放測試結(jié)果圖
從圖8可以看出,發(fā)送端口發(fā)送了8條流,每條流發(fā)送100 000個數(shù)據(jù)包,接收端口接收數(shù)據(jù)數(shù)量為0,線路丟包100 000個,說明序列號重復(fù)的數(shù)據(jù)包為非法數(shù)據(jù),全部被丟棄,多路安全連接抗重放攻擊功能正常,同時在受到外部攻擊情況下,網(wǎng)絡(luò)設(shè)備仍然能正常工作。
本文結(jié)合工程應(yīng)用實踐,針對多個子網(wǎng)安全互通需求,深入分析了抗重放技術(shù)實現(xiàn)機制,設(shè)計了多路安全連接抗重放技術(shù)實現(xiàn)方案,并給出了測試結(jié)果,符合設(shè)計預(yù)期。通過與同類設(shè)計相比,本文創(chuàng)造性提出使用FPGA作為硬件平臺的設(shè)計方案能夠支持多路安全連接抗重放功能,具備高并發(fā)通信能力,實現(xiàn)協(xié)議簡單,處理效率高,并有較好的可拓展性。