您的位置:首页 > 其它

为什么只能重置密码不能找回密码?

2016-03-02 13:08 447 查看
最近一直在学习Java安全方面的知识,就身份认证这块谈一点自己的心得体会。

身份验证,顾名思义,就是对某个人的身份进行验证,我们日常QQ,微信等登录认证,我们学校教务系统的登录认证,我们银行的身份认证等等,Internet的快速发展导致我们很多的业务都从线下转到线上,所以网上的身份认证问题也越来越多,问题也越来越多,当然也有对应一些好的解决方案,也就是下面我要说的。

最常见的认证方式大家众所周知,就是利用用户名+密码的认证方式进行身份认证,这种方式最大的优势在于便捷性,也就是只要记住自己的密码就行,对应的,该方式安全性极低,而且相信大家都习惯将所有的密码都统一成一两个(你敢说你所有的银行卡密码不是同一个?)。

再高一格档次,银行业务,如果只是用UserName+Password就能办理各种事,那么这也太不靠谱了,密码一旦泄漏,你的钱就都没了,所以,银行对于安全的需要要高于一般的软件行业,目前银行采用的模式一般是双因子认证模式,就是利用两种因素来判断你就是你,第一个当然是用户的支付密码,跟第一种认证模式一样,在此基础上,加入另一个用户独一无二的标识,例如工行推出的口令卡,动态令牌,U盾,短信密码等产品,在用户申请的时候给用户一个独一无二的标识物,这样在进行身份认证的时候除了用户的静态支付密码,还要求输入一个动态密码来进行认证,也就多了一个层次的保护。

最高一个层级级别的认证方式就是利用生物指纹来识别用户,据说一个人的指纹,视网膜,声音等生物因子是独一无二的(不是学生物的),这种技术一般都应用于例如国家级的身份认证,防伪性很高。但也逐渐在大众中开始应用,利用Iphone的指纹识别。

总之,提高身份认证的安全性一般都是从两个方面进行,一个增加认证要素,也就是多几样能够证明你身份的东西,除了密码还可以是U盾,指纹等等,另一个方面是提高认证因素被破解的难度,例如U盾,动态令牌一般很难伪造,而且有较好的防破坏机制,人的指纹不可复制(剁手不算),现在在设置密码上很多公司都有自己明确的要求,你应该自己看一下Apple公司对于密码的要求,一堆。提高密码复杂度是为了防止暴力攻击。

下面再说一下,密码存储问题,因为现在的网站太多了,很多需要注册,又需要密码。有时候密码多了,根本记不住,次数多了我发现了一个规律,在早些年的时候,很多网站提供的找回密码的选项,而现在的做法是在你忘记密码的时候,让你重置密码。我们学校的教务系统,一年也就登个一两次,大三的时候教务系统升级,要求更改密码,增加密码难度,也就是包括字母、数字,特殊符号什么的,不再允许6位数字,当时随意设了一个,到学期末再去登教务系统的时候早忘了密码是啥了,还没有重置密码的选项(真心得吐槽我们学校的各种信息系统,几乎好多子系统都不让改密码,害得我网关密码给了人,相当于把这个帐号卖了一样),所以只要去了教务找老师重置密码,当时就看见老师就输了我的学号,我的密码就显示在屏幕上的(明文),原来是我的QQ密码。所以,这就引出我要说的话题,那么这位老师,或者具有权限查看密码的人不就都可以代替我在教务系统上做任何操作了么,当然了,在这里是无所谓,老师们也不会恶意给你搞破坏。但是在互联网上,这就尤其重要了,一个公司总得有几个管理的人,得给一些人权限,但是你却没有办法保证他们不会乱用,毕竟他们只是员工可以随时走人。所以,相应的解决方案就是,不再将密码等敏感信息以明文方式存储,代替存的是密码的摘要值。

简单说下什么是摘要指,根据一段数据,进行摘要计算出固定长度的摘要值,其特点是,单向运算,能根据数据计算摘要值,根据摘要值计算数据几乎是不可能的;不重复,意思就是不可能根据两个不同的数据计算出相同的摘要指(现在已经不行了)。

用户之所以需要密码,只是为了进行认证,对于银行也好,学校也好,企业也罢,他们根本不需要知道用户的密码是多少,只需要知道他登录的时候输入的密码对不对就行了,所以,现在密码的存储模式为只存储摘要值,用户进行登录的时候,将用户输入的密码进行计算得到摘要跟存储在数据库中的摘要是不是一样的,就能知道你输的密码对不对了。

所以,很显然可以很好的回答为什么,我们现在只能重置密码,不能找回密码。因为人家也不知道你的密码是啥,只知道你的密码对不对而已。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: