简介
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 位密钥,重新生成哈希进行验证。如果上传的哈希与服务端生成的哈希一致,则视为验证通过,并将新的角色权限写入数据库。
比特币矿企Riot 2022年全年收入约2.6亿美元,哈希率容量较去年增加两倍:3月3日消息,比特币矿企Riot Platforms发布2022年财年报告称,其截至2022年12月的财年收入为2.592亿美元,而2021年同期为2.132亿美元,这主要是由于比特币产量增加以及全年数据中心托管和工程收入的推动。该矿企该报告期共产出5,554枚比特币,与2021年同期的3,812个相比增长了46%。比特币挖矿收入为1.569亿美元,而2021年同期为1.844亿美元。
2022年净亏损5.096亿美元,而2021年同期净亏损为1540万美元,这受到总计5.386亿美元的非现金减值支出的重大影响,包括与2021年Whinstone和ESS Metron收购相关的3.356亿美元商誉减值,持有的加密货币减值1.474亿美元,以及矿机减值5550万美元。截至2022年12月31日,Riot营运资本为3.218亿美元,包括手头现金2.303亿美元和6974枚比特币,没有长期债务。截至2022年12月31日,哈希率容量增加了213%,达到每秒9.7 EH/s,而截至2021年12月31日为3.1 EH/s。
此外,据CoinDesk报道,Riot推迟向美国证券交易委员会提交其年度10-K报告,原因是其会计师事务所就该公司与其比特币资产相关的减值计算提出了问题。[2023/3/3 12:40:07]
为便于理解,下面是根据描述写的一些简单的代码做为示例:
观点:比特币矿工可能开始退出,预计哈希率下降:数字资产管理公司Capriole Investments负责人Charles Edwards在推特上分享了一张图表,称当前的比特币价格水平对矿工来说变得无利可图。他解释说,目前开采比特币的电费成本高于一个比特币的价格。爱德华兹说,如果当前情况持续更长的时间,比特币矿工可能会开始关闭自己的设备并退出业务,算力可能出现下降。(U.Today)[2020/3/13]
由于验证模式存在漏洞,攻击者可以在不知道 SecretKey 的情况下,通过重新构造交易请求,达到绕过权限验证的目的。越权攻击的核心思路在于利用长度扩展攻击的特性。攻击者首先需要获取到原始的哈希值,并通过简单的迭代算法计算出原始数据的长度。一旦得到这些信息,就可以将额外的越权参数添加到原始数据中,并利用相同的哈希算法生成恶意的哈希值。
动态 | CoinGeek已经接近获得51%的BSV哈希值:据CryptoGlobe消息,CoinGeek已经接近获得51%的BSV哈希值。Coin.Dance数据显示,CoinGeek在过去几天已经接近本周的46%,尽管在发稿时已降至约40%。在过去的一天,CoinGeek矿池在BSV链上开采了大约396个区块。在过去的六个月里,CoinGeek的哈希值曾在11月18日至25日之间已经两次超过51%。获得51%的网络哈希值被认为是负面的,因为它可以让控制大部分哈希值的实体对区块链发起攻击,这意味着BSV所有网络参与者都必须信任CoinGeek不进行攻击。[2019/4/28]
Length Extension Attack 发生的原因在于部分哈希函数的内部机制。这些函数在处理输入数据前,首先将数据分割成固定长度的块,然后在每个块的末尾进行填充以满足特定的要求。这种设计导致攻击者可以在知道原始消息哈希值和长度的情况下,通过填充和附加新数据,构造出新的有效哈希值。
以 SHA-256 为例,其工作在 512 比特的块上。对于长度不是 512 比特的倍数的数据,需要进行填充操作。其填充规则如下:
声音 | Blockstream副总裁:BCH哈希值低于BTC的8% 存在双花攻击风险:Blockstream解决方案副总裁Warren Togami今日发布推特称:BCH的哈希值低于BTC的8%,存在双花攻击的风险。[2018/9/4]
1. 在数据的末尾添加一个 “1” 比特;
2. 添加一定数量的 “0” 比特,使得数据的长度模 512 等于 448(详细内容见 );
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 进行哈希运算,并与上传的验证哈希进行比较。如果哈希值一致,则认为参数符合规则,并直接使用。
哈希卡集成了Bancor协议,为持卡人提供Token流动:哈希网络有限公司(HSHC)是首批提供加密借记卡和即时转换的供应商之一,今天宣布整合Bancor协议,为哈希卡平台提供持续的流动性。本周早些时候,哈希卡在最初的48小时内收到了1500多份申请,并在公开发售前筹集了超过150万美元的预售,预计年底前将有超过2万名客户。[2018/5/14]
首先,我们通过登录 loginHandler 接口获取根据 data 和 SecretKey 使用 SHA-256 生成的哈希值 hash="37d310d3465506486431fb2c2eb163f0f470479703f66dc9e5fdead8a3390c68"。
接下来,我们将探讨破解的难度。以我们的测试情况为例,根据长度扩展攻击的原理,只要知道 H(message) 和 message 的长度,我们就可以通过长度扩展攻击添加新的数据。原来的 message = SecretKey + data,现在我们手上已经有 H(message),只需知道 message 的长度,就可以构造一个新的哈希值。由于 SecretKey 是一个 30 位的密钥,只需经过 30 次迭代,就可以得知真正的 message 的长度。因此,我们可以很容易地构造出一个新的哈希值。由于我们需要使用 admin 的权限,所以我们要将恶意的字段 "&role=admin" 拼接到原来的数据中。
我们可以利用长度扩展攻击的特性,在不知道 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
吴说区块链
标签:比特币ESSMESSEC比特币最直白的解释0xGaslessMGAMES价格Gold Secured Currency
来源:profstonge;编译:Block unicorn美国总共有4家中央银行,其中3家已关闭,还有1家在运营.
上周五专注于介绍BSC链上特色项目的推特账号BSCDaily,发布了一张8月opBNB生态中的新成员图,币安创始人赵长鹏第一时间转发的这条消息.
作者 | TaxDAO 1 引言 阿联酋地处波斯湾与印度洋的海上交通要冲,具有重要战略意义。一方面,由于市场开放程度较高、税收较低,市场竞争十分激烈;另一方面,阿联酋采取联邦制,由七个酋长国(阿.
作者:Jaleel、Kaori;编译:西米Sammi如果现在时间回到 3 个月前,市场上出现了一个能在 Telegram 上提供各种 DeFi 交易工具的机器人.
尽管美国证券交易委员会主席加里·根斯勒 (Gary Gensler) 等美国监管机构不怀好意地声称,在加密货币方面“多年来一直很明确”,但欧盟在 4 月份通过了加密资产市场法案(MiCA).
演讲:Vitalik Buterin 编译:fanfan,DeThings编注:本文是9月6日以太坊联合创始人Vitalik Buterin于新加坡南洋理工大学所发表的主题演讲.