引言
随着信息化进程的不断加快,信息安全的重要性日益突出。数据的存储安全已成为信息安全领域的研究热点,通信中的数据保密问题也是人们关注的焦点,而数据加密是保证敏感信息机密性的常用方法。虽然软件加密以其灵活性得到了广泛应用,但是,软件加密方法需要消耗大鼍的处理器资源,速度慢,容易被跟踪调试和破解,安全性较低。鉴于软件加密方法的缺点和PCI接口的通用性,人们研究并提出了基于PCI总线的硬件加密方法:文献[1]针对PCI/Compact PCI接口电路使用的广泛性,提出了一种基于PCI—FPGA的硬件加密模型;文献[2]虽然给出了一种基于PCI总线的数据加密卡及驱动程序的设计方法,但其加、解密速率低于1.5 Mbps,难以满足批量数据加解密应用需求;文献[3]利用FPGA设计了基于PCI总线接口的纯硬件加密卡并采用了3一DES加密算法,但缺乏对高级加密标准(advanced encryption standard,AES)的支持,安全性有限。针对现有方法的不足,本文提出了一种基于PCI总线的高速数据加密卡设计及实现方案:采用低端FPGA器件实现了AES强加密算法及32位CRC校验算法;通过重构设备驱动程序中的DMA(directmemory access)描述符链和引入应用层缓冲区地址对齐策略,提高了DMA传输效率,并消除了加密卡对大容量高速FIFO的依赖,大大降低了设计成本。实验表明,PCI数据加密卡接口通信速率可达到67 MB/s,加、解密速率约为24 MB/s,可用于批最数据的加密存储和传输,能有效防止非法数据拷贝及通信中信息泄露所引发的泄密问题。
1 数据加密卡体系结构
PCI数据加密卡需完成系统总线到本地总线的接口和电气特性转换,并实现协议规定的I/O及存储器空间配置,接收主机发送的数据对其进行加、解密和校验运算,并将加。解密结果及校验信息返回给主机。其系统结构如图1所示。
图1 PCI数据加密卡系统结构
- PCI总线接口控制器——实现PCI总线到本地总线的转换,管理配置、I/O和存储器空问的操作,完成主机地址空间与本地地址空间之间的地址映射。
- 本地总线控制器——完成本地总线与密码算法核以及CRC模块间的数据传输。即:加密运算时,将明文数据写到输入FIFO和CRC模块,并从输出FIFO读取加密结果,从CRC模块读取校验值;解密运算时,将密文数据写到输入FIFO,将从输出FIFO读取的解密结果发送到本地总线和CRC模块,并在解密完成后从CRC模块读取校验值。
- 密码算法核——采用Rijndael算法,实现对数据的加、解密操作。
- CRC模块——采用32位校验算法。提供数据完整性校验信息,防止对数据的非法篡改。
2 数据加密卡硬件设计
2.1 PCI总线接口设计
PCI总线接口有三种常见的设计方案:一是PCI接口控制器IP核在高端FPGA芯片中实现;二是采用模拟收发器进行数据的串并转换,然后由嵌入式处理器/控制器实现总线协议的处理;三是采用专门的PCI接口控制器芯片实现。方案1对FPGA芯片的性能要求很高,从而导致设计成本较高;方案2的总线协议处理部分设计复杂度较高,且容易对用户功能模块造成影响。出于对设计复杂度、可靠性及成本方面的考虑,本文选用第三种实现方法,将设计重点放在与数据加密功能相关的模块上。
本文选择PLX公司的PCI9054芯片作为PCI总线接口控制器。由于该芯片提供了配置、I/O和存储器空间管理功能,用户只需对其本地总线接口进行读写即可实现与主机间的数据传输,图2给出了PCI9054与FPGA的接口方式。
图2 PCI9054与FPGA芯片的接口
2.2本地总线控制器设计
本地总线状态机是本地总线控制器的核心,可划分为空闲(IDLE)、总线保持(AHOLD)、读数据(READ)、读结束检测(RLAST)、写数据(WRITE)、写结束检测(WLAST)和总线保持等待(WHOLD)7个状态。图3为本地总线状态机状态转换图。
本地总线状态机状态跳转方式如下:
- 系统上电复位后,状态机处于空闲态,等待主机发起读写操作。当PCI9054的本地总线请求信号LHOLD有效时,表明主机发起一次数据传输,状态机进入总线保持状态。
图3 本地总线控制器状态机
- 总线保持状态下,若ADS#信号有效,总线传输进入地址周期。此时,若LW/R#信号为低则表明主机发起读操作,状态机转到读数据状态;否则,进入写数据状态。
- 读/写数据状态下,本地总线控制器置READY#信号有效,处理数据和奇偶校验信号,完成一个数据周期,并在下一周期相应跳转到读/写结束检测状态。
- 读/写结束检测状态下,若BLAST信号有效,表明本次读写操作已完成,状态机进入总线保持等待状态;否则,返回读/写数据状态继续进行数据传输。
- 总线保持等待状态下,若LHOLD信号无效,则表明主机不会发起连续的读写操作,状态机返回空闲状态;否则,直接转到总线保持状态,等待主机发起下一次数据传输。
2.3密码算法核设计
密码算法核采用Rijndael算法,工作于加、解密速度较快的ECB模式。设计中,采用RAM存储扩展密钥,并在将扩展密钥写入RAM的同时,将加、解密首密钥写入寄存器,并以流水线方式读取当前轮密钥,从而避免了读RAM的数据延迟问题。SubBytes变换和ShiftRows变换采用查表方式实现,实现时将SubBytes与ShiftRows合为一体,使两部分延时仅取决于SubBytes变换的ROM。MixColumns变换参考文献[6]给出的方法对矩阵乘法进行了展开与合并,节约了硬件资源,为提高整个设计的时钟频率提供了保障。
3 高速DMA传输设计
3.1驱动程序层设计
DMA传输中,DMA通道建立过程需要较长时间,是影响DMA传输速率的重要因素。现有设计常采用大容最高速FIFO来提高DMA传输效率,其缺点是增加了设计成本。本文针对数据加密卡的读写流程特点,提出了一种高效的DMA传输结构。该结构基于Scatter/Gather DMA方式,通过在驱动程序层莺构DMA描述符链,以共享存储器的方式实现了交叉的数据读写操作,从而避免了因需要改变数据传输方向引起的频繁DMA终止和DMA通道建立过程,在无大容量高速FIFO支持的条件下提高了DMA传输效率。
Scatter/Gather DMA传输方式下,主设备通过维护DMA描述符链实现连续的DMA传输。原始描述符链结构由图4(a)给出。重构DMA描述符链的过程分为3步:①对原始DMA描述符链进行复制;②将复制链的描述符数据传输方向取反;③将所有描述符按地址顺序重新链接。重构后的DMA描述符链如图4(b)所示。通过改进DMA描述符链结构,消除了DMA通道建立过程的耗时影响,提高了DMA传输效率,实现r交叉的读写操作,从而避免了加密卡对大容鼍高速FIFO的依赖,降低了设计成本。
图4 DMA描述符链结构比较
3.2应用程序层设计
DMA传输过程中,数据缓冲区跨页会造成DMA传输中断,从而影响了DMA传输效率。为避免上述问题,应用程序对数据缓冲区进行了逻辑地址对齐,取缓冲区的起始地址,并按其偏移鼍进行调整,以保证每个描述符对应的数据缓冲区都在同一个内存页面内。逻辑地址对齐设计方法避免了数据缓冲区跨页问题,从而使得描述符切换时只需较短的DMA暂停,数据传输速率显著提高。
4 系统实现及性能测试
4.1 Test.bed
PCI数据加密卡采用低端FPGA芯片EPlC12Q240C8。加密核的工作时钟设置为100 MHz,本地总线控制器工作于50 MHz时钟,两者之间采用异步FIFO进行时钟域隔离。设备驱动程序和上层应用程序的开发环境分另0为Driver Studi03.2和Visual C++6.0。
4.2测试结果及分析
前端设计完成后,将其下载到PCI数据加密卡上进行加、解密速率测试。本文测试分两部分:(1)PCI接口传输速率测试,相应的测试工具为SignalTap II嵌入式逻辑分析仪;(2)对改进前后的文件加、解密速度作了对比测试。测试1显示本地总线READY信号的频率为16.79 MHz,即本地总线的平均数据传输速率为16.79×32/8=67.16 MB/s。测试2即改进前后的加、解密速率对比测试,结果见表1。
表1改进前后的加、解密速率
5 结语
本文对PCI总线接口的设计方法进行了研究,高速硬化实现了AES密码算法和CRC校验算法,提出了一种高效的DMA描述符链结构,显著提高了DMA传输速率。实验结果表明本系统具有加解密速度快、密码算法强度高、加密运算不占用处理器资源、设计成本低等优势。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:基于PCI总线的数据加密卡设计与实现
本文网址:http://www.toberp.com/html/consultation/1083948769.html