摘 要:基于FPGA的可加密USB存储设备的设计过程,介绍了FPGA芯片EP1C3T100、USB接口芯片AU6983等各个模块的功能及硬件电路设计。对AES加密算法作了详细说明,并对硬件FPGA实现进行了设计和优化。该设备由FPGA芯片通过硬件来完成数据加密过程,由高速传输总线进行数据传输。具有实时性好、安全性高等优点。
关键词:FPGA; USB接口;AES算法; 数据加密
USB移动存储设备,由于其容量大、使用方便等优点得到广泛的应用。但随着电子资料和电子信息的不断增多,USB移动存储设备的使用可能会造成存储的重要信息或私密文件被窃取,使个人资料的存储变得越来越不安全,导致频繁出现无法挽回的损失和不堪设想的后果。而加密 USB存储设备的出现则可以有效防止个人或企业数据经由U盘泄露。
虽然现在很多厂商推出的各种U盘产品均提供了加密功能以提高数据的安全性,但很多均停留于软件加密层面,不仅需要另外安装软件,而且数据安全性也打了折扣,在某程度上仍不能防范数据被盗窃。本文选择FPGA芯片对U盘进行硬件加密[1]。
1 系统设计
1.1 系统组成
系统主要由两部分组成:PC机与USB存储设备。USB存储设备由USB接口芯片、FPGA芯片、Flash芯片、电源电路组成。系统原理框图如图1所示。
1.2 系统工作原理
基于FPGA的加密USB存储设备,在Flash与USB接口芯片之间加1个FPGA芯片用于各种加密算法的实现,通过FPGA将存入Flash中的数据进行加密、解密。将主设备上需要加密的数据通过USB接口发送到FPGA加密芯片,加密芯片根据控制信号的信息分析出应该采用何种加密算法,加密数据产生后,给出标志信号,然后输出加密好的数据。
FPGA芯片是系统的核心,主要实现3个主要功能:
(1)用于实现加密过程中的Flash读写时序控制,包括输入的数据加密、加密算法的模式选择等。
(2)用于加密算法的实现,需要加密的数据通过USB接口发送到FPGA芯片,FPGA芯片根据控制信号判读是否需要对数据加密,如果需要加密则运行加密算法,加密数据产生后,输出加密好的数据,并且输出标志信号。
(3)实现与USB接口芯片进行数据通信。FPGA和USB之间的通信通过8 bit数据总线加上若干控制信号实现,只要FPGA产生符合USB输入/输出时序的脉冲,即可实现两者之间的通信[2-3]。
2 系统硬件设计
设备的核心部分是FPGA芯片。加密、解密功能通过FPGA设计工具中硬件描述语言进行描述,在集成软件环境下进行编译、调试及综合,使用专用下载电缆将程序代码下载存储在FPGA芯片中,一旦USB设备与PC机相连,FPGA芯片中的算法程序会对写入Flash芯片中的数据进行加密或解密。
2.1 FPGA接口设计
本设计中选用的FPGA芯片为EP1C3T100,其中为100个管脚封装,I/O的电源为3.3 V,内核电压为1.5 V,只有1个锁相环(PLL),2个专用全局时钟输入管脚CLK0、CLK1,5个双重用途时钟管脚DPCLK。所有管脚中有一些是专用配置管脚。其中,nCSO、DATA0、DCLK、ASDI是与配置芯片EPCS4相连的;TCK、TDO、TMS、TDI等管脚则与JTAG相连。
FPGA 是SRAM型的可编程逻辑器件(不是ROM型可编程器件CPLD),通过JTAG就可以直接把代码固化在片子里面。FPGA下载到片子中的代码存放在RAM里,所以断电后这些代码即刻消失。由于可用来调试FPGA,所以能够在系统运行时或系统运行之前的任意时刻内,为所有的输入、输出管脚更新I/O标准。在调试阶段采用JTAG模式。基于JTAG下载模式的易失性,FPGA就需要非易失性存储器用来存放代码,每次上电后把代码从配置芯片读入FPGA 然后运行。本设计选用ALTERA公司配套的AS模式的配置存储器EPCS4,成本比较低,并且很容易配置[4]。
2.2 Flash芯片接口设计
本设计选用三星公司的NAND Flash芯片K9G8G08U0M,容量为1 GB。NAND Flash 的数据以bit 的方式保存在存储单元,每页2 KB+64 B,每128页形成1个块,1块就是256 KB+8 KB。
2.3 USB接口设计
本设计中USB接口芯片采用安国公司的AU6983,其芯片质量和可靠性较高,该芯片最多可以接2片Flash芯片。接口电路如图2所示。
2.4 电源电路设计
USB接口提供5 V电源,FPGA的I/O电源是3.3 V,内核的电压是1.5 V。使用2个LDO,1个将5 V转到3.3 V;另1个将3.3 V转为1.5 V,加上一些滤波电容,板上的其他外设电源均是3.3 V。另外有3.3 V的电源指示灯,表示电源是否正常。另有防反插二极管,防止电源反插,对器件造成损坏。
LT1086能更好地提供高效率1.5 A电流,其所有的内部电路设计将输入、输出端之间的压降控制在1 V左右,起到稳压作用。LT1587-1.5是1个低压差三端稳压器,有固定的1.5 V的输出电压和3 A输出电流的性能。
3 系统软件设计
各种功能通过在FPGA设计工具中用Verilog HDL语言进行描述,在集成软件环境Quartus II中进行编译、调试及综合,使用专用下载电缆将程序代码下载到FPGA芯片中。在系统工作前,先检查设备是否连接好之后,开始FPGA芯片及配置芯片的初始化。根据用户需要进行读操作或写操作,如果检测到写信号线有效时,则还需要判断此时写数据还是写命令,如果是写数据,则启动加密功能,并存入Flash;如果是写命令,则不能启动加密功能。如果检测到读信号线有效时,也需要判断此时是读数据还是读命令或读Flash的ID,如果是读数据,即启动解密功能,并从Flash中读出数据;而是读命令,则不能启动解密功能。系统软件流程图如图3所示。
对于加密算法的选择,目前常见的加密算法主要有DES和AES 2种。DES出现得比较早,资源丰富、算法成熟。但是AES作为新一代的数据加密标准,其安全性、效率明显高于DES,同时由于AES算法的简洁性,对内存的需求非常低,使得它的实现更为容易。综合各方面考虑,在本设计方案中采用AES算法[5-7]。
4 调试与仿真
本文中的设计使用Verilog HDL语言进行功能仿真和功能验证,利用Quartus II可以对源程序进行验证和综合。其加密程序的仿真结果如图4所示。图中,I/O1是输入的数据,I/O2是经过加密后输出的数据。
本文介绍了一种具有数据实时自动加密的USB存储设备设计过程,开创了USB安全通信的新领域。本系统以大规模可编程逻辑FPGA为平台,用Verilog HDL硬件描述语言实现数据加密,由于加密算法中大量使用了复杂的按位运算,而通常这类运算不适合在通用处理器上运行,但在本系统中使用的FPGA芯片能够进行大量逻辑运算,非常适合作为加密算法的硬件载体。用硬件实现加密算法,并且封装到芯片中,不易被外部攻击者读取或更改,有较高的物理安全性。
安全性、可靠性相对较高的USB存储设备将会对金融、通信等领域提供很大的帮助。因此,基于FPGA的硬件加密是极具研究意义的,它能够提高U盘的安全性、可靠性,同时也不会影响U盘的读写速度。
参考文献
[1] Altera. Pin Information for the cyclone EP1C3T100 device version 1.5[S]. 2006.
[2] NIST. Advanced encryption standard(AES)[M]. Federal Information Processing Standards Publication,2001
[3] 莫林利.基于FPGA模式的USB接口数据加密系统的设计与实现[J]. 计算机与现代化, 2005(2).
[4] 吕振,程千里,马艳南.基于FPGA+USB接口的硬件加密系统[D].辽宁工程技术大学电气与控制工程学院, 2007.
[5] 赵彬,谢涛.基于FPGA的身份认证智能卡设计[J].微计算机信息, 2006(8).
[6] 郑志安,夏国荣.基于FPGA的高级数据加密AES中的字节替换设计[J].电子设计工程,2005(8).
[7] 李雪梅,路而红,欧海文.AES算法的快速硬件设计与实现[J].电子技术应用,2006,32(5).