【易客吧】_全网激活码总代_激活码商城

您现在的位置是:首页 > 热门资讯 > 正文

热门资讯

AES 算法详解:深入了解其工作原理 (AES算法详解)

用户投稿2024-04-17热门资讯28

引言

AES(高级加密标准)是一种对称块密码算法,由国家标准与技术研究所(NIST)选择为美国政府的加密标准。它也被广泛应用于商业、金融和政府机构等领域,以保护敏感数据。

AES 的工作原理

AES 是一种迭代块密码,这意味着它重复应用相同的操作序列来加密数据。操作过程如下:

1. 密钥展开

将密钥扩展为更大的密钥调度表,其中包含一系列子密钥。子密钥用于后续操作。

2. 初始轮

对明文数据进行初始轮操作,包括异或运算、轮密钥加法和字节代换。

3. 后续轮

对数据进行多个后续轮操作,每轮包括以下步骤:异或运算:与当前轮的子密钥进行异或运算。字节代换:使用 S 盒将数据中的每个字节替换为另一个字节。行移位:将数据中的每一行向左或向右移动特定数量的字节。列混合:将数据中的每一列应用线性变换。

4. 最终轮

对数据进行最终轮操作,该操作类似于初始轮,但没有字节代换步骤。

5. 输出

最终结果是加密后的数据。

AES 的安全性

AES 是一个非常安全的算法,其安全性基于以下特性:密钥长度大:AES 支持 128、192 和 256 位密钥长度,这增加了攻击者破解密码的难度。轮数多:AES 使用多轮操作,每轮都会对数据进行不同的变换,从而提高了其安全性。S 盒非线性:字节代换操作使用 S 盒,该 S 盒是非线性的,这意味着对输入数据的微小更改会导致输出数据的显着变化。没有已知的弱点:迄今为止,还没有发现 AES 算法中任何已知的弱点。

AES 的应用

AES 被广泛应用于各种领域,包括:数据加密:保护存储数据和在网络上传输的数据。身份验证:验证用户的身份和消息的完整性。密码学协议:作为其他密码学协议的基础,例如 TLS 和 SSH。电子签名:对电子文档进行签名,以确保其真实性和完整性。

结论

AES 是密码学领域中一种强大的对称块密码算法,具有出色的安全性。它广泛应用于各种领域,以保护敏感数据。了解 AES 的工作原理对于安全专业人员和任何处理敏感数据的人员至关重要。

加密技术02-对称加密-AES原理

AES 全称 Advanced Encryption Standard(高级加密标准)。它的出现主要是为了取代 DES 加密算法的,因为 DES 算法的密钥长度是 56 位,因此算法的理论安全强度是 2^56。但二十世纪中后期正是计算机飞速发展的阶段,元器件制造工艺的进步使得计算机的处理能力越来越强,所以还是不能满足人们对安全性的要求。于是 1997 年 1 月 2 号,美国国家标准技术研究所宣布希望征集高级加密标准,用以取代 DES。AES 也得到了全世界很多密码工作者的响应,先后有很多人提交了自己设计的算法。最终有5个候选算法进入最后一轮:Rijndael,Serpent,Twofish,RC6 和 MARS。最终经过安全性分析、软硬件性能评估等严格的步骤,Rijndael 算法获胜。

AES 密码与分组密码 Rijndael 基本上完全一致,Rijndael 分组大小和密钥大小都可以为 128 位、192 位和 256 位。然而 AES 只要求分组大小为 128 位,因此只有分组长度为 128位的 Rijndael 才称为 AES 算法。本文只对分组大小 128 位,密钥长度也为 128 位的 Rijndael 算法进行分析。密钥长度为 192 位和 256 位的处理方式和 128 位的处理方式类似,只不过密钥长度每增加 64 位,算法的循环次数就增加 2 轮,128 位循环 10 轮、192 位循环 12 轮、256 位循环 14 轮。

AES 算法详解:深入了解其工作原理 (AES算法详解) 第1张

给定一个 128 位的明文和一个 128 位的密钥,输出一个 128 位的密文。这个密文可以用相同的密钥解密。虽然 AES 一次只能加密 16 个字节,但我们只需要把明文划分成每 16 个字节一组的块,就可以实现任意长度明文的加密。如果明文长度不是 16 个字节的倍数,则需要填充,目前填充方式主要是 PKCS7 / PKCS5。

下来主要分析 16 个字节的加解密过程,下图是 AES 算法框架。

密钥生成流程

G 函数

关于轮常量的生成下文会介绍。

主要作用:一是增加密钥编排中的非线性;二是消除AES中的对称性。这两种属性都是抵抗某些分组密码攻击必要的。

接下来详细解释一下几个关键步骤。

明文矩阵和当前回次的子密钥矩阵进行异或运算。

字节代换层的主要功能是通过 S 盒完成一个字节到另外一个字节的映射。

依次遍历 4 * 4 的明文矩阵 P 中元素,元素高四位值为行号,低四位值为列号,然后在 S 盒中取出对应的值。

行位移操作最为简单,它是用来将输入数据作为一个 4 * 4 的字节矩阵进行处理的,然后将这个矩阵的字节进行位置上的置换。ShiftRows 子层属于 AES 手动的扩散层,目的是将单个位上的变换扩散到影响整个状态当,从而达到雪崩效应。它之所以称作行位移,是因为它只在 4 * 4 矩阵的行间进行操作,每行 4 字节的数据。在加密时,保持矩阵的第一行不变,第二行向左移动 1 个字节、第三行向左移动 2 个字节、第四行向左移动 3 个字节。

列混淆层是 AES 算法中最为复杂的部分,属于扩散层,列混淆操作是 AES 算法中主要的扩散元素,它混淆了输入矩阵的每一列,使输入的每个字节都会影响到 4 个输出字节。行位移层和列混淆层的组合使得经过三轮处理以后,矩阵的每个字节都依赖于 16 个明文字节成可能。其实质是在有限域 GF(2^8) 上的多项式乘法运算,也称伽罗瓦域上的乘法。

伽罗瓦域

伽罗瓦域上的乘法在包括加/解密编码和存储编码中经常使用,AES 算法就使用了伽罗瓦域 GF(2^8) 中的运算。以 2^n 形式的伽罗瓦域来说,加减法都是异或运算,乘法相对较复杂一些,下面介绍 GF(2^n) 上有限域的乘法运算。

本原多项式:域中不可约多项式,是不能够进行因子分解的多项式,本原多项式是一种特殊的不可约多项式。当一个域上的本原多项式确定了,这个域上的运算也就确定了,本原多项式一般通过查表可得,同一个域往往有多个本原多项式。通过将域中的元素化为多项式的形式,可以将域上的乘法运算转化为普通的多项式乘法模以本原多项式的计算。比如 g(x) = x^3+x+1 是 GF(2^3) 上的本原多项式,那么 GF(2^3) 域上的元素 3*7 可以转化为多项式乘法:

乘二运算:无论是普通计算还是伽罗瓦域上运算,乘二计算是一种非常特殊的运算。普通计算在计算机上通过向高位的移位计算即可实现,伽罗瓦域上乘二也不复杂,一次移位和一次异或即可。从多项式的角度来看,伽罗瓦域上乘二对应的是一个多项式乘以 x,如果这个多项式最高指数没有超过本原多项式最高指数,那么相当于一次普通计算的乘二计算,如果结果最高指数等于本原多项式最高指数,那么需要将除去本原多项式最高项的其他项和结果进行异或。

比如:GF(2^8)(g(x) = x^8 + x^4 + x^3 + x^2 + 1)上 15*15 = 85 计算过程。

15 写成生成元指数和异或的形式 2^3 + 2^2 + 2^1 + 1,那么:

乘二运算计算过程:

列混淆 :就是把两个矩阵的相乘,里面的运算,加法对应异或运算,乘法对应伽罗瓦域 GF(2^8)上的乘法(本原多项式为:x^8 + x^4 + x^3 + x^1 + 1)。

Galois函数为伽罗瓦域上的乘法。

解码过程和 DES 解码类似,也是一个逆过程。基本的数学原理也是:一个数进行两次异或运算就能恢复,S ^ e ^ e = S。

密钥加法层

通过异或的特性,再次异或就能恢复原数。

逆Shift Rows层

恢复 Shift Rows层 的移动。

逆Mix Column层

通过乘上正矩阵的逆矩阵进行矩阵恢复。

一个矩阵先乘上一个正矩阵,然后再乘上他的逆矩阵,相当于没有操作。

逆字节代换层

通过再次代换恢复字节代换层的代换操作。

比如:0x00 字节的置换过程

轮常量生成规则如下:

算法原理和 AES128 一样,只是每次加解密的数据和密钥大小为 192 位和 256 位。加解密过程几乎是一样的,只是循环轮数增加,所以子密钥个数也要增加,最后轮常量 RC 长度增加。

对称加密与非对称加密算法原理详解(对称加密篇)

数据加密的守护者:对称与非对称算法的深度解析

在信息化时代,数据安全犹如基石,对称加密因其卓越的速度在大规模数据加密中独领风骚,尤其是DES、DES3和AES等算法。 DES的奇妙之旅,从初始置换的神秘帷幕揭开,通过分组处理,再到子密钥的精妙生成,如表1.1-1.17所示,为加密过程注入了严谨的逻辑。 然而,对称加密并非无懈可击,其密钥管理的挑战不容忽视,它更适合于内部系统,对密钥的共享和保护提出了高要求。 相比之下,AES,这位加密界的明星,以每组16字节的分组结构,成为了当今的加密首选。 更高级的加密技术,如采用密钥轮询、字节替代、行移动和列混合等复杂步骤,每10次循环,数据便在加密迷宫中穿梭,见图1.2。 异或操作在此起着关键作用,主密钥经巧妙生成,产生40位子密钥,遵循严密的规则,如图2.1所示,随后进行S盒替换、行移动和列混合,确保信息的加密安全,如表2.2-2.8所示。 加密过程,如魔术师的手法,将矩阵转化为十六进制,而第二个密钥犹如调色盘,再次为数据披上一层神秘面纱。 而解密,则如同解开谜团,从最后一个密钥开始,逆向S盒操作,行向右移动,列通过逆矩阵混合,这个过程反复10次,见图2.5。 代码实现上,AES的加密(图2.3和2.4)与解密(图2.5)过程,以及最终的输出(图2.6),都是加密技术的直观呈现,展示了科技与安全的无缝对接。 每一步都严谨而精细,确保了数据在信息海洋中的安全航行。

什么是AES算法?

Rijndael是由比利时的两位密码学家Daemen和Rijment共同设计的。Rijndael算法是一个迭代型分组密码,其分组长度和密钥长度都可变,各自可以为128比特、192比特和256比特。Rijndael对明文以字节为单位进行处理。以128位的分组、128位密钥的情况为例,首先将明文按字节分成列组,将明文的前4个字节组成一列,接下来的4个字节组成第二列,后面的字节依次组成第三列和第四列,这样就组成了一个4×4的矩阵,如图所示。这样AES输入的16个字节排成了一个二维数组,称之为状态矩阵。AES的加密和解密变换都是基于状态数组来处理的,在中间结果上的不同变换操作称为状态。AES的状态矩阵的列数Nb等于分组的长度除以32,矩阵中的每个元素是一个8位字节。同样,密钥也可以表示成一个4×Nk的矩阵,Nk等于密钥的长度除以32,当密钥的长度为128位时N=4,如图所示。为表述简单,我们只讨论密钥长度为128比特、分组长度为128比特时的情形,对于其他分组长度和密钥长度的类型,AES的工作原理是相同的。AES的基本变换单位是“轮”,加解密过程是由轮变换多次迭代而成。当分组长度和密钥长度均为128比特时,轮数为Nr=10。我们将AES中的轮变换记为Round(State, RoundKey),State表示消息的状态矩阵;RoundKey表示轮密钥矩阵,一轮的完成将改变State矩阵中的元素,称之为改变它的状态。对于加密来说,输入到第一轮中的State就是明文消息矩阵,最后一轮输出的State就是对应的密文消息矩阵。AES的(除最后一轮外)轮变换由四个不同的变换组成,这些变换我们称之为内部轮函数,AES的轮可表示成如下形式:Round(State, RoundKey){SubBytes(State);ShiftRows(State);MixColumns(State);AddRoundKey(State, RoundKey);}其中,ByteSub(State)称为字节代替变换、ShiftRow(State)称为行移位变换、MixColumns(State)称为列混合变换,以及AddRoundKey(State, RoundKey)称为与子密钥异或。最后一轮略微不同,将其记作FinalRoundKey(State, RoundKey),相当于前面的Round(State, RoundKey)去掉MixColumns(State)。AES的算法执行过程如图下图所示,步骤如下:

若对本页面资源感兴趣,请点击下方或右方图片,注册登录后

搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源

如有其他疑问,请咨询右下角【在线客服】,谢谢支持!

AES 算法详解:深入了解其工作原理 (AES算法详解) 第2张

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
欢迎你第一次访问网站!