AES_GCM加密算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AES_GCM加密算法
参考:
相关概念解释:
AES:
设AES加密函数为E,则 C = E(K, P),其中P为明⽂,K为密钥,C为密⽂。
也就是说,把明⽂P和密钥K作为加密函数的参数输⼊,则加密函数E会输出密⽂C。
AES为分组密码,分组密码也就是把明⽂分成⼀组⼀组的,每组长度相等,每次加密⼀组数据,直到加密完整个明⽂。
在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。
密钥的长度可以使⽤128位、192位或256位。
密钥的长度不同,推荐加密轮数也不同。
AES算法属于典型的对称算法。
AES算法具体步骤参考:
CTR ( CounTeR 计数器模式):
计数模式(CTR模式)加密是对⼀系列输⼊(称为计数)进⾏加密,产⽣⼀系列的输出块,输出块与明⽂异或得到密⽂。
对于最后的数据块,可能是长u位的局部数据块,这u位就将⽤于异或操作,⽽剩下的b-u位将被丢弃(b表⽰块的长度)。
CTR解密类似。
这⼀系列的计数必须互不相同的。
IV:
Initialization Vector, 初始化向量,⼀般是加密过程初始化产⽣的随机向量。
加密和解密过程需要同⼀组IV。
MAC:
密⽂的收发双发需要提前共享⼀个秘钥。
密⽂发送者将密⽂的MAC值随密⽂⼀起发送,密⽂接收者通过共享秘钥计算收到密⽂的MAC值,这样就可以对收到的密⽂做完整性校验。
当篡改者篡改密⽂后,没有共享秘钥,就⽆法计算出篡改后的密⽂的MAC值。
在AES_GCM算法中,MAC⼜称作TAG
GCM:
GCM ( Galois/Counter Mode) 指的是该对称加密采⽤Counter模式,并带有GMAC消息认证码。
下图的解释:
Ek使⽤秘钥k对输⼊做对称加密运算
XOR异或运算
Mh将输⼊与秘钥h在有限域GF(2^128)上做乘法
算法详细步骤:
AES_GCM 算法加密过程:
1. AES加密输⼊:
IV值 (⼀般随机产⽣)
密钥
明⽂
附加消息Aad: 附加消息不是明⽂内容, 作AES加密时作为输⼊,对产⽣MAC值产⽣影响.可有可⽆
2. 算法对明⽂进⾏分段,并通过输⼊的密钥分别与分段的明⽂作AES对称加密运算, ⽣成密⽂
3. 对上⼀步的每段加密结果, 以及附加消息进⾏Mh运算. 得到的结果⽣成MAC值作为验证信息, 再GCM算法中⼜叫做TAG值
AES_GCM 算法解密过程:
1. AES解密输⼊:
IV值 (与加密过程所⽤的IV值相同)
密钥
密⽂
附加消息Aad: 与加密过程所⽤的IAad值相同
加密产⽣的TAG
2. 分别⽤密钥, 对每段密⽂进⾏解密
3. 对Aad和解密结果进程Mh计算⽣成TAG, 和加密产⽣的TAG进⾏⽐对可以验证加/解密过程的完整性。