基于verilog_hdl的aes加密电路设计(编辑修改稿)内容摘要:

明文分组 轮函数 F1 轮函数 F2 轮函数 F3 轮函数 FN 密文分组 初始密钥 K 密 钥 扩 展 算 法 K1 K2 K3 KN 东南大学成贤学院毕业论文 5 (a) (b) 图 22: 网络结构 由于 AES 算法使用的结构类型是 SP,因此,本文着重介绍 SP 网络结构。 从图 22( a)中可以看出, SP 结构从上往下依次是轮输入、 S 层、 P 层、轮输出,然后子密钥作用于 S 层。 结构非常简单,便于分析。 明文和密钥共同作用于 S 层,在这一步中 要完成的工作就是扰乱明文与密钥彼此之间的联系,使非法用户无法从外界区分明文和密钥,从而达到对密码分析技术的免疫,即提高抵抗攻击的能力。 SP 结构中的 P 层主要承担着扩散的工作,经过这一层的计算,明文分组中的任何一点变动,都会引起相应密文的无规律变化。 使密文的多样性得到极大的拓展,使线性攻击等手段对其无能为力。 AES 加密算法的数学理论 含有有限个元素的域 有限域的,我们把它定义成一个域中包含的要素的个数是有限的,且这个集合中单个要素的个数我们将它定义成有限域的阶。 在公式 npm 中 m 表示阶, p 则代表特征值。 在 AES 加密算法中,最常用的特征值是 2。 有限域上的多项式及运算 有限域 )2( 8GF 转化为传统的多项式如下所示。 012211)( . .. bxbxbxbb nnnnx   , Fbi () 由式( )我们可以看出,以一个 8 位的数据为例,转换后的多项式如式 所示。 )(01234567 xbbbbbbbbb  012233445577)( 66 bxbxbxbxbxbxbxbb x  () Li Ri F Ki Li+1 Ri+1 轮 输 入 S 层 轮 输 出 P 层 子密钥 东南大学成贤学院毕业论文 6 需要注意的是,此多项式的系数 ib 是一个 8 位二进制数的每一位的数值,即 ib 非 0 即 1。 举个列子,现在有一个多项式 157  xxx ,那么它对应的 8 位二进制数就是 1010011,因此,其对应的十六进制数就是 {A3}。 1)有限域上多项式的加法运算 AES 加密算法中,通过我们人为地定义,把一个字节(即 8 位的二进制数)的数据转换成数学中常用的多项式,这就 把不易计算分析的二进制数直观地用符合我们正常思维的数学多项式的计算来表示。 举个例子,十六进制数 {A3} {89}多项式计算如( )所示。 二进制计算式: 1010011 10001010 = 00101001 多项式计算式: 1)()1( 353757  xxxxxxxx () 2)有限域上多项式的乘法运算 多项式的乘法关于多项式的加法满足分配律、交换律和结合律,单位元为 0x。 选取一个 L 次多项式 )(xm ,称其为约化多项式。 这样才能让乘法运算在有限域 )2( 8GF 中具有封闭性。 因此,多项式 )(xa和 )(xb 的乘积表示为模约化多项式 )(xm 下多项式的代数乘积 [7]。 )()()()()()()( m o d xxxxxxx mbacbac  () 定义 1m o d )()()(  xxx mba 时, )(xb 称为 )(xa 的逆元。 为了定义字节乘法,被广泛地用于 AES 加密算法的多项式为: 1348)(  xxxxm x () 如在有限域 )2( 8GF 中, 16 进制数 {57} 和 {83} 所表示的多项式的乘积可以用 16 进制数 {C1} 表示。 多项式表示为: )1()1( 7246  xxxxxx )1()()( 24623577891113  xxxxxxxxxxxxxx 13456891113  xxxxxxxx () 1)1m o d ()1( 673483456891113  xxxxxxxxxxxxxx () 在有限域 )2( 8GF 中还有一种乘法运算叫做 x 乘 ,记作 : )()())(( m o d xxxb mbxxtime  多项式表示为: 东南大学成贤学院毕业论文 7 ))(( m o d01223344556677)( xmbxbxbxbxbxbxbxbbx x  () 在这个式子中,要是 7b 为 0,多项式的系数依次向左移动 1 比特,最右边空出来的 1 个比特我们用 0来填充,这样的改变并不影响该等式的结果;如若 7b 为 1 的话。 那么乘积结果减 )(xm ,与 16 进制数 {1B} 异或。 3)有限域上多项式的四字节运算 有限域 )2( 8GF 中四字节表示为次数小于 4 的多项式。 它的加法运算与一字节相同,通过各系数的异或运算来实现。 多项式表示为: 012233)( axaxaxaa x  ; 012233)( bxbxbxbb x  () 四字节的乘法运算采用的约化多项式为: 14)( xmx () 多项式 )(xa 和 )(xb 的乘积多项式表示为: )1m o d ()( 4012233)()()(  xdxdxdxdbac xxx () 根据 x 幂的次数进行区分,得出其矩阵表示为: 321001233012230112303210bbbbaaaaaaaaaaaaaaaadddd () 轮变换与密钥扩展 1) S 盒变换 SBOX SBox 操作是一个非线性的字节替换。 它由两个子转换组成。 乘法逆元素和仿射变换。 每个字节的乘法逆元素运算: )()( 1 xx AB  1348)(  xxxxm x () 仿射变换(这个步骤执行 )(28GF ): )()( )18m o d ( xxx CBD x  )( () 1}{1 234  xxxxF 加密过程 xxxA  36}4{ 解密过程 东南大学成贤学院毕业论文 8 添加常数 )(xC ,是为了防止 Sbox 没有定点 ,或没有相反的定点。 1}63{ 56)(  xxxC x 加密 1}05{ 2)(  xC x 令 )()( 1 xx AB  要实现 AES 两个子步骤,通常需要 SubBytes 转换,如表 2 所示。 表中数据的大小是 8 位 16*16即 256 x 8 位的 ROM,数据规模不大,可以以一个简单的方式与现代设计工具相结合。 然而当硬件大小受到限制或者出现不能合并的 ROM 的时候 ,反演硬件就显得相当有必要性。 这种情况下,主要问题是如何实现高效 Sbox。 仿射变换 ,但是需要少量的门电路,这就会造成一定的延迟。 根据 Rijndael,AES应用了多项式 1348)(  xxxxm x。 这是一个本原不可约多项式。 大部分的作者和设计工程师都认为 )()( 1 xx AB  的计算是相当复杂的。 好消息是,前人已经总结了一套实用的 Sbox 计算方法。 以下列举两个方法: (1)结合表 21 进行查表; (2)使用 CAD 工具优化逻辑功能,合成并优化逻辑函数,计算元素的反演 )(28GF。 利用复合材料的使用领域设计的低功耗 Sbox 转换。 元素 )(28GF 中定义的映射 24)2(GF。 在底层领域对乘法和反演进行了优化。 这种方法既吸引了 ()的技术,又和 ()中的许多有用的想法相一致。 为了减少了一些不必要的资源浪费,字段转换只应用于 Sbox 计算。 没有必要进一步分解复合场最低的地场。 工作在复合材料领域,乘法逆元素是相对自由的。 然而,总的来,我们必须把 )2( kGF 中的元素映射到mnGF )2( ,其中 mnk。 因此变换和逆变换矩阵是很重要的。 元素 )(28GF 可以被映射到元素24)2(GF ,利用多项式 142)(  xxr x 表示元素 )2( 4GF ,其中 14)(  xxI x 是初始的不可约多项式。 结果映射在 ()、 ()的正逆矩阵中。 1010000010101100110100100111000011000110010100100000101011011101T ,00100100111011101010010001011010101100100111001010110000010100011 T ()() 上图左侧 的元素在上面的矩阵 中 表示最低有效位。 利用映射元素形式 ,从 )(28GF 到 24)2(GF 是简单的乘法逆计算反演。 因为总数据字节比较小, 反演使用直接 映射真值表的方法,在消耗较少的资源下查找数据。 此外 , 在 Rijndae1 系统 中 数据 以最初始的 字节格式 存在。 令数据字节表示成cbxbcA  }{ ,那么 qpxpqAB   }{1。 东南大学成贤学院毕业论文 9 由 DCxxr x  2)( 可以推导出: 1bp () 1)(  cCbq () DbcCbc 2)(  () DbcbcC 22  () 本文阐述了这种方法的扩展数量管道状态选项 SBox 设计。 图 1 所示的 128 位数据路径是 4 个 32位的数据路径。 因为一个 SBox 计算块只需要 8 位的数据集 ,我们的确需要 16 个平行单位。 字节替换计算也是 KeyScheduling 计算过程所需的关键。 一轮 128 位关键是需要在每一轮的 AES 操作。 然而只有32 位 :4 字节替换 8 位的需求。 因此只 有 4 个 16 位的 SBox 共享密钥更新 的 计算。 S 盒如表 21 所示。 表 21 SBOX 2) 行移位变换 ShiftRows 行移位变换就是以字节为单位对数据进行循环移动,这种变换是线性的,它其实就是 SP 网络结构中 S 层的组成部分,主要作用是混淆明文与密钥。 3) 列混合变换。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。