您的位置:首页 > 其它

加密程序设计与防范穷举攻击——密码转义法

2008-01-01 20:45 260 查看
         本方法旨在有效扼制穷举法(暴力破解)的攻击,使其难于实施。
         现在普遍的密码输入形式,是输入一些字母、符号、数字或汉字作为密码,有些甚至只输入些数字,转义法是将一些密码元素赋予新的含义,例如字符a,你可以定义是某个整形数98765,当程序进行密码处理的时候将a作为98765进行处理,这样原来的a从代表97(ASCII码值),一下子增加了数千倍,信息量也随之扩大。对穷举攻击来说它不知道有限位的密码中,哪一个是转义的,转义了什么,为了不遗漏它需要全部列举所有可能,工作量将以天文数字增长,最终迫使其放弃。
         转义法的输入方式:例如以空格作为分割符定义四个转义码
                                a=98765 %=23.45 F="转义码good" jb=1294967294
         程序在处理密码时以一定规则判断转义数据的类型。因为有些数据可以归并多种类型。这些附加信息可以另开输入框输入。如果键盘过于简单需要设计更特殊的方式。
         可能有这样的疑问,转义法无非是增加密码长度的变相手法,其实不然,靠增加密码长度是起不到转义法作用的。增加密码长度用增加穷举的长度和花费更多的时间就可以破解。而转义法可以使破解无从下手。我们看看当使用转义法时,使用穷举法的窃密者将怎么做,先假设只使用一位转义码,并在其它输入框里输入,假设窃密者通过读程序知道如何设置字符转义,假定他知道只有一个转义码,并且转义为无符号整形,为了不遗漏每当密码输入框穷举一个新的密码时,他需要把85个可输入ASCII码的每一个从0试到4294967295,也就是
                                85*4294967295=3.85乘10的11次方
       就是说破解运算次数增加了3.85乘10的11次方倍。这只是单字符情况,多字符组合和汉字参与将更加复杂,而实际如果使用多个转义码呢?要是每位可能转义多种数据类型呢?要是 F="转义码good"这种字符串形式的转义码,长度还不好估计了,怎么组织数据也是难题。窃密者除了直接偷窃密码外还有别的办法吗?
        转义法是一种附加的选项,就是你可以用也可以不用它。关于转义法的使用,从上面的例子看,除了极简单的外并不好记忆,象其它密码一样你可以记在纸上或加密保存在文件里,为了简便较长时间使用一样的转义码,或者简单的转义码,都可以。关键是它的威慑力量,有了它破解者不考虑它绝对不行考虑它也不可能完善地处理。你的程序有了这种功能,作为慎重的窃密者再不能满怀希望的使用穷举法了,只能无可奈何的试试看。作为加密者至少用一个F="转义码good"这种形式的转义码并且尽量长些如果没有内奸基本就可以高枕无忧了,而加密程序设计者,要用转义的子字符串参与加密、解密的重要运算和其他密码一起决定文件加密程序的走向。另外灵活设计输入方式,允许在输入转义码的位置输入普通密码(这就是双密码了),因为双密码也是一种很好的选择,但双密码只是增加了密码的长度理论上是可以破解的,所以应该让其长些。方式越多破解者越难于处理。
         参考输入方式设计。穷举攻击都是设法使攻击自动化,力争提高速度。在加密程序输入方式设计上可以让其落空。这样设计输入:程序运行开始时,转义码输入窗口是看不见的。在主密码的输入过程中随机打开“转义码输入窗口”并声音报警、延时让你输入“转义码”,这时可以输入转义码也可以不输入然后继续输入主密码此时“转义码输入窗口”又看不见了。这样只有人才能操作,机器很难跟踪,即使可以跟踪也是个失去使用价值的慢牛。
         对抗穷举攻击的方法多种多样。使用一个就足以使其瘫痪,转义法算是之一吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  加密 破解 解密 工作