Secure Hash Algorithm-3 (SHA-3) family
创始人
2024-05-22 06:21:51
0次

参考文献:

  1. Bertoni G, Daemen J, Peeters M, et al. Keccak[C]//Advances in Cryptology–EUROCRYPT 2013: 32nd Annual International Conference on the Theory and Applications of Cryptographic Techniques, Athens, Greece, May 26-30, 2013. Proceedings 32. Springer Berlin Heidelberg, 2013: 313-314.
  2. Dworkin M J. SHA-3 standard: Permutation-based hash and extendable-output functions[J]. 2015.

文章目录

  • 置换函数
  • 海绵结构
  • Hash & XOF

2012年10月2日,Keccak 被选为 NIST(National Institute of Standards and Technology)散列函数竞赛的胜利者。SHA-3 并不是要取代 SHA-2,因为 SHA-2 并没有出现明显的弱点。由于对 MD5 和 SHA-1 出现成功的破解,NIST 感觉需要一个与之前算法不同的、可替换的加密散列算法,也就是 SHA-3。

置换函数

KECCAK−p[b,nr]KECCAK-p[b,n_r]KECCAK−p[b,nr​] 置换函数,这里的 nrn_rnr​ 是轮数(round), 而 b∈{25,50,100,200,400,800,1600}b \in \{25,50,100,200,400,800,1600\}b∈{25,50,100,200,400,800,1600} 是宽度(width)

在这里插入图片描述

状态 state 是大小 5×5×w5 \times 5 \times w5×5×w 的三维数组,它的两维的子数组叫做 sheets, planes, slices,一维子数组叫做 rows, columns, lanes.

在这里插入图片描述

KECCAK−p[b,nr]KECCAK-p[b,n_r]KECCAK−p[b,nr​] 包括 nrn_rnr​ 次迭代,每次迭代中对状态数组 AAA 依次执行 θ,ρ,π,χ,ι\theta,\rho,\pi,\chi,\iotaθ,ρ,π,χ,ι 变换,
Rnd(A,ir)=ι(χ(π(ρ(θ(A)))),ir)Rnd(A,i_r) = \iota(\chi(\pi(\rho(\theta(A)))),i_r) Rnd(A,ir​)=ι(χ(π(ρ(θ(A)))),ir​)

具体的各个变换本人没有探究,读者感兴趣可以自行查看 SHA-3 标准文档。

另外定义
KECCAK−f[b]=KECCAK−p[b,12+2l]KECCAK-f[b] = KECCAK-p[b,12+2l] KECCAK−f[b]=KECCAK−p[b,12+2l]

特别地,KECCAK−f[1600]=KECCAK−p[1600,24]KECCAK-f[1600] = KECCAK-p[1600,24]KECCAK−f[1600]=KECCAK−p[1600,24]

海绵结构

海绵结构(sponge construction)包括吸收(sbsorbing)和挤压(squeezing)两个步骤,定义为 SPONGE[f,pad,r](N,d)SPONGE[f,pad,r](N,d)SPONGE[f,pad,r](N,d),

  • 固定长度的置换函数 fff
  • 比率(rate)r
  • 填充规则 padpadpad
  • 输入的比特流 NNN
  • 输出的比特长度 ddd

在这里插入图片描述

如图所示,在吸收阶段,输入比特流 NNN 做填充后被分成 rrr 长的若干块,与链接变量异或后作为置换函数的输入;在挤压阶段,每次直接将链接变量作为输入,将输出的链接变量截取 rrr 比特作为一个输出块(block);最后,截取 ddd 比特的前缀作为最终的输出。

KECCAK 是一族 KECCAK−f[b]KECCAK-f[b]KECCAK−f[b] 置换下的海绵结构,填充规则使用 pad10∗1pad10^*1pad10∗1(即填充 1∥0⋯0∥11\|0\cdots0\|11∥0⋯0∥1 比特串)。它的 bbb 可以从 {25,50,100,200,400,800,1600}\{25,50,100,200,400,800,1600\}{25,50,100,200,400,800,1600} 中任意选择,如果设置 b=1600b=1600b=1600 那么有:
KECCAK[c](N,d)=SPONGE[KECCAK−p[1600,24],pad10∗1,1600−c](N,d)KECCAK[c](N,d) = SPONGE[KECCAK-p[1600,24],\,\, pad10^*1,\,\, 1600-c](N,d) KECCAK[c](N,d)=SPONGE[KECCAK−p[1600,24],pad10∗1,1600−c](N,d)

Hash & XOF

密码学哈希函数(cryptographic hash functions):SHA3-224, SHA3-256, SHA3-384, SHA3-512.

使用 KECCAK 函数,并设置 c=2dc=2dc=2d,再设置 N=M∥01N=M\|01N=M∥01(两比特后缀),

  • SHA3-224(M)=KECCAK[448](M∥01,224)\text{SHA3-224}(M) = KECCAK[448](M\|01,224)SHA3-224(M)=KECCAK[448](M∥01,224),摘要的长度为 224224224 比特
  • SHA3-256(M)=KECCAK[512](M∥01,256)\text{SHA3-256}(M) = KECCAK[512](M\|01,256)SHA3-256(M)=KECCAK[512](M∥01,256),摘要的长度为 256256256 比特
  • SHA3-384(M)=KECCAK[768](M∥01,384)\text{SHA3-384}(M) = KECCAK[768](M\|01,384)SHA3-384(M)=KECCAK[768](M∥01,384),摘要的长度为 384384384 比特
  • SHA3-512(M)=KECCAK[1024](M∥01,512)\text{SHA3-512}(M) = KECCAK[1024](M\|01,512)SHA3-512(M)=KECCAK[1024](M∥01,512),摘要的长度为 512512512 比特

可扩展输出函数(extendable-output functions, XOF):SHAKE128, SHAKE256.

使用 KECCAK 函数,并设置 N=M∥1111N=M\|1111N=M∥1111(四比特后缀),

  • SHAKE128(M,d)=KECCAK[256](M∥1111,d)\text{SHAKE128}(M,d) = KECCAK[256](M\|1111,d)SHAKE128(M,d)=KECCAK[256](M∥1111,d),参数为 b=1600,c=256b=1600,c=256b=1600,c=256,每个输出的 block 长度为 r=1344r=1344r=1344 比特
  • SHAKE256(M,d)=KECCAK[512](M∥1111,d)\text{SHAKE256}(M,d) = KECCAK[512](M\|1111,d)SHAKE256(M,d)=KECCAK[512](M∥1111,d),参数为 b=1600,c=512b=1600,c=512b=1600,c=512,每个输出的 block 长度为 r=1088r=1088r=1088 比特

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...