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

本文介绍了认证加密的概念,强调了AEAD(认证加密与关联数据)在确保数据机密性和完整性方面的重要性。文章详细讲解了AEAD_AES_256_GCM加解密的Java实现,包括如何生成256位密钥,并提到了Java 8u151及以上版本对无限强度策略文件的支持。
1424

被折叠的 条评论
为什么被折叠?



