摘要
随着近几年互联网的飞速发展,电子商务、移动支付、互联网金融、网络银行、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]。基于以上分析硬件加密有着重要意义,也是本设计硬件网络数据加密卡的最终目的。现在我们国内大多数的特殊机构为了内部信息安全性,常采用内部局域网与外网隔离的手段,在局域网的内部,可以相互之间进行正常的通信,整个局域网与互联网是相互隔离。防止和互联网连接导致网络攻击,导致信息泄露的后果。
这给工作带来了非常大的局限性,因此如今开发一种可以在计算机和互联网之间实现网络数据既可以正常传输,又可以实现数据加密的网络安全设备显得极其的重要。从算法的角度出发,基于国家安全的重要性,我国如今大力提倡并且要求信息加密技术应用国内自主研发的加密算法。这样更能有效的提升加密信息技术的保密性和安全性。因此本设计采用中国自主研发的祖冲之算法进行实现,并且分析其性能。从硬件加密的研究方向出发,满足如今的网络安全的需求,设计出一款可以加密传输网络数据的网络数据加密卡是本设计的目的。对于个人信息安全、互联网安全、企业和国家安全都有着其重要的意义。
目前防止网络信息泄露最主要的方法就是将我们要传输的数据先进行加密然后再传输,这样做有效的防止了明文信息被直接窃取的安全隐患。针对这种方案人们主要研究的方向集中在加密算法和传输手段上。加密的算法主要有公钥算法和私钥算法,私钥算法的加密和解密两端的密钥是一致的,私钥算法又分为序列加密和分组加密两种,序列加密难点在于用什么样的方法来产生随机序列,几十年来,人们已经研究并且提出了大量的序列密码,其中最为典型并且被人们深入和广泛研究的有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 本章小节
结 论
参考文献
致 谢
攻读学位期间科研成果
(如您需要查看本篇毕业设计全文,请您联系客服索取)