维普资讯 http://www.cqvip.com 行之 处理 难以 标准和技术研究所(NIST)开始征集先进加密标准(AES) 算法,以此来作为DES的替代品。条件是:新的加密算 法必须允许128、192、256位密钥长度,它不仅能够在 128位输入分组上工作,而且还能够在各种不同的硬件上 工作。1998年,NIST对15种候选算法进行评定,最后 选择出5种算法进行最后角逐,它们分别是:MARS(来 自IBM)、RC6(来自RSA实验室)、Rijndael(来自 Joan Daemen和Vincent Rijmen)、Serpent(来自Ross Anderson,Eli Biham和Lars Knudsen)和Twofish(来 自Brace Schneier,John Kerlsey,Doug Whiting, David Wagner)。最终,Rijndael算法以其高效简洁的优 异性能被选为高级加密标准…。 随着A ES算法的普及应用,该算法的硬件开发也逐 渐成为一个重要的课题。在集成电路的设计中,为了实现 速度快、集成度高、功耗低的硬件开发目标,可以利用流 维普资讯 http://www.cqvip.com 限域G(28)上的乘法取逆和仿射函数变换两步构成。 (1)把字节的值用它的乘法逆代替,其中‘00’的逆 结尾圈,其基本流程(解密流程同加密流程大同小异)如 图1所示 。 就是它自己。 (2)经1)处理后的字节值进行如下定义的仿射变换 l 1 1 1 0 O O 1 b b b卜b b b b 1.1.2线性混合层 线性混合层由行位移shiftrow和列混合mixcolumn两 种运算组成。行移位变换是根据不同的分组和密钥长度做 不同的旋转,第0行循环移动C0字节,第一行循环移动 Cl字节,第二行循环移动C2字节,第三行循环移动C3字 节,其中Cl、C2、C3与分组长度Nb有关,如表1所示。 表1不同分组长度对应的移位偏移量shiftrow 列混合变换就是分组的某一列乘以C(x),再模上 +1,其中C(x)=03x +01x +01x+02,即B(x)=C(x) @a(x),它们的关系如下: bo bl b ● bj : 1.1.3密钥加层 密钥加层使得轮密钥的各字节与工作区的各字节分别 i 异或,实现密钥与密码的混合得到运算结果,再次异或则 j 是其逆运算。 1.2密钥策略 。 圈密钥根据密钥策略通过密钥得到。密钥策略有两部 分:密钥扩展和圈密钥选择,且遵循以下原则: (1)圈密钥的比特总数为数据块长度与圈数加l的积。 i (2)密钥扩展为扩展密钥。 ≥ (3)圈密钥通过如下方法由扩展密钥求得。第一个圈 密钥由前面的4个字组成;第二个圈密钥由接下来的4个 字组成,以此类推。 。 1.3算法流程 AES算法由3个部分组成:初始圈密钥加、Nr一1圈、 一。一~ 一善 良。岣-cn 曩 誊 ?曩 誊 ,一O O●l O●l O3 2 O O ,-Ol Ol O Ol 3 2 l ^_O O O O O l l 2J 2 H unH ■ ■■■■■■■●■■■■■■■■■l a 0a :a a j 图1 AES算法流程图 2 AES算法的流水线设计 集成电路的设计中利用了流水线的思想,可以提高硬 件的效率,所以它的地位越来越重要。比较典型的是例子 是CPU的流水线,现在的CPU主频能达到3G以上,这 与它的指令流水线化执行密切相关,比如INTEL的P4 处理器,它的流水线已经超过了30级 。 2.1流水线设计的基本原理 在数字系统设计中,缩短触发器间组合逻辑的延时是 提高同步电路速度的关键。由于一般同步电路都不止一级 锁存,而要使电路稳定工作,时钟周期必须满足最大延时 要求,这样就不可避免地会降低系统时钟频率,造成整个 系统性能降低。因此缩短最长延时,才可提高电路的工作 频率。将较大的组合逻辑分解为较小的几块,中间插入触 发器,这样可提高电路的工作频率,这就是“流水线”技 术的基本原理。 流水线设计的一个关键在于:整个设计时序的合理安 排、前后级接口间数据流速的匹配。这就要求每个操作步 骤的划分必须合理,要统筹考虑各个操作步骤的数据流量。 如果前级操作时间恰好等于后级的操作时间,设计最为简 单,前级的输出直接汇入后级的输入即可。如果前级操作 时间小于后级的操作时间,则需要对前级的输出数据适当 缓存,才能汇入后级,还必须注意数据速度的匹配,防止 后级数据的溢出。如果前级操作时间大干后级的操作时间, 则必须通过逻辑复制、串并转换等手段将数据流分流。流 水线处理方式之所以频率较高,是因为复制了处理模块, 它是面积换取速度思想的又一种具体体现。 2.2 AES算法设计中的基本结构和循环展开结构 为了更好地理解AES算法流水线设计方法,我们先 维普资讯 http://www.cqvip.com 给出该算法设计中反馈工作模式下的基本结构和循环展开 结构。 2.2.1基本结构 在反馈工作模式下,轮加解密模块采用的基本结构, 只有一个寄存器和多路开关,以及完成算变换的组 合逻辑电路。在第一个时钟周期时,输入的数据块通过多 路开关送入电路,并被存放在寄存器中,在接下来的一个 时钟内完成一轮加密计算,计算的结果又通过多路开关反 馈回电路,并存放在寄存器中,在下一个时钟内完成一轮 加解密计算,计算的结果又通过多路开关反馈回电路,并 存放在寄存器中。这种基本结构在同一时间只能处理一个 数据分组,而完成一个分组的加解密所需的时钟周期数则 为密码算法所采用的轮变换数。这种结构具有良好的速度, 所需的资源也较少,其结构如图2所示。 图2轮加解密模块基本结构 图5循环展开结构 2.2.2循环展开结构 如果将基本结构中的循环部分展开,就可以得到一种 循环展开结构。循环展开结构和基本结构的惟一区别就是 组合逻辑电路部分实现的是K轮加密而不是1轮。在循 环展开结构中,加密一组数据所需时钟数为1,时钟周期 接近(略少)基本结构时钟周期的K倍。在这种结构中, 速度的提高是以空间的增加为代价的。加密/解密部件 所用的总空间差不多与K成正比,因此只有每轮循环占 鞲峨 睦llllllllllIllllllIlllllIllIllIl 一蓦曩警薯; 篙 善曩癌薯 用空间小,同时每轮时延与多路开关延时、寄存器的时钟 藏z0 ≤o I(8‘ oo瑟 L拽ef ooc『{ Ⅲ 隧 戮 糍 瓣 瓣 糍 糍 输出延时和信号建立时间之和相比也较小的情况下才适 合。其结构如图3所示。 2.3 AES算法的流水线设计方法 在非反馈工作模式下,各数据分组的处理可以并行执 行,为了提高密码算法的效率,通过采用流水线方法,即 在轮变换与轮变换之间或轮变换的内部插入一些寄存器, 这样就可以在同一时刻同时处理多个数据分组,提高系统 在单位时间内处理数据的速度。目前可选择的结构可以分 为两类,一类是内部流水线结构,另一类是外部循环流水 线结构。 ■t●●●●●●●●●●●l 2.3.1内部循环流水线结构 流水线是提高数字电路在单位时间内处理数据量的常 用方法。内部循环流水线结构由基本结构发展而来,它将 实现一轮加解密的组合逻辑电路均分为n个部分,并在各 个部分之间添加一个寄存器,其余部分与基本结构相同。 它将原来一个时钟内执行的逻辑操作分成几步较小的操作, 从而在多个较高速的时钟内完成,一方面可以提高系统时 钟工作频率,另一方面能对多个数据块并行地进行处理。 通过采用这种方法可以实现在不增大面积的情况下提 高加解密模块的处理效率,但难点在于如何将实现一轮加 密的组合电路划分成几个具有相同时延的部件。这种结构 适合于在一轮运算量很大的情况下使用。其结构如图4所示。 2.3.2外部循环流水线结构 外部循环流水线结构由循环展开结构发展而来。具体 方法是在组合电路中与每一轮加密运算对应的部件之间都 插入额外的寄存器,其结构示意图如图5所示。因此,它 的流水线级数为加密的轮数K。用外部循环结构实现的加 解密模块的面积与流水线级数成正比,所以外部循环结构 是通过面积来换取速度的。 I…厂 影l l磐外 憝I 二二[ 一—寄存器l——工———一 ■厂 寄存嚣2 一r‘ 二二L二 流水蝗鲥n一∞K轮 I鱼奉 r j流水线级nl I I 一蓦 一 勺部流水线结构图 图5外部循环流水线结构图 冲设计结构的性能比较与思考 寸AES算法,基本结构虽然节省电路面积,但达 设计的目的,至少要10个时钟后才能完成一组 口l密,当要求速度不是很高的情况下,这是最佳选 如8位数据宽度;循环展开结构是要将l0轮迭 成到一个组合逻辑中,这在时序上很难满足要求, 超出时钟周期;对于内部循环流水线结构,其难 口何将实现一轮加密的组合电路划分成几个具有相 部件;外部流水线结构惟一不足是消耗电路面积 j 21007.10计篱被鳇f, www ̄nsc,org:cn\ 薅 飘 曩群臻 撵 蠢 维普资讯 http://www.cqvip.com