本应用笔记介绍了安全哈希算法(SHA)的基础知识,并讨论了该算法的变体。然后简要介绍了如何使用算法进行身份验证,包括哈希消息身份验证代码 (HMAC) 的概念。最后,本文介绍了一些Maxim安全认证器,这些认证器可用于非常轻松地为安全应用部署SHA算法。
介绍
在本应用笔记中,我们将讨论广泛用于对称密钥加密的安全哈希算法(SHA)。SHA 函数背后的基本思想是获取可变大小的数据并将其压缩为固定大小的位字符串输出。这个概念称为哈希。SHA 函数是一系列哈希算法,通过美国国家标准与技术研究院 (NIST) 的监督随着时间的推移而开发。其中最新的是SHA-3功能。Maxim拥有一系列安全认证器产品,提供SHA-2和SHA-3功能。
图 1 显示了安全哈希生成的基本概念。
图1.安全哈希生成,基本概念。
SHA 特性
SHA 函数具有以下特征:
它们具有可变的输入长度和固定的输出长度。
它们是单向函数。图 1 显示,除了尝试每个可能的输入文本之外,使用生成的哈希值重新生成输入文本是不可行的。对于足够大的输入,这在计算上变得不可能。
如果将相同的输入消息馈送到 SHA 函数,它将始终生成相同的结果哈希。
使用两个不同的输入值无法生成相同的哈希值。这称为“防撞性”。
输入值的微小变化,即使是单个位,也会完全改变生成的哈希值。这被称为“雪崩效应”。
如果哈希函数满足上述所有条件,则将其视为强哈希函数。
SHA 函数的类型
目前使用的一些 SHA 函数包括:
SHA-1
SHA-2
SHA-3
由于SHA-1正在逐步淘汰,不建议用于任何新设计,因此本应用笔记仅讨论SHA-2和SHA-3。
SHA-2
SHA-2 函数根据输出位长度有四种主要类型,如下所示:
SHA-224 – 哈希长度为 224 位。
SHA-256 – 哈希长度为 256 位。
SHA-384 – 哈希长度为 384 位。
SHA-512 – 哈希长度为 512 位。
图2.SHA-256 – 哈希生成流。
首先填充输入消息,以确保它完全适合“n”个 512 位块。
SHA-3
SHA-3 函数没有预定义的输出长度。输入和输出长度也没有最大值。为了与 SHA-2 进行比较,我们可以根据输出位长度定义四种主要类型:
SHA3-224 – 哈希长度为 224 位。
SHA3-256 – 哈希长度为 256 位。
SHA3-384 – 哈希长度为 384 位。
SHA3-512 – 哈希长度为 512 位。
所有 SHA-3 类型都使用 Keccak 海绵功能。就像海绵一样,第一步是吸收或吸收输入信息。在下一阶段,输出哈希被挤出。图 3 使用 SHA3-256 函数的框图说明了这些阶段。
图3.SHA3-256 – Keccak 海绵哈希生成流程。
图 3 图中的迭代函数接收 1600 位数据,使用特定算法对其进行 24 轮排列,然后将其作为 1600 位块传递到下一阶段。这一直持续到吸收阶段完成。
吸收阶段完成后,最后一个 1600 位块将传递到压缩阶段。在这种情况下,由于 SHA3-256 输出哈希长度小于 1088 位,因此压缩阶段不需要任何迭代函数。最后阶段的前 256 位是输出哈希。
例如,如果所需的哈希长度为 2500 位,我们将需要迭代函数的三个实例才能获得所需的长度哈希。
安全哈希和 HMAC 之间的差异
在探索消息身份验证之前,了解安全哈希和哈希消息身份验证代码 (HMAC) 之间的差异非常重要,如图 4 所示。本质上,安全哈希使用哈希算法(如 SHA-3)生成消息的固定长度哈希,而不考虑消息长度。HMAC 与此类似,但使用密钥作为哈希引擎的附加输入。它还生成固定长度的哈希,而不考虑输入消息长度。
图4.安全哈希和 HMAC。
使用 SHA-3 的消息身份验证
图 5 演示了如何使用 SHA-3 对消息进行身份验证的示例,其中显示了已讨论的所有概念。
图5.使用 SHA-3 HMAC 进行消息身份验证。
在图 5 中,Alice 通过将消息与特定密钥一起馈送到 SHA-3 引擎来计算消息的 HMAC。Alice 之前已与 Bob 安全地共享此密钥。
Alice 将生成的 HMAC 与消息一起发送给 Bob。然后,Bob 使用之前与 Alice 共享的相同密钥生成自己的消息 HMAC。鲍勃将他生成的HMAC与他从爱丽丝那里收到的HMAC进行了比较。如果它们匹配,则消息未被篡改并且是真实的。在这种情况下,有人可以截获 HMAC 和消息,然后更改消息并生成新的 HMAC 并将其发送给 Bob。但是,这将不起作用,因为拦截器将没有密钥,并且收到的 HMAC 将与计算的 HMAC 不匹配。因此,鲍勃将意识到消息不真实。
这个序列最重要的方面是 Alice 和 Bob 对其他人保密他们的共享密钥。
Maxim的安全认证器产品,如DS28E50,内置SHA引擎和ChipDNA等多种安全功能。唰唰��这有助于根据用户的要求保护任何密钥。更多信息参见Maxim应用笔记6767:ChipDNA物理不可克隆功能技术如何保护嵌入式系统。
内置 SHA 引擎的安全身份验证器
表1列出了Maxim提供的各种安全认证器以及其他主要特性和目标应用。
部分 | SHA 发动机 | 其他功能 | 典型应用 |
DS28E50 | SHA-3 | 2Kb内存,芯片DNA |
医疗传感器和工具的认证 物联网节点认证 外设身份验证 打印机墨盒识别和认证 |
DS28E16 | SHA-3 | 256位安全存储器,低成本 | 打印机墨盒和电池识别和认证 |
DS28E15 DS28EL15 | SHA-256 | 512位存储器,EL器件为低压(1.671V至1.89V)器件 |
医疗耗材识别和认证 安全功能控制 打印机墨盒识别和认证 |
DS28E22 DS28EL22 | SHA-256 | 2048位存储器,EL器件为低压(1.671V至1.89V)器件 |
网络连接设备的身份验证 打印机墨盒 ID/身份验证 传感器/附件认证和校准 系统知识产权保护 |
DS28E25 DS28EL25 | SHA-256 | 4096位存储器,双向认证,EL器件为低压(1.671V至1.89V)器件 |
耗材的识别和认证 传感器/附件认证和校准 系统知识产权保护 |
DS1964S | SHA-256 | 512 位内存,iButton |
存取控制 耗材认证 |
DS28E36 DS28C36 | SHA-256 | 8Kb 内存,双向 ECDSA 或 SHA-256 身份验证,两个 GPIO |
附件和外设安全认证 安全存储主机控制器的加密密钥 |
DS28E83 | SHA-256 | 10Kb OTP 内存,高抗辐射性 | 附件和外设安全认证 |
DS28E84 | SHA-256 | 15Kb FRAM,10Kb OTP 内存,高抗辐射性 | 医疗耗材安全认证 |
总结
使用SHA来保护/验证实物或知识产权是一个非常简单的过程,前提是使用正确的支持工具。Maxim的安全认证器是实现这些目的的理想选择。它们内置了具有许多功能的 SHA 引擎,使实现任何应用程序的安全性成为一个相对简单的过程。每个器件都有全面的支持系统,如评估套件和免费软件,包括基于 C 的演示代码,以帮助开发人员快速部署其解决方案。
审核编辑:郭婷
-
Maxim
+关注
关注
8文章
859浏览量
87088 -
SHA
+关注
关注
0文章
16浏览量
8437 -
安全认证器
+关注
关注
0文章
13浏览量
9150
发布评论请先 登录
相关推荐
评论