文档详情

第六章-消息认证和杂凑算法-2015-6规范.ppt

发布:2017-03-19约1.89万字共85页下载文档
文本预览下载声明
Keccak概述 吸收过程: 1. state S被初始化为0; 2. 对输入进行填充; 3. 将第一组r1个输入bit与r进行异或; 4. S被f(S)取代; 5. 下一个r2个输入比特与r进行异或; 6. S被f(S)取代 … 循环直至所有的r数据块被计算完成 . * Keccak概述 压缩过程:1. 将所得运算结果S截取r位,赋值给Z; 2. 如果r小于输出结果n,对S进行迭代运算; 3. 将迭代运算结果截取r位级联到Z后面,循环进行迭代和级联直到Z的长度大于n; 4. 截取Z的前n位,所得结果即为Keccak的运算结果。 * keccak概述 b=25×2? w=2? a[5][5][w] * state S[w(5y+x)+z]=a[x][y][z] * f[b]: θ θ是线性的,以扩散为目的。 * f[b]: ρ 满足 当x=y=0时,t=-1。 用不同的三角形数对slice上的25个数进行比特旋转。 (0,1,3,6,10,15,21,28,36…) x=3 x=4 x=0 x=1 x=2 y=2 153 231 3 10 171 y=1 55 276 36 300 6 y=0 28 91 0 1 190 y=4 120 78 210 66 253 y=3 21 136 105 45 15 * f[b]: ρ ρ:slice内部的转换 ,使每个slice之间的离散加快 * f[b]: π π:对lane进行映射,三维数组高度离散,z轴有变换不变性 其中 x=y=0位于平面中心 * f[b]: χ χ:唯一的非线性映射,实现简单的非线性传播。 该函数与θ相互作用,使每一轮迭代的每个输入比特都潜在的影响了31个输出比特 * f[b]: χ χ:唯一的非线性映射,实现简单的非线性传播。 该函数与θ相互作用,使每一轮迭代的每个输入比特都潜在的影响了31个输出比特 * f[b]:τ 0 1 3 7 15 * f[b] sponge函数中,f 对θ、ρ、π、χ和τ五个过程进行迭代运算,而迭代次数由 nr=12+2? 决定。 * 参数选择 r决定了每个数据块中数据的长度,c决定了这个函数的安全级别。 c=2n.安全性强度为2n 针对b=1600,建议的参数长度: * 6.5 HMAC算法 以前曾介绍过一个MAC的例子——数据认证算法 该算法反映了传统上构造MAC最为普遍使用的方法,即基于分组密码的构造方法 近年来研究构造MAC的兴趣已转移到基于密码杂凑函数的构造方法,这是因为: 杂凑函数(如MD5,SHA)软件实现快于分组密码(如DES)的软件实现 杂凑函数的库代码来源广泛 杂凑函数没有出口限制,而分组密码即使用于MAC也有出口限制 杂凑函数并不是为用于MAC而设计的,由于杂凑函数不使用密钥,因此不能直接用于MAC 目前已提出了很多将杂凑函数用于构造MAC的方法,其中HMAC就是其中之一,已作为RFC2104被公布,并在IPSec和其他网络协议(如SSL)中得以应用 * 6.5.1 HMAC的设计目标 RFC2104列举了HMAC的以下设计目标: ① 可不经修改而使用现有的杂凑函数,特别是那些易于软件实现的、源代码可方便获取且免费使用的杂凑函数。 ② 其中镶嵌的杂凑函数可易于替换为更快或更安全的杂凑函数。 ③ 保持镶嵌的杂凑函数的最初性能,不因用于HMAC而使其性能降低。 ④ 以简单方式使用和处理密钥。 ⑤ 在对镶嵌的杂凑函数合理假设的基础上,易于分析HMAC用于认证时的密码强度。 * 前两个目标是HMAC被公众普遍接受的主要原因,这两个目标是将杂凑函数当作一个黑盒使用,这种方式有两个优点: 第一,杂凑函数的实现可作为实现HMAC的一个模块,这样一来,HMAC代码中很大一块就可事先准备好,无需修改就可使用; 第二,如果HMAC要求使用更快或更安全的杂凑函数,则只需用新模块代替旧模块,例如用实现SHA的模块代替MD5的模块。 最后一条设计目标则是HMAC优于其他基于杂凑函数的MAC的一个主要方面,HMAC在其镶嵌的杂凑函数具有合理密码强度假设下,可证明是安全的 * 6.5.2 HMAC算法描述 图6-11是HMAC算法的运行框图,其中 H为嵌入的杂凑函数(如MD5、SHA), M为HMAC的输入消息(包括杂凑函数所要求的填充位), Yi(0≤i≤L-1)是M的第i个分组, L是M的分组数, b是一个分组中的比特数, n为由嵌入的杂凑函数所产生的杂凑值的长度, K为密钥,如果密钥长度大于b,则将密钥输入到杂凑函数中产生一个n比特长的密钥, K
显示全部
相似文档