4th-长度扩展攻击学习&Plaid CTF 2014 Crypto 250 Parlor

本文详细介绍了长度扩展攻击的概念,阐述了攻击的原理和条件,特别是针对MD5等散列函数。通过实例分析Plaid CTF 2014 Crypto 250 Parlor题目,展示了攻击方法。尽管尝试解决题目遇到困难,但作者通过实践深化了对密码学的理解,并应用到其他加密技术如RSA上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内容:学习掌握长度扩展攻击,明白攻击原理,知道攻击的条件,实践长度扩展攻击,题目:Plaid CTF 2014 Crypto 250 Parlor,完成WP
掌握长度扩展攻击
学习来源
博主
博客地址
长度扩展攻击(length extension attack),是指针对某些允许包含额外信息的加密散列函数的攻击手段。对于满足以下条件的散列函数,都可以作为攻击对象:

   ① 加密前将待加密的明文按一定规则填充到固定长度(例如512或1024比特)的倍数;

   ② 按照该固定长度,将明文分块加密,并用前一个块的加密结果,作为下一块加密的初始向量(Initial Vector)。

   满足上述要求的散列函数称为Merkle–Damgård散列函数(Merkle–Damgård hash function),下列散列函数都属于Merkle–Damgård散列函数:

MD4
MD5
RIPEMD-160
SHA-0
SHA-1
SHA-256
SHA-512
WHIRLPOOL
对于H(salt+data)形式的加密,在以下条件满足的情况下,攻击者可以通过该方法获取H(salt+一定规则构造的data):
① 知道密文的加密算法且该算法满足Merkle–Damgård散列函数特征;

   ② 不知道salt,但知道salt的长度,并可控制data的值;

   ③ 可以得到一个H(salt+data)的值。

攻击方法详解

     下面以MD5算法为例,讲述该攻击方式如何进行攻击。

     百度百科中详细阐述了MD5算法的实现过程https://baike.baidu.com/item/MD5/212708?fr=aladdin,我们并不需要知道MD5具体的算法是怎么回事,只需要知道它的实现是满足上面所说的Merkle–Damgård散列函数的两个条件的,具体过程是这样的:

    ① 填充

    拿到明文后,MD5现将明文转为二进制文件,然后将二进制文件的长度除以512比特(即64字节),如果余数等于448比特(即64-8字节),那么直接在后面加上八个字节的长度标识,使之成为512比特的倍数。否则则在明文后填一个1,再填充0直至其长度除以512等于448,再加上8位的长度标识。长度是使用大端序(big Endian)来存储,即低字节放在高地址位上。

    比如加密的明文是admin,其二进制文件以16进制表示是0x61646d696e,长度是40比特(5字节),那么需要补充408比特(51字节)的填充符,填充内容第一位是1,其余全部是0。16进制表示是0x8000000000000000000000000000000000000000000000000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值