我的密码(一)

一、静态密码——你的密码就是如此

如果你想设计一个系统,这个系统不是每个人都可以进入的,最直接的想法就是:我要给这个系统设置一个密码。

但是你的密码安全吗?不要急着回答,我所谓的安全是指一个非常了解你的人(知道你所有的密码)能进入你这个系统吗?还有,你能防止密码被暴力破解吗?如果你忘了密码,再不给系统留后门的情况下能找回来吗?

就让我们来一一解决这些问题。


二、加密算法和密码的结合——你可以忘记密码了

RSA算法

1、密钥生成

(1)生成两个大的素数p和q;

(2)n=p*q;

(3)m=(p-1)*(q-1);

(4)生成较小的数e,使e与m互质;

(5)生成d,使d*e%m=1,%代表求余数;

至此公钥为e和n,私钥为d和n。

2、加密过程

M为要加密的信息,产生密文C的公式为:

C=M^e%n

即p的e次方除以n求余,可见加密是用公钥进行的,加密只牵涉到明文和公钥。至此可以把密文传出去了,这样就是被截获,得到的也只是密文。

3、解密过程

收到密文C后产生明文(解密)M的公式为:M=C^d%n,即C的d次方除以n求余。可见解密只牵涉到私钥和密文。因此从整个过程来看,只要保管好私钥,就可以放心地把密文和公钥公开。

4、举例

密钥生成:

设p=7,q=19。则n=p*q=133, m=(p-1)*(q-1)=108;生成较小的数e,使e与108互质,2、3、4都不对,5是最小的,于是e5;生成d,使d*e%m=1,于是算出d=65。至此公钥e=5,n=133。私钥d=65,n=133。

加密过程:

RSA的原则是被加密的信息应该小于p和q的较小者,所以在这个例子中要指明被加密的数字要小于7,取M=6,则 C=M^e%n=62。

解密过程:

M=C^d%n=6。


利用RSA可以设定自己的密码,且可以自己保留密钥防止密码遗忘。


三、动态密码——让你无法暴力破解

一、设置验证码

现如今大多数网站为了避免不法分子用程序批量下载抢占资源、防止盗号,都给用户的下载、登陆等工作加上了一个验证码,这就是为了防止程序用暴力的方法去盗号和抢占资源,那么你的密码有验证码吗?

二、让密码动起来

如果你的密码可以和验证码一样在每一次输入错误后都会变化,那样你的密码与以往相比,安全性可以大大提高。比如,你的密码按一定的规律变化,第一次为100,如果输入错误下一次就变成101。让你的密码可以随着暴力验证的次数变化,那样就可以大大规避暴力破解的风险。

四、我的密码生成器

何为密码生成器?就是每次内部随机给出一个密码,根据一定的密码加密规则,给出加密后的密码,然后你必须根据加密规则破解加密后的密码,如果输入的密码错误,在下一次输入时就会重置,这样也可以很好地规避暴力破解的风险,而且这样也算是更高级的动态密码,因为这是随机性和加密法的结合。


五、动态规则——让了解我的人看不清

有没有一个非常了解你的人?他大概知道你的所有习惯所有密码。哈哈,父母可以,比如你现在想要一个日记管理系统,你不想让你的父母看到你的日记,但是由于你的父母过于了解你,不管你设置什么密码或是用一定的规则设置动态密码,你的父母都可以破解。所谓知子莫如父嘛。

现在我们来设计一个方案,使用动态密码,且让你的密码的变化没有规则。简单的说吧,准备几种密码生成器,每种密码生成器按照不同的规则生成密码。

假设你有8种方法来生成你的密码,而我们所要做的就是将这8种方法全部运用到你的密码中:

我们可以设置让生成密码的方法按照像动态密码那样变化,你要做的就是让规则动起来,比如第一次用2号密码生成器,第二次用5号密码生成器。这样的话就是再了解你的人也得通过尝试去破解密码,但每次使用的密码生成规则不一样,难度就飙升了。


至此,开头密码安全的问题就差不多解决了,不过这里还是存在隐患的,即使你使用了动态规则来设定密码,如果你设定规则的规律和每种加密规则也被人知道了该怎么办?我们下节再讲。

生明:本人没有看过专业的密码学书籍,只是凭借自己微薄的数学知识和菜鸟级的系统设计经验给出本文。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值