百科问答小站 logo
百科问答小站 font logo



服务器保存用户密码的方式都有哪些? 第1页

  

user avatar   zhu-wang-xiao-miao-o 网友的相关建议: 
      

明文存储

最初的时候,服务器存储的都是用户的明文密码。

当然啦,也不一定是最初,比如CSDN,就属于最近的那种,即使搞个MD5加密这种最简单的保护方法,它也没做。

暴力穷举

明文密码遇到的第一个问题,就是暴力穷举。

如果密码的长度不够,例如只有五六位,那么将所有可用作设置密码的字符进行排列组合,就可以暴力破解了。

当然,这种方法也好办,只需要设置较长的密码位数就可以解决了。

暴力破解的核心是枚举,这种算法的弱点是口令空间巨大,所需的破解时间难以忍受。例如,在现有的128个ASCII字符中,有96个字符可随机选择用于设置口令。假设密码设置为10位长度,那么进行口令破解时所需要穷举的次数便是,如果使用普通的PC机来破解的话,所需要的时间就会极大,更何况,客户端与服务端进行通信过程和口令验证本身,也是需要大量时间消耗的。

不过,问题在于,人类设置口令时是有一定的行为习惯和规律的,不可能设置的和自己毫无关系,因为用户自己也需要记。后续有文章提出观点并证明:只要密码仍然是人类难以忘记的,即使潜在密码的空间很大,它们也容易受到“智能字典”攻击。

字典攻击

这就是明文密码的第二个问题——“字典攻击”。

例如,黑客可以把常见的数字和单词以及其大小写和缩写进行不同的排列组合,还可以发现用户在设置口令时的行为习惯和规律特征,并分析口令和用户个人信息之间的关系,来有针对性的设置口令破解字典规则,这样做可以大大减少破解所需要的空间。

其次,现在互联网论坛和一些地下黑客论坛都有一些之前泄露的密码数据库可以购买,黑客也可以基于先前公开的密码来进行针对破解或者撞库,这种“字典攻击”的成功率可能比上段中单纯的排列组合要更高。

不过,无论是“暴力破解”还是“字典攻击”,都逃不开一个问题,那就是必须得多次尝试,尝试的次数是一个惊人的数字。这时候服务器只需要设置一个简单的登录间隔时间(例如60s一次)或者是登录错误的次数限制(例如银行卡连续三次输入密码错误会锁卡),就可以很轻易的制裁“暴力破解”和“字典攻击”了。

哈希存储

在客户端的爆破猜测被制裁之后,很多人将目光锁定在了服务器这一端,因为无论什么情况,用户输入的密码总是要和服务器存储的密码作比较才能判断正确与否的。

所以,如果能拿到服务器上存储的用户密码,那自然可以做到轻易登录他人账号了。

因此,保存用户的密码的方式变为了哈希存储。

哈希函数的值域是很大的,定义域稍微的改动会造成哈希值至少一半二进制位的改动,因此黑客不可能会去试图穷举整个值域来破解密码。

在得到服务器上经过哈希加密后的用户口令后,虽然不可以暴力破解,但是攻击者可以用相同的哈希函数来重复一遍加密过程,来得到用户的真是密码。

另外,利用“彩虹表”这种{明文:密码}对应值的数据库,可以涵盖大部分的短密钥空间,如果用户密码的长度和复杂度不够高,那么破解密码明文就只是一个时间问题,而且这个时间不会很长。

加盐哈希

如何抵抗“彩虹表”攻击呢?

靠用户自觉设置复杂度很高且位数很长的密码是不现实的

那么,该如何解决这个问题呢?

答案是:服务端帮你增加复杂度

如果用户的密码不再等于他的输入,而是等于他的输入+服务端随机长度的一段字符,那么就会将复杂度提高,且这个值是完全随机的,没法预测,这会极大增加黑客破解数据库的复杂度。

这个所谓的“服务端随机长度的一段字符”,就被称为是加“盐”。





  

相关话题

  单从技术层面上看 FBI 真的破解不了苹果手机么? 
  请教一个https安全问题? 
  ISP给的100M带宽到底是怎么算的? 
  为什么计算机科学如密码学喜欢用 Alice 和 Bob 举栗子? 
  为什么支付宝、国内网银多要装控件,而国外的ebay、paypal、网银很少需要装,是技术原因还是需求? 
  为什么信用卡不用输密码就可以消费? 
  怎么破解学校电脑。知乎大概大神比较多? 
  学校想要我们的手机序列号有什么用? 
  红芯浏览器真的自带了假的证书用以监控 HTTPS 内容吗? 
  如何看待腾讯致歉 QQ 读取浏览器历史:为判断是否恶意登录,已更换技术?这会对用户信息安全带来隐患吗? 

前一个讨论
一加9、9 Pro 和 9R ,应该买哪个?
下一个讨论
你觉得读书重要吗?





© 2024-06-03 - tinynew.org. All Rights Reserved.
© 2024-06-03 - tinynew.org. 保留所有权利