电脑编程技巧与维护
图1DES
算法框图
DES 算法IP 核的流水线设计
王开元,袁伟,孟祥媛
(桂林电子科技大学信息与通信学院,桂林541004)
摘
要:介绍了DES 算法的原理,并根据DES 算法自身的特点和VHDL 语言的特点,解开DES 算法的16次循环
迭代。以流水线式的方法代替传统的DES 器件,由单一的编码模块和一个控制单元的设计方法,实现了高速DES 算法的方法。 关键词:DES 算法;VHDL ;分组加密
DES Algorithm IP Core Pipeline Design
CCSVCWANG Kaiyuan ,YUAN Wei ,MENG Xiangyuan
双向推车(Institute of Telecommunication,Guilin University of Eletronic Science and Technology,Guilin 541004)
Abstracrt :It introduced the principle of the DES algorithm brifely in this paper,and solved the sixteen times circle iteration of the DES algorithm on the base of the characteristics of the DES algor
ithm and the VHDL language.The traditional design method of DES devices is use single encoded module and single control unit,this is replaced by the flow line method,in this way,we realize the fast DES algorithm.
Key words:DES algorithm ;VHDL ;grouping encryption
DES 是Data Encryption Standard (数据加密标准)的缩写。它是由IBM 公司研制的一种加密算法,二十年来,它一直活跃在国际通信的舞台上,扮演了十分重要的角。
传统的DES 器件由单一的编码模块和一个控制单元组成。按照循环的方式加密解密,速度较低。根据DES 算法自身特点和VHDL 语言的特性,解开DES 算法的16次循环迭代,代之以流水线式的方法,实现了高速DES 算法的方法。
1DES 算法
DES 是一个分组加密算法,以64位为分组对数据加密,
同时DES 也是一个对称算法:加密和解密用的是同一个算法。它的密匙长度是56位,密匙可以是任意的56位数,而且可以任意时候改变。其中有极少量的数被认为是弱密匙,但是很容易避开。所以保密性依赖于密钥。如图1所示,输入明文块首先经过一个6X8位的初始置换模块口,然后在16个子密钥的
作用下被16次循环迭代编码。再经过一个逆初始置换模块IP-1,输出64位密文。
从图1中可以看出整个过程的核心部分是16轮跌代过程(乘积变换),该跌代过程的流程是首先将第一步换位得到的64位结果,分为两半即L0、R0两个32位数据块,然后进入16轮的循环编码,其16轮跌代过程如图2所示。假设上一轮编码得到Li-1和Ri-1两个32位的数据块。本轮编码得到Li 和Ri 两个数据块。则它之间满足:
其中堠是按位异或,f 为包括代换盒和置换盒在内的一个变换函数,包括以下步骤:扩展置换、按位异或、S 盒置换和P 盒置换,如图1所示。Ri-1先由扩展置换模块E 扩展为48位,然后与48位的子密钥Ki 按位异或,得到8组6位的数据。这8组6位的数据再进入6输入4输出的S 盒S1,S2…S8,得32位数据。最后再经过P 盒置换输出32位的f (R i ,K i )。这里每个S 盒Si 是一个4x16的矩阵,根据输入的6位值查对应位置数值输出一个小于16的4位二进制数。DES 解密过程与加密过程类似。只需对迭代过程逆序使用子密钥即可,即第一轮使用密钥K16,第二轮使用密钥K15,依此类推。
子密钥生成的大致过程分为:置换选择1(PC-1)、循环
收稿日期:
2009-11-19
24--
软件开发与设计
SOFTWARE DEVELOPMENT AND DESIGN
伸缩装置图2DES
算法仿真波形
左移、置换选择2(PC-2)等变换,分别产生16个子密钥。其中置换选择1和置换选择2是对56位初始密钥按照置换选择1表和置换选择2表进行重新编排。将前28位记为C ,后28位记为D 。置换选择1之后进行循环左移计算,对16轮的计算模型描述如下:
其中Lsi 表示循环左移一个或两个位置,它取决于i 的值。当i=1,2,9,16时,则左移一个位置,其余左移两个位置。
2基于VHDL 语言的DES 算法
2.1IP 置换函数的设计
初始换位IP 和逆初始换位IP-1可以编写两个置换函数,
其中函数的输入参数是原始数据,输出参数是置换后的数据。在函数内部使用VHDL 语言的连接运算符“&”将原始数据置换,例如前8位置换可以这样表示:
dout <=din (58)&din (50)&din (42)&din (34)&din (26)&din (18)&din (10)&din (2)
f 通过这个语句就将原始数据din 的第58、50、42、34、26、18、10、2位分别置换到输出数据dout 的前八位,后面的置换可以依次类推。
函数处理过程中的扩展置换函数、S 盒替换函数、P 盒替换函数,子密钥生成过程中的选择置换函数也可以按照上述办法构造子函数。2.2S 盒的构造方法
在DES 算法的每个S 盒都由4行(
0~3)×16列(0~15)组成。每行都是全部16个长为4的比特串的一个全排列,每个比特串用它对应得二进制整数表示。每个S 盒都将6个输入位映射为4个输出位,即定义6位输入为:将组成一个2位二进制数,对应S 盒表中的行号,将组成一个4位二进制数,对应S 盒表中的列号;映射的交叉点的数据就是该S 盒的输出。
构造S 盒替换函数时输入参数为48位的原始数据,输出参数为32位的置换数据,其中第0~5位原始数据对应SBOX 8,第6~11位原始数据对应SBOX 7,依次类推,第42~47位原始数据对应SBOX 1,每个SBOX 使用case-when 语句实现。例如SBOX 8的实现部分语句示意如下:
case din (5downto 0)is
when "000000"=>dout (3downto 0)
<="1101";
when "000001"=>dout (3downto 0)<="0001";when "000010"=>dout (3downto 0)<="0010";when "000011"=>dout (3downto 0)<="1111";2.3子密钥的循环左移计算设计
构造循环左移函数时将56的密钥作为输入参数,第n 轮循环轮数n 作为输入参数,置换后的56位密钥作为输出参数。利用case-when 语句实现计算过程。例如前3轮的循环左移语句的实现示意如下:
case n is
when "00000"=>dout <=din (55downto 28)
&din (27downto 0);
when "00001"=>dout <=din (54downto 28)&din (55)&din (26downto 0)&din (27);
when "00010"=>dout <=din (53downto 28)
&din (55downto 54)&din (25downto 0)&din (27downto 26);2.416轮循环实体的实现
根据DES 的核心部分--16轮的跌代过程决定首先构造一个能够完成一次乘机变换实体,然后通过元件例化语句实现实现流水线设计。该实体的端口为数据输入,数据输入有效,密钥输入,加密/解密控制,数据输出,数据输出有效。在结构体内利用并行语句实现加密/解密过程的乘积变换,代码示意如下:
Key <=置换选择2函数(循环左移函数);data_ep
<=扩展置换函数(din (31downto 0))
xor Key;--R i-1堠Key
data_sbox <=S 盒置换函数(data_ep);
data_pbox <=P 盒置换函数(data_sbox)xor din (63downto 32);--L i-1堠f
3流水线设计
16轮循环实体的设计主要是目的是为了流水线设计的实
现。利用VHDL 的元件例化语句,构造16个循环实体的元件,其中第一个循环实体的输入为原始数据,第二个实体的输入是第一个实体的输出,第三个实体的输入是第二个实体的输出,依次类推,最后一个实体的输出即位最后轮循环的数据,这样就实现了16级的DES 算法的流水线设计,在第16个时钟之后就可以在每个得到一个加密/解密后的数据。该程序在quartus II 编译后得到仿真波形如图2所示。
4结语
通过在quartus II 编译和仿真,证明DES 算法流水线的设
计是正确的,其加密/解密的速度可以达到。
这种设计方法也可以用于3-DES 设计当中,3-DES 算法实现仅需重复调用DES 模块3次,辅以不同的密钥即可。由于3个DES 模块串行调用的结果,这种3一DES 算法仅仅增加了流水线的深度,在3*16个节拍后每一节拍完成一个明文块的加密,加密速度与一种DES 算法相同。
(下转到34页)
油砂25--
电脑编程技巧与维护
参考文献
[1]汪翼,沈海斌,何乐年,等.DES算法的高速流水线实现.
微电子学与计算机[J],2003,(8).
[2]党志军,牛光辉.高速3一DES算法IP核的设计与实现.
现代电子技术,2007,(22):261.
[3]张福泰,李继国,王晓明,等.密码学教程[M].武汉:武汉大学出版社,2006.作者简介
王开元,男(1985-),硕士研究生,研究方向:超宽带无线通信。
袁伟,男(1984-),硕士,研究方向:软件无线电。
孟祥媛,女(1986-),硕士,研究方向:强干扰背景下微弱信号的估值与检测。
下行参考功率,该值由RNC确定,并通过Iub接口配置到Node B;P P-CPIC为P-CPICH的发射功率;P init为下行功率平衡调整期开始时的初始功率值;r为调整因子。 在软切换期间,下行快速内环功率控制将根据上式进行调整:
p(k)=p(k-1)+p tpc(k)+p bal(k)(2)
此式中,P(k)为某Node B第k个时隙的发射功率;p tpc (k)为Node B在第k个时隙收到的TPC指令;p bal(k)为根据式(1)计算得来的调整值分摊到该时隙的调整部分,p bal(k)=(P ref+P p-CICH-P init)/(调整周期内的时隙数)。
从以上的描述可知,在软切换过程中,内环快速功率控制将同时包括通常的快速功率控制和下行功率平衡过程。
电力安全性评价2.4站点选择分集发送功率控制
站点选择分集发送(SSDT)功率控制是下行链路功率控制的一种形式,可应用于当UE处于软切换(SHO)时的下行功率控制,这种功率控制方式在UTRAN中可选。使用SSDT的先决条件是所有的Node B都支持SSDT模式。使用SSDT的SHO比使用普通SHO在移动台运动速度相对较低时可以提高系统容量。
在SHO中,一个UE和多于一个的小区有DL连接。因此,一个UE增加了几个小区的DL干扰。SSDT这种功率控制的方法减少了UE在软切换时产生的DL干扰。在SSDT模式下,UE从它的激活集小区中选择一个作为“主小区”,其它小区就是“非主小区”。SSDT的主要目标是实现从主小区进行下行发送,来减小软切换模式中多站点发送产生的干扰。第二个目标是实现无网络干预的快速站点选择,以保持软切换的优点。为了选择主小区,每个小区都分配一个临时身份号(ID),UE向相联系的小区周期性地发送主小区号。UE通过上行FBI域将主小区工D传递到激活小区,SSDT模式的终结和临时ID码分配都由高层完成。 UE应产生控制发送功率的TPC命令,控制网络的发送功率,并仅根据从主小区来的下行信号在上行DPCCH的TPC域发送它们。UE通过测量激活小区所发送的CPICH的RSCP来周期性地选择主小区。检测到CPICH RSCP最高地小区作为主小区。UE通过分配给SSDT使用的一部分上行FBI 域周期性地发送主小区ID。如果小区接收到的ID码和自己的临时ID码不匹配,并且接收到的上行信号质量满足质量门限Qth,则该小区认为自己的状态是非主小区,非主小区关闭它们的DPDCH,DPCCH不受影
响。否则认为自己是主小区,被选作主小区的小区以能够刚刚达到目标SIR的必要功率发送自己的专用信道。
激活集中小区的(主或非主)状态是同步更新的,UE以5、10或20ms的频率更新临时ID,更新频率由UTRAN设定的SSDT模式确定。如果一个小区在上行时隙j接收到ID码的最后部分,小区的状态在下行时隙(j+l+Tas)mod15更新,Tas定义为2时隙的常量。
在UE处,主小区ID码是分割成几部分发送到小区的。这些部分分散在上行FBI S域。SSDT中的小区收集主小区ID 码的各分散部分,然后检测出发送ID码。在SSDT中,非主小区可以关闭DPDCH的输出(即不发送)。
小区管理两种不同的下行发送功率,不管选择的小区状态是主还是非主小区,它的更新和正常模式、压缩模式中下行DPCCH功率调节相同。DPCCH的TFCI、TPC和pilot域的实际发送功率是P1分别加上偏移量PO1、P02和P03。P2是下行DPDCH使用的发送功率,如果小区被选作主小区,P2被设为P1的值,否则关闭P2。小区先更新P1,然后才更新P2,还要保持这两个基础功率在功率控制动态范围之内。
3结语
根据3GPP对WCDMA FDD规定的标准对WCDMA系统中下行链路功率控制技术进行了详细地分析,其中从功率控制准则和功率控制方法两个分别进行说明。
参考文献
[1]董飞胜,李大扣,李晓辉,等.基于CDMA系统的加速功率
控制和多用户检测[J].信息技术,2009,04.
[2]张海波,李方伟,刘开健.CDMA系统中的闭环功率控制方
法[J].硅谷,2008,22.
作者简介
刘海英,女(1973-),工程师,本科,主要研究方向:计算机软件开发,3G网络应用研究。
(上接第25页)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
办公椅扶手34
--