Jump to content
  • Hello visitors, welcome to the Hacker World Forum!

    Red Team 1949  (formerly CHT Attack and Defense Team) In this rapidly changing Internet era, we maintain our original intention and create the best community to jointly exchange network technologies. You can obtain hacker attack and defense skills and knowledge in the forum, or you can join our Telegram communication group to discuss and communicate in real time. All kinds of advertisements are prohibited in the forum. Please register as a registered user to check our usage and privacy policy. Thank you for your cooperation.

    TheHackerWorld Official

Recommended Posts

密码学Hash函数

Hash函数将可变长度的数据块 M M M作为输入,产生固定长度的Hash值 h = H a s h ( M ) h=Hash(M) h=Hash(M)

目标

  • 输出的结果均匀分布且看起来随机
  • 对于消息某一位或几位的改变极大可能改变Hash值

安全性

  • 单向性

对于指定的Hash值找到对应的数据块不可行

  • 抗碰撞性

找到不同数据块对应相同的Hash不可行

Hash函数用于确定数据是否被篡改,即保证完整性

Hash的应用

消息认证

消息认证是用来验证消息完整性的一种机制或服务。

消息认证确保收到的数据确实和发送时一样(无修改、插入、删除、重放)。要求消息认证机制确保发送方声称的身份真实有效。

Hash运算的结果必须安全传输。Hash值不能够轻易修改。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I1XC57TB-1625057931762)(/Users/liangxiaoyu/Library/Application Support/typora-user-images/image-20210627210654575.png)]

  • (a)提供保密性,完整性和认证性

  • (b)提供完整性和认证性

    由Hash抗碰撞性保证安全

  • (c)提供完整性和认证性

    添加双方商定的秘密值 s s s

    由Hash单向性保证安全

  • (d)提供保密性,完整性和认证性

消息认证使用消息认证码MAC实现,即带密钥的Hash

数字签名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xcXdbXqN-1625057931763)(/Users/liangxiaoyu/Library/Application Support/typora-user-images/image-20210627211333854.png)]

需求与安全性

安全性需求

  • 输入长度可变

  • 输出长度不变

  • 效率

  • 抗原像攻击(单向性)

  • 抗第二原像攻击(抗弱碰撞性)

    • 对于给定 x x x有 h = H a s h ( x ) h=Hash(x) h=Hash(x),找到 y y y满足 h = H a s h ( y ) h=Hash(y) h=Hash(y)不可行
  • 抗碰撞攻击(抗强碰撞性)

    • 找到 x , y x,y x,y使 H a s h ( x ) = H a s h ( y ) Hash(x)=Hash(y) Hash(x)=Hash(y)不可行
  • 伪随机性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N6tJ4EyF-1625057931765)(/Users/liangxiaoyu/Library/Application Support/typora-user-images/image-20210627211949365.png)]

穷举攻击

原像攻击和第二原像攻击

  • 第一类生日攻击

对于给定 x x x有 h = H a s h ( x ) h=Hash(x) h=Hash(x),找到 y y y满足 h = H a s h ( y ) h=Hash(y) h=Hash(y)

代价 2 m − 1 2^{m-1} 2m−1

  • 第二类生日攻击

找到 x , y x,y x,y使 H a s h ( x ) = H a s h ( y ) Hash(x)=Hash(y) Hash(x)=Hash(y)

代价 2 m / 2 2^{m/2} 2m/2

  • 攻击者产生真消息集合{ x , x ′ . . . x,x'... x,x′...},假消息集合{ y , y ′ . . . y,y'... y,y′...}
  • 在两个集合中寻找碰撞 H a s h ( x i ) = H a s h ( y j ) Hash(x_i)=Hash(y_j) Hash(xi)=Hash(yj)
  • 将 x i x_i xi发送给发送方进行签名,叫消息替换为 y j y_j yj发送给接收方,则可以通过验证

一般认为160位Hash值是安全的

密码分析

典型的Hash结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eqwTQSdc-1625057931767)(/Users/liangxiaoyu/Library/Application Support/typora-user-images/image-20210627213046467.png)]

  • 预处理(填充)
  • 迭代
  • 输出变换

安全的Hash算法

MD系列

  • 填充

    • l e n g t h = 448 m o d    512 length=448\mod512 length=448mod512
  • 附加消息长度

  • 初始化MD缓冲区

    128位缓冲区

  • 以512bit的分组为单位处理消息

  • 输出

Hash值中的每一个比特是所有输入比特的函数

SHA系列

  • SHA-1:160bit

  • SHA-2

    • SHA-256:256bit
    • SHA-384:384bit
    • SHA-512:512bit

SHA-1

  • 填充

    • l e n g t h = 448 m o d    512 length=448\mod512 length=448mod512
  • 附加消息长度

  • 初始化缓冲区

    • 160位缓冲区
  • 以512bit的分组为单位处理消息

    • 迭代80轮
  • 输出

SHA-3

海绵结构,输入输出长度可变

Link to post
Link to comment
Share on other sites

 Share

discussion group

discussion group

    You don't have permission to chat.
    • Recently Browsing   0 members

      • No registered users viewing this page.
    ×
    ×
    • Create New...