计算机该如何暴力破解

    如果你是一个程序员,你要去暴力破解一个已知账号的密码,有两个思路。为简化讨论,我们假设密码是6位数字。一种办法是从000000开始每次加1,一直尝试到999999,这被称为蛮力破解,也是很多人一开始就能想到的办法。另一个办法是将所有可能出现的密码写到一个文件,此文件被称为字典,然后程序一个个去读,这被称为字典破解。哪个办法好呢?

    是字典破解好,要想理解为什么字典破解好,需要先明白为什么蛮力破解不好。蛮力破解看起来很美,理论上不管密码多复杂最终都会被程序“揪出来”,只要给我足够的时间。但问题恰恰就出现在时间上。对于现在世界上任何一台计算机来说,包括运算速度天下第一的天河二号在内,蛮力破解都不是一个好的解决问题的办法。

    在计算机世界里,解决问题的办法被称为算法。衡量算法有两个指标,时间复杂度和空间复杂度,说白了就是运行时间是多少和需要占用多少内存。这里我们只讨论时间复杂度。前面的蛮力破解,其实就是在所有的可能的答案里面一个个穷举。在这里小致提醒大家,按照穷举法设计的算法都不是好的算法,因为随着算法输入规模的增加,算法运行时间将会是指数级增加。对不起,这里又出现一个专业词汇叫“算法输入规模”,简单来说就是输入数据的长度,在上面的例子中密码是6位的,输入规模就是6位长度。它的运行时间是多少呢?从000000到999999,共10的6次方个数,所以运行时间可以认为是一百万。那问题来了,如果密码长度是7呢?一千万。8呢?一个亿。可以看到,密码长度每增加一位,运行时间是指数级增长的。小目标是轻松达到了,但是电脑可快要累死了。对于一个算法,他可能面临的输入规模是不确定的,所以必须控制好输入规模和运行时间的关系,指数级增长的运行时间对于任何一台计算机来说都将是灾难。关于指数级增长的威力,还有一个例子你肯定听说过:印度人Sissa发明了国际象棋,国王为了表示感谢答应能够满足他一个愿望。充满智慧的Sissa对国王说,请在棋盘的第一个格子里放一粒稻谷,第二个格子里放两粒稻谷,第三个四粒,第四个八粒,然后依次类推,下一个格子里面的稻谷数量是前面的两倍,直到2的63次方个。结果这位国王成为了也许是领教指数级增长威力的第一人。因为满足Sissa的请求一共需要18 446 744 073 709 551 615(2的64次方减去一)粒稻谷,能一口气念完我服你。这些稻谷足够将印度国土覆盖好几层!

    黑客不会为了破解一个密码而采用第一个算法,因为只要稍微增加密码长度,等到下下辈子也不一定能破解出来。所以黑客会采用第二个办法,字典破解。这个算法的时间复杂度是输入规模的一个多项式,在这里就是一个最简单的一元一次方程,Y(算法运行时间)= X(数据字典的密码数量),这样的时间复杂度被称为多项式时间。在计算机世界里,拥有多项式时间复杂度的算法才能认为是有效的算法。如果小明是计算机专业的学生,但是只能写出第一个破解算法,那么他的算法课最高不会超过59分。

    好了,到此为止今天的课程就可以结束了,但是关于这两个算法,还引申出来两个问题,感兴趣的同学可以继续留下来听,后面还有彩蛋。

1.有没有就是要蛮力破解密码的?

    蛮力破解虽然运行时间吓人,但是也有好处,那就是只要有充分的时间就肯定能找到答案。就好像沙漠里面有一粒是金子,只要一粒粒数肯定是能找出来的。过去四十多年来,计算机的运行速度每18个月就翻一番,这同样是指数级增长的运算能力。对于一些高价值的目标,灰色世界里从未停止过对它们的攻击。近年来美国技术标准局已经强烈建议把RSA(一种广泛使用的加密技术)公钥从1024位提高到2048位。而更让人不安的是,量子计算机近些年已经取得大量进展,如果量子计算机发展成熟,RSA公钥将被轻松破解。换句话说,信息安全最底层的根基正在动摇,新的更加安全的加密技术的出现已经刻不容缓。好在我们国家在这方面走在了世界前列,中科院潘建伟院士主导的量子加密技术正在稳步推进,前段时间还发射了一颗量子通信加密卫星。在这里给大家一个友情提示,可以去关注下这方面的题材股,等待向阿尔法狗一样的量子题材爆发。这就是彩蛋,拿走不谢。

2.我们该如何设置密码?

    据可靠消息,国内的黑客已经建立起容量庞大的密码字典,包含了14位长度内的任意字符和数字组成的密码,这些字典甚至从网上都可以下载。所以,对于重要账户的密码,密码一定要仔细设置密码,越没有规律性越好,而且密码不能保存在任何地方,除了你的大脑。这里教各位一个设置没有规律性且容易记住密码的办法,现想一句话,例如“我这个月要减肥五斤”,取每个字第一个字母就是一个看起来没有规律性的密码啦:wzgyyjfwj。要想安全,总要交出一些便利,它们是一对矛盾,没办法相容。

如果想和我愉快的玩耍,请关注公众号致新(zhixin991),或者扫描二维码


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值