no script

你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!

进入课程

密码学实战-认证加密(内容详细+视频 信息安全专业的必修课)

本节内容,我们主要学习第四章节:认证加密。包括,高级加密标准AES算法、加密算法的操作模式、AES-CBC-HMAC算法、AEAD型算法AES-GCM,以及ChaCha20-Poly1305算法等内容。
images-jm.png

4.1 高级加密标准AES算法

首先,我们来了解下AES的发展历程:

  • 1997年4月15日,美国国家标准和技术研究所(NIST)发起征集AES(Advanced Encryption Standard)算法的活动,并成立了AES工作组。目的是为了确定一个非保密的、公开披露的、全球免费使用的加密算法,用于保护下一世纪政府的敏感信息。
  • 1997年9月12日,在联邦登记处(FR)公开发布了征集AES候选算法的通告。并提出了对AES的基本技术要求。
  • 1998年8月20日,NIST召开了第一次候选大会并公布了15个候选算法。
  • 1999年3月22日,举行了第二次AES候选会议,从中选出5个AES,将成为新的公开的联邦信息处理标准FIPS(Federal Information Processing Standard),用于美国政府组织保护敏感信息的一种特殊的加密算法。入选AES的5种算法为:MARS(美国 ) 、RC6 (美国 ) 、Serpent(挪威 ) 、Twofish (美国 ) 、 Rijndael (比利时 )
  • 2000年10月2日,美国商务部部长Norman Y. Mineta宣布经过三年来世界著名密码专家之间的竞争,比利时密码专家 Joan Daemen 和 Vincent Riimen 提出的“Rijndael数据加密算法”最终获胜。
  • 2001年11月26日,NIST正式公布高级加密标准AES,并于2002年5月26日正式生效,成为美国的官方政府标准。

image-20250814114328753.png

Rijndael数据加密算法,具备以下特点:

  • Rijndael汇聚了安全性能、效率、可实现性和灵活性等优点,无论是有反馈模式还是无反馈模式的计算环境下,Rijndael都显示出其非常好的性能。
  • Rijndael的对内存的需求非常低,也使它很适合用于受限制的环境。Rijndael的操作简单,并可抵御强大和实时的攻击,此外它还有许多未被特别强调的防御性能。
  • Rijndael数据加密算法成为高级加密标准AES后,其安全性能是良好的,经过多年来的分析和测试,至今没有发现AES的明显缺点,也没有找到明显的安全漏洞,一般认为AES能够抵抗目前已知的各种攻击方法的攻击。

AES算法的安全性分析与算法说明

​ AES算法有3个版本,分别为128、192和256比特的。由前面章节的知识,我们知道,一切秘密寓于密钥之中。算法的安全性取决于密钥的安全性,而密钥的安全性又取决于密钥空间的大小。也就是,密钥越长,算法的安全性越高。通常128比特的密钥空间大小,已经足够安全,使用最好的攻击方法,AES-128算法大约需要2的128次方个攻击操作,实践中,所需要的时间和空间都相当巨大,因此,128比特的AES算法就已经具备足够的安全性了。

​ 这里,对AES算法有几点说明:

  • 第一,AES具备3种密钥长度的算法,实际应用中,可以根据项目的实际要求做出选择。
  • 第二,AES的3个版本算法,明文分组的长度都为128比特。
  • 第三,密文分组的长度也是128比特的,如果最后一个分组不够16字节的整数倍,需要做字节填充,这在后面会讲到。AES算法中,在相同的密钥作用下,相同的明文总是产生相同的密文。实际上,可以把这种加密看成是一种映射关系,128比特的AES算法,其映射的总数量就是2的128次方。
AES算法 密钥长度(字节) 分组长度(字节)
AES-128 16(16*8=128) 16(16*8=128)
AES-192 24(24*8=192) 16(16*8=128)
AES-256 32(32*8=256) 16(16*8=128)

AES算法的内部构造

image-20250814114516822.png

  • AES算法的分组长度是128位的,对于128位的输入,经过AES加密或者解密处理后得到的输出也是128位的。
  • AES加密和解密的过程中,中间各步骤的结果称为一个状态,每个状态也是128位的。
  • AES算法将这样的明文状态表示为4乘4的字节型矩阵,以作为算法内部轮函数的输入。
  • AES算法内部使用轮函数对明文分组进行加密,其中AES-128算法的轮数有10轮。每一轮都会使用一个由主密钥K生成的不同轮密钥,主密钥即使稍微变化几个比特,加密结果也会完全不同。每个轮函数的内部,由4个子函数组成,每个子函数都是可逆的。最后的AddRoundKey函数由内部状态矩阵和轮密钥作为输入,其异或值作为该轮函数的输出。由于每一步都是可逆的,因此才是可解密的。

4.2 加密算法的操作模式

​ 在实际应用中,我们通常需要加密一个较大的文件或者消息报文,对于这种需要加密任意长度的明文,就需要对明文进行分组迭代,分组迭代运算的方式就称之为操作模式,加密算法的操作模式,可分为:ECB、CBC、CFB、OFB、CTR等模式。

ECB(电子密码本模式)

​ ECB(Electronic Code Book mode)模式是将消息分组后,再逐块加密,相同的明文会产生相同的密文。由于需要对消息进行分组,就涉及到最后一个分组的填充问题。AES ECB模式采用PKCS7号填充方法:待加密的整个明文长度必须是分组长度的整数倍,如果是非整数倍,那么就需要填充为整数倍。将每个要

19.9元 解锁文章和视频
1
chujiao_2d7e5**0575
达文西希望你叫我的全名达文西
  • 赞同
  • 威望

相关问题

    Copyright © 2025