AES-GCM加密算法的简单介绍
一.什么是AES加密?
常见的加密主要分为两类:对称加密和非对称加密,AES加密就是对称加密的一种,即加密和解密使用相同的一把**。它的全称是Advanced Encryption Standard(高级加密标准),主要是用来取代DES加密算法,目前已经被全世界广泛采用,各大处理器厂商也在各自的CPU中,集成了专门的AES指令集,从而在硬件层面提升了AES加解密的速度。
具体加密过程:十分钟读懂AES加密算法
二.AES加密基本构成
1.对称加密相关概念
明文P(plainText):未经加密的数据
**K(key):用来加密明文的密码。在对称加密算法中,加密与解密的**是相同的,由双方协商产生,绝不可以泄漏
密文C(cipherText): 经过加密的数据
加密函数E(encrypt):C = E(K, P),即将明文和**作为参数,传入加密函数中,就可以获得密文
解密函数D(decrypt):P = D(K, C),即将密文和**作为参数,传入解密函数中,就可以获得明文
一种简单的加解密函数是XOR运算(异或运算),XOR运算的神奇之处是:如果对一个值连续做两次XOR,会返回这个值本身
2. AES加密相关概念
分组:用来执行加密程序的内存空间有限。
**长度:128 bits、192 bits或256 bits。**的长度不同,推荐加密轮数也不同。
初始向量(IV):防止同样的明文块,始终加密成同样的密文块
填充方式:**只能对确定长度的数据块进行处理,所以需要对最后一块做额外处理,常用的模式有PKCS5, PKCS7, NOPADDING
三.GCM
GCM ( Galois/Counter Mode) 指的是该对称加密采用Counter模式,并带有GMAC消息认证码。二者分别保证了加密算法的保密性、完整性。
1.ECB( Electronic Mode 电子密码本模式)
对明文分组,每一组利用**得到密文组,组合起来就是加密后的密文。
缺点
明文中重复的排列会反映在密文中
不能提供对密文的完整性校验 (当密文被人删除某段后,解密者无法发现)
2.CTR(Counter Mode,计数器模式)
计数器模式(CTR模式)加密是对一系列输入数据块(称为计数)进行加密,产生一系列的输出块,输出块与明文异或得到密文
加密过程使用了**、Nonce(类似IV)、Counter(一个从0到n的编号)
最大的优势是可以并行执行,因为所有的块只依赖于Nonce与Counter,并不会依赖于前一个密文块,可事先进行加解密准备,适合高速传输需求。
但CTR不能提供密文消息完整性校验的功能(未被篡改)
3.完整性
有的人可能会想到,如果将密文的hash值随密文一起发送,接收者对收到的密文计算hash值,与收到的hash值进行比对,这样是否就能校验消息的完整性呢?
但再仔细想想,就能发现这其中的漏洞。
如果篡改者截获原始密文后,先篡改密文,而后计算篡改后的密文hash,替换掉原始消息中的密文hash。这样,接收者依旧没有办法发现对密文的篡改。
可见,使用单向散列函数计算hash值仍然不能解决消息完整性校验的问题。
3.1 MAC ( Message Authentication Code, 消息验证码)
消息验证码是一种与**相关的单项散列函数。
发送者使用**和消息得到MAC值,接收者利用**和收到的密文计算MAC值,与随消息而来的MAC值做 比较,从而判断消息是否被改过(完整性)
当篡改者篡改密文后,因为没有**,就无法计算篡改后的密文的MAC值。
3.2 GMAC ( Galois message authentication code mode, 伽罗瓦消息验证码 )
对应到上图中的消息认证码,GMAC就是利用伽罗华域(Galois Field,GF,有限域)乘法运算来计算消息的MAC值。
4. GCM
GCM中的G 就是值GMAC,C就是指CTR。 所以GCM可以提供对消息的加密和完整性校验。
Ek | 使用秘钥k对输入做对称加密运算 |
---|---|
Mh | 将输入与秘钥h在有限域GF(2^128)上做乘法 |
XOR | 异或运算 |
就像CTR模式下一样,先对块进行顺序编号,然后将该块编号与初始向量(IV)组合,并使用**k,对输入做AES加密,然后,将加密的结果与明文进行XOR运算来生成密文。像CTR模式下一样,应该对每次加密使用不同的IV。对于附加消息,会使用**H(由**K得出),运行GMAC,将结果与密文进行XOR运算,从而生成可用于验证数据完整性的身份验证标签。最后,密文接收者会收到一条完整的消息,包含密文、IV(计数器CTR的初始值)、身份验证标签(MAC值)。
参考资料:
AES-GCM 加密简介
十分钟读懂AES加密算法
1.什么是 AES-GCM加密算法
2.AES-GCM 加密简介
3.十分钟读懂AES加密算法