基于USB和EDA的硬件加密系统
扫描二维码
随时随地手机看文章
硬件加密,就必须要考虑计算机接口的问题。计算机的接口有许多种,如传统的串口和并口。串口的出现是在1980年前后,数据传输率是115~230kb/s,一般用来连接鼠标和外置Modem;并口的数据传输率比串口快8倍,标准并口的数据传输率为IMb/s左右,一般用来连接打印机、扫描仪等。早期的软件狗类加密硬件基本上都是使用并口的,不但极易与打印机冲突,而且容易被破解。要想设计出更可靠更完善的加密硬件,必须采用新的计算机接口。而近年来发展快速的USB接口技术为硬件加密提供了一条很好的道路。
1 总体方案的提出
设计系统原则是在实用、可靠、经济的原则基础上,保证系统不仅能满足应用需要,而且要有灵活性、可扩展性和通用性。该系统有EDA技术、USB 总线协议、加密算法优化组合而成,系统的构成如图1所示。FPGA的作用之一是和PDIUSBD12进行通信,实现USB协议,从PDIUSBD12中获取数据并根据主机的要求发送数据。第二个作用就是加密算法的实现,完成传送数据的加密。
2 USB协议的实现
2.1 PDIUSBD12简介
PDIUSBD12是Philips公司的一款较新型的专用USB通信控制芯片,符合USBI.1规范,是一款高性能USB接口器件,集成了SIE,FIFO存储器,收发器以及电压调整器。可与任何外部微控制器/微处理器实现高速并行接口(2 MB/5),在批量模式和同步模式下均可实现IMB/5的数据传输速率以及完全自治的直接内存存取DMA操作。
2.2USB控制器的设计
从硬件实现的角度出发,将PDIUSBD12控制器划分为分频器模块、沿控制器模块、输人/输出切换模块、设备收发器模块和请求处理模块。当系统的结构设计确定后,对于每个模块的设计首先要使用硬件描述语言(VHDL)完成系统的描述,然后使用语言级系统仿真及调试工具进行语言级功能仿真与调试。
系统用VHDL语言来描述。VHDL语言是一种结构化语言,他支持结构化设计。结构化设计就是将一个系统划分为多个子模块,而每个子模块又可以继续划分为更多的模块。首先根据系统的功能描述,将系统划分为接口清晰、相互关系简单的子系统,从而得到系统级的描述。之后,依次对各个子系统(或功能模块)进行结构设计和描述。逐级细化,最后完成设计。这实际上给出了模块划分的方法。在对系统进行划分时,并不是一次就把系统的所有模块划分得非常细致,而是按照层次化的思想自顶向下逐步细化。图2描述了本处理器的硬件模块结构框图,各模块的功能定义如下:
(1)分频器模块
由于PDUSBD12在读写时序上有时间限制,例如每次些操作之间的间隔不能小于50 ns,而FPGA的系统时钟频率一般都比较高,所以不能直接使用系统时钟控制PDIUSB12,必须进行分频。分频器模块的功能也就是按照要求有系统时钟生成所需频率的时钟信号。
(2)沿控制器模块
PDIUSBD12的读写操作都各自有一个读写控制信号WR-N和RD-N,每次读写操作都在对应的控制信号的下降沿触发,沿控制模块的功能就是可控的产生一个下降沿信号,用于控制读写操作。
(3)输入/输出切换模块
输入/输出切换模块在整个系统中非常重要,因为FPGA芯片和PDIUSBD12芯片之间的数据总线是双向的总线,所以当读写操作之一在进行的时候另一个操作的信号源必须关闭,否则就会造成双驱动,这不但不能得到正确的数据还会损害芯片。输人/输出切换模块的功能就是根据当前的读写状况控制信号源,保证在一个时刻只有一个信号源驱动总线。
(4)设备收发器模块
这个模块是整个固件的核心模块,他完成的工作包括配置PDIUSBD12芯片、处理PDIUSBD12产生的中断、完成从缓存读取数据,并且根据需要将数据通过PDIUSBD12发送。设备收发器模块完成对每个主机请求的解析工作,此外,还要将解析完成的请求数据传递给请求处理模块。
(5)请求处理模块
请求处理模块的作用是接收设备收发器模块解析完成的主机请求,并且决定如何处理此请求。
3 加密算法的实现
3.1 硬件加密的优点
随着信息产业的发展,集成电路产业提供了越来越强大的芯片,现在所有的加密产品都是特定的硬件加密形式。这些加/解密芯片被嵌人到通信线路中,然后对所有通过的数据进行加密。虽然软件加密在今天变得很流行,但是硬件仍然是商业和军事应用的主要选择。
(1)速度
加密算法通常含有很多对明文位的复杂运算,没有哪类这样的操作能在一般的计算机上进行。两种最常用的加密算法,DES和RSA在普通用途的微处理器上运行没有效率可言。另外,加密常是高强度的计算任务。计算机微处理器对此效率不高,将加密移到芯片上,可以分担计算机微处理器的工作,使整个系统速度加快。
(2) 安全性
对运行在没有物理保护的一般的计算机上的每个加密算法,很可能被别有用心的人用各种跟踪工具密码修改算法而使任何人都不知道。硬件加密设备可以安全的封装起来,以避免此类事情的发生,防篡改盒能防止别人修改硬件加密设备。特殊目的的VLSI芯片可以覆盖一层化学物质,使得任何企图对他们内部进行访问都将导致芯片逻辑的破坏。
(3)易于安装
大多数加密应用与普通计算机无关,将专用加密硬件放在电话、传真机和调制解调器中比放在微处理器或者软件中要便宜的多。即使当加密数据来自计算机时,安装一个专用加密设备也比修改计算机系统软件更容易.加密应该是不可见的,他不应该妨碍用户.对于软件要做到这点的惟一办法是将加密程序写在操作系统软件的底层,这很不容易。
3.2DES加密算法的实现
DES(DataEncryptionstandard)加密算法在成为加密标准到今天,经历了长期的考验.实践证明DES算法的安全性是能够满足大部分的安全要求的。采用软件方式实现的DES算法会在很大程度上占用系统资源,造成系统性能的严重下降,而DES算法本身并没有大量的复杂数学计算,在加/解密过程和密钥生成过程中仅有逻辑运算和查表运算,因而,无论是从系统性能还是加/解密速度的角度来看,采用硬件实现都是一个理想的方案。
DES算法设计中的关键部分在于5盒的设计、每一轮密钥的产生和整个16轮加密过程中流水线设计。
根据实际需求,将加密算法模块进行独立设计,如图3所示为封装后I/0接口示意图。
作为输人接口包括3大部分,系统输入、数据输人和系统控制。系统输入主要是时钟信号输入ClK和出现异常情况时的系统自动重起信号RST。时钟信号输入可以采用加密板卡的系统时钟,也可以独立使用自己的时钟。
这里为了便于扩展和升级,采用跳线方式来选择时钟信号,支持两种时钟频率选择。
数据输人部分包括64位的加密数据的输人data_in[63:o],64位密钥的输入key1[65:o],key2[63:0],key3[63:0]和初始化向量rant val[63:0].因为USB总线接口是串行总线,因此从主设备上发送过来的加密数据在进入该加密芯片之前必须用锁存器保存,而同样,作为密钥数据也需要锁存器保存以确保输人数据的完整性。输出接口主要包括64位的加密数据输出dat_out[63:0]、输出准备信号ready-out、系统繁忙信号,busy和差错反馈信号par-err。系统完成数据的加密后,会及时通知将ready_out信号由低电平升至高电平,同时busy信号变为低电平有效,这样在后置模块会根据ready_out和busy信号来判断是否应该读取输出数据。
(1)s盒的实现
s盒是DES算法的一个关键,因为在每一轮计算中有8个s盒,而总共16轮加密,则共需要128个s盒,因此s盒的实现效率尤为重要。s盒是一个复杂的非线性函数,硬件实现时,s盒的实现具有一定难度,其设计实现的好坏是影响算法整体加解密速度的主要因素。在设计中,从资源的角度出发,应尽可能减少FPGA器件中逻辑单元(LE)、嵌人式阵列块(EAB)的耗用,但这可能是以降低系统速度为代价。从速度的角度出发,应最大限度提高系统处理速度,但这样往往需要较多资源。因此,在大多数情况下这两种选择是矛盾的,需要根据实际环境做出权衡。
因此本文遵循的原则是在保证速度的情况下尽量节约资源。本设计采用VHDL语言中的case语句来直接实现s盒的非线性变换。
(2) 密钥产生单元的实现
密钥产生单元由选择控制电路PC 一1、循环移位寄存器及压缩置换电路PC 一2构成。该部分的输人是64 b初始密钥;输出为每次迭代运算用的子密钥。对于总共16轮循环运算,每一轮密钥的使用采用的方式如图4所示,在初始密钥输人的第一个周期产生所有16轮加密需要的不同密钥同时并行输出,然后根据相应的周期顺序,每一轮的密钥输出采用寄存器向后顺延一个时钟周期作为该轮算法的密钥输人。
此种方式的好处是每一轮的密钥都会在每一轮的运算之前准备,便于采用流水线实现加密过程。本文的设计是将全部16轮密钥一次性通过多路选择器产生出来,类似于生成了一个“密钥池”,然后不同的轮数依次利用寄存器来保存并跟流水线同步。这里在产生密钥时因为解密和加密的顺序相反,因此解密时是右移产生。
(3) 流水线的实现
流水线是提高数字电路在单位时间内处理数据量的常用方法,他的概念是把在一个时钟周期内执行的逻辑操作分成几步较小的操作,并在多个较高速的时钟内完成,如图5所示。
在这种结构中,与K轮加密对应的组合逻辑被均分为K个部分,并在各个部分之间添加一个额外的寄存器,其余部件与基本结构相同。这些分割得到的组合逻辑电路部分称为流水线站,每个流水线站执行不同的处理步骤。用这种方法,电路可以同时处理多个数据块,提高系统在单位时间内处理的的数据量,也就是速度。
在每一个时钟周期,被部分处理过的数据块移人下一个流水线站,后续块则紧跟其上,占据他原来的位置,也就是说,一个流水线电路可以同时加密与他所含有的流水线站数量相等的数据块。以这种将循环展开为流水线的处理方式,展开后的流水线处理周期在理想情况下接近于基本结构处理周期时间的1/K。
本文实现的DES算法数据流通路简单,大部分都是针对位的线性变换;算法的核心部分是16轮的完全相同的线性变换迭代,因此可以循环展开为16级深度的流水线;在非反馈模式应用时,前后数据块之间没有相关性,因而不会产生冲突;每一轮运算中需要的子密钥可以提前生成,随数据流在流水线的前进中提供给各级流水线。
4 结语
采用USB 总线技术与EDA技术相结合的设计思路,使系统设计更灵活,系统升级更容易。实现了软件平台的通用化、软件协议的标准化、硬件结构的统一化,从而保证了系统的可移植性和可扩展性,为硬件加密系统的设计提供了一种新思路。加密系统实际运行情况表明,系统设计思路正确,系统实时性、加密性能都能达到设计要求。