什么是 SHA 加密? SHA-1 与 SHA-2
安全哈希算法 (SHA) 是一种用于加密数据的哈希算法。 了解什么是 SHA、它的工作原理以及可用的不同类型对于任何在线企业来说都是必不可少的。
什么是 SHA 加密?
安全哈希算法 (SHA) 是美国国家标准与技术研究院 (NIST) 作为美国联邦信息处理标准 (FIPS) 发布的一系列加密哈希函数。 SHA 加密用于多种方法,包括散列数据、证书文件和其他加密目的,包括比特币等加密货币。这些哈希算法有助于保护现代互联网基础设施的骨干。
您将遇到的最常见的 SHA 函数系列是 SHA-1 和 SHA-2:
SHA-1 是一种 160 位散列函数,由 MD5 算法演化而来。最初,SHA-1 哈希由国家安全局 (NSA) 创建,作为其数字签名算法的一部分。然而,在 SHA-1 中发现了加密漏洞,并且该标准在 2010 年之后不再被批准用于大多数加密用途。由于 SHA-1 不再符合当今的网络安全标准,SHA-2 已成为最常用的 SHA 函数。
SHA-2 是在发现针对 SHA-1 的具有成本效益的暴力攻击后不久开发的。它是两个相似的哈希函数系列,具有不同的块大小,称为 SHA-256 和 SHA-512。 SHA-256 和 SHA-512 之间的主要区别在于字长; SHA-256 使用 32 字节字,而 SHA-512 使用 64 字节字。每个标准还有修改版本,称为 SHA-224、SHA-384、SHA-512/224 和 SHA-512/256。当今最常用的 SHA 函数是 SHA-256,它可以在当前的计算机处理级别提供大量保护。 SHA-2 具有 Merkle–Damgård 结构和 Davies–Meyer 压缩函数。
除了这些更广为人知的选项之外,您可能还会遇到另外两个 SHA 变体系列,即 SHA-0 和 SHA-3:
SHA-0 是我们现在所说的 160 位或 20 字节长散列函数的基本版本,它于 1993 年以 SHA 算法的名称发布。由于发现了一个重大缺陷,散列函数在发布后不久就停止使用,在进一步发展基础理论之后,SHA-1 得以实现。
SHA-3是目前发展最快的SHA加密技术。它与其他 SHA 的不同之处在于使用了最近开发的哈希函数 Keccak。支持的长度与 SHA-2 相同,但仍存在显着差异。 SHA-3 的不同之处在于它的整体结构,因为它基于范围广泛的随机函数生成,通常支持所有随机排列,从而允许输入或吸收任何数量的数据,如它所称,并输出或输出压缩呈现的数据。这样做提供了一个有效伪随机化的输出,理论上更安全。
SHA-1 与 SHA-2:有什么区别?
SHA-1 和 SHA-2 之间的区别在于消息摘要(散列内容)包含的任何给定输入的“长度”或“位数”。因此,摘要的位数越多,使用强制演化超过 SHA-1 的蛮力策略破解它就越困难。 SHA-2 生成 256 位摘要,而 SHA-1 函数为同一输入生成 160 位摘要。由于这种差异,SHA-1 提供较弱的安全性,因为它有时会为两个不同的数据值提供相同的摘要,而 SHA-2 会为每个数据值生成唯一的摘要,因为其中可能存在大量组合 (2^256) 256 位函数的可能组合)。
SHA 加密是如何使用的?
SHA 广泛用于安全协议和应用程序,包括传输层安全 (TLS)、安全套接字层 (SSL)、数字签名、S/MIME 电子邮件证书、PGP 和 IPsec。对于特定的美国政府应用程序(例如保护敏感数据),法律通常要求这种类型的加密。而谷歌、微软或 Mozilla 等浏览器供应商已经开始推荐使用 SHA-3 并停止使用 SHA-1 算法。
SHA 最重要的用途之一是在 SSL/TLS 协议中,因为它们被用作数字签名的哈希算法。
SSL 和 TLS 是加密协议,旨在通过 Internet 在客户端和服务器之间提供安全的通信通道。 TLS/SSL 证书是一种 X.509 证书,用于向浏览器验证服务器的身份。
拥有此类证书的目的不仅在于提供身份验证,还在于建立与客户端浏览器通信的远程服务器的身份。它包含 Web 服务器的详细信息以及与其关联的关键文件。证书必须包含 DNS 信息且未过期才能被正确接受并创建无任何安全错误的 SSL/TLS 会话。
SHA 加密如何工作?
SHA,顾名思义,是一种哈希算法。通过该算法运行的每条数据都会产生一个独特的散列,该散列不能被任何其他数据复制。生成的数字签名也是唯一的,因为它取决于从数据中生成的哈希值。对于实际通信的情况,使用对称密码术,其中散列或加密数据的相同密钥用于解密它。这允许在不损害私钥的情况下公开公钥。
大多数散列算法都基于原始的 MD4 散列算法,因此具有相似的操作方法。
任何类型的散列背后的基本过程——将输入或原始消息转换为二进制,然后执行一组简单的函数,这些函数通过基本的标准晶体管和总线过程运行,例如 AND、XOR、NOT、Rotate 和 OR。生成的哈希值是一个唯一但无意义的十六进制。必须执行这些简单的功能来正确散列数据输入是可以设计专用芯片 (ASICS) 以优化散列的部分原因。
在 SHA-256 散列的情况下,新创建的芯片专门设计用于提高从输入创建散列的速度。在比特币挖矿的用例中,这意味着您每秒可以计算更多的哈希值,从而有更大的机会获得挖矿奖励。
SHA 安全吗?
SHA-1(安全哈希算法 1)的历史可以追溯到 1995 年,自 2005 年以来就被认为容易受到理论攻击。美国国家标准与技术研究院自 2010 年起禁止美国联邦机构使用 SHA-1,并且自 2016 年 1 月 1 日起,数字证书颁发机构不得颁发 SHA-1 签名证书,尽管已获得一些豁免。
然而,尽管这些努力在某些领域逐步淘汰 SHA-1 的使用,但该算法仍在各种领域广泛使用,包括验证:
- 信用卡交易
- 电子文件
- 电子邮件 PGP/GPG 签名
- 开源软件存储库
- 备份
- 软件更新
这些豁免增加了暴露的风险,因此施加了巨大压力以最终将它们移至更安全的标准。许多浏览器(例如 Google Chrome)开始将任何 SHA-1 签名证书标记为对访问者不安全。
根据定义,SHA 是安全的。但是,随着新迭代的开发,与每种类型相关的安全级别随着时间的推移而增加。正如我们所讨论的,SHA-0 比 SHA-1 暴露的漏洞更多,而 SHA-1 暴露的漏洞又比 SHA-2 多。随着敏感数据的攻击者和保护者之间的军备竞赛继续进行,这种趋势将持续到未来。
我应该使用哪个SHA?
为了保护用户的加密,您应该始终使用最适合您正在处理的项目的 SHA。如今,这些最有可能来自 SHA-2 系列,但大多数类型都有用例。并非所有 SHA 证书都与每台服务器兼容,因此不仅要了解您的用例需求,还要了解您的设备对于创建安全环境至关重要。
兼容SHA-2数字证书所需的不同流行服务器的产品版本如下:
- Apache服务器:2.0.63+
- IBM HTTP 服务器:8.5(与 Domino 9 捆绑)
- 基于 Java 的产品:Java 1.4.2+
- Mozilla:基于 NSS 的产品 3.8+
- Oracle WebLogic:10.3.1+
如前所述,SHA-256 是目前最常用的 SHA 函数。然而,随着计算机处理的进步,SHA-256 将变得更容易受到攻击,类似于它以前的版本。确保您了解安全哈希算法的最新更新是正确加密数据而不冒风险的最佳方式。