密码算法如何保护嵌入式设计

描述

密码学与用于实现它的算法一样强大。在现代密码学中,我们拥有基本的 XOR 函数,以及当今许多应用程序中使用的更复杂的算法。在这篇博文中,我将概述一些关键算法,包括安全哈希算法和 AES 算法。

让我们通过定义 XOR(异或)开始我们的讨论,这是一种在许多(如果不是全部)密码算法中用于各种能力的重要逻辑运算。图 1显示了此功能的工作原理。在深入研究算法之前,您需要了解此功能。

AES

图 1. 该图显示了 XOR 函数的工作原理。

由于 XOR 的特性,一个输入可以用作数据进入另一个输入的键。例如,如果 A 是加密密钥的单个位,如果 A 为 1,则与来自 B 的数据位的 XOR 会翻转该位。这可以通过再次将加密结果与密钥进行按位异或来反转。

现在,让我们更详细地了解安全哈希算法或 SHA。安全散列函数获取可变大小的数据并将其压缩为固定大小的位串输出——这个概念称为散列。SHA 函数是一系列哈希算法,通过 NIST(美国国家标准与技术研究院)的监督随着时间的推移而开发。SHA-3 函数是最新的。

在接下来的部分中,我们将探讨 SHA 函数的工作原理,重点是 SHA-2 和 SHA-3。(SHA-1 正在逐步淘汰,不推荐用于任何新设计。)

SHA-2 函数根据输出位长有四种主要类型:

SHA-224 – 哈希是 224 位长。

SHA-256 – 哈希是 256 位长。

SHA-384 – 散列长度为 384 位。

SHA-512 – 哈希是 512 位长。

SHA-3 函数没有预定义的输出长度。输入和输出长度也没有最大值。但是为了与 SHA-2 进行比较,让我们根据输出位长度定义四种主要类型。这些是:

SHA3-224 – 哈希是 224 位长。

SHA3-256 – 哈希是 256 位长。

SHA3-384 – 散列长度为 384 位。

SHA3-512 – 哈希是 512 位长。

让我们以 SHA3-256 为例。SHA-3 使用 Keccak 海绵函数。就像海绵一样,第一步会吸收或吸收输入的信息。在下一阶段,输出哈希被挤出。图 2是 SHA3-256 函数的框图。

AES

图 2. 该图显示了用于安全散列生成的 SHA3-256 函数的框图。

图 2 中的迭代函数接收 1600 位数据,然后使用特定算法对其进行 24 轮置换,然后将其作为 1600 位块传递到下一个阶段。这一直持续到吸收阶段完成。

吸收阶段完成后,最后一个 1600 位块被传递到挤压阶段。在这种情况下,由于 SHA3-256 输出哈希长度小于 1088 位,因此压缩阶段不需要任何迭代函数。我们从最后阶段获取前 256 位,这就是输出哈希。

例如,如果所需的散列长度为 2500 位,我们将需要三个以上迭代函数实例来获得所需长度的散列。

还有一些基于加密标准的算法,例如高级加密标准算法。AES 算法根据输入密钥的值以可逆的方式对输入数据进行加扰和替换,从而产生所谓的密文。由于 AES 算法是一种固定宽度的加密算法,因此首先填充输入消息以确保它完全适合“n”个 128 位块。

每个 128 位块与加密密钥一起输入加密算法。根据加密密钥中的位数,AES 算法会执行一定轮数的模糊输入块位。这种模糊化是通过混洗数据位、获取部分数据并用查找表(如解码轮)中的值替换它们以及执行 XOR 操作以根据一组中的位值将位从 0 翻转到 1 来实现的从输入加密密钥生成的“轮密钥”。轮密钥用于其中一个模糊轮,它是通过复制位并在其他位之间插入副本来“扩展”加密密钥的一部分来创建的。

AES 解密函数使用相同的加密密钥简单地执行加密函数中的操作的相反操作,以便对原始输入块数据进行解密。

这些只是为提供设计安全性而出现的一些加密算法。通过阅读改编本博文的教程“密码学:深入了解算法”,了解有关其他人的更多信息(包括 RSA 公钥密码系统、椭圆曲线数字签名算法和椭圆曲线 Diffie-Hellman 密钥交换协议)。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分