西西河

主题:【原创】也说一下关于密码的问题 -- yhz

共:💬34 🌺46
全看分页树展 · 主题 跟帖
家园 【原创】也说一下关于密码的问题(二)

昨天发完文章就回家了。

今天回来一看,居然是萨老大的沙发,真让人想不到啊。

既然也有好几位朋友捧场,那么就多说两句,关于密码具体的设计吧。

首先,大家最关心的,应该就是银行密码吧?6个简单的数字,就关系到我们的真金白银,不重视一点是说不过去的。

但是正如我的上一个帖子所说的,仅仅依靠6个10进制数字,就想抵抗暴力攻击是不可能的。所以,我们的重点,就是要抵抗猜测攻击上。抵抗猜测攻击,最简单的做法就是让自己的密码具有足够的随机性。但是问题在于,对于大多数人来说,足够随机的密码,其实并不好记。一个两个,还可以。要是到了十个八个,还要分别对号入座的时候,如果自认为自己记得过来的,那么恭喜你,你有足够好的记忆力,可以使用最好的密码策略来保护你自己的财产。当然,下面的文章就和你无关了。

那么,在我们无法记住那么多的随机数,但是又有很多不同的银行账号的时候,怎么办呢?有些人就把所有的账号都设成同一个密码。这当然不是不可以,但是从安全性的角度来说,其实并不太让我们放心。因为如果这个密码一但泄露,那么攻击者肯定会用同一个密码去尝试自己的其它账号。

所以,好的银行密码,应当具有以下几个特征:

一:足够的随机性。这样可以确保猜测者无法通过我们的某些信息把密码猜测出来;

二:足够的差异性。这样可以让自己不同的账号,有不同的密码,一定程度上确保自己的账号不会一损俱损。

三:足够的方便。这点好处不用我多说了。

首先,一个数学原理是:初等的数学变换,是不会带来随机性的。也就是说,如果希望结果足够的随机,那么就只能指望参加运算的因子(密码学中称为种子)足够随机。所以,第一件事,就是要挑选一个足够随机的数字串,而且,这个数字串的长度,必须大于或等于密码的长度。

挑选随机数字串的方法有很多,例如说:

1001n推荐的路上随机挑选的车牌号码(千万不要挑自己的);

或者下载个随机数软件生成;

备选的,不过我个人也不推荐的方案有:

njyd的办公室房间号(大多数房间号都有一定的规律,不够随机);

jet的mm生日组合(要有足够多的mm,才能用此大法,否则一猜就中--不过也说明jet大哥应该艳福不浅吧?)。

因为这个随机数的随机性,直接影响密码的健壮性,所以看似简单,但是我觉得还是不要偷懒。为了这么一点点的侥幸和偷懒而冒一个没有必要的风险,我觉得不大值得。反正,无论如何,找一个于自己认为足够随机6位数字串,然后死死的记住它。这样,我们就有了一个足够随机的种子,来保证我们的结果有足够的随机性(当然,不保证这点,随机性在初等数学变换中不会增加,但是可能会减少)。最重要的是:记住它,并且千万不要告诉任何人,也不要把它记在任何地方

然后,我们要考虑的,就是如何构造一个算法(规则),让自己不同的银行账号表现出不同的密码了。方法当然有很多,但是一个起码的原理是,我们需要另一个数字串和刚才记下来的随机数运算。只要不同的账号,取不同的串,那么我们的目的就达到了。

在这里我个人推荐用银行账号或者银行卡中提取6个数字参与运算。提取的方式有很多,这点上,大家可以充分发挥自己的创造力和聪明才智:

最简单的是取账号的最末6位数字(不要取开头的,因为银行账号几个开头的数字一般有特定的格式);复杂一点的可以是把账号最末一位作为偏移值,然后从最末尾倒推这个偏移值后提取出来。

当然,如果还是觉得复杂的,那么可以用账号A和mmA的生日关联,账号B和mmB的生日关联等方式。

现在,我们有了两组数字串:一组随机的数字串,一组跟随账号的数字串。我们的最后一步,就是找一种算法,把二者合并起来。一个比较正统的方式,就是按位叠加取模法。方法很简单:把两个数字相加的和的个位数,就是结果。这个算法,其实就是十进制版本的按位异或,写程序搞算法的应该都不太陌生。例如说:123456和234567运算的结果,就是357913。这种算法的优点,就是不会丢失随机性,缺点就是对心算能力有一定的要求。

如果觉得自己心算能力不强的,也可以采用替换法--就是把一组数字中取出一些数字来替换另一组数字。例如说奇替换,就是123456替换234567后,结果为133557,偶替换类似。至于是奇替换还是偶替换,可以参考账号上最后一位数字的奇偶性来决定。这种替换法的优点,就是简单方便,而且每个人都可以自己别出心裁的想出一些替换的招数,怪招很多,缺点就是会丢失部分的随机性。

最后,简单总结一下这个算法:

一:找到并记住一个随机数;

二:记住一个和账号相关的数字;

三:把两个数字运算并生成最终的密码。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河