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. 这类名称不在注册或公共命名空间中, 存在冲突风险, 应谨慎使用.