生活中我们经常要用到密码,尤其是在这个信息爆炸的时代,例如银行卡的密码由六位数字组成,支付宝的密码也是由若干字符组成,然而这些所谓的密码是否就是“真正”的密码呢?或者说它们的本质究竟是什么?其实这些数字和字母符号等只是作为个人取款的一个凭证,它本质上是一种身份验证机制,只有你输对了密码才能取钱,输错了就不能取钱,对错仅仅是这一串字符的差别,所以,它们并不是真正意义的密码,严格的叫法应该叫做“口令”,对应的英文单词为Password、Passcode和Pin等。
所谓口令,就是一些过关的证据,由它来决定个人能否通过某个检测,例如过去抗战时期的暗语和暗号等等。口令并不真正具有机密性,除了你之外,银行本身也知道你卡的密码。还有就是,口令是可以在不知道口令的情况下绕过的,比如某个黑客或者电脑高手可以侵入一个企业的内部,获取一些有价值有机密的信息等,理论上是完全可行的;或者我们可以把口令比作一把宝库的钥匙,只有拿到了钥匙,你才能打开宝库的门,然而就算我们没有钥匙,我们也能够利用工具把门撬开或切开,也照样能拿到里面的珠宝。现在看来,口令其实只是通往目的地的一道门。
现在来说一下密码。密码究竟是什么呢?密码对应的英文为“cryptography”,意思是一种复杂而又庞大的信息处理系统。通俗地讲,密码就是传递信息的方法。现在让我们举一些简单的例子来说明什么是密码。
首先看下面这些密码:
1.Windows系统登录密码,
2.WinRAR压缩密码,
3.路由器管理登录密码,
4.无线网络密码,
5.Word文档打开权限密码,
6.网站邮箱密码,
7.QQ密码。
对于以上这些密码,哪些是密码(cryptography)?哪些是口令(password)?正确答案为:1367是口令,245是密码。首先看Windows登录密码,它是一种进入系统的验证方式,它虽然是经过加密存放的,但是却受win系统登录进程的控制,当你输入密码时,lsass和winlogon进程会负责将你输入的密码和解密后的原系统密码作对比,如果相同则允许进入系统,否则便不允许进入系统。在这个环节,系统进程是知道用户所设的密码的,它知道如何加密以及如何解密或还原。
同样的,这个密码也是可以绕过的,比如用U盘进入PE系统,在另一个操作系统下来清除原系统的密码文件(SAM)的数据。所以,Windows系统登录密码其实是口令。
再看RAR密码,当你要解压一个带有密码的RAR或ZIP文件时,WinRAR会提示你输入密码,这时如果你输入了一个错误的密码,RAR接下来会做些什么呢?它会不会判断你输入的密码是正确的还是错误的呢?答案是不会,因为WinRAR根本不知道你输入的密码的正确的还是错误的,因为世界上除了设置密码的人之外,理论上没有任何人知道此文件的密码。RAR收到密码以后根本不管它,它会一如继往地解压,直到解压后还原了明文,它才开始检验明文的CRC32,如果和解压前WinRAR所保存的原文件的CRC不同,说明有可能是密码错误引起的,这时它会提示一个“校验失败,文件损坏或密码错误”的消息,因为解压失败不一定是密码错误导致的,也有可能是数据本身不完整或丢失部分内容导致的。
这么说来,就算你采用了跟踪的方法绕过了RAR的密码验证机制,比如将不相等跳转指令改为相等跳转指令,欺骗WinRAR让它认为你输入的密码是正确的,这样的结果不过是WinRAR不再提示密码错误的消息,然而解压出来的数据已经完全不是原来的数据,而是一堆垃圾字符,文件里是没有任何有意义的信息的。WinRAR的密码相当于一种编码方式,它将原文按照某种方式编码,这种方式由算法和密码共同决定,从而转换成一种人们看不懂的没有意义的信息,所以你密码输错的话,还原的方式就会是错的,自然还原的数据就必错无疑了。
这就是密码和口令的区别,密码并不是一扇门,而是珠宝本身,只有当密码正确时,珠宝才是珠宝,密码错误的话,珠宝便不是珠宝,而是破铜烂铁。口令可以移去,而密码只能暴力破解,暴力破解需要的是时间,理论上任何密码总有一天会被破解,除了一次性密码本之外,这个下面会提到。
由此,我们对接下来的密码应该就清晰可见了,例如路由器登录密码,密码输错它就会提示错误,这是口令的特征,口令输错一般都会提示,而密码一般不提示,当然也不绝对,例如前面的WinRAR就会提示,或者我自己设计的密码钥匙工具(KeyManager),密码输错同样会提示,这并不代表它是口令,之所以提示是因为还原后的明文的单向散列值和原明文的散列值不一致,所以才会提示密码错误,事实上不一定是密码错误,也可能是文件损坏,而且密码钥匙这个工具用的加密方法是所谓的一次性密码本技术,理论上永远无法破解,因为即使有人声称破解了该文件,但是他怎么知道他破解出来的就是最初的数据呢?或者是完全错乱的数据?他永远不知道他破解成功了还是破解失败了?这是个悖论。一次性密码技术使用的方法是Xor(异或)运算,原理很简单,却永远不能被破解,不过由于该方法安全性虽强但不灵活,所以没有被广泛使用。
而无线网密码和路由器登录密码完全不同,你在输无线网密码时即使输错了也照样能联上路由器,但是却上不了网。因为无线网加密的是信号,无论你输对输错它都还原,只不过倘若你输错了它就无法还原到真实的网络数据,所以你联接的其实是一条死胡同。
Office密码我们遇到的比较多,网有有一些移除office密码的软件,几秒钟快速去除密码,试了下还真可以,这是什么原理呢?其实“移除”这个词用得不确切,应该用破解这个词更加贴切,Word默认加密方式的密码范围是256^5,也就是5个字节。有人将5个字节的数据全部遍历,生成共几个TB大小的文件,放在服务器上,然后破解时程序先从本地获取doc或xls等文件的几个字节数据,然后发送到服务器上查找密钥,找到后返回用该密钥解开文件。
注意这个找到的密钥并非一定是文件原来的密码,然而它同样可以打开加密的文件,因为密码有可能是重复的,两个密码可能指向同一个密钥。无论你密码设置得再长,密码的密钥总会在这256^5中找出来。最后两个邮箱密码和QQ密码就不用多说了,它们都是口令。
|