AES与CMAC原理及应用探索

版权申诉
5星 · 超过95%的资源 1 下载量 154 浏览量 更新于2024-06-26 收藏 651KB DOCX 举报
"AES-与基于AES-的CMAC_New.docx" AES(Advanced Encryption Standard),即高级加密标准,是目前广泛使用的对称加密算法之一,主要用于保护数据的隐私和安全。该标准由NIST(美国国家标准与技术研究所)在2001年采纳,旨在替换之前的DES(Data Encryption Standard)。AES的加密过程主要由四个基本操作组成:字节替换(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)以及轮密钥加(AddRoundKey)。 1. AES加密过程: - 字节替换(SubBytes):这是非线性的一步,使用预定义的S盒(S-box)进行字节替换。S盒是一个8x8的查找表,它将每个8位输入字节转换为不同的8位输出字节,增强了算法的混淆性。 - 行移位(ShiftRows):这一操作只影响状态矩阵的行,每行按照特定规则向左循环移位,增强了行之间的依赖关系。 - 列混淆(MixColumns):这一步发生在每一列上,通过一个线性变换混合列中的字节,增加了列间的相互依赖性。 - 轮密钥加(AddRoundKey):在每个步骤之后,都会将当前状态矩阵与轮密钥进行异或操作,结合密钥与数据,确保每个步骤的结果都不相同。 AES有三种不同版本,根据密钥长度的不同,分别是AES-128(128位密钥)、AES-192(192位密钥)和AES-256(256位密钥)。实验中采用的是AES-128。 2. AES解密过程: - 逆向字节替代(InvSubBytes):解密时,使用S盒的逆运算进行字节替换。 - 逆向行移位(InvShiftRows):与加密过程相反,行移位操作进行右移。 - 逆向列混淆(InvMixColumns):列混淆的逆操作,也用于解密过程。 - 轮密钥加(AddRoundKey):解密时同样进行轮密钥加,但使用的是解密轮密钥。 3. AES密钥扩展: 因为原始密钥长度有限,AES需要一个密钥扩展过程来生成每轮所需的扩展密钥。AES-128的原始密钥为128位,通过扩展算法可以生成11个额外的4×4字节矩阵,总共10轮加密和1轮最后的轮密钥加。 4. CMAC(Cipher-based Message Authentication Code)原理: CMAC是一种基于密码的消息认证码算法,它利用对称密钥加密算法(如AES)生成消息认证码,确保消息的完整性和来源的合法性。CMAC的计算过程中,对消息进行多次加密,结合特定的密钥处理,产生一个固定长度的MAC值。这个MAC值可以作为消息的数字签名,接收方通过验证MAC值来确认消息未被篡改。 在实际应用中,AES和CMAC结合使用,可以提供高效且安全的数据保护方案,常用于网络安全、移动通信以及数据存储等领域。