现代密码学5.1--哈希函数定义

现代密码学5.1--哈希函数定义

  • 密码学的假设
  • 抗碰撞哈希函数定义
    • 与数据结构中定义的哈希函数的不同
  • 哈希函数的密钥
  • 安全性:抗碰撞哈希函数>抗二次原像/抗目标碰撞哈希函数>抗原像哈希函数
    • 抗碰撞的
    • 抗二次原像/抗目标碰撞的
    • 抗原像的
    • 安全性强弱
  • 安全性与攻击难度

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

  • 第二章定义了完美安全及其对应的密码方案“一次一密”,
  • 第三章介绍了
    • 3.1-3.3 计算安全,PRG和基于PRG构造的满足计算安全的密码方案;
    • 3.4-3.5 CPA安全,PRF和基于PRF构造的满足CPA安全的密码方案
    • 3.6 基于PRG和PRF构造的流密码和分组密码;
    • 3.7 CCA安全,对非CCA安全密码方案的攻击
  • 第五章将介绍哈希函数,而5.1节先介绍哈希函数的定义。

密码学的假设

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

  • 最基础的假设是 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),则称 H s ( x ) H^s(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。

安全性强弱

  • 如果一个哈希函数是抗碰撞的,则一定是抗目标碰撞的

    • 给定 x ′ x' x,如果敌手能找到 x ≠ x ′ x\neq x' x=x,使得 H ( x ) = H ( x ′ ) H(x)=H(x') H(x)=H(x)(不抗目标碰撞的)
    • 则敌手找到碰撞对 ( x , x ′ ) (x,x') (x,x)(不抗碰撞的)
    • 逆否命题:如果一个哈希函数不抗目标碰撞,则一定不抗碰撞
  • 如果一个哈希函数是抗目标碰撞的,则一定是抗原像的

    • 给定 y y y,如果敌手能找到 x x x,使得 H s ( x ) = y H^s(x)=y Hs(x)=y(不抗原像的)
    • 则对于给定的 x ′ x' x,计算 y = H s ( x ′ ) y=H^s(x') y=Hs(x),能找到 x x x,使得 H s ( x ) = y H^s(x)=y Hs(x)=y(不抗目标碰撞的)
    • 逆否命题:如果一个哈希函数不抗原像,则一定不抗目标碰撞

安全性与攻击难度

  • 如果一个哈希函数
    • 是抗目标碰撞的,
    • 不是抗碰撞的
  • 则敌手在抗目标碰撞层面不能攻击它
  • 在抗碰撞层面可以攻击它

你可能感兴趣的:(现代密码学,密码学,数学,哈希)