JSON Web Encryption (JWE)

JSON Web Encryption (JWE) is de IETF-standaard, RFC 7516, om JSON-gegevens te versleutelen zodat alleen de bedoelde ontvanger ze kan lezen.

JSON Web Token (JWT) en JAdES laten zien hoe je bewijst dat JSON-gegevens niet zijn gewijzigd: door ze te ondertekenen. JSON Web Encryption (JWE) doet het omgekeerde: het verbergt de inhoud zelf, zodat alleen de bedoelde ontvanger die kan lezen. Waar iedereen met de publieke sleutel een ondertekend token kan controleren, kan niemand zonder de juiste privesleutel een versleuteld token zelfs maar inzien.

Een JWE werkt in twee lagen. Een eenmalige, willekeurig gegenereerde content encryption key (CEK) versleutelt de eigenlijke inhoud met een symmetrisch algoritme zoals AES; die CEK wordt op zijn beurt versleuteld met de publieke sleutel van de ontvanger, met een algoritme zoals RSA of elliptic curve cryptography. Alleen wie de bijbehorende privesleutel bezit, kan de CEK en daarmee de inhoud terugwinnen.

Het resultaat is een JSON-object met vijf delen: een header met de gebruikte algoritmen, de versleutelde CEK, een initialisatievector, de cijfertekst en een authenticatietag. In de compacte serialisatie worden deze vijf delen base64url-gecodeerd en met punten aan elkaar geplakt tot een enkele string - het versleutelde tegenhanger van de driedelige structuur van een JWT. JWE is vastgelegd door de IETF in RFC 7516, gepubliceerd samen met de verwante specificaties JSON Web Signature (JWS) en JSON Web Algorithms (JWA) als onderdeel van het JOSE-raamwerk (JSON Object Signing and Encryption).

Veelgestelde vragen

Terug naar begrippenlijst