认证加密(Authenticaed Encryption,AE)和带有关联数据的认证加密(authenticated encryption with associated data,AEAD,AE的变种)是一种能够同时保证数据的保密性、 完整性和真实性的加密模式
AE认证加密模式有CCM、GCM、CWC、EAX、IAPM、OCB等
认证加密方法:
Encrypt-then-MAC(EtM)、Encrypt-and-MAC(E&M)、MAC-then-Encrypt(MtE)
- Encrypt-then-MAC(EtM)
对明文进行加密,然后根据得到的密文生成消息认证码(MAC),密文和MAC一起发送
- Encrypt-and-MAC(E&M)
基于明文生成MAC,明文加密得到密文,密文和MAC一起发送
- MAC-then-Encrypt(MtE)
基于明文生成MAC,然后将明文和MAC一起加密,发送密文
AES-CCM (Counter with CBC-MAC)
AES-GCM (Galois Counter Mode)
AES-GCM特点:
1、密文大小:总是等于明文大小,使用CTR模式进行加密,不需要填充
2、Nonce/IV大小:GCM可以接受较大的Nonce大小,但建议使用12-byte,因为它不需要额外的进程,Nonce通常在消息前面,使得密文大小增加
3、标记大小:GCM总是输出16-byte标记的大小。可以修建它,但会降低防伪的安全性。标签通常附加在密文后面。标签的位长度(t)是一个安全参数,可取:128、120、112、104或96
因此,可能会看到类似(Nonce|ciphertext|tag)的输出
商密场景,按照下面的顺序选用工作模式:
AES-GCM --> AES-CCM --> EtM组合模式的AES-CTR + HMAC-SHA256
商密场景,按照下⾯的顺序选⽤⼯作模式:
SM4-GCM --> EtM组合模式的SM4-CTR + HMAC-SM3