六、我设定密码连自己也不能保证解除
承上文,如果你使用的密码生成器的变化规则和每种密码生成器使用的加密法被人知道了怎么办?我建议大家设定密码生成器的变化规则采用随机原则,但是这样还会有一个问题,我们自己怎么才能知道每次采用哪种密码生成器?如果每次将采用的密码生成器的编号和加密后的密码已打印出来如何?Very bad!
这里提供一种思想:连自己都解不出的密码才是最安全的。我们可以不打印出来每次密码生成器的编号,哈哈,这样就没人能左右我们了。
但是要这样不能解的密码有何用?不能妄下结论!其实我们是给这种密码的破解成功率加上了一定的概率。举个例子:
现在你要是有8种密码生成器,每次你的系统都给你提供一个加密的密码密文,这时就连你自己都不知道该用哪种密码生成器,你能进入系统的概率是1/8*1/8=1/64,看到了吧,可以破解的。虽然这对于你自己进入系统造成了困难,但是设想一下,如果不法分子想进入这个系统,即使他拿到了所有的加密规则,但是他不知道是哪个,他肯定将每个都试一遍,但是他成功的概率是多少(假设如果失败,后面他就不用那个规则再去尝试)?
第一次成功的概率:(1/8)(1/8)
第二次成功的概率:(7/8)(1/7)(1/7)
第三次成功的概率:(6/8)(1/6)(1/6)
第四次成功的概率:(5/8)(1/5)(1/5)
第五次成功的概率:(4/8)(1/4)(1/4)
第六次成功的概率:(3/8)(1/3)(1/3)
第七次成功的概率:(2/8)(1/2)(1/2)
第八次成功的概率:(1/8)(1/1)(1/1)
总的结果很复杂,我就不具体给出了,但是我们容易验证不法分子成功的概率小于1/8。
这还是在不法分子知道你的全部密码信息的情况下,但是如果你提高密码生成器的数量,这个值降低的速度将会更快。
对于你自己,这个值肯定会高得多,因为你非常肯定加密方法就是其中的一个,而最好的破解方法就是死守一个破解法,这样根据大数定律你的成功率会成为1/8,要是每次都变动的话则将是1/64。
七、今天不适宜解密码
对于上述规律,如果你觉得自己破解密码很费功夫,这里我们提供一个可以提高你解密的概率却不影响不法分子破解的方法。
你需要做的就是设定一个和时间有关的密码生成法,比如你可以在每个月的固定一天或是每天的某个时间段只采用某几种加密法。
具体来说就是:你可以设定每个月的3号20:00时——21:00时作为系统管理的最佳登入时间,只有在这一天的这个时间段系统随机产生密码所用的密码生成器只有4个,而平时是16个或是更高,而不法分子平时基本不可能进入系统,即使他知道了所有密码生成法则,如果你平时想进入系统,显然也是可能的,只是平时进入系统会更加费工夫。
八、总有一天可以解除密码
上述所述的方法不仅适用于系统密码,甚至可以推广到博弈论中的一个经典例子——李尔王的难题。
告诉我,我的女儿们——
在我还没有把我的政权、领土和国事的重任全部放弃以前,
告诉我,你们中间哪一个人最爱我?
我要看看谁最有孝心,最有贤德,
我就给她最大的恩惠。
——莎士比亚《李尔王》
李尔王担心,等他年纪大了,不知道他的孩子们会怎样对待他。让他深感遗憾的是,他发现孩子们并不总是遵守自己的诺言。除了关爱与尊敬,孩子们的行为还受到获得遗产可能性的影响。
让我们看一个实例,说明遗产和孩子们的问题以及和我们密码设定的联系。
假定父母希望孩子们每周探望一次。为了给孩子们一个正确的激励,父母威胁说谁若是达不到这个标准,就会失去继承权。他们的财产将在所有符合要求的孩子们之间平均分配。(除了可以鼓励探望,这一规定还有一个好处,即可以避免鼓动孩子们为了争取较大份额的遗产而频繁探望,导致父母失去私人空间。)
孩子们意识到父母不愿意剥夺所有孩子们的继承权。于是他们串通一气,一起减少探望的次数,最后降低到一次也不去。
解决这个问题,我们提出一个方法:
父母可以制定如下规则:
将财产平均分配,但是每份财产都设定本文那样的密码(密码生成器的种类为父母希望孩子们来的总次数),然后告诉孩子们每次他们来就可以尝试破解一次,注意,只能一次,这个可以让律师来监督。若果孩子不来,即使父母死后,他也必须保证每周都来一次,为的是破解密码。这样一来,还不如按照规则来执行。
注意:在这个规则中,父母没有剥夺孩子的继承权,而财产也能保证公平的分配。而我们的密码就担任了上帝的角色。根据大数定律,他们来的天数应该为设定的密码生成器的种类数,即使有幸运的人可以破解,但是毕竟是特例,对于多个子女来说必然有大部分人需要按照预期的规则执行,还有少部分幸运的人和非常倒霉的人。大家可能觉得这个规则会对某个人不公平,比如一个每周都可以按时来的人却没有真正成功的破解密码。这里我引用一句名言:世上没有绝对的公平。
本文讲述了一种新的密码的设计思想,但是这种思想仍然还是不太完美,我们还要继续完善它,请看下一章。
生明:本人没有看过专业的密码学书籍,只是凭借自己微薄的数学知识和菜鸟级的系统设计经验给出本文。