曹 寶,郭 爽,陳 洋,何遠杭
(中國電子科技集團公司第三十研究所,四川 成都 610041)
隨著計算機網(wǎng)絡(luò)技術(shù)的發(fā)展,各種類型和規(guī)模的數(shù)據(jù)中心應(yīng)運而生,數(shù)據(jù)中心承載了大量的關(guān)鍵、敏感數(shù)據(jù)。數(shù)據(jù)中心作為最重要的網(wǎng)絡(luò)資產(chǎn),也成了黑客和敵對勢力的重點攻擊目標(biāo)。數(shù)據(jù)集中后出現(xiàn)的數(shù)據(jù)安全問題,其影響面和破壞程度大大增大[1],針對數(shù)據(jù)中心的安全防護是網(wǎng)絡(luò)安全防護的重中之重。
網(wǎng)絡(luò)攻擊分為主動攻擊和被動攻擊,主動攻擊包括篡改消息、數(shù)據(jù)偽造、拒絕服務(wù)等,被動攻擊包括竊聽、流量分析等。重放攻擊是數(shù)據(jù)偽造攻擊的重要方式。
重放攻擊(Replay Attacks)是最基本、最常用、危害性最大的一種攻擊形式[2],針對重放攻擊的防護通常采用平臺加軟件模塊的方式實現(xiàn),但這種方式在大流量、重負載的數(shù)據(jù)中心中的效果并不理想?;诖?,本文設(shè)計了一種基于現(xiàn)場可編程邏輯門陣列(Field Programmable Gate Array,F(xiàn)PGA)的抗重放攻擊組件,滿足高帶寬、低時延的網(wǎng)絡(luò)安全防護需求,同時標(biāo)準(zhǔn)化的模塊設(shè)計也能夠滿足未來數(shù)據(jù)中心的安全資源服務(wù)化[3]的需求。
重放攻擊(Replay Attacks)又稱重播攻擊、回放攻擊,原指攻擊者發(fā)送一個目的主機已經(jīng)接收過的包,來達到欺騙系統(tǒng)的目的,主要用于在身份認證過程中破壞認證的正確性。例如,在認證協(xié)議交互過程中,針對系統(tǒng)開展重放攻擊,可以欺騙系統(tǒng),使其疲于響應(yīng)攻擊包,導(dǎo)致系統(tǒng)不能響應(yīng)正常認證流程,造成認證失敗,更甚者可能造成系統(tǒng)崩潰。
作為曾經(jīng)的“合法包”,重放攻擊中的數(shù)據(jù)包若沒有被及時識別、丟棄,會占用大量的安全防護設(shè)備的資源,導(dǎo)致防護效能下降。因此重放攻擊在網(wǎng)絡(luò)中大行其道,已經(jīng)不僅僅局限于針對認證流程的攻擊,在業(yè)務(wù)通信過程中也被廣泛使用。此外,重放攻擊的流量攻擊特性被應(yīng)用于分布式拒絕服務(wù)(Distributed Denial of Service,DDoS)攻擊,起到致癱效果,從而嚴重威脅數(shù)據(jù)中心的安全防護效能。
基于長期對抗重放攻擊的經(jīng)驗,針對不同數(shù)據(jù)包的格式、特點,總結(jié)形成了6 種主要的抗重放攻擊方案[4],如表1 所示。
表1 6 種主要抗重放攻擊方案的優(yōu)劣比較
如表1 所示的6 種抗重放攻擊方案各有利弊,單獨使用時通常效果不好??紤]當(dāng)前數(shù)據(jù)中心的多連接、大數(shù)據(jù)量、長時間、高可用的特點,方案4和方案6 因其效率較低或是占用資源太多而基本不被采用。
目前的安全防護設(shè)備基本采用兩種方案結(jié)合的方式抗重放攻擊,如將方案1 和方案2 結(jié)合,將方案3 和方案5 結(jié)合,并通常基于高性能處理器設(shè)計抗重放攻擊軟件,實現(xiàn)對重放攻擊數(shù)據(jù)包的檢測、丟包、上報等功能,但軟件實現(xiàn)的抗重放攻擊在檢測處理能力和移植性方面還存在不少問題,具體如下文所述。
(1)檢測、處理能力弱,主要體現(xiàn)在帶寬受限和時延較大兩個方面。由于重放攻擊的檢測需要占用較多的資源,雖然現(xiàn)在的處理器性能、核數(shù)都有了很大提升,但是當(dāng)有多個連接或是網(wǎng)絡(luò)流量達到數(shù)個Gbit/s 時,仍然會帶來處理器性能的急劇下降,嚴重時會導(dǎo)致處理器死機。而頻繁的軟硬件交互和協(xié)議棧內(nèi)的處理則帶來了時延的增加。
(2)移植性不強。軟件的靈活性也意味著開發(fā)者可以隨意發(fā)揮,因此功能模塊接口各異,參數(shù)選擇復(fù)雜,針對新的重放攻擊類型,一般通過“打補丁”的方式進行處理,沒有設(shè)計科學(xué)的架構(gòu)和制定統(tǒng)一的標(biāo)準(zhǔn),因此可移植性不強。
因此,本文研究設(shè)計了一種基于FPGA 的組件化抗重放攻擊模塊,采用基于FPGA 的實現(xiàn)方式,具備高可用、可配置、可擴展、移植性好等特點,可以極大提升數(shù)據(jù)中心的抗重放攻擊防護效能。
針對企業(yè)級數(shù)據(jù)中心邊界安全防護設(shè)備,本設(shè)計在組件化設(shè)計思想的指導(dǎo)下,將抗重放攻擊功能從復(fù)雜的系統(tǒng)中解耦[5-6],定義精簡的內(nèi)外部接口,選擇兩種典型的業(yè)務(wù)數(shù)據(jù)包作為防御目標(biāo),充分利用FPGA 實時、并行、高效的處理特點[7-8],支持處理器的關(guān)鍵配置,實現(xiàn)高效、靈活、可擴展的抗重放攻擊功能。
在分析現(xiàn)有抗重放攻擊技術(shù)的基礎(chǔ)上,進行組件化設(shè)計,以抗重放攻擊功能為核心,劃定功能模塊的邊界,明確抗重放攻擊模塊的對外接口。
該方案針對兩種典型的傳輸控制協(xié)議(Transmission Control Protocol,TCP)業(yè)務(wù)數(shù)據(jù)包場景,分別定義為業(yè)務(wù)包和協(xié)商包。業(yè)務(wù)包為通常認識中的業(yè)務(wù)數(shù)據(jù)包,具有數(shù)量大的特點,包頭中有包序號字段;協(xié)商包本質(zhì)上是業(yè)務(wù)數(shù)據(jù)包,作為業(yè)務(wù)流程中的協(xié)議包處理,包頭中沒有包序號字段,有一定長度的自定義字段。
本文設(shè)計了抗重放攻擊模塊的功能架構(gòu)、關(guān)鍵數(shù)據(jù)包處理狀態(tài)機、重要配置表項等,實現(xiàn)高帶寬、低時延的數(shù)據(jù)包重放攻擊檢測和處理。抗重放攻擊模塊的功能架構(gòu)組成如圖1 所示。
圖1 抗重放攻擊模塊功能架構(gòu)
抗重放攻擊模塊分為數(shù)據(jù)包處理和處理器配置兩個部分。
數(shù)據(jù)包處理部分包括協(xié)商包/普通業(yè)務(wù)包分路子模塊、協(xié)商包抗重放處理子模塊、普通業(yè)務(wù)包抗重放處理子模塊和合路子模塊。各子模塊之間數(shù)據(jù)接口形式為串行外設(shè)接口(Serial Peripheral Interface,SPI)。數(shù)據(jù)包在子模塊中采用并行、流水線處理,不存在反饋、重復(fù)處理等情況。
處理器配置部分包括處理器配置處理子模塊和序列號基準(zhǔn)值、隨機數(shù)黑名單、協(xié)商次數(shù)等配置表項處理子模塊。
整個模塊設(shè)計功能劃分清晰,信號處理流程順暢,通過軟件配置表項,數(shù)據(jù)包根據(jù)表項的參數(shù)及配置進行重放包檢測、處理。
2.2.1 業(yè)務(wù)包抗重放處理子模塊
因為業(yè)務(wù)包格式中在包頭位置有4 個字節(jié)的包序號字段,所以業(yè)務(wù)包的抗重放攻擊采用滑動窗口與序列號結(jié)合的方式。
每次協(xié)商成功后,由處理器配置一個初始的4字節(jié)業(yè)務(wù)報文序號,作為基準(zhǔn)值;然后提取進入模塊的業(yè)務(wù)包的包序號,將該包序號與基準(zhǔn)值在一個設(shè)定的窗口范圍內(nèi)進行比較,不同的比較結(jié)果會輸出不同的處理結(jié)果,同時需要更新基準(zhǔn)值。
以上為一個連接的典型處理流程,針對數(shù)據(jù)中心面臨多個連接的情況,在FPGA 內(nèi)基于BlockRAM構(gòu)建一個深度為256 的基準(zhǔn)值表項,將接收到的業(yè)務(wù)包序列號與基準(zhǔn)值表項中的相應(yīng)值進行比較,從而實現(xiàn)針對255 個連接通道的重放攻擊檢測。
業(yè)務(wù)包抗重放攻擊狀態(tài)轉(zhuǎn)移[9-10]如圖2 所示。狀態(tài)機工作原理如下:
圖2 業(yè)務(wù)包抗重放攻擊狀態(tài)轉(zhuǎn)移
(1)若當(dāng)前業(yè)務(wù)包為首包,則為正常包,放行;
(2)若當(dāng)前業(yè)務(wù)包不是首包,比較當(dāng)前包序號和基準(zhǔn)值,若當(dāng)前包序號大于基準(zhǔn)值,且差值大于或等于上窗口門限,則為合法包,同時更新基準(zhǔn)值,清零歷史寄存器;
(3)若當(dāng)前包序號大于基準(zhǔn)值,且差值小于上窗口門限,則為合法包,同時更新基準(zhǔn)值,移位歷史寄存器;
(4)若當(dāng)前包序號等于基準(zhǔn)值,則為重放包,丟棄;
(5)若當(dāng)前包序號小于基準(zhǔn)值,且差值大于或等于下窗口門限,則為重放包,丟棄,不更新基準(zhǔn)值;
(6)若當(dāng)前包序號小于基準(zhǔn)值,且差值小于下窗口門限,且與歷史值不重復(fù),則為合法包,否則為非法包;
(7)業(yè)務(wù)包判別完成后返回空閑狀態(tài),等待處理下一個業(yè)務(wù)包。
本模塊能夠?qū)崿F(xiàn)255 個連接通道的業(yè)務(wù)重放包檢測、處理功能,當(dāng)需要更多連接、更高帶寬的業(yè)務(wù)重放包檢測能力時,可以通過擴大基準(zhǔn)值表項的深度、提高處理時鐘的速率或是采用多個模塊并行處理的方式,因而本模塊具有良好的擴展性。
2.2.2 協(xié)商包抗重放處理子模塊
協(xié)商包作為一種特殊的業(yè)務(wù)包,主要出現(xiàn)在通道建立過程中或是檢測到異常情況時,用于傳遞重要信息,相對于業(yè)務(wù)包的數(shù)據(jù)量小很多。
由于協(xié)商包頭中沒有包序號字段,利用其自定義字段承載隨機數(shù),針對協(xié)商包采用時間戳與隨機數(shù)結(jié)合的抗重放攻擊防御方式。
設(shè)備啟動后,由處理器配置時間信息和隨機數(shù)黑名單表項。鑒于協(xié)商包出現(xiàn)的頻率,結(jié)合系統(tǒng)時間同步情況,將時間信息定義為“天”;提取進入模塊的協(xié)商包的時間字段、隨機數(shù)字段,分別與時間信息和隨機數(shù)黑名單進行比較。不同的比較結(jié)果會輸出不同的處理結(jié)果。
協(xié)商包抗重放攻擊狀態(tài)轉(zhuǎn)移如圖3 所示。
圖3 協(xié)商包抗重放攻擊狀態(tài)轉(zhuǎn)移
狀態(tài)機工作原理:
(1)判斷當(dāng)前協(xié)商包的時間字段是否等于{昨天,今天,明天}中任意一個,如果都不等,則判定為非法包,如果等于其中一個,則進入下一步判別;
(2)判斷當(dāng)前協(xié)商包的隨機數(shù)字段是否在黑名單內(nèi),如果在,則判定為非法包,如果不在,則為合法包,放行。
本模塊針對特定場景將時間戳的粒度定義得非常粗,為了提高檢測率采用了深度為512 的隨機數(shù)黑名單表項,每一個合法協(xié)商包在進行隨機數(shù)黑名單檢測時會額外帶來512 個時鐘周期的時延。因為協(xié)商包出現(xiàn)的頻率很低且有重傳機制,一般情況下不會帶來通信效率的下降。針對時間同步相對精確的系統(tǒng)或是對時延敏感的系統(tǒng),可以通過細化時間戳粒度、降低單個黑名單深度并行處理的方式。因而本模塊支持靈活配置、動態(tài)可調(diào)。
2.2.3 表項配置子模塊
當(dāng)前主流的高性能FPGA 除了提供各種高速接口,都提供了大量的BlockRAM,相應(yīng)的Slice 數(shù)量反而不是非常的充足。本模塊支持最大255 個連接通道的重放攻擊檢測,為了提高每一個通道檢測率,滑動窗口的門限設(shè)置和隨機數(shù)黑名單的長度需要滿足一定的要求。
基于以上兩點,在FPGA 內(nèi)例化了相應(yīng)的BlockRAM 作為重要配置的存儲表項,從而節(jié)約了寶貴的Slice 資源,實現(xiàn)了高速、動態(tài)、可靠的配置表項處理。
在設(shè)計了結(jié)構(gòu)清晰的架構(gòu)和簡潔嚴謹?shù)臓顟B(tài)機的基礎(chǔ)上,本模塊采用嚴格的時序設(shè)計,避免了組合邏輯設(shè)計帶來的不穩(wěn)定性,整個設(shè)計簡潔、高效。
通過仿真腳本,功能、性能仿真覆蓋率達到100%,重放攻擊包的檢測率達到100%,狀態(tài)機運行穩(wěn)定、糾錯能力強,結(jié)果符合預(yù)期。
本模塊在保障處理性能的基礎(chǔ)上,在面積與速度之間取得了良好的平衡,并基于BlockRAM 設(shè)計了關(guān)鍵配置表項,資源占用情況如表2 所示
表2 模塊資源占用情況
相比于7K325T FPGA 豐富的邏輯資源,抗重放攻擊模塊BlockRAM、Slice 等關(guān)鍵資源的消耗比例是非常低的。
本設(shè)計采用62.5 MHz 時鐘,處理帶寬理論上可以達到500 Mbit/s;業(yè)務(wù)包的處理時延為120 個時鐘周期(1.92 μs),協(xié)商包的處理時延為632個時鐘周期(10.112 μs)。
在實際運行環(huán)境中開展重放攻擊測試,分別驗證處理帶寬、時延和檢測率,由于協(xié)商包的數(shù)量較少,沒有進行大帶寬的測試,時延為設(shè)計的理論值10.112 μs,檢測率達到100%。
本文重點驗證業(yè)務(wù)包的抗重放攻擊處理能力,針對不同包長的業(yè)務(wù)包分別測試其處理帶寬、時延和檢測率,并與基于傳統(tǒng)協(xié)議棧軟件實現(xiàn)的抗重放攻擊模塊進行對比,實驗結(jié)果如表3 所示。
表3 業(yè)務(wù)包測試結(jié)果對比
通過以上對比測試,當(dāng)攻擊數(shù)據(jù)量未達到處理器能力瓶頸時,基于FPGA 的組件化抗重放攻擊模塊在處理帶寬和檢測率方面稍微優(yōu)于軟件實現(xiàn)的抗重放攻擊模塊,在降低時延方面有非常大的提升。
本文面向數(shù)據(jù)中心抗重放攻擊的安全防護需求,采用組件化的設(shè)計思想,設(shè)計了結(jié)構(gòu)清晰的架構(gòu)和簡潔嚴謹?shù)臓顟B(tài)機,并采用規(guī)范化FPGA 設(shè)計,平衡了面積與速度。經(jīng)過驗證,所提方法滿足高帶寬、低時延的數(shù)據(jù)包重放攻擊檢測和處理需求,具有高可用、可配置、可擴展、移植性好等特點,適用于企業(yè)級的數(shù)據(jù)中心邊界安全防護,可滿足未來安全防護設(shè)備對安全資源服務(wù)化的需求。