緒論
信息安全的解決方案目前主要集中于采取單一的措施來保證信息的安全性,針對各種攻擊手段,防范措施主要集中于信息加密技術、安全交換機技術、防火墻技術、認證技術,入侵檢測技術等,這些技術從不同的方面對安全性提供了較好的保障,但各有缺點和不足,這將成為網絡防護的軟肋,因此,本文也嘗試性地提出了一種集數據加密技術和訪問控制策略于一體的信息安全解決方案。
加密算法的硬件實現具有高速率、高可靠性、高安全等特點,因此,加密算法在FPGA 平臺中實現是一種很好的硬件實現方案。本文在xilinx公司的spartan-3e平臺中構建一個嵌入式系統來實現安全網絡通信。
系統設計
該系統主要針對信息傳輸過程中存在信息泄露、信息篡改、非法用戶入侵等安全威脅而設計的一套基于FPGA 平臺的網絡信息安全傳輸系統。該系統采用客戶機/服務器模式,因此,系統主要包括兩個部分:客戶端和服務器端。客戶端作為整個系統的控制中心,根據實際需要,向服務器端發送請求,并顯示接收到的信息。服務器端響應客戶端的請求,發送相應信息。服務器端和客戶端之間的信息都是經過加密后進行傳輸的,保證信息的安全可靠性。
系統服務器端設計
服務器端采用XILINX公司的Spartan-3e開發平臺,在該平臺上構建基于MicrBlaze處理器和Xilkernel操作系統的嵌入式系統,在該系統中通過定制AES加密IP、鍵盤IP、LCD IP、通用擴展接口控制IP并添加EDK中自帶的網絡控制器IP、串口IP等,服務器端的系統結構框圖如圖1所示。當服務器端收到經過AES加密的請求IP數據包時,在服務器端,信息需要經過AES解密處理,根據解密后信息分析并提取請求方的ID信息和IP信息,客戶端的ID信息是唯一的授權證號,根據客戶端的ID信息,作出相應的處理。
圖1 服務器端的系統結構框圖
系統服務器端設計
客戶端同樣采用XILINX公司的Spartan-3e開發平臺,但該系統中只需要定制AES加解密IP、鍵盤IP、LCD IP并添加EDK中自帶的網絡控制器IP,客戶端的系統結構框圖如圖2-2圖所示。客戶端作為整個系統的控制中心,當需要采集信息時,客戶端經md5算法形成自己的唯一授權ID,指令信息和ID信息經過AES加密后發送至服務器端,當服務器端響應其請求后,視其身份權限做出相應處理。
圖2 客戶端的系統結構框圖
系統具體實現
該系統采用模塊化設計實現,系統包括客戶端和服務器端。系統客戶端和服務器端的實現都是基于xilinx公司的spartan-3e平臺來實現的。
系統服務器端實現
·AES算法的硬件實現
AES算法是一種迭代分組密碼,采用的是代替/置換網絡(SP)。AES加密算法的實現包括密鑰擴展過程和加密過程。AES解密算法的實現包括密鑰擴展過程和解密過程。解密過程與加密過程類似,是加密過程的逆運算,AES加解密過程如圖3所示。
圖3 AES加解密過程
AES加解密算法通過硬件描述語言來實現,在該系統中采用VHDL語言編寫代碼。根據AES加解密算法的相似性,很多電路模塊可以共用,其占用資源可以盡可能的少。在該系統中采用密鑰長度和分組數據塊長度都為128bits,輸入信息都為字符型的數據,采用對字符加解密,因此,每一個字符都將對應其ASCII值輸入。AES加解密實現主要有4個模塊:控制模塊、AES加解密運算實現模、SBOX模塊、密鑰操作模塊,實現的框圖如圖3-2圖所示。
AES加解密模塊的實現經過ISE 綜合后占用資源利用情況如表1所示。
表1 AES加解密資源利用表
圖4 AES加解密實現框圖
·接口模塊的實現
服務器端采用Spartan-3e平臺擴展了PS2接口、16X2的LCD液晶顯示,3個6針的通用擴展接口,這些接口方便了外設的連接和擴展。鍵盤在該系統中實現了單向通信,擴展接口模塊通過平臺通用擴展接口J1、J2、J3與外接設備進行信息交互。Spartan-3e平臺通過串口DTE和GSM模塊進行通信,將相應的信息通過短信的方式發送到指定手機中。
各個接口模塊通過EDK添加自定義IP的方式添加到OPB總線中,其中鍵盤、LCD、串口DTE使用中斷。驅動程序在自動生成的驅動程序模板基礎上完成各個模塊的驅動程序。
·網絡安全檢測及報警實現
服務器端通過添加EDK中網絡控制器IP核,移植LwIP網絡協議棧,實現基于SOCKET的網絡通信。服務器端收到客戶端請求時,對接收到的IP數據包進行解密,對請求的IP數據包進行分析,提取對應的ID信息和IP信息,由于該ID信息是經過md5算法產生的,因此該ID作為授權客戶的唯一ID,根據ID信息與授權的ID列表進行比較,若為授權ID,則根據客戶請求把相應的信息加密處理后發送至客戶端;若為非授權ID,則說明該網絡已存在非授權ID用戶,此網絡已經存在不安全性,則把提取的IP信息通過GSM網絡發送至指定接收端手機,達到網絡的實時檢測和報警功能。
·服務器端軟件實現
服務器端構建基于MicroBlaze處理器和Xilkernel操作系統的嵌入式系統,通過擴展PS2鍵盤,LCD液晶顯示屏等設備,實現具有良好的人機交互接口的系統。Xilkernel操作系統支持多線程操作,通過配置一些參數就可以靈活應用。雖然其沒有網絡系統,但可以通過移植LwIP協議棧就可以實現基于SOCKET的網絡通信。
應用程序的設計主要包括系統的初始化、系統對客戶端請求的處理、網絡安全監測及報警等。系統的初始化主要針對外設的初始化,LCD初始化工作:允許中斷函數microblaze_enable_interrupts(),初始化函數LCD INIT_LCD(),PS2 鍵盤初始化:初始化鍵盤函數init_kbd(),允許中斷函數enable_interrupt(),系統調用xilkernel_main()進入xilkernel,創建socket_thread。初始化lwip,并創建socket_app_thread。該線程主要是針對網絡參數設定,通過IP4_ADDR()函數設定ip、網關、子網掩碼。
當系統運行時,液晶顯示相關信息,當出現等待鍵盤輸入密鑰時,輸入16個字符密鑰,同時對密鑰進行密鑰確認。系統調用socket()函數創建socket,調用listen()函數開始監聽。
一旦接收到用戶請求時就創建socket_process_thread線程。在socket_process_thread線程中,提取IP數據包的相關信息,首先檢查客戶端發送的ID是否在授權ID列表之內,如果ID無誤,將從無線模塊接收到的數據進行AES加密,發送加密過后的數據給客戶端。如果ID有錯誤,提取其收到IP數據包中的IP,并啟用GSM模塊,將提得的IP通過短信發送給指定接收端。
整個服務器端的軟件設計流程圖如圖5圖所示。
圖5 服務器端軟件流程圖
系統客戶端實現
客戶端的系統構建與服務器端相似,系統的原理可以參考服務器端的系統設計。應用程序的設計也包括系統的初始化,客戶請求的處理及解密處理,服務器端返回的信息處理。初始化外設,LCD初始化:允許中斷函數microblaze_enable_interrupts(),初始化LCD函數INIT_LCD(),PS2 鍵盤初始化:初始化鍵盤函數init_kbd(),允許中斷函數enable_interrupt()。系統調用xilkernel_main()進入xilkernel,創建socket_thread。液晶顯示等待鍵盤輸入密鑰,輸入密鑰后需再次確認密鑰,確認成功后啟動客戶端。初始化LwIP,并創建socket_app_thread。配置網絡參數,通過IP4_ADDR()函數設定ip、網關、子網掩碼。等待用戶按鍵,提出所要數據申請。調用socket()函數創建socket,連接server,發送經過md5加密后的授權ID,等待server響應。.當接收到server返回的數據時,調用AES解密模塊進行解密。在LCD上顯示數據,并等待用戶再次提出所要數據申請。客戶端軟件流程圖如圖3-4圖所示。