面向序列密码的抽取与插入单元可重构设计研究
扫描二维码
随时随地手机看文章
摘 要: 研究了抽取与插入单元的基本原理,提出了一种可重构的抽取与插入硬件电路,并对核心模块控制信息生成电路进行了深入研究。可重构硬件电路通过配置能够灵活高效地实现32 bit、64 bit、128 bit、256 bit等位宽抽取与插入操作。该设计在Altera公司的FPGA上进行了功能验证,并在Synopsys公司的Design Compiler上进行了逻辑综合、优化。结果表明,在CMOS 0.13 ?滋m工艺下,可重构移位单元硬件架构核心频率可以达到350 MHz。
关键词: 抽取;插入;可重构;控制信息生成
序列密码具有实现简单、加密速度快、密文传输中的错误不会在明文中产生扩散等优点,因此应用越来越广泛[1]。可重构技术融合了ASIC高效性和通用微处理器灵活性的实现方式,已经广泛应用到序列密码算法中[2]。抽取与插入单元可重构操作解决了算法中比特级初始信息位宽不相同的操作限制,实现了算法的灵活性和高效性,具有非常好的现实意义和创新性。
针对序列密码算法运算操作位宽不同的特点,抽取与插入操作能够从移位寄存器状态中快速提取出有效状态位来参与后续密码运算,解决了位宽不同的问题,从而降低了资源消耗并提高了运算速度。例如密钥流的生成、复杂更新函数计算等都运用到这种操作。所以对抽取与插入单元的基本原理与实现功能的研究,对提高序列密码处理速度和节约序列密码算法芯片资源具有重要的意义。
1 序列密码算法中抽取与插入单元操作
序列密码算法主要由移位寄存器、反馈函数运算单元和密钥流函数运算单元构成,其中反馈函数运算单元用于计算移位寄存器的更新值,密钥流函数运算单元用于计算最终的密钥流。不论是反馈函数的计算还是密钥流生成函数的运算都需要将参与运算的一个或多个移位寄存器的有效状态位提取出来继续完成运算。参与运算的一个或多个移位寄存器的有效状态位提取出来的操作称为抽取与插入操作。
抽取操作过程可以用图1(a)描述:根据预先产生的控制信息序列Ctr对受控序列In进行操作。控制信息序列Ctr中为“1”的控制位对应的受控数据依次排在Out的右侧,其余为“0”的控制位对应受控数据依次排在Out的左侧,这样能够实现有效状态位和无效状态位的分离。序列密码算法实现过程中,有时需要将抽取操作结果的每一位都保存下来,并且能够在有效位运算完成后再将其插入到原始的位置上去[3]。插入操作过程可以用图1(b)描述:当插入单元与抽取单元控制信息序列Ctr相同时,插入单元操作能够将抽取单元操作的有效状态位还原,也就是说抽取与插入单元的操作是可逆的。
在对NESSIE工程、ECRYPT工程[4]中的序列密码算法分析后,三十多种算法的运算环节包含了抽取单元操作,虽然单元操作对应的初始信息位宽相对比较复杂,但是多数序列密码算法操作位宽都可以归为32 bit、64 bit、128 bit、256 bit四种位宽以内。例如A5-1算法中LFSR级数为19时,运用抽取操作将参加下轮运算的第19、18、17、14这四个有效位比特抽取出来,然后进行后续操作,其余算法在这里不再赘述。表1中列出了9种序列密码算法中密钥流生成函数和反馈函数的运算情况,包括变量个数和对应源操作数据的位宽,可以得出抽取操作的源操作数位宽和目的操作数位宽。
2 抽取与插入单元的可重构硬件电路总体架构
可重构抽取与插入单元硬件电路架构包括inverse butterfly网络的抽取与插入基本单元电路和inverse butterfly网络的控制信息生成电路[5]。inverse butterfly网络的控制信息生成电路能够同时控制inverse butterfly网络的抽取与插入基本单元电路。对于初始信息位宽长度为nbit的抽取与插入单元操作,基本单元电路由级inverse butterfly网络构成,每级网络需要n/2 bit控制信息,一共需要nlogn/2 bit的控制信息并且由nbit的初始信息通过控制信息生成电路生成。
例如初始信息位宽为256 bit的抽取与插入单元操作中,对应的单元基本电路由8级inverse butterfly网络构成,共需要1 024 bit控制信息。当两个单元初始控制信息相同时,控制信息生成电路生成的控制信息有以下关系:抽取基本单元电路的第1级控制信息与插入基本单元电路的第8级控制信息相同,需要将抽取单元的各级电路生成信息还原为各自对应输入信息时,能够利用插入单元的特点:在控制信息相同的情况下,可以将抽取单元各级的生成信息作为插入单元的输入信息来实现。由此得到抽取与插入单元电路的实现是一个可逆的过程。
3 可重构控制信息生成电路
3.1 控制信息的生成算法
通过对benes、butterfl、inverse butterfly、banyan以及clos等多种网络结构的分析和研究得知,抽取与插入单元运用了inverse butterfly网络控制信息生成算法[6]。nbit初始信息对应的inverse butterfly网络需要nlogn/2 bit控制信息,这些信息均由nbit初始信息译码生成,控制信息算法[6]如下:
(1)计算初始控制信息抽头
PPC[0]=control[0]
For i=1,2,……,n-2
PPC[i]=PPC[i-1]+control[i]
(2)计算inverse butterfly网络控制信息生成算法
sel={}
For i=1,2,……,lg(n)
k=2i-1
For j=0,1,……,n/2i-1
temp=LROTC(0K,PPC[j?鄢2i+k-1])
sel[i]=temp||sel[i]
其中:
①LROTC(a, rot)表示左循环取反填充,a是输入,rot是左循环次数。
②0k代表长度为k的“0”比特串。
③PPC[a]代表从原始控制信息的第0抽头到第a抽头的1的个数。
④i表示inverse butterfly网络的第i级。
⑤k表示第i级中每个子单元需要的控制信息位数,也表示每个子单元中处在右侧部分的输入位数。
3.2 控制信息生成连加电路算法设计
针对控制信息生成电路位宽多变的特点,连加比特电路有多种实现模式。在处理连加电路时,提出了相邻比特两两相加以减少电路寄存器数目的操作,大幅度减小了电路设计面积并且提高了电路运行效率。以8 bit十进制连加电路为例,(其中a0~7表示8 bit连加电路初始信息位宽,b1~4表示连加电路相邻2 bit相加信息位宽,U1~8表示连加电路结果信息位宽)如图2所示。