目录
一、什么是认证加密?
在消息的传递过程中,既要保持数据的机密性,也要保持数据的完整性。机密性可以依靠信息加密来解决,完整性可以通过消息验证码来检查。Authenticated Encryption (AE,认证加密) 就是这样一种同时解决数据的机密性和完整性的方法。
常用的3种加密和验证组合方案
方案 | 描述 | 典型应用 |
---|---|---|
加密后验证 | 生成两个密钥:加密密钥和MAC密钥 使用加密密钥,加密明文数据,得到密文数据; 使用MAC密钥,计算密文数据的消息验证码; 输出:密文数据和验证码。 |
IPSec协议 |
验证后加密 | 生成两个密钥:MAC密钥和加密密钥 使用MAC密钥,计算明文数据的消息验证码; 使用加密密钥,加密明文数据和验证码,得到密文数据; 输出:密文数据。 |
SSL协议 |
加密并验证 | 生成两个密钥:加密密钥和MAC密钥 使用加密密钥,加密明文数据,得到密文数据; 使用MAC密钥,计算明文数据的消息验证码; 输出:密文数据和验证码 |
SSH协议 |
虽然这些方法有重要协议的支持,但并不意味着它们就是安全的。这些通过组合加密和认证算法的方案存在一些安全问题。相对来说,“加密后验证”方案的安全性要高一些。
二、什么是带关联数据的认证加密?
RFC5116中定义,Authenticated Encryption with Associated Data (AEAD) 加入了对关联数据的完整性、