5. Cryptographic Algorithms for Content Encryption (内容加密的加密算法)
5.1 "enc" Header Parameter Values for JWE (JWE 的 "enc" 参数值)
JWE 支持的内容加密算法:
| "enc" 参数值 | 内容加密算法 | 实现要求 |
|---|---|---|
| A128CBC-HS256 | AES_128_CBC_HMAC_SHA_256 | Required |
| A192CBC-HS384 | AES_192_CBC_HMAC_SHA_384 | Optional |
| A256CBC-HS512 | AES_256_CBC_HMAC_SHA_512 | Required |
| A128GCM | AES GCM using 128-bit key | Recommended |
| A192GCM | AES GCM using 192-bit key | Optional |
| A256GCM | AES GCM using 256-bit key | Recommended |
5.2 AES_CBC_HMAC_SHA2 算法
这是一种组合加密和认证算法,结合了:
- AES CBC 模式进行加密
- HMAC SHA-2 进行认证
关键特性:
- 提供认证加密 (Authenticated Encryption)
- CEK 同时用于加密和 MAC 计算
- 支持三种密钥大小配置
算法变体:
- A128CBC-HS256: AES-128-CBC + HMAC-SHA-256 (256 位 CEK)
- A192CBC-HS384: AES-192-CBC + HMAC-SHA-384 (384 位 CEK)
- A256CBC-HS512: AES-256-CBC + HMAC-SHA-512 (512 位 CEK)
5.3 AES GCM 内容加密
AES Galois/Counter Mode (GCM) 是一种认证加密算法:
- 提供机密性和完整性保护
- 高效的硬件实现
- 支持额外认证数据 (AAD)
算法变体:
- A128GCM: 使用 128 位密钥
- A192GCM: 使用 192 位密钥
- A256GCM: 使用 256 位密钥
GCM 参数:
- Initialization Vector: 96 位随机值
- Authentication Tag: 128 位认证标签
选择建议:
- 优先使用 AES-GCM 算法(更高效)
- AES_CBC_HMAC_SHA2 提供广泛的兼容性
- 根据安全需求选择适当的密钥长度