长度扩展攻击

✍ dations ◷ 2025-08-21 23:09:24 #长度扩展攻击

在密码学和计算机安全中,长度扩展攻击(Length extension attacks)是指一种针对特定加密散列函数的攻击手段,攻击者可以利用H(消息1)和消息1的长度,不知道消息1内容的情形下,将攻击者控制的消息2计算出H(消息1 ‖ 消息2)。

该攻击适用于在与的长度已知的情形下,所有采取了 H( ∥ ) 此类构造的散列函数。MD5和SHA-1等基于Merkle–Damgård构造(英语:Merkle–Damgård_construction)的算法均对此类攻击显示出脆弱性。注意,由于密钥散列消息认证码(HMAC)并未采取 H( ∥ ) 的构造方式,因此不会受到此类攻击的影响(如HMAC-MD5、HMAC-SHA1)。SHA-3算法对此攻击免疫。

对此类攻击脆弱的散列函数的常规工作方式是:获取输入消息,利用其转换函数的内部状态;当所有输入均处理完毕后,由函数内部状态生成用于输出的散列摘要。因而存在着从散列摘要重新构建内部状态、并进一步用于处理新数据(攻击者伪造数据)的可能性。如是,攻击者得以扩充消息的长度,并为新的伪造消息计算出合法的散列摘要。

一个用于向指定地点的用户递送指定种类华夫饼(即下面代码中的waffle)的服务器,可处理如下格式的请求:

原始数据: count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggo原始签名: 6d5f807e23db210bc254a28be2d6759a0f5f5d99

当且仅当该用户给出的签名对于其当前请求(向指定地点的用户1递送10个Eggo华夫饼)而言合法时,服务器才会实际处理该业务。该签名是一个消息认证码(MAC),由某个攻击者不可知晓的密钥签发。(事实上,这个例子对于重放攻击同样脆弱,攻击者亦可能通过二次发送同样的请求和签名来实施攻击。)

攻击者可能篡改该请求,在上述例子中,假设某攻击者把华夫饼的种类从“eggo”改为“liege”,这可以借助于消息格式本身的灵活性达到:对于请求字符串中重复的参数域,总是处理最后的参数。这样的灵活性并不能算作是消息格式本身的安全漏洞,因为消息格式在设计之初并未以安全性为前提;安全性需要通过签名算法的辅助来达到。

攻击者希望篡改的新数据: count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggo&waffle=liege

为了给此新信息加上合法的签名,攻击者通常需要知道用于签名信息的密钥,并由此密钥生成一个新的MAC来作为新签名。然而,借助于长度扩展攻击手段,攻击者可以将散列(如上给出的签名)传递给散列函数作为原始状态,而从原请求处开始继续处理,这只需知道原请求的长度即可;在该请求中,原密钥的长度为14字节,这可以通过试探不同长度的伪造请求、并检查何种长度的请求被服务器接受而得到。

传递给散列函数的信息通常是填充(Padding)后的,因为许多算法只接受长度为指定大小倍数的输入。填充的内容是由采用的散列函数决定的。攻击者在新信息中除了包含原信息和伪造信息之外,还应当包含必需的填充位。因而,攻击者利用填充规则可以构造出如下信息:

新数据: count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggox80x00x00          x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00          x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00          x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00          x00x00x00x02&waffle=liege

该信息包含了散列函数中添加到原消息的填充位(在此示例中,是一个0x80,随后是若干0x00,最后是消息长度)。攻击者知道原消息的散列密钥/消息对所对应的状态直到最后一个“&”为止,均和新消息是相同的;攻击者此时亦知道其散列摘要,这意味着散列函数的内部状态已经被完全伪造。此时,初始化一个散列算法就非常简单了,给定剩余的字符串作为输入,即可生成一个用于签名的新摘要,而根本无须知晓原密钥。

新签名: 0e41270260895979317fff3898ab85668953aaa2

通过连接新签名和新数据成为一个新请求,服务器将把该伪造的请求视作一个有效的请求,因为其签名和在知道密码情况下生成的签名完全等效。

该攻击主要用于伪造已签名的消息,但亦可能存在其他用途。

目前实现该类型攻击的工具并不多。一个借助于OpenSSL实现了针对多种散列函数的攻击的工具是 HashPump (页面存档备份,存于互联网档案馆)。该工具支持针对MD5、SHA1、SHA256和SHA512的长度扩展攻击。SHA224和SHA384受此攻击的影响相对较小,由于这两个函数的输出分别是更长的散列函数(分别是256及512位)的前224位和前384位,因此其输出并不包含散列内部状态的全部长度,不能直接使用散列值进行长度扩展攻击。然而,SHA224和SHA384毕竟输出了更长散列的很大一部分,因此攻击者仍然可以轻易地首先穷举得到剩下的部分(缺失长度仅为32位和128位)后,再实施长度扩展攻击。因此,不能依赖截取部分散列来实现消息验证码。

相关

  • 泰伦提乌斯泰伦提乌斯(拉丁语Publius Terentius Afer,公元前195/185-公元前159/161)是一位罗马共和国时期的剧作家。柏柏尔人后裔。他的喜剧在公元前170–公元前160首次得以演出。泰伦提
  • SLC12A3· protein binding· plasma membrane · integral component of plasma membrane · membrane · apical plasma membrane· ion transport · sodium ion transport
  • 长隆海洋王国长隆海洋王国(Chimelong Ocean Kingdom)位于中华人民共和国广东省珠海市香洲区横琴镇富祥湾,是珠海长隆国际海洋度假区旗下的其中一个以海洋为主题的主题公园,该主题公园采用世
  • 伊尔代布兰多·皮泽蒂伊尔代布兰多·皮泽蒂(意大利语:Ildebrando Pizzetti,1880年9月20日-1968年2月13日),意大利作曲家。早年在帕尔马音乐学院学习,毕业后先后在佛罗伦萨,米兰,罗马等地任教。在墨索里尼
  • 藤原公实藤原公实(ふじわら の きんざね,1053年 - 1107年),日本平安时代公卿、歌人。官至正二位权大纳言、东宫大夫(春宫大夫)。藤原北家闲院流出身,父为藤原实季,母为藤原睦子。同母妹苡子
  • 盖莱普宗坐标:26°50′N 90°15′E / 26.833°N 90.250°E / 26.833; 90.250盖莱普宗(英语:Geylegphug District/Sarpang District)(གསར་སྤང་རྫོང་ཁག་)是不丹二十个宗(dzo
  • 江永华江永华(1973年9月7日-),籍贯为黑龙江鸡西,中国自行车运动员,曾于1997年退役,2001年复出。江永华于1989年在黑龙江体工三队开始接受自行车运动的训练,教练为潘洪顺。其后在短短5年后就入选国家队,李红心是江永华的教练。其后在1999年江永华转至北京队,其教练为王永庆。江永华曾夺得全国自行车锦标赛女子500米计时赛冠军、全国自行车冠军赛女子500米计时赛冠军、九运会女子500米计时赛金牌。2002年,分别夺得了世界杯场地自行车总决赛女子500米计时赛冠军、亚运会女子500米计时赛冠军。1年后在世
  • 王轨 (道士)王轨(579年-667年),字洪范,又字道模,琅玡临沂人(今山东省临沂市)茅山宗道士,对道经的收集整理作了许多工作。弟子
  • 庞加斯顿庞加斯顿(英文:Gaston Pong,1997年8月1日-),本名庞圭武,马来西亚音乐制作人、创作歌手。粉丝名为“小煤气”。庞加斯顿拥有4年影音制作工作经验,包括影音制作、广告制作与创意指导。于2017年从幕后转为幕前,同年与姐姐庞捷忆共同组成碰碰PongPong (页面存档备份,存于互联网档案馆)组合。两人因为觉得姓氏非常上口,就以谐音起名为碰碰,主要在社交平台上传搞笑又认真制作的翻唱音乐作品。于2019年1月成立碰碰工作室,正式发表了首支全创作单曲《强心脏》。于2020年成为麦尼肯娱乐旗下训练生。于
  • 小国小国(英语:Small power)是指国际体系中,权力资源及影响力不如大国及中等强国的国家。如同大国、中等强国或微型国家一样,小国没有很明确、通用的定义。最常作为小国划分依据的一个因素是人口,一些观点认为,小国是人口规模低于1000万的主权国家。亦有观点从国家安全角度认为,小国是在特定时期下,由于缺少足够的资源,难以自助而必须通过其他途径实现安全的国家行为体。罗伯特·基欧汉提出过一个定义:小国的领导人认为它不能单独或通过小集团的行动对体系产生重要的影响。而罗伯特·罗思坦(Robert L. Rothst