¿Qué es JSON Web Encryption (JWE)?

Como se define en el RFC 7516, JSON Web Encryption (JWE) es un mecanismo para cifrar y descifrar datos en formato JSON. Agrega una capa de confidencialidad a los datos, y es particularmente útil al transmitir información sensible a través de una red no confiable.

JWE se utiliza a menudo junto con Tokens Web JSON (JWTs) para proteger los datos de carga útil. Por ejemplo, un Token de ID (ID token) o un Token de acceso (Access token) pueden cifrarse utilizando JWE para asegurar que los datos estén protegidos durante la transmisión.

¿Cómo funciona JWE?

JWE tiene dos formatos de serialización: compacto y JSON. Cada formato tiene su propia manera de representar los datos cifrados.

Serialización compacta

En la serialización compacta, el JWE se representa como una cadena con cinco partes codificadas en Base64URL separadas por puntos (.). Las cinco partes son:

{{header}}.{{encrypted-key}}.{{iv}}.{{ciphertext}}.{{tag}}

Cada parte tiene un propósito específico:

Serialización JSON

La serialización JSON es más extensa y proporciona una forma estructurada de representar el JWE. El JWE se representa como un objeto JSON con las siguientes propiedades:

{
  "protected": "{{protected-header}}",
  "unprotected": "{{unprotected-header}}",
  "header": "{{header}}",
  "encrypted_key": "{{encrypted-key}}",
  "iv": "{{iv}}",
  "ciphertext": "{{ciphertext}}",
  "tag": "{{tag}}",
  "aad": "{{additional-authenticated-data}}"
}

El cliente debería poder descifrar el JWE utilizando la clave y el algoritmo apropiados. Se puede utilizar una clave precomunicada o una clave derivada de un protocolo de acuerdo de claves para descifrar el JWE.

Por ejemplo, un Token de ID (ID token) puede cifrarse utilizando JWE, y el cliente puede descifrarlo utilizando la clave apropiada obtenida del endpoint jwks_uri del proveedor de OpenID.


Revisión #2
Creado 13 noviembre 2024 13:44:28 por Marluan Espiritusanto
Actualizado 13 noviembre 2024 14:11:35 por Marluan Espiritusanto