密码学学习笔记(五):Hash Functions - 哈希函数1

简介

什么是密码学中的哈希函数?

哈希函数是一种快速算法,它接受任何长度的输入,并产生一个固定长度的随机输出,称为摘要(digest),比如:

  • MD4, MD5: 128-bit output (broken)
  • SHA-1: 160-bit output (broken)
  • SHA-2: 224, 256, 384, or 512-bit output
  • SHA-3: 224, 256, 384, 512, …-bit output

雪崩效应 - Avalanche effect:输入的微小变化导致输出的巨大变化

比如:

哈希函数的安全要求

  • 单向或Preimage Resistant - 抗第一原像性:给定H(x),很难找到x
  • Second-Preimage Resistant - 抗第二原像性:给定x,很难找到不同的y,使得H(x)=H(y)
  • 抗碰撞性 - Collision Resistant:很难找到不同的x,y,使得H(x)=H(y)
  • 随机Oracle:对H进行建模,以产生随机值作为输出
  • “hard”意味着没有(已知的)算法在合理的时间(例如一天)内以合理的概率(例如50%)成功进行攻击

密码学中的哈希函数是用来干什么的?

  • 存储密码摘要:例如哈希(nonce、challenge、password)
  • 完整性检查:例如软件下载摘要、入侵检测
  • 注册表和配置文件的快照
  • 哈希表:索引=哈希(数据库密钥)
  • MAC和数字签名:加密完整性保护
  • 承诺:安全地承诺一个价值,并在以后揭示它
  • 密钥派生功能:例如,从主密钥生成会话密钥
  • 随机数生成:例如挑战生成
  • 重复数据消除
  • 工作证明:例如证明花费的计算资源

存储密码摘要

  • 通常会存储一个加密的密码散列
  • 如果通信被截获,我们希望很难计算H(salt,pwd)
  • 如果数据库受损,我们希望很难找到pwd
  • 因此,至少我们希望散列是单向的:知道输出,应该很难找到给出该输出的输入(除非我们尝试所有可能的输入)
  • 例如,给定H(salt,pwd),很难找到salt,pwd

入侵检测

  • 系统文件是“指纹”(即散列),摘要存储在安全的保险库中,以便稍后与新摘要进行比较
  • 如果系统受损(但不是vault)并且系统文件被修改,则摘要不应匹配
  • 对手看到原始文件(原始输入),不应能够构建摘要匹配的修改文件(第二输入)
  • 因此,至少我们想要second-preimage resistance,即知道一个输入,应该很难找到另一个具有相同摘要的输入

哈希表

  • 对数据库键进行散列处理,以快速计算记录索引并加快查找速度
  • 理想情况下,我们希望将不同的键散列到不同的索引中
  • 不同的输入散列到相同的输出称为冲突
  • 因此,至少我们想要抗碰撞 - Collision Resistant:应该很难找到两个具有相同摘要的不同输入

密钥导出函数 - Key Derivation Function (KDF)

  • 用于从主密钥派生新会话密钥的KDF
  • 例如,在Intel SGX等安全元件中,或在Signal等端到端加密即时消息中
  • KDF是通过组合散列函数构建的
  • 我们需要哈希函数是单向的
  • 我们还需要散列函数来产生不可预测的随机输出
  • 因此,我们需要散列函数作为一个随机函数,称为随机预言机,即对任何输入进行建模,以产生真正的随机输出

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于redhat发行版mysql8.0的卸载与重装mysql5.7

文章目录 一、软件的选择与下载二、卸载mysql8.01.查看my.cnf中的部署信息2.卸载mysql8.03.卸载完毕安装包后删除相关数据 三、mysql5.7的安装1.解压安装包2.初始化mysql数据库3.修改root密码 四、安装mysql5.7客户端附:创建数据库以及用户 本次案例是卸载mysql8.0然…

2个好用的ftp和ssh工具推介

为什么不用xshell和xftp,是不好用吗?xshell和xftp虽然好用,而且也有免费版,但是,一个方面使用有限制,再就是你看见这个报错的弹窗烦不烦? 一、ssh工具-WindTerm WindTerm[1] 是一个基于 C 开发的开源终端模…

使用大型语言模(LLM)构建系统(七):评估1

今天我学习了DeepLearning.AI的 Building Systems with LLM 的在线课程,我想和大家一起分享一下该门课程的一些主要内容。之前我们已经学习了下面这些知识: 使用大型语言模(LLM)构建系统(一):分类使用大型语言模(LLM)构建系统(二):内容审核、…

3d渲染画面变形怎么办?

在用3dmax渲染图片时有时会遇到画面变形的情况,这个是什么原因呢?今天我们就来看看吧。 首先我们来看下变形的具体情况,再分析原因。可以看到整个画面都畸变了,呈现出上下拉伸的情况,能造成这个效果的,只有…

error: exportArchive: No signing certificate \“Mac Development\“ found

error: exportArchive: No signing certificate “Mac Development” found UNIAPP打包又遇到这个问题了, 证书过期续期的时候又遇到这个问题了(之前遇到过解决了,时间长忘了),记录一下,报错信息 error: exportArchive: No signing certificate \"Mac Development\"…

【毕业设计】爱琴海——基于HTML5的婚庆用品商城网页设计

一、内容简介 (一)背景与意义 “婚俗”是指结婚的风俗,各国各族人民按照自己的习俗,举行各具特色的婚礼,具有各自浓厚的民族独特风采。婚俗元素在是中国婚俗文化的媒介,承载了中华儿女对幸福和吉祥的追求。在中国婚俗文化的发展过…

基于CTFTraining在CTFd部署Web题目

下面要讲的东西是基于你已经使用CTFd搭建好了这样一个简易靶场 因为misc、crypto这些题目一般都是放附件,这个比较简单,直接做好在前端放上去就行 而部署web的题,我们需要在终端进行,这里我们使用docker-compose来进行部署 至于…

[MMDetection]COCO数据集可视化验证

在使用MMDetection训练之前,需要对图像进行可视化验证,验证数据和标签是否对齐。 # 数据集可视化 import os import matplotlib.pyplot as plt from PIL import Imageoriginal_images [] images [] texts [] plt.figure(figsize(16,12))image_paths …

惊艳!全网首份“架构师成长笔记”GitHub狂澜9000星

其实架构师是需要一个相对而言对架构师友善的环境。第一,架构师到底需要什么?一个架构师要成长,首先他需要信任,第二他需要授权,第三他需要时间,第四他需要资源,少一样都很难开展工作。如果一个…

SpringBoot 配置文件:什么时配置文件?配置文件能干什么?

文章目录 🎇前言1.配置文件的格式2. properties配置文件说明2.1 properties基本语法2.2 读取配置文件 3. yml 配置文件说明3.1 yml 基本语法 4.properties与yml 对比 🎇前言 学习一个东西,我们先要知道它有什么用处。整个项目中所有重要的数…

落地 DevOps,探索高效研发运营一体化解决方案

前言与概述 伴随着企业业务的快速发展,为了支撑业务发展,提高 IT 对业务的支撑能力建设。在研发工程协同方面,希望加强代码管理,实现持续构建、自动化测试、自动化部署、自动化运维,同时加强产品的安全和质量管理&…

数据特征降维 | 核主元分析KPCA数据降维

文章目录 效果一览文章概述部分源码部分源码参考资料效果一览 文章概述 数据特征降维 | 核主元分析KPCA,主要用于数据降维。 部分源码 部分源码 %% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear …