当前位置:首页 > EDA > 电子设计自动化
[导读]引言密码模块作为安全保密系统的重要组成部分,其核心任务就是加密数据。分组密码算法AES以其高效率、低开销、实现简单等特点目前被广泛应用于密码模块的研制中。密码模块一般被设计成外接在主机串口或并口的一个硬件

引言

密码模块作为安全保密系统的重要组成部分,其核心任务就是加密数据。分组密码算法AES以其高效率、低开销、实现简单等特点目前被广泛应用于密码模块的研制中。密码模块一般被设计成外接在主机串口或并口的一个硬件设备或是一块插卡,具有速度快,低时延的特点。而从整体发展趋势来看,嵌入式密码模块由于灵活,适用于多种用户终端、通信设备和武器平台,将会得到更加广泛的应用。基于FPGA实现的嵌入式密码模块与以往的主流硬件实现方式(如DSP芯片、单片机)相比,具有低成本、高速度、微功耗、微小封装以及保密性强等优点,与ASIC相比具有设计灵活、成本低、周期短等优点。另一个明显的优点在于:在对时间代价和空间代价的取舍上,基于FPGA实现的加密技术提供了多种实现方案,分别对时间代价和空间代价有不同的偏重,有利于在各种应用环境中进行优化。硬件实现无论是ASIC方案还是FPGA方案,数据处理速度的提高都离不开优化技术,包括算法轮函数和设计结构的优化。AES算法的快速实现方案包括:优化 S盒的结构(如使用复合域、查表等方法),列混合与密钥加的结合,以及采用流水线技术等。表1为几种典型的AES算法实现性能对比情况。

AES算法结构

AES是一个迭代型的分组密码,包含了轮变换对状态的重复作用。用State表示待加密状态,CipherKey表示初始加密密钥,ExpandedKey表示扩展密钥,其加密过程描述如下:

Round(State,ExpandedKey) --轮变换
{
SubByte(State); --字节代替

表1几种典型的AES算法实现性能对比

ShiftRow(State); --行移位
MixColumn(State); --列混合
AddRoundKey(State,ExpandedKey[i]); --密钥加
}
AES(State,CipherKey)--主函数
{
KeyExpansion(CipherKey,ExpandedKey); --密钥扩展
AddRoundKey(State,ExpandedKey[0]); --模加轮密钥
For(i=1;i FinalRound(State,ExpandedKey[Nr]); --末轮运算
}

在AES的单轮运算中包含了SubByte(字节代替)、ShiftRow(行移位)、MixColumn(列混合)、AddRoundKey(密钥加)四个步骤。图1所示为单轮运算的加/脱密结构。


图1 单轮运算的加/脱密结构

AES算法芯片IP核的完整结构包括:接口模块,密钥扩展模块,控制模块,加/脱密模块。各模块之间的统一调度、协调配合是芯片性能的保证。然而制约芯片吞吐率的瓶颈是加/脱密模块的实现。本文在第三部分着重分析了加/脱密模块实现方案。

加/脱密模块实现方案

对于分组密码芯片加/脱密模块的实现,有迭代结构、轮展开结构和并行流水线结构等方法。迭代结构需要n(n为加/脱密轮数)个时钟周期完成一个分组的加/ 脱密操作。这种结构占用面积最小,速度较慢。而轮展开结构能够有效提高加/脱密速率,却需要大量占用存储单元和布线资源,因而面积最大。在设计芯片时,我们需要采用一种速度和面积的有效折衷方案,使得在满足速率要求的前提下尽可能减少资源占用。并行流水线结构就是这样一种方案。

流水线技术其实质就是在适当的地方加入寄存器,将前面的运算结果或输入数据暂存,并在下一个时钟到来时将寄存值作为后一级运算的输入。

流水线处理如同生产装配线那样,将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行。这使得操作执行速度只与流水线输入的速度有关,而与处理所需的时间无关。AES分组密码在非反馈模式下,后续块的加密与前块的加密结果无关,即所有块的加密可并发执行,因而采用流水结构能显著提高性能。

流水线的引入可以采用轮内流水线结构或者轮间流水线结构来实现。轮内流水线结构把在一个时钟周期内欲完成的运算划分为若干子运算(模加运算、查表和各级移位相加运算),采用寄存输出模式,这种方式既可缩短延时路径,提高时钟频率,又可使各子运算同时进行。这样一来虽然速度有可能提高,但是增加了控制的复杂度同时占用大量的存储单元,这对于FPGA实现来说将是很大的负担,所以本设计采用轮间流水线结构来实现。图2为轮内流水线结构和轮间流水线结构对比。以 10轮运算为例,可以按轮数(3、3、3、1)拆分为4个流水段,即:第1-3轮为第1段,第4-6轮为第2段,第7-9轮为第3段,第10轮为第4段。为了使各流水段的时间片均衡,在第4段内部需要加入锁存器使输出与前3段匹配。用VHDL语言描述实现这个流水线式电路的代码如下:

Proc1:process(Data_in)begin
A<=Round1(Data_in);
Endprocess;
R1:processbegin
waituntilCLK'EventandCLK=‘1’;
A_REG<=A;
Endprocess;
Proc2:process(A_REG)begin
B<=Round2(A_REG);
Endprocess;
R2:processbegin
waituntilCLK'EventandCLK=‘1’;
B_REG<=B;
Endprocess;
Proc3:process(B_REG)begin
C<=Round3(B_REG);
Endprocess;
R3:processbegin
waituntilCLK'EventandCLK=‘1’;
C_REG<=C;
Endprocess;
Proc4:process(C_REG)begin
D<=FinalRound(C_REG);
Data_out<=D;
Endprocess;

图2 轮内流水线结构和轮间流水线结构对比

其中Round1-Round3、FinalRound是由组合逻辑完成的操作,都能够在一个时钟周期内执行完成。这种风格的代码在生成流水线电路时,还需要控制指令的配合。

图3是拆分轮运算的流水线时空图。图中数字表示数据分组的序号,整个流水线操作由启动、发起、流水线核、收尾和结束5部分组成,当进入流水线核时的效率是最高的。


图3 拆分轮运算的流水线时空图

 用加速比(Speedup)可以衡量采用流水结构之后加密过程相对于非流水结构速度的提高。计算流水线加速比的基本公式为。

设加密N个分组,10轮运算每轮的运算时间为!,则

当N的取值无限增大时,这个比值将接近于3.33…。因而使用流水结构数据处理速度比非流水结构提高到3倍多。

仿真实验和结果

图4为加密过程时序。针对128bit明文分组和128bit初始密钥的AES算法,在QuartusII软件下,采用中间相遇的设计方法将顶层模块化图形设计与底层VHDL语言描述相结合实现。实验时选用APEX20KE系列的EP20K1500EFC33-3为目标芯片进行仿真和功能验证。密钥装载完毕之后每加密输出一个分组需3个时钟周期,吞吐率为689.500Mbits/s。使用了3056个LUTs,81626个Memorybits,可以满足SDH标准速率STM-4规定的622.080Mbits/s的要求。


图4 加密过程时序

 结合FPGA的结构特点,本设计实现的IP核具有如下特点:接口设计灵活,外部接口的设计和定义可以根据不同加密芯片的接口设计要求现场改动。资源占用小,脱密电路采用与加密电路部分复用的结构实现,从而节省了资源。设计支持重用,在算法实现顶层设计时采用了模块化设计方法,结构清晰,可以根据不同的功能需求进行改动,利于设计重用

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

上海概伦电子股份有限公司是一家具备国际市场竞争力的EDA企业,拥有领先的EDA关键核心技术,致力于提高集成电路行业的整体技术水平和市场价值,提供专业高效的EDA流程和工具支撑。公司通过EDA方法学创新,推动集成电路设计和...

关键字: EDA 集成电路 芯片设计

据业内消息,因为全球消费电子市场的低迷,老牌IDM公司Intel将陆续从本月开始进行较大规模裁员。Intel公司CEO帕特·基尔辛格自从上任以来不断试图调整公司策略以保证提高利润和产业规划,信息表示Intel将对芯片设计...

关键字: IDM Intel 晶圆代工 芯片设计

最近为什么越来越多的研究开始利用FPGA作为CNN加速器?FPGA与CNN的相遇究竟能带来什么神奇效果呢?原来,FPGA拥有大量的可编程逻辑资源,相对于GPU,它的可重构性以及高功耗能效比的优点,是GPU无法比拟的;同时...

关键字: FPGA 可编程逻辑资源 GPU

FPGA的应用领域包罗万象,我们今天来看看在音乐科技领域及医疗照护的智能巧思。

关键字: FPGA 科技领域 智能

强大的产品可降低信号噪音并提高分辨率与动态

关键字: Spectrum仪器 数字化仪 FPGA

最近某项目采用以太网通信,实践起来有些奇怪,好像设计成只能应答某类计算机的ICMP(ping)命令, 某类计算机指的是Windows特定系统,其他系统发送ping都不能正确识别。

关键字: 嵌入式Linux FPGA 协议

近两年,国外厂商的FPGA芯片价格飙升,由于价格,货期,出口管制等多方面因素的影响,很多公司都在寻找FPGA国产化替代方案。我工作中正在使用的几款芯片也面临停产的风险,用一片少一片,了解到国产FPGA发展的也不错,完全自...

关键字: FPGA 芯片 EDA

本篇是FPGA之旅设计的第十二例,在前面的例程中,完成了DS18B20温度传感器数据的采集,并且将采集到的数据显示在数码管上。由于本例将对温湿度传感器DHT11进行采集,而且两者的数据采集过程类似,所以可以参考一下前面的...

关键字: FPGA DS18B20温度传感器

这是FPGA之旅设计的第十三例啦,本例是一个综合性的例程,基于OLED屏幕显示,和DHT11温湿度采集,将DHT11采集到的温湿度显示到OLED屏幕上。

关键字: FPGA OLED屏幕

第八例啦,本例将介绍如何通过FPGA采集DS18B20传感器的温度值。

关键字: FPGA DS18B20传感器

电子设计自动化

21191 篇文章

关注

发布文章

编辑精选

技术子站

关闭