哈希函数是在我们以网络安全为中心的世界中最常用的保护数据的方法之一。除了加密之外,散列是更常用的技术之一,尤其是在数据库中。散列是一个相对简单的过程,用于模糊数据并确保其无法转回纯文本格式。这确保了数据得到真正的保护,并且无论攻击者拥有数据多久都无法逆转。在我们深入研究哈希的安全漏洞之前,让我们首先了解一下哈希及其工作原理。
哈希如何工作?
散列背后的想法是屏蔽数据,使其无法以明文格式读取,这就是为什么这种方法在数据库中经常使用的原因。只要数据具有固定长度,数据库中的数据实际是什么并不重要。例如,无论包含社会安全号码的列是否是有效的社会安全号码,都可以利用在数据库上运行的相同功能和过程。由于散列创建了固定长度的散列摘要,因此用户可以对所有个人身份信息 (PII)进行散列,确保需要对数据库执行的任何操作都可以正确完成,但如果威胁行为者要获得对数据库的访问权限,他们将无法窃取任何 PII。
哈希本身并不是一个极其复杂的过程,下图说明了这个过程。它涉及到将一个字符串(在我们的示例中是社会安全号码)输入到哈希函数中。然后,该哈希函数会生成一个随机字符串(称为哈希摘要),该字符串仍然可以在数据库之类的东西中使用,同时模糊经过哈希处理的实际数据。
正如我之前提到的,加密是一种双向操作,只要您持有密钥就可以解密数据,而散列是一种单向过程。这意味着即使攻击者能够访问您的整个数据库,只要任何个人身份信息经过哈希处理,他们就永远无法实际使用该数据并窃取受保护的信息。散列的其他一些用途包括消息完整性、密码验证和创建数字签名。
出于多种原因,散列是用于创建数字签名的主要方法。客户端哈希是一种在客户端计算机上将文件转换为字符串,然后在该客户端计算机上对其进行哈希处理的方法,允许用户发送他们需要数字签名的安全文件,而不会产生人为攻击的风险。将哈希传输到生成签名的服务器的中间攻击。
通过在客户端对文件进行哈希处理,攻击者可以获取传输中的客户端计算机上生成的哈希摘要,但仍然无法访问文件本身,因为哈希处理是一种单向过程。此外,在数字签名中使用散列也有助于保护这些数字签名。通过使用散列签名对软件进行签名,用户可以立即知道该签名来自软件开发人员,并且在软件传输给用户的过程中没有恶意软件被植入。
什么是哈希函数?
现在我们已经更好地了解了哈希本身的工作原理,让我们看一下哈希函数本身。您可能听说过不同的哈希算法,例如 SHA-1、SHA-256 和 SHA-512。SHA本身代表安全哈希算法,每个算法末尾的数字指的是使用相关哈希算法创建的哈希摘要的位大小。 SHA-1 哈希摘要的大小为 160 位,SHA-256 哈希摘要的大小为 256 位,依此类推。这些安全哈希算法是根据美国国家科学技术研究所的标准FIPS 180-4(安全哈希标准)创建的。
FIPS 180-4(或联邦信息处理标准)要求使用散列算法,因为散列在计算上是安全的,并且几乎不可能找到具有相同散列摘要的两个不同消息。无法找到具有相同哈希摘要的两条不同消息的原因是,如果更改文件的单个字母并在单个字母更改之前和之后对其进行哈希,则生成的哈希摘要将完全不同。这意味着两个不同的消息不能共享相同的哈希摘要。
哈希有哪些安全漏洞?
现在,我已经谈到了哈希的安全性,但过去已经发现了漏洞。目前,SHA-1 哈希算法已被弃用,因为随着处理能力的提高以及云计算逐渐成为计算机领域的前沿,该算法被发现较弱。 Google 的一个团队发现,使用 SHA-1 算法时,他们能够生成具有相同哈希摘要值的文件。这引起了一些困扰,好像 SHA-1 可以做到这一点,那么在未来或不久的将来,当前考虑的安全散列算法也可能会发生这种情况。
此类漏洞背后的问题是,使用 SHA-1 验证网站是否正确的计算机可能会连接到恶意网站,从而导致信息被盗、凭据被盗或恶意软件被下载到受害者的网站上。电脑。如果可以以同样的方式破解更强大的安全哈希算法,那么日常使用这些算法的工具–日间操作将来可能无法使用。目前,NIST 已经发布了 SHA-3,它比 SHA-1 的安全性有了很大的进步。
结论
总之,通过哈希保护数据至关重要,尤其是在数字签名领域。哈希可确保敏感信息的完整性和保护,使其成为网络安全的基本组成部分。
(本文素材源自encryptionconsulting)