云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

金山云_中邪百度云资源_排行榜

小七 141 0

保持最新的密码安全

保持最新密码的安全性

图片来源:jantik在过去的几周里,一些公司已经看到他们的密码数据库泄露到了网上,他们发现尽管已经做了一些努力来保护他们,但是很多密码还是很容易被发现的。不幸的是,泄露密码数据库是互联网上一个丑陋的现实;整个论坛都是专门针对黑客的,他们合作从文件中发现密码,而且专门的密码破解软件很容易获得。要了解密码存储,最好回到基础知识和一些历史。平淡的存储密码的最简单方法就是将其存储在数据库中。当客户尝试登录并键入密码"supersecret"时,会将该字符串与数据库中的密码进行比较,然后客户可以或不允许进入。当然,以明文(或明文)存储密码是非常危险的。如果数据库被破坏,那么密码可以被读取,每个帐户都可以被破解。尽管存在这种危险,仍有许多公司以明文形式存储密码。有些人试图加密密码,然后在登录时解密。虽然这比数据库中的纯文本密码稍好一些,但这只会给黑客增加一个小障碍:他们只需获取数据库和加密密钥,而且由于密钥几乎肯定与数据库在同一台机器上,所以这就变得很简单了。尽管加密或纯文本密码的安全性较差,但许多公司仍在使用它们。一个确定你正在使用的网站是否能做到这一点的方法是要求重置密码:如果公司能够通过电子邮件将你的旧密码发送给你,那么它的存储就不安全了。散列如果你是跟踪和新的密码安全,你可能会问自己:当某人想登录时,如果你不以某种方式存储密码,你如何测试他们的密码?在您发现加密哈希函数(我将其缩写为hash函数)之前,它看起来确实是一个无法克服的难题。

保持最新密码的安全性

散列函数接受一些字符串(如密码)并将其转换为一个长数字。这样做可以确保两件事:一是不可能做相反的事情(你不能取数字,然后反向运行算法来得到字符串),它生成的数字是唯一的(即没有两个字符串具有相同的数字)。(旁白:在前一段中,我把事情简化了一点。""不可能"应该是"不可行的"(也就是说,你需要有比地球上更多的计算机才能找到字符串)和"唯一"应该是"两个不同的字符串将有相同的数字几乎不可能"。散列函数的工作原理是将要散列的字符串反复置乱以产生一个数字。一个流行的散列函数是SHA-1。密码"supersecret"的SHA-1散列是a761ce3a45d97e41840a788495e85a70d1bb3815(这些数字太长了,它们通常以十六进制而不是十进制写成。十进制数为9555825959719639159186706337115074013348686097045)。"Supersecret"(注意大写字母S)的SHA-1散列值是1b417472fc8e2a0a4d44ed43f874309ca4069099(如您所见不同)。哈希函数用于许多目的,例如检查文件的内容是否没有更改。当你从因特网上下载一个文件时,它的散列值也会被发送,这样你的计算机就可以检查文件中没有位在传输过程中被意外地翻转过。散列函数也经常用在密码系统中,因为不用存储密码,您可以简单地存储散列。由于哈希值不容易反转,因此存储的哈希值是保存密码的一种安全方法。当访问者访问站点时,会计算他们输入的密码的哈希值,并与数据库中的哈希值进行比较。因为哈希是唯一的,他们只能用正确的密码登录。

保持最新密码的安全性

图片来源:ToGa Wanderings不幸的是,仅仅使用这样的散列函数是危险的。尽管最近几周他们的一些公司的密码被破解了。要了解原因,请尝试在谷歌上搜索a761ce3a45d97e41840a788495e85a70d1bb3815。您可能会惊讶地发现,第一个结果告诉您这是"supersecret"的SHA-1散列。简单散列函数的问题在于,黑客只需获取一个字典,然后计算字典中所有可能密码的哈希值。这些大量的预计算散列数据库被称为彩虹表。如果一个密码数据库泄露,那么黑客只需在彩虹表中查找哈希值。在rainbow表中找不到的散列对应于那些创建了长的、复杂的密码的用户,而这些密码不是用这种方式预先计算的。这就是为什么选择一个长而复杂的密码很重要的一个原因:黑客不会已经计算出它的哈希值。即使哈希函数本身不能反转,也可以创建一个预先计算的密码哈希表(特别是对于选择错误的密码)。腌制的彩虹桌的周围是一种叫做盐的东西。假设您选择了密码'supersecret',X公司将使用SHA-1散列密码。与简单地散列密码不同,X公司选择了一个您独有的随机salt(一个随机的字符字符串)(例如"$f2%38h####f23")。他们不计算SHA-1(supersecret),而是计算SHA-1(supersecret$f2%38h##f23),得到33438b91ce09e695923 2f698b7939e6ee1d0712a结果。

保持最新密码的安全性

图片来源:stlbites因为每个用户都有一些随机的盐应用于哈希,所以彩虹表是无用的。不可能用所有可能的salt值预先计算所有可能密码的哈希值。直到最近,CloudFlare一直是这样存储用户密码的。不幸的是,密码破解技术从两个方面受益匪浅:摩尔定律和散列函数的速度。散列函数最初并不是为了保护密码而设计的,它们是为了通过检测变化来检查数据的完整性(请注意,在supersecret中,从s到s的更改会极大地改变上面的SHA-1散列),因此,它们被设计得非常快,非常快。由于计算机的速度随着摩尔定律的提高而提高,散列函数的速度使得消除彩虹表成为可能,甚至在加盐时也可以直接攻击密码。当密码数据库泄漏时,密码破解软件能够每秒计算数百万个密码,并对每个密码应用唯一的salt并检查结果哈希值。该软件可以尝试单词和字母的组合,并计算每个单词和字母的哈希值。这意味着只有长的,复杂的密码才是安全的搞砸。

通过日期

图片来源:4nitsirk解决方案是使用一个慢的散列函数。如果哈希函数本身很慢,那么它会减慢破解软件的速度。如果可以选择速度以便随着时间的推移哈希函数可以变慢,那么哈希函数可以减慢,这样密码破解就不会变得更容易了。经得起未来考验令人高兴的是,具有该属性的散列函数是专门用来帮助保持密码安全的。我们最近升级了整个密码数据库以使用bcrypt。bcrypt就像一个普通的散列函数,但是它有一个额外的参数:除了输入密码和一些随机的盐之外,它还提供了一个开销。决定散列函数的计算时间(从而告诉哈希计算的时间)。随着时间的推移,成本可能会增加(只是一个数字),以跟上越来越快的计算机的步伐,并通过使哈希函数变得越来越慢来保证密码的安全。就像安全的所有方面一样,密码存储也需要不时地检查。正如我们最近看到的,许多公司不花时间升级他们的密码安全性,导致严重的问题。当然,用户也可以提供帮助:密码破解部分依赖于存储密码的算法,部分依赖于密码的复杂性。请确保选择一个长而复杂的密码,不要在任何其他网站上使用它。