IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 现代密码学5.1--哈希函数定义 -> 正文阅读

[数据结构与算法]现代密码学5.1--哈希函数定义

博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。

密码学的假设

密码学是基于假设的一门学科

  • 最基础的假设是 P ≠ N P P\neq NP P?=NP
  • 更强一点的是单向函数存在
  • 更强一点的是 P R F PRF PRF存在
  • 更强一点的是抗碰撞哈希函数存在
  • 更强的是公钥加密算法存在

抗碰撞哈希函数定义

  • 任意长度长的输入字符串映射到固定长度短的输出字符串
  • 抗碰撞: x ≠ x ′ x\neq x' x?=x H ( x ) = H ( x ′ ) H(x)=H(x') H(x)=H(x)

与数据结构中定义的哈希函数的不同

    • 数据结构中的哈希函数:最小化碰撞;
    • 密码学中的哈希函数:抗碰撞是一个要求
    • 数据结构中的哈希函数:元素选择独立于哈希函数,也不需要考虑是否会导致碰撞;
    • 密码学中的哈希函数:元素选择需要考虑哈希函数以及是否会导致碰撞

抗碰撞性

  • keyed哈希函数/有密钥的哈希函数
    • H s ( x ) = d e f H ( s , x ) H^s(x)\overset{def}{=}H(s,x) Hs(x)=defH(s,x)
    • 这里的密钥与其他密钥至少有两个不同:
      • 不是所有字符串都对应有效密钥, H s H^s Hs可能不是一个抗碰撞哈希函数(所以往往有一个专门的keyGen函数生成有效密钥)
      • 密钥 s s s是公开的
  • unkeyed哈希函数/无密钥的哈希函数
    • 从理论上来说,这种哈希函数不是抗碰撞的:没有密钥,则一定存在一个破解算法知道这个固定的key,硬编码这种碰撞对 ( x , x ′ ) (x,x') (x,x)到破解算法中
    • 从实践上来说,还是抗碰撞的:虽然有这样一个破解算法,但在多项式时间内找不到

安全性:抗碰撞哈希函数>抗目标碰撞哈希函数>单向函数

  • 抗碰撞哈希函数:给定密钥 s s s,PPT敌手不能找到一个碰撞对 ( x , x ′ ) (x,x') (x,x) x ′ ≠ x x'\neq x x?=x使得 H s ( x ′ ) = H s ( x ) H^s(x')=H^s(x) Hs(x)=Hs(x)
  • 抗目标碰撞哈希函数:给定密钥 s s s和一个均匀随机 x x x,PPT敌手不能找到一个 x ′ ≠ x x'\neq x x?=x使得 H s ( x ′ ) = H s ( x ) H^s(x')=H^s(x) Hs(x)=Hs(x),则称 H s ( x ) H^s(x) Hs(x)是抗目标碰撞的 / target-collision resistance / Second-preimage resistance。
  • 单向函数:给定密钥 s s s和一个均匀随机字符串 y y y,PPT敌手找不到一个 x x x使得 H s ( x ) = y H^s(x)=y Hs(x)=y,则称 H s ( x ) H^s(x) Hs(x)是单向函数,或者preimage resistance。

安全性强弱:

  • 如果一个哈希函数是抗碰撞的,则一定是抗目标碰撞的
  • 如果一个哈希函数式抗目标碰撞的,则一定是单向函数
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-06 15:30:49  更:2021-12-06 15:31:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 14:57:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码