在书上看到已知明文攻击可以用来破解压缩包加密。引用一点书上的内容:我们为ZIP压缩文件所设定的密码,先被转换成了3个4字节的key,再用这3个key加密所有文件。如果我们能通过某种方式拿到压缩包中的一个文件,然后用同样的方式压缩,此时两个压缩包中相同的那个文件的压缩后大小会相差12字节,用ARCHPR进行对比筛选后,就可以获得key,继而根据这个key恢复出未加密的压缩包。
书上没有继续介绍,就百度了一下,记录一下结果。
ZIP已知明文攻击的一般利用
其实传统的已知明文攻击要成功需要以下三个条件:
完整的明文文件
明文文件需要被相同的压缩算法标准压缩(也可理解为被相同压缩工具压缩)
明文对应文件的加密算法需要是 ZipCrypto Store
第三点是我们实际应用中常常会被忽略的。因竞赛中遇到的题目,都是提前设置好的。
· AES256-Deflate/AES256-Store加密的文件不适用于明文攻击。
ZIP的加密算法大致分为两种ZipCrypto和AES-256,各自又分Deflate和Store。
ZipCrypto Deflate
ZipCrypto Store
AES-256 Deflate
AES-256 Store
ZipCrypto算是传统的zip加密方式。只有使用ZipCrypto Deflate /Store才可以使用 ZIP已知明文攻击进行破解。
Winrar(v5.80)、7zip(v19.00)默认状态下加密使用的就是AES256算法,直接排除。360压缩(v4.0.0.1220)、好压(v6.2)使用的是ZipCrypto,不固定使用Store或Deflate(如果要固定使用ZipCrypto Store算法加密,可以在压缩的时候指定压缩方式为“存储”)。
至于为啥AES加密算法能抵御这种攻击方式,搜了一下没怎么看明白,以后再研究吧。
ZIP已知明文攻击的深入利用
本文要探讨的攻击方法并不需要知道压缩文件中完整的明文,只需在已知加密压缩包中的少部分明文字节时即可进行攻击破解。而各类文件都有其自身固定的文件格式,结合这类格式,极大扩展了ZIP明文攻击的攻击面。
具体要求如下:
至少已知明文的12个字节及偏移,其中至少8字节需要连续。
明文对应的文件加密方式为ZipCrypto Store
本文大部分转载于 https://www.freebuf.com/articles/network/255145.html,其中还有ZIP已知明文攻击的深入利用的实操。
放几篇相关文章链接: