摘要
隨著近幾年互聯網的飛速發展,電子商務、移動支付、互聯網金融、網絡銀行、O2O平臺等已經融入了每個人的生活,搜索引擎、多媒體網絡信息傳輸、社交網絡也早就與我們息息相關。人們逐漸習慣并且依賴于通過計算機從網絡獲取各種各樣的信息或者編輯信息在網絡上傳輸,互聯網的開放性和匿名性使得網絡信息變得非常不安全,這使得網絡安全問題不斷加劇。因此,網絡安全產品的研究有著巨大的前景和意義。
本文主要設計了一種基于Linux系統、以FPGA為載體的“網絡數據加密卡”的實現方案。硬件主要基于FPGA的開發環境以VHDL語言來實現,網卡芯片采用DM9000芯片。軟件驅動部分是基于開源Linux系統來實現。本設計主要實現的功能為數據在發送過程中可以通過本“網絡數據加密卡”自主選擇是否需要對數據進行加密,然后通過互聯網進行加密數據或者非加密數據的傳輸。在接收過程中可以對加密數據進行解密。本設計在FPGA內部主要對祖沖之算法進行了實現。該系統以硬件加密為基礎,實現了網絡數據的安全加密傳輸,保證了網絡數據傳輸的可靠性和安全性。
本論文對于硬件部分首先進行整體的需求分析和硬件模塊化的總體框架進行研究。闡述了基于PCI協議的PCI接口實現和PCI協議原理、DM9000網卡芯片的控制和工作過程。詳細介紹在FPGA內部與DM9000芯片連接的控制模塊和DM9000操作模塊的原理、序列加密祖沖之算法的原理和實現。
在軟件部分,主要研究了基于Linux系統的PCI接口網卡驅動。其中闡述PCI接口網絡設備驅動的整體框架和工作過程,并且詳細介紹其中數據的處理機制和網絡數據發送接收的工作原理。
本設計經過在互聯網多臺計算機實驗驗證,安全可靠的實現了數據加密傳輸。
關鍵詞:Linux;祖沖之算法;FPGA;網絡數據加密卡
Abstract
In recent years, with the rapid development of the Internet, e-commerce, mobile payments, Internet banking, online banking, O2O platform has been integrated into the lives of each of us. Search engines, multimedia information transmission network, social networking is closely related with us early. People become accustomed and depend on the computer to obtain a variety of information or edit information to transmit through the network. The Internet's openness and anonymity makes the information from the network become very insecurity, which makes the growing problem of network security. Therefore, network security products have tremendous potential and significance of the research.
This paper is designed based on a Linux system, based on FPGA's "network data encryption card" scheme. Hardware based on FPGA in VHDL language development environment to achieve the NIC chip DM9000. Software driver is implemented based on the open source Linux system. The design main achieve the function is that in the process of data transmission it can select if the data should be encrypted through "network data encryption card ", and then transmit plaintext or ciphertext through the Internet. The receiving process can decrypt the ciphertext. The ZUC algorithm is achieved in FPGA card. The system based on encryption of hardware, and achieve safe transmission through network to ensure the reliability of data transmission and network security.
The first part of this paper study the overall hardware requirements analysis and modular hardware framework. It describes the PCI interface based on PCI protocols implementation and principle of PCI protocols and operation of the DM9000 chip. It introduces principle of DM9000 operation control module within the FPGA chip, the connection method of DM9000 card, ZUC sequence encryption algorithm.
The part of software mainly research Linux system driver that based on PCI interface card. Framework of network device driver based on PCI interface and work process is explained. It detailedly introduce processing mechanisms of data and principle of transmission and reception in network.
The design has been verified and experimented through more than one computer on the Internet, which achieves a secure and reliable transmission of ciphertext.
Keywords: Linux; ZUC algorithms; FPGA; Network data encryption card
現如今互聯網已經成為我們生活中不可缺少的元素,它給我們的生活和工作帶來了多方面的便利。然而,近年來私人信息泄露、個人隱私被曝光、銀行存款不翼而飛、國家機密被竊取等互聯網安全問題不斷凸顯出來,這主要是網絡信息在互聯網的傳輸過程中被第三方非法竊取和修改所導致的互聯網信息安全問題。
所以將網絡數據進行加密后傳輸顯得尤為重要,這樣即使被截獲,截獲的也是密文,有效的保證了信息在網絡中安全。近年來,基于密碼學的網絡加密手段引起了人們的廣泛關注并對此進行研究,其中包括硬件加密和軟件加密,硬件加密以其加解密速度快和可靠性強有著絕對優勢。硬件加密的優點是加解密速度快,使用方法簡單,安全性高,算法容易進行更新升級替換,僅需要購買專用的加密卡安裝在計算機的卡槽內。軟件加密的優點是成本低,不需要硬件上的改變就能實現數據的加密,安全性較差,消耗了大量系統資源,很容易破解[1];谝陨戏治鲇布用苡兄匾饬x,也是本設計硬件網絡數據加密卡的最終目的,F在我們國內大多數的特殊機構為了內部信息安全性,常采用內部局域網與外網隔離的手段,在局域網的內部,可以相互之間進行正常的通信,整個局域網與互聯網是相互隔離。防止和互聯網連接導致網絡攻擊,導致信息泄露的后果。
這給工作帶來了非常大的局限性,因此如今開發一種可以在計算機和互聯網之間實現網絡數據既可以正常傳輸,又可以實現數據加密的網絡安全設備顯得極其的重要。從算法的角度出發,基于國家安全的重要性,我國如今大力提倡并且要求信息加密技術應用國內自主研發的加密算法。這樣更能有效的提升加密信息技術的保密性和安全性。因此本設計采用中國自主研發的祖沖之算法進行實現,并且分析其性能。從硬件加密的研究方向出發,滿足如今的網絡安全的需求,設計出一款可以加密傳輸網絡數據的網絡數據加密卡是本設計的目的。對于個人信息安全、互聯網安全、企業和國家安全都有著其重要的意義。
目前防止網絡信息泄露最主要的方法就是將我們要傳輸的數據先進行加密然后再傳輸,這樣做有效的防止了明文信息被直接竊取的安全隱患。針對這種方案人們主要研究的方向集中在加密算法和傳輸手段上。加密的算法主要有公鑰算法和私鑰算法,私鑰算法的加密和解密兩端的密鑰是一致的,私鑰算法又分為序列加密和分組加密兩種,序列加密難點在于用什么樣的方法來產生隨機序列,幾十年來,人們已經研究并且提出了大量的序列密碼,其中最為典型并且被人們深入和廣泛研究的有RC4、A5等。1987年,創造RSA算法的三人中的Ronald Rivest創造了密鑰長度可變和極高非線性的RC4算法,RC4的加密速度大約是分組算法DES的十倍[2]。在1994年RC4被公布在網上,這個起初原本為商業機密而生的算法被廣泛的研究并測試出有一定的缺陷性。A5算法最初是在1989年由法國人研發用于GSM領域。此算法基于LFSR,A5算法一共有A5/1、A5/2、A5/3三個版本,其中A5/1是安全性最好的,相對而言A5/2的保密性和安全性都很低[3],A5/3為分組密碼。隨著國家安全問題的升級,我國自主加密算法的研究工作也有著飛速進展,128-EIA3和128-EEA3就是我國自主研發的基于ZUC(祖沖之算法)的序列加密算法,ZUC通過了3GPP的評定,并且最終被認定為LTE的國際標準[4]。ZUC也是我國第一個通過國際標準認定的算法[5][6]。
國內外現在對于應用在網絡數據傳輸方面的硬件加密卡,大多采用的有三種方案,第一種是應用專有芯片集成算法的單獨對數據加密的加密卡,例如凌科芯安公司的LKT4208。第二種是采用DSP和FPGA結合的方案,DSP用作數據處理調度,FPGA用做算法的實現[7]。第三種方案就是單獨通過在硬件加密卡上做網絡接口,然后將加密處理完的數據通過網口進行發送處理。例如北京曙光天演有限公司研發的帶有網口的硬件加密卡。這其中第一種方案對于算法的更換靈活性很差,不便于產品的更新換代,第二種方案從成本和集成的角度也也不利于產品的推廣,而第三種方案雖然滿足集成度高和算法便于更新的優勢,但是數據在大的互聯網傳輸還需要進一步的探索和研究。本設計是在第三種設計方案基礎之上進行的設計。為了達到降低成本和用戶需求的目的,基于原有硬件加密卡的硬件基礎之上對其進行進一步的開發和設計。
本文主要是對基于Linux系統和FPGA平臺的網絡數據加密卡的軟件驅動和硬件的研究。軟件方面主要是在Linux系統下的網絡數據加密卡的驅動研究,首先介紹32位PCI局部總線協議和數據的傳輸機制[8],其次介紹PCI驅動架構和實現過程[9],接著介紹基于PCI接口的網絡設備驅動注冊流程和網絡數據包的發送接收過程,闡述在PCI框架中實現網絡設備驅動注冊的實現過程。在PCI總線的驅動中同時注冊了字符設備,對網絡設備和字符設備數據訪問的互斥機制處理會作細致的研究。硬件方面主要分為三個部分:第一部分PCI接口的IP核的實現;第二部分為DM9000網卡芯片的控制和操作;第三部分為加密模塊的實現和分析。第一部分介紹PCI相關資源的配置與實現,其次介紹PCI協議的IP核的接口的意義和作用[10]。
最后介紹IP核的應用。第二部分主要介紹DM9000芯片的基本信息和操作過程,接下來介紹DM9000的控制模塊的實現功能和原理。第三部分主要介紹祖沖之算法。此外,對于FPGA的應用和程序開發流程部分,主要會介紹FPGA中各部分模塊通過Modelsim和QuartusII的開發和仿真過程,從單個模塊的仿真到整個系統的仿真,對數據和信號的波形圖會做詳細的分析和對比。最后仿真測試達到產品需求之后,會進一步介紹Linux平臺互聯網通信的數據測試過程,給出測試結果并加以分析。
Linux系統開發網絡加密卡設計:
配置空間BAR0寄存器進行配置寫操作時序仿真圖
配置空間BAR0寄存器進行配置讀操作時序仿真圖
配置空間ID寄存器進行配置寫操作時序仿真圖
對IO空間測試寄存器進行讀寫仿真圖
網卡芯片的讀操作仿真圖
網卡芯片進行寫操作仿真圖
目 錄
中文摘要
Abstract
第 1 章 緒論1
1.1 課題研究背景與目的意義
1.2 國內外同類課題研究現狀及發展趨勢
1.3 本文主要研究內容
1.4 本文的結構安排
第 2 章 網絡數據加密卡的理論基礎概述5
2.1 網卡加密系統的整體框架
2.2 Linux 網絡協議
2.2.1 網絡接口部分
2.2.2 網絡接口核心部分
2.2.3 網絡協議族部分
2.2.4 網絡接口 socket 層
2.3 Linux 設備驅動概述
2.3.1 Linux 設備驅動分類
2.3.2 Linux 網絡設備重要數據結構
2.4 PCI 局部總線接口協議
2.4.1 PCI 局部總線接口優點
2.4.2 PCI 總線信號分類
2.4.3 PCI 總線地址空間分配和映射
2.4.4 PCI 總線命令
2.4.5 PCI 總線操作時序
2.4.5.1 PCI 總線基本讀操作時序
2.4.5.2 PCI 總線基本寫操作時序
2.5 祖沖之算法
2.5.1 線性反饋移位寄存器 LFSR
2.5.2 比特重組 BR
2.5.3 非線性函數 F
2.6 本章小結
第 3 章 網絡加密卡硬件研究與實現27
3.1 網絡數據加密卡總體設計
3.2 供電電路設計和芯片選型
3.2.1 供電電路設計
3.2.2 芯片選型
3.3 編譯和仿真平臺
3.3.1 QuartusII 編程平臺
3.3.2 Modelsim 仿真平臺
3.4 PCI 接口 IP 軟核設計與實現
3.4.1 PCI 接口 IP 核的功能模塊劃分
3.4.2 PCI 接口 IP 核的信號實現
3.4.3 PCI 接口 IP 核各模塊功能設計與實現
3.4.4 PCI 接口 IP 核各模塊功能設計與實現
3.5 命令解碼控制模塊設計與實現
3.5.1 功能劃分
3.5.2 信號實現
3.5.3 DM9000 控制功能實現
3.5.4 加/解密控制功能實現
3.6 加解密算法模塊設計與實現
3.6.1 加/解密算法模塊信號和結構設計
3.6.2 加/解密模塊仿真驗證
3.7 本章小結
第 4 章 網絡加密卡的驅動設計61
4.1 網絡加密卡驅動總體設計
4.2 驅動調試方法
4.3 PCI 驅動架構實現
4.3.1 核心結構體
4.3.2 PCI 架構驅動實現過程
4.4 網絡設備功能實現
4.4.1 網絡設備初始化
4.4.2 網絡設備打開中斷和初始化函數實現
4.4.3 網絡數據發送與接收
4.4.4 連接狀態監測
4.5 字符設備功能實現
4.5.1 字符設備注冊
4.5.2 字符設備操作函數
4.6 本章小結
第 5 章 系統綜合測試77
5.1 系統綜合測試步驟
5.2 綜合加解密功能測試
5.3 系統網絡傳輸功能測試
5.4 系統綜合測試
5.5 本章小節
結 論
參考文獻
致 謝
攻讀學位期間科研成果
(如您需要查看本篇畢業設計全文,請您聯系客服索。