芮正新,辛克廷
(1. 南京科遠(yuǎn)智慧科技集團股份有限公司,江蘇 南京 211102;2.江蘇省熱工過程智能控制重點實驗室,江蘇 南京 211102)
隨著人工智能、大數(shù)據(jù)、云計算、物聯(lián)網(wǎng)等新技術(shù)的不斷發(fā)展,互聯(lián)網(wǎng)連接著人們生產(chǎn)生活的各個方面,信息孤島逐步被消除,但在各領(lǐng)域間網(wǎng)絡(luò)互聯(lián)互通的同時也帶來了嚴(yán)重的網(wǎng)絡(luò)安全問題。物理隔離網(wǎng)閘作為連通兩個不同安全等級網(wǎng)絡(luò)的橋梁,既實現(xiàn)了信息數(shù)據(jù)單向流動,又在物理上隔離了不同安全等級的網(wǎng)絡(luò),為高安全等級網(wǎng)絡(luò)的信息安全提供了強有力的支持與保護[1]。然而目前市場上主流物理隔離網(wǎng)閘的核心硬件——微處理器大多采用進口器件,硬件設(shè)計細(xì)節(jié)均不開放,存在核心技術(shù)受制于人及一定安全后門隱患,無法滿足信息安全領(lǐng)域關(guān)鍵設(shè)備自主可控的要求。針對以上背景,設(shè)計并實現(xiàn)了基于龍芯2K1000處理器的物理隔離網(wǎng)閘,該物理隔離網(wǎng)閘硬件采用龍芯2K1000高性能處理器,軟件采用Linux開源操作系統(tǒng),滿足了網(wǎng)閘內(nèi)外網(wǎng)接口的物理隔離通信的需求,實現(xiàn)了隔離網(wǎng)閘設(shè)備的關(guān)鍵器件及軟件自主可控。
物理隔離網(wǎng)閘系統(tǒng)一般采用“2+1”架構(gòu),即由內(nèi)網(wǎng)處理單元、外網(wǎng)處理單元及擺渡單元組成。內(nèi)外網(wǎng)通信基于信息擺渡原理,內(nèi)外網(wǎng)在物理上始終保持?jǐn)嚅_,任意時刻最多只有一個網(wǎng)絡(luò)與擺渡單元存在物理連接。
當(dāng)內(nèi)網(wǎng)主機向外網(wǎng)主機傳輸數(shù)據(jù)時,內(nèi)網(wǎng)隔離單元將收到的內(nèi)網(wǎng)主機以太網(wǎng)報文完全剝離,僅保留應(yīng)用層數(shù)據(jù),接通擺渡單元后將之至傳輸至擺渡單元,然后斷開內(nèi)網(wǎng)處理單元與擺渡單元之間的物理連接,之后由擺渡單元接通外網(wǎng)處理單元,將應(yīng)用層數(shù)據(jù)進行擺渡至外網(wǎng)處理單元,再由外網(wǎng)處理單元恢復(fù)為完整的以太網(wǎng)報文并傳輸至外網(wǎng)主機,最終實現(xiàn)內(nèi)網(wǎng)主機與外網(wǎng)主機的物理隔離通訊。外網(wǎng)主機向內(nèi)網(wǎng)主機數(shù)據(jù)傳輸過程與上述順序相反[2]。
在上述通訊過程中,物理隔離網(wǎng)閘還將對通訊數(shù)據(jù)進行安全策略檢查,內(nèi)外網(wǎng)主機MAC地址、IP地址及端口、協(xié)議類型等必須與預(yù)先配置的安全策略完全一致后才能進行數(shù)據(jù)擺渡,可有效避免信息泄露、病毒入侵、黑客掃描等網(wǎng)絡(luò)安全問題發(fā)生。
在本設(shè)計中,內(nèi)網(wǎng)處理單元、外網(wǎng)處理單元及擺渡單元之間使用PCIE接口。由擺渡單元內(nèi)的電子開關(guān)控制PCIE總線的通斷,實現(xiàn)擺渡單元與內(nèi)網(wǎng)處理單元、外網(wǎng)處理單元的物理連接與斷開。
硬件主要由電源模塊、內(nèi)網(wǎng)處理單元、外網(wǎng)處理單元及擺渡單元組成。
由于物理隔離網(wǎng)閘的內(nèi)網(wǎng)處理單元、外網(wǎng)處理單元硬件接口基本一致,功能差異由軟件實現(xiàn),因此將內(nèi)網(wǎng)處理單元、外網(wǎng)處理單元的硬件設(shè)計為同一單板。
龍芯2K1000是龍芯中科技術(shù)有限公司推出的一款低功耗、性能先進的處理器,主要面向于網(wǎng)絡(luò)應(yīng)用領(lǐng)域,采用40nm工藝,片內(nèi)集成2個主頻 1GHzGS264 處理器核,并集成了64位DDR3 控制器以及各種系統(tǒng)IO接口,因此在本設(shè)計中,內(nèi)網(wǎng)處理單元、外網(wǎng)處理單元均采用龍芯2K1000處理器為核心,利用龍芯2K1000豐富的片上資源,構(gòu)成2路千兆以太網(wǎng)通訊接口、1路PCI-E擺渡單元接口,并利用LIO本地總線接口擴展了1路百兆以太網(wǎng)配置接口。
圖2 內(nèi)外網(wǎng)處理單元硬件設(shè)計
圖2為內(nèi)外網(wǎng)處理單元硬件硬件設(shè)計框圖,其中DDR3采用4片紫光HXI15H4G160,單片為16位512MB,構(gòu)成64位2GB DDR3存儲器系統(tǒng)。BIOS采用華邦W25Q80BV SPI Flash,容量為1MB。文件系統(tǒng)基于SLC NAND存儲器,采用三星K9F1G08U0C,容量為128MB。通訊用網(wǎng)口設(shè)計為2路千兆以太網(wǎng),千兆PHY采用KSZ9031RN,通過RMII接口與2K1000片內(nèi)集成的GMAC連接。配置用網(wǎng)口設(shè)計為百兆以太網(wǎng),采用DM9000AEP,通過2K1000集成的外部總線接口LIO連接。
如系統(tǒng)原理所述,擺渡單元實現(xiàn)了內(nèi)外網(wǎng)之間的物理連接斷開及數(shù)據(jù)擺渡。該單元硬件基于Lattice公司的ECP5系列FPGA,型號為LFE5UM-45F-8BG381C,內(nèi)置2路SERDES硬核,可實現(xiàn)2路PCIe接口分別與內(nèi)網(wǎng)處理單元及外網(wǎng)處理的單元連接,利用FPGA集成的1944Kb Embedded Memory設(shè)計了容量為192KB的雙端口SRAM用于內(nèi)外網(wǎng)之間的數(shù)據(jù)擺渡。另外根據(jù)物理隔離網(wǎng)閘內(nèi)外網(wǎng)之間PCIE接口物理連接斷開要求,設(shè)計了總線控制模塊,該模塊主要接收內(nèi)外網(wǎng)處理單元傳輸請求信號及雙端口SRAM控制信號,根據(jù)這些信息決定內(nèi)網(wǎng)處理單元及外網(wǎng)處理單元PCIE接口的通斷[3]。擺渡單元FPGA結(jié)構(gòu)框圖如下圖所示。
圖3 FPGA結(jié)構(gòu)框圖
軟件設(shè)計主要包含BIOS設(shè)計、Linux操作系統(tǒng)裁剪、擺渡單元驅(qū)動開發(fā)及應(yīng)用層代理程序開發(fā)等,其中BIOS設(shè)計參考龍芯2K1000公版PMON,添加了NAND儲存器及YAFFS文件系統(tǒng)支持。Linux本身具備了強大的網(wǎng)絡(luò)功能,當(dāng)應(yīng)用于隔離網(wǎng)閘時,需要在嵌入式Linux內(nèi)核的基礎(chǔ)上進行裁減,除去不需要的所有系統(tǒng)服務(wù),僅保留基本的TCP/IP網(wǎng)絡(luò)協(xié)議棧。本系統(tǒng)使用龍芯公司長期支持的Linux3.10版本,便于后期維護與升級。
擺渡單元與2K1000之間為PCIE接口,因此編寫擺渡單元PCIE設(shè)備驅(qū)動fpga_pci_driver,驅(qū)動類型為字符型設(shè)備驅(qū)動,以內(nèi)核模塊形式動態(tài)加載到Linux操作系統(tǒng)之中。
在驅(qū)動初始化函數(shù)fpga_init中,使用pci_register_driver向PCI系統(tǒng)注冊設(shè)備驅(qū)動,在PCI設(shè)備驅(qū)動探測函數(shù)fpga_pci_probe中生成實際讀寫fpga的設(shè)備文件,并將字符設(shè)備注冊到系統(tǒng),應(yīng)用程序可通過/dev/fpga訪問擺渡單元[4]。字符型設(shè)備的文件讀寫接口定義如下:
const static struct file_operations fpga_fops = {
.open = fpga_open,
.release = fpga_close,
.read = fpga_read,
.write = fpga_write,
.unlocked_ioctl = fpga_ioctl,
.owner = THIS_MODULE,
};
代理程序用于實現(xiàn)內(nèi)外網(wǎng)應(yīng)用數(shù)據(jù)接收、擺渡擺渡請求及數(shù)據(jù)轉(zhuǎn)發(fā)。系統(tǒng)初始化時,讀取用戶配置的有效通訊策略,在內(nèi)網(wǎng)處理單元添加外網(wǎng)主機的虛擬IP,并建立對應(yīng)的監(jiān)聽socket,從而在內(nèi)網(wǎng)側(cè)接口上虛擬出外網(wǎng)主機。當(dāng)內(nèi)網(wǎng)主機發(fā)送數(shù)據(jù)時,運行于內(nèi)網(wǎng)處理單元的代理程序調(diào)用recv函數(shù)從網(wǎng)閘內(nèi)網(wǎng)接口接收應(yīng)用層數(shù)據(jù),在滿足安全策略審核的條件下,將數(shù)據(jù)寫入擺渡單元,請求擺渡單元進行數(shù)據(jù)擺渡,當(dāng)擺渡單元成功將數(shù)據(jù)擺渡至外網(wǎng)處理單元后,運行于外網(wǎng)處理單元的代理程序調(diào)用read接口從擺渡單元中讀取數(shù)據(jù),并以內(nèi)網(wǎng)主機的IP調(diào)用send向外網(wǎng)主機發(fā)送數(shù)據(jù),從而完成內(nèi)網(wǎng)主機至外網(wǎng)主機的通訊[5]。
本物理隔離網(wǎng)閘基于龍芯2K1000處理器,充分利用該處理器的軟硬件資源,完成了物理隔離網(wǎng)閘的設(shè)計開發(fā),實現(xiàn)了內(nèi)外網(wǎng)之間的物理隔離通信,經(jīng)SmartBits專業(yè)網(wǎng)絡(luò)性能測試儀測試表明,樣機平均傳輸延時為0.86ms,有效傳輸帶寬為437Mbit/S,可滿足內(nèi)外網(wǎng)主機之間物理隔離通信需求。該系統(tǒng)硬件核心器件國產(chǎn)化,軟件開源或自主開發(fā),滿足了信息安全領(lǐng)域關(guān)鍵設(shè)備自主可控的需求。