Secure Hash Algorithm-3 (SHA-3) family

news2024/10/10 10:33:01

参考文献:

  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。

置换函数

K E C C A K − p [ b , n r ] KECCAK-p[b,n_r] KECCAKp[b,nr] 置换函数,这里的 n r n_r nr 是轮数(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 × w 5 \times 5 \times w 5×5×w 的三维数组,它的两维的子数组叫做 sheets, planes, slices,一维子数组叫做 rows, columns, lanes.

在这里插入图片描述

K E C C A K − p [ b , n r ] KECCAK-p[b,n_r] KECCAKp[b,nr] 包括 n r n_r nr 次迭代,每次迭代中对状态数组 A A A 依次执行 θ , ρ , π , χ , ι \theta,\rho,\pi,\chi,\iota θ,ρ,π,χ,ι 变换,
R n d ( A , i r ) = ι ( χ ( π ( ρ ( θ ( A ) ) ) ) , i r ) Rnd(A,i_r) = \iota(\chi(\pi(\rho(\theta(A)))),i_r) Rnd(A,ir)=ι(χ(π(ρ(θ(A)))),ir)

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

另外定义
K E C C A K − f [ b ] = K E C C A K − p [ b , 12 + 2 l ] KECCAK-f[b] = KECCAK-p[b,12+2l] KECCAKf[b]=KECCAKp[b,12+2l]

特别地, K E C C A K − f [ 1600 ] = K E C C A K − p [ 1600 , 24 ] KECCAK-f[1600] = KECCAK-p[1600,24] KECCAKf[1600]=KECCAKp[1600,24]

海绵结构

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

  • 固定长度的置换函数 f f f
  • 比率(rate) r < b r < b r<b,而 c = b − r c = b-r c=br 叫做容量(capacity)
  • 填充规则 p a d pad pad
  • 输入的比特流 N N N
  • 输出的比特长度 d d d

在这里插入图片描述

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

KECCAK 是一族 K E C C A K − f [ b ] KECCAK-f[b] KECCAKf[b] 置换下的海绵结构,填充规则使用 p a d 1 0 ∗ 1 pad10^*1 pad101(即填充 1 ∥ 0 ⋯ 0 ∥ 1 1\|0\cdots0\|1 1∥00∥1 比特串)。它的 b b b 可以从 { 25 , 50 , 100 , 200 , 400 , 800 , 1600 } \{25,50,100,200,400,800,1600\} {25,50,100,200,400,800,1600} 中任意选择,如果设置 b = 1600 b=1600 b=1600 那么有:
K E C C A K [ c ] ( N , d ) = S P O N G E [ K E C C A K − p [ 1600 , 24 ] ,    p a d 1 0 ∗ 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[KECCAKp[1600,24],pad101,1600c](N,d)

Hash & XOF

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/190729.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1分钟快速解读什么是实时渲染

古语云&#xff1a;工欲善其事必先利其器&#xff0c;在现代化的行业细分更加精确&#xff0c;不同行业为了实现更高的效率&#xff0c;也都有自己的专用软件工具或者设备。在数字孪生、虚拟仿真、设计类等行业也是如此&#xff0c;在创建3D模型时也是需要用到Unreal\Unity\May…

iptables 在 Android 抓包中的妙用

本文介绍一种在 Andorid 中实现单应用、全局、优雅的抓包方法。 此文于去年端午节编写&#xff0c;由于种种原因&#xff0c;当时藏拙并未发布。现删除一些敏感信息后分享出来&#xff0c;希望对各位有所启发。 背景 昨天在测试一个 Android APK 的时候发现使用 WiFi 的 HTTP …

软考高级系统架构师背诵要点---质量属性与架构评估

质量属性与架构评估 质量属性&#xff1a; 1.性能&#xff1a;指系统的响应能力&#xff0c;即要经过多长时间才能对某个事件做出响应&#xff0c;或者在某段时间内系统所能处理的事件个数 代表参数&#xff1a;响应时间、吞吐量 设计策略&#xff1a;优先级调度、资源调度…

【MyBatis】| MyBatis查询语句专题(核心知识)

目录 一&#xff1a;MyBatis查询语句专题 1. 返回Car对象 2. 返回List<Car> 3. 返回Map 4. 返回List<Map> 5. 返回Map<String,Map> 6. resultMap结果映射 7. 返回总记录条数 一&#xff1a;MyBatis查询语句专题 前期准备&#xff1a; 模块名&#xf…

为什么计算机需要操作系统?

当计算机只运行一个程序时&#xff0c;只需将所有的资源(CPU、内存、磁盘等)分配给这一个程序就行&#xff1b;当计算机同时运行2个或以上程序时&#xff0c;操作系统就需要充当一下角色&#xff1a; 资源分配器资源隔离与秩序维护者细节屏蔽者 一. 资源分配器 计算机的硬件…

Springboot整合第三方技术及整合案例

Springboot整合第三方技术一、Springboot整合Junit1、步骤2、classes属性二、整合Mybatis1、步骤2、常见问题三、整合Mybatis-plus1、步骤2、常见配置四、整合Druid1、步骤五、整合案例-数据层&#xff08;基础的CRUD&#xff09;1、创建springboot项目手工导入starter坐标2、配…

【正点原子FPGA连载】第二十六章gpio子系统简介 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十六章gpio子…

NVDLA Xilinx FPGA Mapping

Lei WangLeiWang1999要当世界第一&#xff01;78357联系我常用的链接1. 1. 硬件系统设计概述1.1. 1.1 RTL 生成1.2. 1.2 IP Package1.2.1. 1.2.1 csb2apb1.2.2. 1.2.2 关闭 Clock Gating1.2.3. 1.2.3 IP Package1.3. 1.3 Block Design1.4. 1.4 Generate Bit HDF1.5. 1.5 Sanity…

java基础一JVM之JRE、JDK、解释器、编译器详解

1.JVM、JRE和JDK区别 1.JVM&#xff08; Java Virtual Machine &#xff09;&#xff1a; Java虚拟机&#xff0c;它是整个 Java 实现跨平台的最核心的部分&#xff0c;所有的 Java 程序会首先被编译为 .class 的类文件&#xff0c;这种类文件可以在虚拟机上执行&#xff0c;…

3.10-动态规划-01背包问题

问题描述&#xff0c;给定n种物品和一个背包。物品 i 的重量是 wi &#xff0c;其价值为 vi &#xff0c;背包的容量为 c &#xff0c;问应该如何选择装入背包中的物品&#xff0c;使得装入背包的物品总价值最大&#xff1f; 写在前面 dp数组的含义--dp[i][j]表述容量为j 已经…

【计算机体系结构-03】ISA (Instruction Set Architecture) 指令集架构特性

1. 指令的类型 上一篇文章里主要介绍了几种机器模型&#xff0c;有机器模型后需要知道计算机有什么样的基本指令&#xff0c;接下来就来看看指令都有哪些类型。 [注]&#xff1a;以下指令主要为 MIPS 指令。 类型指令数据传输LD、ST、MFC1、MTC1、MFC0、MTC0计算ADD、SUB、AN…

Vue3和Vue2的slot-scope插槽用法

目录 &#x1f9e8;&#x1f9e8;&#x1f9e8;第一种插槽&#xff08;匿名插槽&#xff09; &#x1f9e8;&#x1f9e8;&#x1f9e8;第二种插槽&#xff08;具名插槽&#xff09;以及插槽简写 具名插槽的使用 &#x1f9e8;&#x1f9e8;&#x1f9e8;第三种插槽(作用域插…

使用HTTP代理后,网速反而变慢是什么原因?

如今越来越多的人利用HTTP代理开展业务&#xff0c;但在实际使用时&#xff0c;经常会有用户发现使用了HTTP代理后&#xff0c;网速非但没有变快&#xff0c;反而还更慢了。我们今天就来说说&#xff0c;这是什么原因造成的&#xff0c;从根本入手对于我们能更有利的解决问题。…

2.Spring IOC

目录 一.如何进行注册 二、如何进行注入 三、扫描注解的原理 反射文件操作 四、什么是IOC/DI&#xff1f; 五、演示使用Spring开发的案例&#xff1a;用户管理|登陆、注册 五、常见错误总结 1、注解使用Repository 2、UserController的构造方法注入&#xff1a; 3、…

【FreeRTOS】第一章:介绍

FreeRTOS是什么&#xff1f; Free和RTOS,Free就是免费的、自由的意思&#xff0c;RTOS 全称是 Real Time Operating System。中文名就是实时操作系统。可以看出FreeROTS 就是一个免费的 RTOS 类系统。这里要注意&#xff0c;RTOS 不是指某一个确定的系统&#xff0c;而是指一类…

联想电脑安装ubuntu18.04双系统超详细教程(23年最新教程,99%成功率)

文章目录前言电脑配置制作系统盘安装ubuntu系统更新显卡驱动安装wifi驱动完成前言 ubtuntu的长期支持版本现在应该已经出道21.04版本了&#xff0c;如果你对于版本没有要求的话&#xff0c;建议直接安装最新版ubuntu&#xff0c;因为新版的系统驱动都会进行更新&#xff0c;也…

自学 Java 怎么入门?

玩Java多年的老司机带你上车全面系统学习Java&#xff0c;并且还能教你如何学习才能在今年拿到一份不错的offer。 说到系统全面&#xff0c;就是以目前绝大部分公司招聘要求的知识内容为基准&#xff0c;毕竟我们学习Java都是为了高薪工作&#xff0c;《史记》中说”天下熙熙皆…

2.【SpringBoot源码】SpringBoot核心启动流程

目录 一、简介 二、创建SpringApplication对象 1)、推导出当前启动的项目的类型 2)、设置Initializer初始化器 3)、初始化Listener监听器 4)、反推出main方法所在的Class对象 三、运行SpringApplication#run(java.lang.String...)方法 1)、获取运行监听器 2)、发布…

unity使用对象池实现冲锋留下的残影效果

目录 效果展示 实现思路 残影代码 对象池代码 控制冲刺产生残影 CD冷却图标 效果展示 实现思路 对象池&#xff0c;有想要用的物体时可以从池子里取&#xff0c;用完再放回去。 因为在生成残影再销毁&#xff0c;这个过程中创建和销毁都需要耗费大量资源&#xff0c;因此…

shell 条件测试详解

目录 shell条件测试 一&#xff0c;条件测试的基本语法 1&#xff0c;test 2&#xff0c;[ ] 3&#xff0c;[[ ]] 二&#xff0c;文件测试表达式 1&#xff0c;判断目录是否存在&#xff1a; 2&#xff0c;判断文件file1是否有写的权限&#xff0c;结果为有 3&#xf…