加密 / 认证模式
Wiki: Authenticated encryption
加密(encryption)
认证(Authenticate) 即 MAC (message authentication code)
- Encrypt then Authenticate (EtA): used in IPsec。message = encrypt(plaintext) + mac( encrypt(plaintext) )
- Authenticate then Encrypt (AtE) used in SSL / TLS; message = encrypt( plaintext + mac(plaintext) )
- Encrypt and Authenticate (E&A) used in SSH. message = encrypt(plaintext) + mac(plaintext)
一般认为 EtA 安全性最好。
AtE : 理论上如果加密算法有问题,攻击者有可能修改密文内容使 mac 仍然合法。
E&A : 理论上 MAC 有可能泄露明文信息。
AtE 和 E&A 均必须先解密才能验证 mac。理论上可能受到 chosen-ciphertext 攻击。