5. Content Encryption 的密码算法
5.1 "enc" Header Parameter Values for JWE
JWE 支持的 content encryption 算法:
| "enc" Param Value | Content Encryption Algorithm | Implementation Requirements |
|---|---|---|
| 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 Algorithms
这是一种组合式加密和认证算法, 它组合了:
- 用于加密的 AES CBC 模式
- 用于认证的 HMAC SHA-2
主要特性:
- 提供 Authenticated Encryption
- CEK 同时用于加密和 MAC 计算
- 支持三种密钥大小配置
算法变体:
- A128CBC-HS256: AES-128-CBC + HMAC-SHA-256 (256-bit CEK)
- A192CBC-HS384: AES-192-CBC + HMAC-SHA-384 (384-bit CEK)
- A256CBC-HS512: AES-256-CBC + HMAC-SHA-512 (512-bit CEK)
5.3 AES GCM Content Encryption
AES Galois/Counter Mode (GCM) 是一种 authenticated encryption algorithm:
- 提供机密性和完整性保护
- 硬件实现效率高
- 支持 Additional Authenticated Data (AAD)
算法变体:
- A128GCM: 使用 128-bit key
- A192GCM: 使用 192-bit key
- A256GCM: 使用 256-bit key
GCM Parameters:
- Initialization Vector: 96-bit 随机值
- Authentication Tag: 128-bit authentication tag
选择建议:
- 优先使用 AES-GCM algorithms (效率更高)
- AES_CBC_HMAC_SHA2 提供广泛兼容性
- 根据安全要求选择合适的密钥长度