密码学学习笔记(十四):SHA-3 Sponge Construction - 海绵结构

news2024/11/29 4:40:25

SHA-3算法满足了哈希函数的三个安全属性,并且和SHA-2的变体达到同样级别的安全性。此外,SHA-3算法不容易受到长度扩展攻击,并可用于计算秘密消息的哈希值。

SHA-3是一种建立在Permutation(置换)之上的密码算法。

置换就是假设有两个数组a和b,a中的任意一个元素可以指向(只能指向一个)b中的任意一个元素,这样元素之间就进行了置换。任何置换都是可逆的,也就是说可以根据输出找到其对应的输入。

海绵结构

在密码学中海绵结构是一种创建函数的操作方法,该函数使用固定长度排列(或变换)和填充规则将可变长度输入映射到可变长度输出。海绵函数接受z_{2}的元素或任意长度的二进制串作为输入,并返回z^{n}_{2}的元素或用户提供值为n的二进制串。海绵函数是具有固定输入长度的流密码和具有固定输出长度的哈希函数的推广。它通过在输入或检索输出时对有限状态重复应用内部排列来工作。

假设有一个基于8比特置换创建的映射函数

...

一个使用特定置换函数f的海绵结构,通过依次输入所有可能的8比特串,示例中的置换可以创建一个从8比特输入到8比特输出的映射。

置换函数f将大小为8比特的输入随机化为长度相同的输出。在海绵结构中,这种置换的输入和输出都分为两个部分:比率(长度为r)和容量(长度为c)

容量也可以看作秘密值,容量越大,海绵结构就越安全。

将哈希函数的输入和置换输入的比率进行异或操作来计算消息的哈希值。

 

实现对输入的随机化

 

 如果想要计算更长输入的哈希值:

  • 对输入进行填充,然后将输入分成与比率比特串长度相等的分组
  • 迭代调用置换函数,比如使用多个置换函数对应多个消息分组。

SHA-3

SHA-3使用的海绵结构允许数据被“吸收”(Abosorbing)到海绵中,然后被“挤压”(Squeezing)。在吸收阶段,消息块被异或为状态的子集,随后使用置换函数f完全改变。在“挤压”阶段,状态转换函数f与从状态的同一子集读取输出块交替,并创建摘要。状态的可写和可读部分的大小被称为“速率”(表示为r),而不受输入/输出影响的部分的大小则称为“容量”(表示c)。系统的安全性由容量决定。

SHA-2、SHA-1、MD5和其他基于Merkle-Damgrd架构的哈希函数在长度扩展攻击中的漏洞通过内部状态S在发送给Z的数据之外还包含c个额外的数据位来消除。
在SHA-3中,状态S由5-5个字阵列组成,每个字长w位(w=64),总共给出1600位。此外,Keccak被指定为小到1位(总状态为25位)的2次方字大小。小状态大小(从w=8200位到w=32800位)可用于评估密码分析攻击,而中等状态大小(来自这些值)可应用于现实世界中的轻量级应用。

 

 

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

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

相关文章

Hadoop第一课之环境配置

1.配置一个模板机 要求:IP DNS地址页 网址 防火墙 安装包 1.ip ifconfig 查询 先用虚拟机看一下自己的网关 vim search/provides 命令 查找 # 修改网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 如果提示找不到vim命令,使用yum下载v…

Springboot Excel 最简单的 多sheet表 导入导出

前言 上周学习群里有人问到,多个sheet的导出导入,我第一反应就是easypoi不是自己就有方法了么? 后面一想,可能有些看客还处于是 找工具类,然后调试 的写代码 的 阶段,可能还不会去看jar包的一些函数。 既然…

SpringMVC入门篇5 --- 拦截器

目录 1. 简介 拦截器(Interceptor)是一种动态拦截方法调用的机制。 作用: 在指定的方法调用前后执行预先设定后的代码。阻止原始方法的执行。 拦截器与过滤器的区别 归属不同:Filter属于Servlet技术,Interceptor…

使用vue3 + Ts + Vite + ElementPlus实现一个抽奖程序

一. 说明 这是一个通过vue3 Ts Vite ElementPlus实现的一个抽奖程序。项目链接 二. 整体架构与功能描述 左侧设置了奖品说明,每个奖项配有文字和图片简介。总共设置了四个奖项,分别是特等奖1名,一等奖2名,二等奖5名&#xf…

平安养老险党委书记、董事长甘为民:聚焦养老主业 助推养老保障事业高质量发展

每经记者 涂颖浩 每经编辑 马子卿 随着人口老龄化趋势加剧,中国养老金融市场呈现出巨大的潜力,逐步迈入养老新时代。近日,平安养老险党委书记、董事长甘为民在接受《每日经济新闻》记者专访时表示,过往单纯的养老发展模式难以满足…

Jmeter性能测试 —— 性能测试的概念

性能测试的概念 性能测试是指通过特定方式,对被测系统按照一定策略施加压力,获取系统 响应时间、TPS(Transaction Per Second)、吞吐量、资源利用率等性能指标,以期保证生产系统的性能能够满足用户需求的过程。 性能…

浅析编译与链接

生成可执行文件的四个过程 当编写和构建计算机程序时,预处理、编译、汇编和链接是将源代码转化为可执行程序的关键过程。以下是对每个阶段的详细解释: 1. 预处理(Preprocessing):将.c/.cpp文件中的头文件展开、宏展开…

【PostgreSQL内核学习(一)—— Ubuntu源码安装PostgreSQL】

Ubuntu源码安装PostgreSQL 1. PostgreSQL官网下载压缩包2. 解压&安装2.1 解压文件2.2 安装依赖2.3 执行安装2.4 执行安装2.5 添加路径到文件 3. 初始化数据库与使用3.1 初始化数据库3.2 启动数据库服务3.3 启动数据库 1. PostgreSQL官网下载压缩包 下载地址:ht…

【黑马头条之freemarker入门】

本笔记内容为黑马头条项目的freemarker部分 目录 一、freemarker 介绍 二、环境搭建&&快速入门 1、创建测试工程 2、配置文件 3、创建模型类 4、创建模板 5、创建controller 6、创建启动类 7、测试 三、freemarker基础 1、基础语法种类 2、集合指令&#…

【iOS】—— 面向对象,Runtime,ARC等问题总结

对于暑假学习大多数是对之前学习的一个复习,在这里只做对之前学习欠缺知识的补充以及这些知识点涉及的一些问题,从问题入手学习。 文章目录 面向对象1.一个NSObject对象占多少内存?2.对象的isa指针指向哪里?3.OC的类信息存放在哪…

PLSQL编程

1.概念和目的 1.1. 什么是PL/SQL? PL/SQL(Procedure Language/SQL) 是Oracle对sql语言的过程化扩展 (类似于Basic); 指在SQL命令语言中增加了过程处理语句(如分支、循环等),使SQL语言具有过程处理能力。…

Spring @Autowired 注解原理

Spring Autowired 注解原理 1.Autowired 使用 ComponentScan("org.example.bean") public class AnnoContextDemo {Autowiredprivate User user;public static void main(String[] args) {AnnotationConfigApplicationContext context new AnnotationConfigApplic…

Ultipa嬴图数据库 | 深圳国际金融科技大赛圆满落幕

2023年7月13日,由深圳市地方金融监督管理局、深圳市福田区人民政府、深圳市南山区人民政府指导,招商局金融科技有限公司主办的2022深圳国际金融科技大赛总决赛在福田区圆满落幕。经过从初赛到决赛,共计103个项目的激烈角逐,Ultipa…

Unity视角拉近时物体缺失的问题处理

在Unity的开发过程中,我们可能会遇到以下情况: 就是在场景的不断编辑中,突然又一次打开场景,再拉近或拉远场景视角时,会出现场景中的对象会显示不全的问题。 出现了这样的情况会让场景的预览很不友好。 出现这个问题的…

【006】面向 6G 的深度图像语义通信模型

摘要 目前的语义通信模型在处理图像数据方面仍有可改善的部分,包括有效的图像语义编解码、高效的语义模型训练和精准的图像语义评估。为此,提出了一种深度图像语义通信(DeepISC)模型。首先采用基于 vision transformer 的自编码器…

数字IC后端设计实现中的Post-mask ECO应该怎么做?

在数字IC后端设计实现中,我们经常会涉及到芯片需要做Function ECO。常见的Function ECO可以分为pre mask ECO和post mask ECO两种。因此,作为一个数字IC后端工程师,必须熟练掌握这两种Function ECO的实现流程及其实现技巧。 两者的区别在于&…

栈和队列【数据结构】

1、栈 &#xff08;1&#xff09;Stack.h #pragma once #include <stdio.h> #include <assert.h> #include <stdlib.h> #include <stdbool.h>typedef int STDataType;typedef struct Stack {STDataType* a;int top;int capacity; }ST;void STInit(ST*…

[JVM] 5. 运行时数据区(2)-- 程序计数器(Program Counter Register)

一、概述 JVM中的程序计数器&#xff08;Program Counter Register&#xff09;是对物理PC寄存器的一种抽象模拟。它是一块很小的内存空间&#xff0c;几乎可以忽略不记。也是运行速度最快的存储区域。在 JVM 规范中&#xff0c;每个线程都有它自己的程序计数器&#xff0c;是…

.nvmrc无效

背景 既然你已经使用了nvm那么他的功能我就不介绍了。但是使用场景我与开发小伙伴探讨了一下发现很多问题。你的nvm使用方法真的正确吗&#xff1f; 问题&#xff1a;假设现在有10个项目对应10个不同的node版本&#xff0c;你应该怎么来管理呢&#xff1f; 同学1&#xff1a; …

LT8619C是一款高性能HDMI转TTL/BT656/BT601/BT1120加2PORT LVDS,支持高达4K30HZ的分辨率。

LT8619C • 概述&#xff1a; Lontium的LT8619C是一款高性能的HDMI/双模式DP接收器芯片&#xff0c;符合HDMI 1.4规范&#xff0c;支持HDCP1.4解码&#xff0c;对HDMI的支持分辨率高达4Kx2K30Hz。TTL输出可支持RGB、BT656、BT1120&#xff0c;支持最多24位RGB或BT656/BT1120输…