穷举法的末路——致文件加密软件作者

  现在网上盛传某种利用显卡GPU(“图形处理器)协助穷举攻击的说法。说是比CPU的处理速度高出千百倍云云。
  其实穷举法之所以可以横行是加密软件自身缺陷造成的,如果没有这些缺陷穷举攻击并没有什么可怕之处。这种缺陷实际上是很合情合理的产生的,加密软件一般是这样做的,用户密码来了,检查一下密码是否正确,如果密码错误则告诉用户,好让其重新输入,密码正确则向下运行进行解密工作等。
  正是这种检查密码错误的方式将自己出卖了,一般做法是算出用户密码的CRC值,加密后隐藏在密文里,而密码检测就是用计算的用户密码CRC值和原先算好的值进行比较,这样就可以知道密码的正误了。
  实际上程序做的任何密码检测工作都可以被穷举攻击所利用,用户密码长度有限,计算其CRC值是很快速的,所以破解者可以利用你的程序来攻击你,正是利用了加密软件的密码检测部分来破解你的被加密文件,穷举攻击是这样实现的,当读懂了你的程序后做一个接口程序专门利用你程序中检测密码正误的程序段,变破解密文为破解密码,密码出来了密文自然就破解了。这时你用的加密算法再好也没有用,实际上根本不用破解密文。这和搬起石头砸自己的脚没有两样,是非常愚蠢的事。
  明智的做法是不要给破解者提供这项服务,做法很简单,只要用户密码符合基本要求,如最少字符数限制等,就可向下运行进行解密操作等,当然密码正确解密成功,密码错误解密失败,若想做解密成功或失败的判断,要放在解密工作完成之后,这样就可以避免被其利用了,具体处理就不细说了,也许应备份密文等已备失败后重新开始。
  这样做穷举仍然可以进行,但其效率不见了,本来那种效率是你自己提供的,只要不提供就没有效率了。看看这时穷举攻击者的情况,首先解密操作时间必须花费,文件大时这个开销就不小,2)需要自己判断解密是否成功,如果不知道文件性质这也是很困难的事。做粗了容易漏网,做细了耽误时间。如果没有特征根本就无法判断了。3)如果解密失败自己动手打扫战场重新开始吧,这也需要时间。
  关键是自己不要做密码正误的检测,那样破解者就无法盗用了,只要加密软件不出卖自己,穷举破解就无法得逞,也不会出现什么破解的时间表那种可笑的东西,穷举破解休矣,就看你怎么做了。

猜你喜欢

转载自blog.csdn.net/sjd163/article/details/8225060
今日推荐