首页 > 其他分享 >浅谈哈希长度扩展攻击

浅谈哈希长度扩展攻击

时间:2024-08-18 17:27:49浏览次数:12  
标签:hash 浅谈 哈希 SHA https 攻击者 长度 data

攻击原理:

我们首先需要了解一下Message Authentication codes (MACs) ,称为消息验证码,一般用于服务器验证消息的真实性。服务器把密钥和消息连接起来,用摘要算法获取摘要,对于Hsecret + data)此类构造的散列函数,在密钥长度****和数据已知的情况下,通常可以使用哈希长度扩展攻击。

MD4、MD5、RIPEMD-160、SHA-0、SHA-1、SHA-256、SHA-512、WHIRLPOOL等基于Merkle–Damgård结构的摘要算法均受此攻击。但MD2、SHA-224和SHA-384不受此攻击影响

哈希长度扩展攻击条件:

  • 攻击者需要知道 secret 长度 (通过爆破得出)
  • 攻击者可以控制 data
  • 已知一个通过此哈希摘要的一个哈希值
  • 基于Merkle–Damgård构造的算法

总的来说就是:给定一个由具有未知前缀的字符串组成的哈希,攻击者可以附加到该字符串并生成仍然具有未知前缀的新哈希。

示例:

攻击者已知

len(secret) = 15
data = admin
signature = hash(secret||data) = 6036708eba0d11f6ef52ad44e8b74d5b
append = 'append'

通过hashpump、hash_extender等工具可以快速进行哈希长度扩展攻击。这里以hash_extender为例

./hash_extender --data admin  --secret 15 --append append --signature 6036708eba0d11f6ef52ad44e8b74d5b --format md5  

在这里插入图片描述

可以得到新的签名,由此我们可以通过哈希长度扩展攻击在未知 secret的前提下构造哈希值。

利用工具下载地址

https://github.com/bwall/HashPump

https://github.com/amlweems/hexpand

https://github.com/iagox86/hash_extender

防御

  • 采用hash( S E C R E T , h a s h ( SECRET, hash( SECRET,hash(data))方式,攻击者不可控制data数据(如果攻击者已知哈希算法,可爆破data,但是会加大爆破难度)
  • 采用HMAC哈希算法

参考地址

https://github.com/iagox86/hash_extender

https://lightless.me/archives/hash-extender-attack.html

https://hackmd.io/@b0gKPwomTn2ddmo3aEpE0A/SkS5pzQAU#哈希扩展长度攻击

https://www.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks

标签:hash,浅谈,哈希,SHA,https,攻击者,长度,data
From: https://blog.csdn.net/m0_68483928/article/details/141300592

相关文章

  • c语言计算二叉树的带权路径长度之和(WPL)
    1.WPL:树中全部叶节点的带权路径之和2.代码中所画的树为:3.求上述WPL:WPL=0*1+1*2+1*3+2*4+2*5=234.主要代码为:intwpl(Node*ROOT,inthigh){ intn=0; if(ROOT!=NULL){ n=ROOT->weight*high; n=n+wpl(ROOT->lchild,high+1); n=n+wpl(ROOT->rchild,high+1); } r......
  • 力扣面试经典算法150题:最后一个单词的长度
    最后一个单词的长度今天的题目是力扣面试经典150题中的数组的简单题:最后一个单词的长度题目链接:https://leetcode.cn/problems/length-of-last-word/description/?envType=study-plan-v2&envId=top-interview-150题目描述给定一个仅包含大小写字母和空格’’的字符......
  • 《python语言程序设计》2018版第7章第05题几何:正n边形,一个正n边形的边都有同样的长度
    结果和代码这里只涉及一个办法方法部分defmain():rX,rY=eval(input("Enterregularpolygonxandyaxis:"))regular_num=eval(input("Enterregularnumber:"))side_long=eval(input("Entersidenumber:"))a=exCode07.Reg......
  • PADS router 电气网络长度监视器使用
    1、右键空白处,选择网络2、左键选择目标网络,再右键选择电气网络3、右键选择创建匹配长度的网络组4、在导航栏中点出电子表格(图中标红选项)5、在电子表格的上方导航栏里选择 与选择同步6、在选择网络的状态下选择目标网络7、右键选择电气网络,这样便可在电子表格中查看网......
  • 浅谈TCP协议、UDP协议
    一、介绍说明TCP(传输控制协议)面向连接:TCP在数据传输之前必须建立连接。这通过一个称为三次握手的过程来完成,确保连接的两端都准备好进行数据传输。可靠性:TCP提供可靠的数据传输,确保数据包正确无误地到达目的地。如果数据包在传输过程中丢失或损坏,TCP会重新发送这些数据包......
  • 链表中环的检测与入口节点的查找:哈希表与快慢指针方法
    前言在数据结构中,链表是一种常见的线性数据结构。链表中的环问题是面试和实际编程中经常遇到的一个问题。本文将先复习哈希表的基本概念,然后介绍两种检测链表中环的方法:哈希表法和快慢指针法,并分析它们的优缺点、原理以及时间和空间复杂度。哈希表复习定义:哈希表,又称散列表,......
  • 浅谈ChatGPT在云计算资源调度的应用
    本文分享自天翼云开发者社区《浅谈ChatGPT在云计算资源调度的应用》,作者:张****兵一、ChatGPT技术原理ChatGPT是基于GPT(GenerativePre-trainedTransformer)技术构建的大型语言模型。其技术原理主要包括以下几个方面:Transformer模型:GPT使用了Transformer模型作为其基础......
  • 掌握一致性哈希算法
    如何分配请求?大多数网站背后肯定不是只有一台服务器提供服务,因为单机的并发量和数据量都是有限的,所以都会用多台服务器构成集群来对外提供服务。但是问题来了,现在有那么多个节点(后面统称服务器为节点,因为少一个字),要如何分配客户端的请求呢?其实这个问题就是「负载均衡问......
  • C# Rsa加密(私钥加密、公钥解密、密钥格式转换、支持超大长度分段加密)
        此为工具类,这个和java版本的加密对比过了,结果是一样的,代码赋值黏贴直接用,不多比比,直接上代码(需要在nuget上寻找"Portable.BouncyCastle"包安装):  (java端有个和c#端不一样的地方,base64编码有好几套,有时候对不上大概率是base64那边的问题)     usingOrg.Bouncy......
  • 《密码保护升级指南:顶级哈希算法大比拼》
    密码哈希技术深度剖析:掌握MessageDigest、Bcrypt与PBKDF2一、为何探究密码哈希技术随着互联网的发展,网络安全变得越来越重要。密码哈希算法作为保护用户密码安全的关键技术之一,其重要性不言而喻。在数字时代,密码安全构成了保护用户隐私和资产的第一道防线。密码哈......