Skip to main content

4. Cryptographic Algorithms for Key Management (密钥管理的加密算法)

JWE 使用加密算法来加密或确定 Content Encryption Key (CEK).

4.1 "alg" Header Parameter Values for JWE (JWE 的 "alg" 参数值)

JWE 支持的密钥管理算法(简化总结):

算法标识密钥管理算法额外头部参数实现要求
RSA1_5RSAES-PKCS1-v1_5-Recommended-
RSA-OAEPRSAES OAEP (默认参数)-Recommended+
RSA-OAEP-256RSAES OAEP (SHA-256)-Optional
A128KW / A192KW / A256KWAES Key Wrap-Recommended
dir直接使用共享密钥-Recommended
ECDH-ESECDH 密钥协商epk, apu, apvRecommended+
ECDH-ES+A128KW/A192KW/A256KWECDH + AES Key Wrapepk, apu, apvRecommended/Optional
A128GCMKW / A192GCMKW / A256GCMKWAES GCM Key Wrapiv, tagOptional
PBES2-HS256/384/512+A128/192/256KW基于密码的密钥加密p2s, p2cOptional

注释:

  • "+" 表示要求可能在未来版本中增强
  • "-" 表示要求可能在未来版本中降低
  • 除 "dir" 和 "ECDH-ES" 外,其他算法都生成 JWE Encrypted Key

4.2-4.8 算法详细说明

4.2 RSA 密钥加密 (RSAES-PKCS1-v1_5)

  • 算法标识: RSA1_5
  • 最小密钥大小: 2048 位

4.3 RSA-OAEP 密钥加密

  • RSA-OAEP: 使用 SHA-1 和 MGF1
  • RSA-OAEP-256: 使用 SHA-256 和 MGF1
  • 最小密钥大小: 2048 位

4.4 AES Key Wrap

  • A128KW: 128 位密钥
  • A192KW: 192 位密钥
  • A256KW: 256 位密钥
  • 使用 RFC 3394 定义的 AES Key Wrap 算法

4.5 直接密钥加密 (dir)

  • 直接使用预共享的对称密钥作为 CEK
  • 不产生 JWE Encrypted Key

4.6 ECDH-ES 密钥协商

  • 使用椭圆曲线 Diffie-Hellman 临时静态密钥协商
  • 额外头部参数:
    • epk (Ephemeral Public Key): 临时公钥
    • apu (Agreement PartyUInfo): 协商方 U 信息
    • apv (Agreement PartyVInfo): 协商方 V 信息
  • 使用 Concat KDF 进行密钥派生

4.7 AES GCM 密钥加密

  • 使用 AES GCM 算法进行密钥包装
  • 额外头部参数:
    • iv (Initialization Vector): 初始化向量
    • tag (Authentication Tag): 认证标签

4.8 PBES2 基于密码的密钥加密

  • 使用 PBES2 (Password-Based Encryption Scheme 2)
  • 结合 HMAC-SHA2 和 AES Key Wrap
  • 额外头部参数:
    • p2s (PBES2 Salt Input): 盐输入
    • p2c (PBES2 Count): 迭代次数

实现建议:

  • 优先使用 ECDH-ES 和 RSA-OAEP
  • 避免使用已知存在弱点的算法(如 RSA1_5)
  • 选择适合应用场景的密钥大小