什么是 SHA 加密? SHA-1 与 SHA-2
Posted lavin1614
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是 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 将变得更容易受到攻击,类似于它以前的版本。确保您了解安全哈希算法的最新更新是正确加密数据而不冒风险的最佳方式。
SHA 和 AES 加密有啥区别? [关闭]
【中文标题】SHA 和 AES 加密有啥区别? [关闭]【英文标题】:What's the difference between SHA and AES encryption? [closed]SHA 和 AES 加密有什么区别? [关闭] 【发布时间】:2010-11-02 16:56:43 【问题描述】:SHA 和 AES 加密有什么区别?
【问题讨论】:
更适合security.stackexchange.com。 【参考方案1】:SHA 不是加密,它是一种单向哈希函数。 AES (Advanced_Encryption_Standard) 是一种对称加密标准。
AES Reference
【讨论】:
【参考方案2】:SHA 代表安全散列算法,而 AES 代表高级加密标准。所以 SHA 是一套散列算法。另一方面,AES是一种用于加密的密码。 SHA 算法(SHA-1、SHA-256 等)将接受输入并产生摘要(哈希),这通常用于数字签名过程(产生一些字节的哈希并使用私钥签名) .
【讨论】:
【参考方案3】:SHA 是由国家安全局开发的“安全哈希算法”系列。目前有几十个选项在竞争谁将成为SHA-3,这是 2012+ 的新哈希算法。
您使用 SHA 函数获取大型文档并计算输入的“摘要”(也称为“哈希”)。重要的是要认识到这是一个单向过程。您无法获取摘要并恢复原始文档。
AES,高级加密标准是一种对称块算法。这意味着它需要 16 个字节的块并对其进行加密。它是“对称的”,因为密钥允许加密和解密。
更新:Keccak 于 2012 年 10 月 2 日被评为 SHA-3 获胜者。
【讨论】:
【参考方案4】:SHA 是哈希函数,AES 是加密标准。给定一个输入,您可以使用 SHA 生成一个输出,该输出不太可能从任何其他输入生成。此外,在应用该函数时会丢失一些信息,因此即使您知道如何生成产生相同输出的输入,该输入也不太可能与最初使用的输入相同。 另一方面,AES 旨在防止在共享相同加密密钥的两方之间发送的任何数据泄露给第三方。这意味着一旦您知道加密密钥和输出(以及 IV...),您就可以无缝地返回原始输入。 请注意,SHA 只需要应用输入即可,而 AES 至少需要 3 项:您要加密/解密的内容、加密密钥和初始化向量 (IV)。
【讨论】:
【参考方案5】:SHA 和 AES 有不同的用途。 SHA 用于生成数据哈希,AES 用于加密数据。
以下是 SHA 哈希对您有用的示例。假设您想下载某个 Linux 发行版的 DVD ISO 映像。这是一个大文件,有时会出错 - 所以您想验证您下载的内容是否正确。您要做的是转到受信任的来源(例如官方发行版下载点),它们通常具有可用的 ISO 映像的 SHA 哈希。您现在可以为下载的数据生成可比较的 SHA 哈希(使用任意数量的开放工具)。您现在可以比较两个哈希值以确保它们匹配 - 这将验证您下载的图像是否正确。如果您从不受信任的来源(例如 torrent)获取 ISO 映像,或者您在使用 ISO 时遇到问题并想检查映像是否已损坏,这一点尤其重要。
正如您在本例中看到的,SHA 用于验证未损坏的数据。您有权查看 ISO 中的数据。
另一方面,AES 用于加密数据,或防止人们在知道某些秘密的情况下查看该数据。
AES 使用共享密钥,这意味着用于加密数据的密钥(或相关密钥)与用于解密数据的密钥相同。例如,如果我使用 AES 加密了一封电子邮件并将该电子邮件发送给您,那么您和我都需要知道用于加密和解密电子邮件的共享密钥。这与使用 PGP 或 SSL 等公钥的算法不同。
如果您想将它们放在一起,您可以使用 AES 对消息进行加密,然后将未加密消息的 SHA1 哈希发送出去,这样当消息被解密时,他们就能够验证数据。这是一个有点做作的例子。
如果您想了解更多有关这些***搜索词(AES 和 SHA 之外)的信息,您想尝试包括:
对称密钥算法(用于 AES) 加密哈希函数(用于 SHA) 公钥加密(用于 PGP 和 SSL)
【讨论】:
【参考方案6】:SHA 不需要任何东西,只需要应用输入,而 AES 至少需要 3 件事 - 您要加密/解密的内容、加密密钥和初始化向量。
【讨论】:
[这被标记为“新用户提供的旧问题的迟到答案。我的评论是在这种情况下。]这似乎没有添加任何关于已提供内容的信息这个问题的其他答案。 那是错误的。您不需要初始化向量 (IV) 即可使用 AES。 AES 的某些操作模式需要 IV(这是完全不同的)。以上是关于什么是 SHA 加密? SHA-1 与 SHA-2的主要内容,如果未能解决你的问题,请参考以下文章