在看 CTF 时发现了 zip 明文攻击的攻击方式,然而举的例子里基本都是使用工具——也就是 ARCHPR 简单完成破解,转而进行下一步操作,对明文攻击本身并没有做更多解释。本想看看 ARCHPR 的明文攻击实现的,结果发现这东西是商业软件……于是开始找其他资料。
简单搜了一圈发现这种攻击是基于 Biham 和 Kocher 在 94 年发表的论文《A Known Plaintext Attack on the PKZIP Stream Cipher》实现的。
明文攻击主要利用大于 12 字节的一段已知明文数据进行攻击,从而获取整个加密文档的数据。也就是说,如果我手里有一个未知密码的压缩包和压缩包内某个文件的一部分明文(不一定非要从头开始,能确定偏移就行),那么我就可以通过这种攻击来解开整个压缩包。比如压缩包里有一个常见的 license 文件,或者是某个常用的 dll 库,或者是带有固定头部的文件(比如 xml、exe、png 等容易推导出原始内容的文件),那么就可以运用这种攻击。当然,前提是压缩包要用 ZipCrypto 加密。