加密,哈希,盐盐:这对安全意味着什么?
#安全 #node #backend #网络安全

对于Twitter的所有批评,没有平台将其击败为自由联系和从世界各地的业内专业人士学习的最佳地点。

您可以从不同的角度看待事物,使您可以有效地进行三角剖分,并对现实获得全面的理解。

上周,Dominus Kelvin分享了此推文,询问后端工程师如何处理密码用户托付给它们。

Dominus Tweet asking Backend Developers how they deal with Passwords

由于答案很明显,因此您会认为这只是维持Twitter参与的另一种尝试。但是,如果您浏览了评论部分,您会发现,并不是很多后端工程师知道 了解这些术语的含义,差异和含义。

这就是本文旨在解决的目标。

读完这篇文章时,您应该以剃须刀清晰的清晰度理解这三件事:

  1. 哈希和加密之间的区别。
  2. 在数字世界中的目的和使用方面的区别。
  3. 在被哈希之前的重要性和需求提取...

安全地保护您的客户密码

在纯文本中存储用户密码是绝对的禁止,因为它将为恶意个人开放私人数据的闸门。

这很明显。

因此,我们将在这篇文章中讨论的每种方法的全部要点是将纯文本密码渲染给您,以使其在天文学上所需的努力。

多年来,各种方法都浮出水面以应对这一挑战,但是两种方法都超过其余方法:加密和哈希。当我引导您度过一段旅程时,请系好安全带。

加密

在最基本的形式中,加密是将纯文本密码转换为我们称为密码文本(加密数据)的过程。它需要两件事:

  1. 加密密钥
  2. 加密算法

将加密视为以希腊语发送消息。只有那些了解希腊语的人才能解释它。英语,约鲁巴人,日语说话者可以看到并阅读它,但他们不会理解。

现在想象他们可以访问希腊翻译人员,他们可以帮助他们将标志和符号映射到各自的语言中,以便于理解,这就是加密密钥的作用。

使用正确的键,您可以解密加密的文本。

这就是WhatsApp的方式确保您的对话保持机密,保护他们免受窃听者,黑客或任何试图访问您的私人消息的未经授权的政党的侵害。

Whatsapp Encryption Key

这就是为什么您第一次与收件人聊天下面的消息,而您俩都不会同时在线分享加密密钥。

Image description

加密的变体

  • 符号加密:相同的密钥用于加密和解密数据。 AE,用于验证金融交易,VPN,通信应用等是一个示例。
  • 调节加密:在这里,使用不同的密钥来加密和解密数据。 RSA就是一个例子。 Okta的主要开发人员倡导者Andrea Chiarelli让我们知道这两个密钥受复杂的数学关系束缚。 Read more here

哈希

这是使用数学算法将文本的文本插入固定大小的字符字符串称为hash value/code的过程。

有趣的是,这是一个单向,不可逆的过程

Reginald Amuzu说,这就像将数据扔到神奇的搅拌机中。实际上,输入的简单更改将导致完全不同的哈希值,如下所示:

danielasaboro: $ 2a $ 12 $ vbajyqqclnrwehagaekxjea01zmgyzpxc0h9.8p773rdjbnkygd2w

danielasab0ro: $ 2A $ 12 $ zpcwiocnih.c511wsiaknuto.oy0v1s47q2ydsa5szzq6cd9o2jt2

我所做的只是将'b'之后的'o'更改为“ 0”!

由于没有密钥,您如何确认用户密码是他们输入的内容?好吧,您只需哈希提供他们提供的密码,然后比较哈希值/代码。这样可以确保初始密码仍然未知。

据点跌跌撞撞

就在11年前的这个时候,在俄罗斯黑客论坛上发布了总共650万Hashed密码believed to belong to LinkedIn members。他们发布了数据以获取破解它的帮助。

它们被哈希被哈希,但是在一周之内,一半以上被破解并以明确的方式使用。黑客是如何将其拉开的?

使用预先计算的哈希表,将我们带到了一个称为盐的安全层。

盐:它如何工作?

盐盐是一种用于密码存储的技术,可加强哈希密码的安全性。它涉及在哈哈之前向每个密码添加一个随机值(盐)。

盐值与哈希密码旁边存储。而且此过程确保即使两个密码相同,它们的哈希也将是唯一的。

腌制可以防止攻击者使用预先计算的表(彩虹表)快速破解密码,因为**每个密码都有独特的盐**(额外的复杂性层,使攻击者确定原始密码更具挑战性。 /p>

值得庆幸的是,像bcrypt这样的包装使此过程无缝。

My code for salting and encrpting passwords before they are saved to the db

您需要的只是:

  1. 生成盐
  2. 然后哈希密码和盐。

这很简单。

但是毫无疑问。

名称“ bcrypt”源自术语“ Blowfish”和“ Crypt”,该术语是指设计中使用的加密算法。 Blowfish是Bruce Schneier于1993年开发的一种对称加密算法,以其安全性和效率而闻名。

但是,

bcrypt并未直接使用Blowfish用于哈希密码。取而代之的是,它采用了一种改编的井水算法形式来生成哈希。 BCRypt中使用的特定修改和参数使其适用于密码哈希和存储。

在BCRypt设计中将洪水掺入的选择主要是由于Bryppt在BCRYPT时期被Brestfish作为强大可靠的加密算法而闻名。使用Blowfish的使用激发了对BCrypt安全性的信心,并选择了该名称以反映其与基本的加密原则的关联。

哈希不是一种加密形式

它们是密码学领域的两个不同概念。

正如我之前显示的那样,加密使用算法和键以可逆的方式转换原始数据,从而使数据通过拥有正确的解密密钥的授权方将其解密回到其原始形式。

另一方面,Hashing是一个单向过程,它获取输入数据并产生固定尺寸的字符串字符串。它们旨在为每个唯一输入产生一个唯一的哈希值,并且通常是不可逆的,即在计算上不可行以从哈希值中检索原始数据。

加密旨在保护数据机密性,而哈希主要用于数据完整性验证和指纹。他们不一样。

持续一秒钟...您听说过有关辣椒吗?

思想的食物:

Food for thought