区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > 加密货币 > 正文

GAL:哈希函数的隐藏危险:长度扩展攻击与服务端验证的安全隐患_ALAX

作者:

时间:

简介

Length Extension Attack 是一种与某些特定类型的哈希函数(如 MD5,SHA-1 和 SHA-2)的特性有关的攻击。简单来说,这种攻击利用了一个事实,即知道 H(message) 和 message 的长度,我们可以轻松计算出 H(message || padding || extension) 而不需要知道 message 本身。其中 “||” 表示连接,“padding” 是根据哈希函数的规定添加的。

这是因为这些哈希函数使用了 Merkle-Damg?rd 结构,它将输入切片为多个块,并且每个块的哈希值依赖于前一个块的哈希值。这意味着一旦我们计算出了某个消息的哈希值,就有了一个状态,可以从那里开始并添加更多的块。

为方便描述漏洞场景,我们首先假设有这样一种服务端验证模式,即用户尝试登录时,服务端会根据用户的 ID、名字以及一个仅服务端知道的 30 位密钥,通过特定的哈希算法生成一个哈希值,并将其下发给客户端。随后,当客户端尝试访问某些特定接口,例如修改用户权限的接口时,服务端会根据前端 POST 的角色 ID、角色名字、角色权限以及同样的 30 位密钥,重新生成哈希进行验证。如果上传的哈希与服务端生成的哈希一致,则视为验证通过,并将新的角色权限写入数据库。

ETC网络的哈希率达到48.19TH/s,创历史新高:金色财经消息,据2miners数据显示,ETC网络的哈希率在9月4日达到48.19TH/s,创造历史新高,近1个月增长超140%。[2022/9/6 13:10:28]

为便于理解,下面是根据描述写的一些简单的代码做为示例:

由于验证模式存在漏洞,攻击者可以在不知道 SecretKey 的情况下,通过重新构造交易请求,达到绕过权限验证的目的。越权攻击的核心思路在于利用长度扩展攻击的特性。攻击者首先需要获取到原始的哈希值,并通过简单的迭代算法计算出原始数据的长度。一旦得到这些信息,就可以将额外的越权参数添加到原始数据中,并利用相同的哈希算法生成恶意的哈希值。

Length Extension Attack 发生的原因在于部分哈希函数的内部机制。这些函数在处理输入数据前,首先将数据分割成固定长度的块,然后在每个块的末尾进行填充以满足特定的要求。这种设计导致攻击者可以在知道原始消息哈希值和长度的情况下,通过填充和附加新数据,构造出新的有效哈希值。

Capriole Investment创始人:比特币哈希带指标显示矿工投降已结束:8月21日消息,据Capriole Investment创始人Charles Edwards在社交媒体上披露的比特币算力波动统计数据显示,矿工悲观情绪可能触及顶峰,这意味着所谓的矿工投降已经结束。CharlesEdwards分享了比特币矿工情绪指标哈希带(HashRibbon),数据显示该指标下跌时间维持了71天,创下历史第三长的矿工投降记录,比2021年持续时间更长,仅比2018年价格触底时短了2天。

哈希带指标于2019年构建,基于比特币的30天和60天移动平均线(MA)净哈希率之间的相关性设计,当30日均线跌破60日均线时表示矿工投降;当30日均线高于60日均线且价格上涨时,就表示安全的看涨信号已出现。[2022/8/21 12:38:04]

以 SHA-256 为例,其工作在 512 比特的块上。对于长度不是 512 比特的倍数的数据,需要进行填充操作。其填充规则如下:

1. 在数据的末尾添加一个 “1” 比特;

2. 添加一定数量的 “0” 比特,使得数据的长度模 512 等于 448(详细内容见 );

行情 | BTC哈希率再创历史新高 达72.5708EH/s:据bitinfocharts数据显示,BTC哈希率再创历史新高,7月6日平均哈希率达到72.5708EH/s。[2019/7/7]

3. 在最后面添加一个 64 位长的块,表示原始数据的长度。

简而言之,将一个 “1” 后面跟着 m 个 “0”,再加上一个 64 位或 128 位的整数,附加到消息的末尾,以生成长度为 512*n 的填充消息。附加的整数是原始消息的长度。然后,填充消息将被哈希函数处理为 n 个 512 位的块。

在这个示例中,我们将以上面图片提到的代码做为一个特定的场景,其中数据字符串为 data="user_id=1&user_name=aa",密钥为 SecretKey="Length_extension_attack_secret"。服务端会解析上传的数据中的 data 字段,并通过分隔符 & 解析出所需的参数 user_id 和 user_name。如果存在 role 字段,服务端也会获取该字段的值。然后,服务端会将所有字段与 SecretKey 进行哈希运算,并与上传的验证哈希进行比较。如果哈希值一致,则认为参数符合规则,并直接使用。

动态 | LTC哈希率接近历史最高水平 或与今年8月LTC减半有关:据AMBCrypto消息,LTC哈希率持续上涨,目前为321.35TH/s,接近历史最高水平,即2018年5月的342.88 TH/s。文章分析LTC哈希率的增长或与今年8月LTC减半有关。随着减半日期的临近,投资者对LTC的兴趣可能会大幅上升,因为他们将试图将资金投入LTC市场,以获得潜在收益。据火币行情显示,LTC现全球均价59.95美元,24小时跌幅0.64%。[2019/3/31]

首先,我们通过登录 loginHandler 接口获取根据 data 和 SecretKey 使用 SHA-256 生成的哈希值 hash="37d310d3465506486431fb2c2eb163f0f470479703f66dc9e5fdead8a3390c68"。

接下来,我们将探讨破解的难度。以我们的测试情况为例,根据长度扩展攻击的原理,只要知道 H(message) 和 message 的长度,我们就可以通过长度扩展攻击添加新的数据。原来的 message = SecretKey + data,现在我们手上已经有 H(message),只需知道 message 的长度,就可以构造一个新的哈希值。由于 SecretKey 是一个 30 位的密钥,只需经过 30 次迭代,就可以得知真正的 message 的长度。因此,我们可以很容易地构造出一个新的哈希值。由于我们需要使用 admin 的权限,所以我们要将恶意的字段 "&role=admin" 拼接到原来的数据中。

哈希未来(HSC)获得水木区块链基金投资:据官方报道,水木区块链基金近日投资了区块链创业项目哈希未来(HSC)。该项目旨在创建“协议层——技术层——应用层”三位一体的新型区块链数字资产交易平台,解决资产上链与跨链流通等问题。哈希未来连通物质与数字世界,使资产确权更加安全,交易更加高效快捷,立志成为数字经济时代的阿里巴巴。目前,哈希未来生态中的首个应用场景“哈希世界”已拥有120万注册用户,日活跃用户超7万人。[2018/6/13]

我们可以利用长度扩展攻击的特性,在不知道 SecretKey 的情况下,添加新的数据并生成一个新的哈希值。这里使用一个已经实现此功能的库 来完成测试。再使用工具生成新的哈希值 。

由于 adminActionHandler 的接口验证是根据上传的 user_id,user_name 和 role 来验证 hash 的,我们这时候上传的数据是 user_id=1,user_name=aa\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x70 以及 role=admin,如下图所示:

哈希值为 84ae4ae437eeabf3bd8a26294392770b86f64a81998194156ac003d58a21acd0。之后就可以调用 adminActionHandler 接口,服务端收到数据后,会把上传的哈希与 sha256(SecretKey + fakeData) 进行对比,通过验证之后将会执行一些敏感操作。这样,我们就成功地利用长度扩展攻击绕过了服务端验证,并实现了越权操作。

1. 文件完整性验证:如果文件的完整性是通过连接密钥和文件内容,然后对其进行哈希来验证的,那么攻击者可能会扩展文件并生成一个有效的哈希,从而绕过完整性检查;

2. Web 应用安全:在 Web 应用中,如果使用了易受长度扩展攻击的哈希函数来验证用户提交的数据,攻击者可能会利用这一点来提交恶意数据;

3. 数字签名:在某些数字签名方案中,如果签名是通过连接私钥和消息,然后对其进行哈希来生成的,那么攻击者可能会扩展消息并生成一个有效的签名;

4. 密码存储:虽然不常见,但如果密码是通过连接密钥(例如盐)和密码,然后对其进行哈希来存储的,那么攻击者可能会尝试使用长度扩展攻击来破解密码。

1. 选择不易受长度扩展攻击的哈希函数,例如 SHA-3;

2. 使用 HMAC:HMAC 需要一个密钥和一个消息作为输入,输出的结果既依赖于密钥,也依赖于消息,因此攻击者在不知道密钥的情况下无法进行长度扩展攻击;

3. 加强权限验证:在服务端增加额外的权限验证步骤,例如使用多因素认证。

以下是一些常用的 Hash 算法的特性:

预映像抵抗

对于长度扩展攻击,一种有效的防护措施是使用不受此类攻击影响的哈希函数,例如 SHA-3 和 BLAKE2。另外,还可以通过 HMAC(密钥散列消息认证码)结构来进行防护。这些措施可有效提高系统的安全性,确保数据完整性和应用程序的稳定性。

参考链接:

https://www.rfc-editor.org/rfc/rfc6234#page-8

 https://github.com/skerkour/kerkour.com/tree/main/blog/2023/sha256_length_extension_attacks 

慢雾科技

个人专栏

阅读更多

白话区块链

神译局

Gryphsis Academy

CertiK中文社区

新浪科技

元宇宙之心

金色早8点

Web3小律

MarsBit

ForesightNews

吴说区块链

标签:NBSBSPALAGALnbs币最新消息bspt币未来前景ALAXGalaxy Finance

加密货币热门资讯
NBS:加密货币需要成长_加密货币市场

作者:Ned Menton,blockworks 编译:善欧巴,金色财经当加密货币从小众跃升至主流时,项目将需要采用更专业的管理实践,否则就有被抛在后面的风险 适应规模化管理的必要性 如今.

BSP:Su Zhu看好的GambleFi除了暴涨5倍的RLB还有什么项目?_ITA

Telegram Bots 之后,市场正在焦急地寻找下一个热点。而过去七天,GambleFi 成为 CoinGecko 上仅次于 Telegram Bots 的表现最佳的代币类别,总市值已经突破.

GAMES:Gala Games两位联创对簿公堂 诉讼书透露了哪些信息?_Decentral Games [new]

近日,Magic Book 创始人 Jake Browatzke 在社交平台曝出,区块链游戏平台 Gala Games 团队陷入内讧.

DAO:DAI存款利率增至8%为何使MakerDAO社区分裂?_DAIN价格

作者:Tim Craig, DL News;来源:dlnews;编译:Felix, PANewsMakerDAO在本月初提高了稳定币的收益率后,DeFi用户纷纷涌向DAI.

区块链:从来没有一个事物像比特币一样 让法律如此纠结_NEW

【引入】如题,比特币等虚拟货币的诞生,对世界金融格局产生了深刻影响。同时,也给法律治理带来了严峻的考验.

ASH:Tornado Cash创始人被抓 隐私交易工具存在“原罪”?_Panda Cash

引言 西方宗教认为,所谓“原罪”(Original Sin)指的是人类始祖亚当和夏娃因被蛇引诱,违背上帝的命令,吃了伊甸园的禁果,这一罪行遂传给他们的子孙后代,成为人类与生俱来的原始罪过.