跳到主要内容

4. JOSE Header

JWE 的 JOSE Header 是 JSON object, 描述对 Plaintext 应用的 encryption 以及 JWE 的其他属性. Header Parameter name MUST 唯一. 未理解 Header Parameter 的处理规则与 JWS 相同.

4.1 Registered Header Parameter Names (已注册 Header Parameter)

JWS 和 JWE 共享 "JSON Web Signature and Encryption Header Parameters" registry. JWE 使用的主要参数包括:

  • alg: algorithm, 标识用于加密或确定 CEK 的 cryptographic algorithm. 如果 recipient 不支持该算法或没有可用 key, 内容不能解密.
  • enc: encryption algorithm, 标识用于对 plaintext 做 authenticated encryption 的 content encryption algorithm. 该参数 MUST 存在, 且 MUST 被实现理解和处理.
  • zip: compression algorithm, 表示加密前对 plaintext 使用的压缩算法. 本规范定义 DEF, 即 DEFLATE. 使用时该参数 MUST 位于 JWE Protected Header 中.
  • jku: JWK Set URL, 指向包含加密目标 public key 的 JWK Set resource.
  • jwk: JSON Web Key, 包含加密目标 public key.
  • kid: Key ID, 给 recipient 提供 key selection hint.
  • x5u, x5c, x5t, x5t#S256: X.509 certificate URL, certificate chain 或 thumbprint, 用于定位包含 public key 的 certificate.
  • typ: type, 表示整个 JWE 的类型.
  • cty: content type, 表示 secured content, 即 plaintext 的类型.
  • crit: critical, 标识必须被理解和处理的 extension header parameter.

4.2 Public Header Parameter Names (公共 Header Parameter 名称)

使用者可以定义额外 Header Parameter. 为避免冲突, 新名称应注册到 JOSE header parameter registry, 或使用包含 Collision-Resistant Name 的 Public Name. 新参数应谨慎引入, 因为它们可能导致 JWE 不可互操作.

4.3 Private Header Parameter Names (私有 Header Parameter 名称)

JWE producer 和 consumer 可以约定使用 private name. 这类名称不在注册或公共命名空间中, 存在冲突风险, 应谨慎使用.