[关闭]
@romangol 2016-07-20T03:54:38.000000Z 字数 579 阅读 2159

2016年第九届全国大学生信息安全竞赛创新实践能力大赛 三轮分组密码 Writeup

密码学 CTF


一个以单字节为block的分组密码加密,三轮CBC模式,已知明文的部分内容(开头的“flag{”和结尾的“}”),给了一组密文。密钥长度根据提示应该是8字节,其中一个字节是iv,剩余7字节用于加密分组内容。

这个分析的关键是利用已知明文的信息来缩小key的信息量,首先明文的第0字节因为有iv的mask并不存在信息量,可以先利用密文和明文的第3、4字节的对应关系,将相关密钥(涉及到的key一共有4字节)缩小到2的16次方范围,同时可以利用密文和明文的最后一个字节的对应关系,将相关密钥(涉及到的key一共有3字节)缩小到2的16次方范围。注意到根据key循环使用的模式,这两组2的16次方的key有交织,然后再利用密文和明文的第1、2字节的对应关系,可以将两组key合并缩减到238组(这时候我们已经基本确定了key的1-4,6-7字节,并不知道的是第0字节也就是iv和第5字节),最后穷搜索key的第五字节尝试解密就可以得到答案了

flag{NoNoNo_Its_not_happening_not_happening}

源代码
https://github.com/romangol/CTF/blob/master/uctf2016/attack/cipher.cpp

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注