首页
社区
课程
招聘
[讨论]判断密码正误
发表于: 2015-12-10 20:38 7396

[讨论]判断密码正误

2015-12-10 20:38
7396
  如果在文件加密程序里有判断密码正误的程序段,并在使用中能报告密码错误,多少都能被破解者利用,如果此功能做得很完善,则破解者甚至可以穷举到真正的密码,而不用做分析密文那种事情了。原因是该程序段能帮助破解者筛选掉所有错误的密码而得到正解。
  这样加密程序不是将自己出卖了吗?!所以该功能不能做得太完善,例如用户密码有 6个字节,你要将 6个字节的CRC值,作为判断密码正误的标准就是太完善了,有可能出卖自己,如果你只用其中两三个字节的CRC值作为判断密码正误的标准就比较明智,这样既可以淘汰大量错误密码又不至于出卖自己,破解者即使蒙对了用户密码的前几个值,程序不报错了,但仍然不能解密密文,因为后几位用户密码还是不知道,并且此时程序也不提供判断了,破解者只能自己判断,而这是费时、费力的事如果余下的位数多基本不能成功。
  上面的办法虽然可用,但仍帮破解者筛选掉了许多错误密码。如何做更好呢?一种方案是以某种小概率事件来代替判断密码正误,例如从明文中随机选择一点的概率是1/N,选择两点的概率是1/N×1/N,...,计算选择点的CRC值作为判断密码正误的标准,这实际上是判断明文的一部分了,这样必须在文件正确解密的情况下才有可能通过判断并且概率很小,这样破解者就无法绕过解密文件所必须花费的时间,使得穷举效率低下而成功的机会渺茫。
  或者根本就不进行密码正误或者解密正误的判断,密码对则可以成功解密,密码错得到错误的处理文件,这样也是可以的,但是如果是原地加密或解密,则可能将密文破坏了,所以此时结果文件更名比较好,发现错误你可以继续操作。这样窃密者可麻烦了,加密程序不提供丝毫的服务。自己编程序判断结果吧,1)必须花费完成解密的时间。2)自己判断结果粗糙了可能漏网,细致些则更费时间。
  凡是以用户密码的CRC值或明文的CRC值做密码正误判断的都是严重出卖自己行为应当杜绝。

  在文件解密时能在用户输入密码后给出密码正误的判断是合情合理的,如何在安全的前提下做到这一点呢?实际可以在技术层面上解决这个问题,计算机运行速度快即便是完成解密运算也是很快的尤其是小文件,要想安全必须要有一定的运行时间,这一点可在用户密码处理中实现,基本思路是先测速,根据运行速度和文件大小等情况,确定某些可多可少的循环必须达到一定时间的耗费,例如对最小的文件处理时间也要至少 2秒以上,在此基础上可以检测解密文件的 CRC值,做出密码正误的准确判断。
  如果采用了其它防穷举攻击措施,穷举攻击基本不能用的情况下,检测解密文件的 CRC值,做出密码正误的准确判断也是可以的。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
例如你用winrar加密,如果输入错误的密码,程序将弹出“WinRAR诊断信息”对话框报告你密码错误,这就帮助了你的穷举攻击,你可以试验下一个密码了,直到不弹出“WinRAR诊断信息”对话框,这时你可以在以文件名命名的文件夹里找到解密文件。
这样加密程序实质上帮助了穷举攻击,变相出卖自己,所以行为比较愚蠢。简单的处理方式是不检测密码的正误,留给用户自己处理。这样将使攻击的效率大为降低,以至于没有时间成功....。
2015-12-11 21:03
0
雪    币: 4889
活跃值: (2270)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
难道不按你说的方法做的话,破解密码就变得容易了吗?
请教兄台对下面的附件压缩文件密码是否有招可解?
个人观点:你这种方式只会让软件的易用性大大下降吧。
上传的附件:
2015-12-12 14:44
0
雪    币: 1556
活跃值: (853)
能力值: ( LV9,RANK:320 )
在线值:
发帖
回帖
粉丝
4
站在不一样的角度看,也许有些道理.
可是与其这样,为什么不可以开发更加安全的加密算法呢?
希望你的研究不要和实践脱节:D

看你在密码学方面发了一些帖子,继续加油吧:)
2015-12-12 15:09
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
to:lionnnn、红绡枫叶
按我的做,破解要困难许多。不按那样解密也不容易。
确实有碍程序的已用性,但加密软件的要务是安全第一,而不是易用性。并且对正常的使用者几乎没有妨碍。
让破解者自己分析结果好处多多,1分析粗糙可以漏网,2分析细致时间用不起。
加密容易、解密难,实际上没有算法都无法破解,举例说明:直接使用用户密码生成种子,使用MT19937生成密钥数组加密文件,就无法破解.....
2015-12-12 17:24
0
雪    币: 100
活跃值: (323)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
在一开始用户秘钥那快就可以暴力尝试了。不用关心你随机算法生成的随机秘钥数组。
2015-12-13 12:24
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
不验证用户密码或明文的正确性,也就是密码对不对都有密文输出,对分组密码来说还有个限度可以尝试穷举攻击,对流密码来说是没有限制的,密码长一些你是没有胜算的。
而且分析结果那么容易吗?如果明文本身就是乱码,可能你都找不到判断标准。
2015-12-14 03:54
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
也可以不牺牲易用性,一楼说的部分检测密码或文件正误就可以了,这样密码错了可以报告给你,而穷举攻击即使过了这一小关也是在做无用功。
2015-12-18 07:12
0
雪    币: 10014
活跃值: (2012)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
9
欢迎继续讨论。
2016-1-21 00:17
0
游客
登录 | 注册 方可回帖
返回
//