几种分组密码算法s盒代数性质的研究-毕业设计内容摘要:
01100011,1111100001111100001111100001111110001111110001111110001111110001bA AES算法基于排列和置换运算。 排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。 AES使用几种不同的方法来执行排列和置换运算。 AES是一个迭代的、对称密钥的分组密码,它 可以使用 12 192和 256位密钥,并且用 128位( 16字节)分组加密和解密数据。 与公共密钥加密使用密钥对不同,对称密钥密码使用相同的密钥加密和 8 解密数据。 通过分组密码返回的加密数据的位数与输入数据相同。 迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。 AES 是分组密钥,算法输入 128 位数据,密钥长度也是 128位。 用 Nr表示对一个数据分组加密的轮数。 每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey(i)的参与。 由于外部输入的加密密钥 K 长度有限 ,所以在算法中要用一个密钥扩展程 序 (Keyexpansion)把外部密钥 K 扩展成更长的比特串 ,以生成各轮的加密和解密密钥。 第一轮1 2 8 b it 轮 轮轮 轮 轮 2轮 轮 轮 N r轮 轮 轮 轮轮 轮 轮轮 轮 轮轮 轮 轮轮 轮 轮 轮第Nr轮轮 轮 轮 轮 轮轮 轮 轮 轮轮 轮 轮 轮轮 轮 轮 轮第Nr轮轮 轮 轮 轮轮 轮 轮轮 轮 轮第一轮轮 轮 轮 轮 轮轮 轮 轮 轮轮 轮 轮 轮1 2 8 b it 轮 轮轮 轮 轮 轮轮 轮 轮 11 2 8 b it 轮 轮 1 2 8 b it 轮 轮轮 轮轮 轮 图 2 AES算法的加密 /解密流程图 圈数变化 AES 每一个圈变换由以下三个层组成 : 非线性层 —— 进行 Subbyte 变换; 线行混合层 —— 进行 ShiftRow 和 MixColumn 运算; 密钥加层 —— 进行 AddRoundKey 运算。 9 ① Subbyte 变换是作用在状态中每个字节上的一种非线性字节转换 ,可以通过计算出来的 S 盒进行映射。 ② ShiftRow 是一个字节换位。 它将状态中的行按照不同的偏移量进行循环移位,而这个偏移量也是根据 Nb 的不同而选择的。 ③ 在 MixColumn变换中 ,把状态中的每一列看作 GF(28)上的多项式 a(x)与固定多项式 c(x)相乘的结果。 b(x)=c(x)*a(x)的系数这样计算 :*运算不是普通的乘法运算 ,而是特殊的运算,即 b(x)=c(x)a(x)(mod x4+1) 对于这个运算 b0=02。 a0+03。 a1+a2+a3 令 xtime(a0)=02。 a0, 其中,符号 “。 ” 表示模一个八次不可约多项式的同余乘法。 对于逆变化 ,其矩阵 C 要改变成相应的 D,即 b(x)=d(x)*a(x)。 ④ 密钥加层运算 (addround)是将圈密钥状态中的对应字节按位 “ 异或 ”。 ⑤ 根据线性变化的性质 ,解密运算是加密变化的逆变化。 轮变化 AES算法的轮结构很简单,只是四个顺序执行的过程,每一轮运算包括字节代替层,行移位层,列混合层,最后是异或轮密钥运算。 其最后一轮有一些不同,没有列混合层。 字节代替层实质是查表函数,与 DES的不同之处在于, AES算法的 S盒子不是 预先随机生成的,而是可以数学描述的,一个复杂的代数表达式。 在应用中也可实时运算得到结果,无需预先生成,再通过查表获取。 对不同的分组长度,其对应的轮变化次数是不同的 ,如表 1所列。 表 1 AES类型与其参数的关系 AES类型 密钥长度 /字 分组大小 /字 轮变化数 /次 AES128 4 4 10 AES192 6 4 12 AES256 8 4 14 密钥扩展 AES算法可以使用 128位、 192位、 256位密钥。 对于 128位密钥长度,算法将其分为 4个 32位比特串 WOW1W2W3。 密钥扩展使用了字节移位 RotByte()、 字节代替 SubByte()和圈常数异或运算结构单元。 10 对 32位比特串 W3进行字节移位运算 RotByte(),对其输出进行字节代替运算 SubByte(), 结果为 W1 即 : W1= SubByte(RotByte(W3) ),然后进行异或运算。 W4 = W1⊕ Rconl⊕ W0, Rconl第一圈常数。 W5= W4⊕ W1 W6= W5⊕ W2 W7= W6⊕ W3 W4W5W6W7有作为下一圈的输入。 参与到下一圈的运算中 . 不管密钥长度是 128位、 192位还是 256位, 密钥扩展最终生成一个 W0W1W2W3W4W5W6W7W8W9⋯序列。 密码算法中,不同长度的分组选取不同长度的密钥,对于 128位分组,选 取 WOW1W2W3为第一轮密钥, W4W5W6W7为第二轮密钥, „„ , 对于 192位 分组,选取 W1W2W3W4W5W6为第一轮密钥 „„。 AES算法运算 10轮 (128位 )、 12轮 (192位 )、 14轮 (256位 )。 使用 NR+1个轮密钥。 算法中采用字节代替,实质是 8入 8出的 S盒子。 在硬件实现和软件实现上,虽然占用空间资源多,但运算速度快。 对 128位分组,其占用 4K字节的空间。 且算法的 S盒子也可以用硬件逻辑实现,占用更少的资源,但其实现的难度极大。 算法中行移位实质是字节置换,其软件实现简单,硬件更是不耗资源。 算法所采用的列混合函数,由于使用了模乘,在软件和硬件实现上有一些难度,会占用很多资源,同时速度也会受到影响。 算法的设计采用并行处理,便于硬件实现。 且多采用字节运算,在低端 8位处理器上运行良好,所需的 RAM和 ROM空间小。 但在智能卡实现时,易受到变异能量攻击。 AES算法密钥扩展结构简单,无论软件还是硬件都容易实现运算速度也快。 具有高的扩散性和非线性。 但密钥相关性太强,密钥 输入输出间很容易相互推出来,已知W4iW4i+1W4i+2W4i+3推出 W4(i+l)W4(i+l)+1W4(i+1)t2W4(i+l)+3。 同理,己知 W4(i+1)W4(i+1)+1W4 (i+l)+2W4(i+1)+3也很容易推出 W4iW4i+1W4i+2W4i+3。 11 AES算法的解密结构与加密结构相一致,但并不对称,是加密过程的逆解密过程的扩展轮密钥使用的顺序也与加密过程相有所区别。 在软件和硬件实现中,由于结构的不对称,加密和解密需各做一个版本 , 这是极大的空间资源浪费。 Camellia算法 Camellia算法简介 继 2020 年 10 月 美 国推出二十一世纪高级数据加密标准 AES 后, 2020 年 2 月欧洲最新一代的安全标准 NESSIE( New European Schemes for Signatures、 Integrity and Encryption)出台。 NESSIE 是欧洲 IST( Information Society Technologies)委员会计划的一个项目。 Camellia 算法以其在各种软件和硬件平台上的高效率这一显著特点成为 NESSIE 标准中两个 128 比特分组密 码算法之一(另一个为美国的 AES算法)。 Camellia 算法由 NTT和 Mitsubishi Electric Corporation 联合开发。 作为欧洲新一代的加密标准,它具有较强的安全性,能够抵抗差分和线性密码分析等已知的攻击。 与 AES算法相比, Camellia 算法在各种软硬件平台上表现出与之相当的加密速度。 除了在各种软件和硬件平台上的高效性这一显著特点,它的另外一个特点是针对小规模硬件平台的设计。 整个算法的硬件执行过程包括加密、解密和密钥扩展三部分,只需占用 μm COMS 工艺 ASIC 的 库门逻辑。 这在现有 128 比特分组密码中是最小的。 Camellia 算法的组成 Camellia 算法支持 128 比特的分组长度, 12 192 和 256 比特的密钥与 AES 的接口相同。 Camellia 算法 128 比特密钥的加、解密过程共有 18轮,采用 Feistel 结构,加、解密过程完全相同,只是子密钥注入顺序相反。 而且密钥扩展过程和加、解密过程使用相同的部件。 这使得 Camellia 算法不论是在软件平台还是硬件平台只需更小的规模和更小的存储即可。 F 变换是 Camellia 算法中最主要的部件之一,而且 F 变换被加、解密过程和 密钥扩展过程所共用( 128 比特密钥的加、解密各用 18次,密钥扩展用 4次 )。 Camellia 算法的 F 变换在设计时采用 1 轮的 SPN( Substitution Permutation Network),包括一个 P变换(线性)和一个 S 变换(非线性)。 在 Feistel 型密码使用一轮 SPN作轮函数时,对更高阶的差分和线性特性概率的理论评估变得更加复杂,在相同安全水平下的运行速度有所提高。 函数 F 642642642: FFFF )}({),( )64()64()64()64()64( kXSPYkX 12 函数 S S:L→ L 39。 )8(839。 )8(739。 )8(639。 )8(539。 )8(439。 )8(339。 )8(239。 )8(1)8(8)8(7)8(6)8(5)8(4)8(3)8(2)8(1 |||||||||||||||||||||||||||| llllllllllllllll ),(),(),(),( )8(4439。 )8(4)8(3339。 )8(3)8(2239。 )8(2)8(1139。 )8(1 lSllSllSllSl ).(),(),(),( )8(8839。 )8(8)8(7739。 )8(7)8(6639。 )8(6)8(5539。 )8(5 lSllSllSllSl 函数 P 17839。 139。 739。 8178zzzPzzzzzz 其中: 1011011111011011111011010111111011000111011010110011110110011110P 13 x8 ( 8 ) x7 ( 8 ) S 1S 4S 3 S 2S 4 x4 ( 8 ) x5 ( 8 ) x6 ( 8 ) S 3 x3 ( 8 )S 2 x2 ( 8 ) S 1 x1 ( 8 )K( 6 4 )y1y2y3y4y5y6y7y8Z8Z7Z6Z5Z4Z3Z2Z1函 数 S函 数 P39。 )8(1Z39。 )8(2Z39。 )8(3Z39。 )8(4Z39。 )8(5Z39。 )8(6Z39。 )8(7Z39。 )8(8Z 图 3 Camellia算法中函数 F的结构图 Camellia 算法加解 密过程 Camellia 算法的整个加密过程有 18 轮 Feistel 结构,在第 6轮和第 12轮之后加入了 FL/ FL- 1 变换层,用来打乱算法的规律性,并且在第 1 轮之前和最后 1 轮之后使用了 128 比特的异或操作。 解密过程与加密过程完全相同,只是圈密钥注入顺序与加密相反。 如图 4所示,首先, 128 比特的明文 )128(M 和子密钥 )64(2)64(1 || kwkw 异或,并被拆分成左右两个等长子块 )64(0L 和 )64(0R ,即。几种分组密码算法s盒代数性质的研究-毕业设计
相关推荐
天津大学仁爱学院 2020届本科生毕业设计(论文) 13 冷却塔壳体和计算方法很多,有的很复杂,但都不能完全精确的计算出准确结果。 为简化设计,仅考虑拼接处局部区域承载 [6],而其余部分只考虑失稳而不承载。 承载局部是由两块壳体翻边法兰拼接成 ―T‖形肋。 肋的宽度为 16t( t 为壳体厚度)。 共 8条肋,法兰翻边的厚度为 12mm。 上塔体的惯性矩表示如下 222 2 2 2[] I x
.............................................. 3 业务需求 ................................................... 3 数据库的需求分析 ........................................... 3 第三章 概要设计 ...........................
head/head,其后是实体标记 body/body。 由于本系统涉及到许多数据的处理,这就需要有一个强大的后台数据库管理系统支持。 目前主要的数据库有: Access、 FoxPro、 Excel、 Sybase、 Oracle、Informix、 SQL Server等,其中网络型的 SQL Server、 Oracle产品安全性远远高于桌面型的 Access、 FoxPro等数据库。
analysis。 spillway design includes profiles drawn up, checking discharge capacity, hydraulic calculation of energy dissipation, stability analysis and stress analysis. Late work detailing and ground
创建 棋盘 X轴坐标 Y轴坐标 棋子状态 下棋 属于 属于 用户 X坐标 用户 Y坐标 电脑 X坐标 电脑 X坐标 1 N 1 N 1 1 每步棋编号 图 45 整体 ER图 2020 届计算机科学与技术专业毕业设计(论文) 第 13 页 共 47 页 系统功能模块设计 该款游戏主要由一下几个模块组成(图 47): 用户登录注册:在玩五子棋之前,用户要先登录游戏,未注册的用户用户前台 注册 登录