Zum Hauptinhalt springen

4. JOSE Header (JOSE-Header)

Für ein JWE beschreiben die Mitglieder des JSON-Objekts, das den JOSE-Header darstellt, die auf den Klartext angewendete Verschlüsselung und optional zusätzliche Eigenschaften des JWE. Die Header-Parameternamen innerhalb des JOSE-Headers müssen (MUST) eindeutig sein, wie in Abschnitt 4 von [JWS] angegeben. Die Regeln für den Umgang mit Header-Parametern, die von der Implementierung nicht verstanden werden, sind ebenfalls dieselben. Die Klassen von Header-Parameternamen sind ebenfalls dieselben.

4.1 Registered Header Parameter Names (Registrierte Header-Parameternamen)

Die folgenden Header-Parameternamen für die Verwendung in JWEs sind im IANA-Register "JSON Web Signature and Encryption Header Parameters", das durch [JWS] eingerichtet wurde, registriert, mit unten definierten Bedeutungen.

Wie das gemeinsame Register anzeigt, teilen sich JWS und JWE einen gemeinsamen Header-Parameterraum. Wenn ein Parameter von beiden Spezifikationen verwendet wird, muss seine Verwendung zwischen den Spezifikationen kompatibel sein.

4.1.1 "alg" (Algorithm) Header Parameter (Algorithmus-Header-Parameter)

Die Bedeutung, Syntax und Verarbeitungsregeln für den "alg"-Header-Parameter sind dieselben wie in Abschnitt 4.1.1 von [JWS] definiert, mit der Ausnahme, dass der Header-Parameter den kryptografischen Algorithmus identifiziert, der zum Verschlüsseln oder Bestimmen des Werts des CEK verwendet wird. Wenn der "alg"-Wert keinen unterstützten Algorithmus darstellt oder wenn dem Empfänger kein Schlüssel zur Verwendung mit diesem Algorithmus zur Verfügung steht, kann der verschlüsselte Inhalt nicht entschlüsselt werden.

Eine Liste der definierten "alg"-Werte für diese Verwendung findet sich im IANA-Register "JSON Web Signature and Encryption Algorithms", das durch [JWA] eingerichtet wurde; der anfängliche Inhalt dieses Registers sind die in Abschnitt 4.1 von [JWA] definierten Werte.

4.1.2 "enc" (Encryption Algorithm) Header Parameter (Verschlüsselungsalgorithmus-Header-Parameter)

Der "enc" (encryption algorithm, Verschlüsselungsalgorithmus)-Header-Parameter identifiziert den Inhaltsverschlüsselungsalgorithmus, der verwendet wird, um authentifizierte Verschlüsselung auf dem Klartext durchzuführen, um den Chiffretext und das Authentifizierungs-Tag zu erzeugen. Dieser Algorithmus muss (MUST) ein AEAD-Algorithmus mit einer angegebenen Schlüssellänge sein. Wenn der "enc"-Wert keinen unterstützten Algorithmus darstellt, kann der verschlüsselte Inhalt nicht entschlüsselt werden. Der "enc"-Wert sollte entweder im IANA-Register "JSON Web Signature and Encryption Algorithms", das durch [JWA] eingerichtet wurde, registriert sein oder ein Wert sein, der einen kollisionsresistenten Namen enthält. Der "enc"-Wert ist eine Groß-/Kleinschreibung beachtende ASCII-Zeichenfolge, die einen StringOrURI-Wert enthält. Dieser Header-Parameter muss (MUST) vorhanden sein und muss (MUST) von Implementierungen verstanden und verarbeitet werden.

Eine Liste der definierten "enc"-Werte für diese Verwendung findet sich im IANA-Register "JSON Web Signature and Encryption Algorithms", das durch [JWA] eingerichtet wurde; der anfängliche Inhalt dieses Registers sind die in Abschnitt 5.1 von [JWA] definierten Werte.

4.1.3 "zip" (Compression Algorithm) Header Parameter (Kompressionsalgorithmus-Header-Parameter)

Der "zip" (compression algorithm, Kompressionsalgorithmus), der auf den Klartext vor der Verschlüsselung angewendet wird, falls vorhanden. Der durch diese Spezifikation definierte "zip"-Wert ist:

  • "DEF" - Kompression mit dem DEFLATE [RFC1951]-Algorithmus

Andere Werte können (MAY) verwendet werden. Kompressionsalgorithmuswerte können im IANA-Register "JSON Web Encryption Compression Algorithms", das durch [JWA] eingerichtet wurde, registriert werden. Der "zip"-Wert ist eine Groß-/Kleinschreibung beachtende Zeichenfolge. Wenn kein "zip"-Parameter vorhanden ist, wird keine Kompression auf den Klartext vor der Verschlüsselung angewendet. Bei Verwendung muss (MUST) dieser Header-Parameter integritätsgeschützt sein; daher muss (MUST) er nur innerhalb des JWE Protected Headers erscheinen. Die Verwendung dieses Header-Parameters ist optional (OPTIONAL). Dieser Header-Parameter muss (MUST) von Implementierungen verstanden und verarbeitet werden.

4.1.4 "jku" (JWK Set URL) Header Parameter

Die Bedeutung, Syntax und Verarbeitungsregeln für den "jku"-Header-Parameter sind dieselben wie in Abschnitt 4.1.2 von [JWS] definiert, mit der Ausnahme, dass die JWK-Set-Ressource den öffentlichen Schlüssel enthält, zu dem das JWE verschlüsselt wurde; dies kann verwendet werden, um den privaten Schlüssel zu bestimmen, der zum Entschlüsseln des JWE benötigt wird.

4.1.5 "jwk" (JSON Web Key) Header Parameter

Die Bedeutung, Syntax und Verarbeitungsregeln für den "jwk"-Header-Parameter sind dieselben wie in Abschnitt 4.1.3 von [JWS] definiert, mit der Ausnahme, dass der Schlüssel der öffentliche Schlüssel ist, zu dem das JWE verschlüsselt wurde; dies kann verwendet werden, um den privaten Schlüssel zu bestimmen, der zum Entschlüsseln des JWE benötigt wird.

4.1.6 "kid" (Key ID) Header Parameter

Die Bedeutung, Syntax und Verarbeitungsregeln für den "kid"-Header-Parameter sind dieselben wie in Abschnitt 4.1.4 von [JWS] definiert, mit der Ausnahme, dass der Schlüsselhinweis auf den öffentlichen Schlüssel verweist, zu dem das JWE verschlüsselt wurde; dies kann verwendet werden, um den privaten Schlüssel zu bestimmen, der zum Entschlüsseln des JWE benötigt wird. Dieser Parameter ermöglicht es Absendern, JWE-Empfängern explizit eine Schlüsseländerung zu signalisieren.

4.1.7 "x5u" (X.509 URL) Header Parameter

Die Bedeutung, Syntax und Verarbeitungsregeln für den "x5u"-Header-Parameter sind dieselben wie in Abschnitt 4.1.5 von [JWS] definiert, mit der Ausnahme, dass das X.509-Öffentlichschlüsselzertifikat oder die Zertifikatskette [RFC5280] den öffentlichen Schlüssel enthält, zu dem das JWE verschlüsselt wurde; dies kann verwendet werden, um den privaten Schlüssel zu bestimmen, der zum Entschlüsseln des JWE benötigt wird.

4.1.8 "x5c" (X.509 Certificate Chain) Header Parameter

Die Bedeutung, Syntax und Verarbeitungsregeln für den "x5c"-Header-Parameter sind dieselben wie in Abschnitt 4.1.6 von [JWS] definiert, mit der Ausnahme, dass das X.509-Öffentlichschlüsselzertifikat oder die Zertifikatskette [RFC5280] den öffentlichen Schlüssel enthält, zu dem das JWE verschlüsselt wurde; dies kann verwendet werden, um den privaten Schlüssel zu bestimmen, der zum Entschlüsseln des JWE benötigt wird.

Siehe Anhang B von [JWS] für einen Beispiel-"x5c"-Wert.

4.1.9 "x5t" (X.509 Certificate SHA-1 Thumbprint) Header Parameter

Die Bedeutung, Syntax und Verarbeitungsregeln für den "x5t"-Header-Parameter sind dieselben wie in Abschnitt 4.1.7 von [JWS] definiert, mit der Ausnahme, dass das durch den Fingerabdruck referenzierte Zertifikat den öffentlichen Schlüssel enthält, zu dem das JWE verschlüsselt wurde; dies kann verwendet werden, um den privaten Schlüssel zu bestimmen, der zum Entschlüsseln des JWE benötigt wird. Beachten Sie, dass Zertifikatsfingerabdrücke manchmal auch als Zertifikats-Fingerprints bezeichnet werden.

4.1.10 "x5t#S256" (X.509 Certificate SHA-256 Thumbprint) Header Parameter

Die Bedeutung, Syntax und Verarbeitungsregeln für den "x5t#S256"-Header-Parameter sind dieselben wie in Abschnitt 4.1.8 von [JWS] definiert, mit der Ausnahme, dass das durch den Fingerabdruck referenzierte Zertifikat den öffentlichen Schlüssel enthält, zu dem das JWE verschlüsselt wurde; dies kann verwendet werden, um den privaten Schlüssel zu bestimmen, der zum Entschlüsseln des JWE benötigt wird. Beachten Sie, dass Zertifikatsfingerabdrücke manchmal auch als Zertifikats-Fingerprints bezeichnet werden.

4.1.11 "typ" (Type) Header Parameter

Die Bedeutung, Syntax und Verarbeitungsregeln für den "typ"-Header-Parameter sind dieselben wie in Abschnitt 4.1.9 von [JWS] definiert, mit der Ausnahme, dass der Typ der dieses vollständigen JWE ist.

4.1.12 "cty" (Content Type) Header Parameter

Die Bedeutung, Syntax und Verarbeitungsregeln für den "cty"-Header-Parameter sind dieselben wie in Abschnitt 4.1.10 von [JWS] definiert, mit der Ausnahme, dass der Typ der des gesicherten Inhalts (des Klartexts) ist.

4.1.13 "crit" (Critical) Header Parameter

Die Bedeutung, Syntax und Verarbeitungsregeln für den "crit"-Header-Parameter sind dieselben wie in Abschnitt 4.1.11 von [JWS] definiert, mit der Ausnahme, dass auf Header-Parameter für ein JWE verwiesen wird, anstatt auf Header-Parameter für ein JWS.

4.2 Public Header Parameter Names (Öffentliche Header-Parameternamen)

Zusätzliche Header-Parameternamen können von denen definiert werden, die JWEs verwenden. Um jedoch Kollisionen zu vermeiden, sollte jeder neue Header-Parametername entweder im IANA-Register "JSON Web Signature and Encryption Header Parameters", das durch [JWS] eingerichtet wurde, registriert sein oder ein öffentlicher Name sein: ein Wert, der einen kollisionsresistenten Namen enthält. In jedem Fall muss der Definierer des Namens oder Werts angemessene Vorkehrungen treffen, um sicherzustellen, dass er den Teil des Namensraums kontrolliert, den er zur Definition des Header-Parameternamens verwendet.

Neue Header-Parameter sollten sparsam eingeführt werden, da sie zu nicht interoperablen JWEs führen können.

4.3 Private Header Parameter Names (Private Header-Parameternamen)

Ein Produzent und Konsument eines JWE können vereinbaren, Header-Parameternamen zu verwenden, die private Namen sind: Namen, die keine registrierten Header-Parameternamen (Abschnitt 4.1) oder öffentliche Header-Parameternamen (Abschnitt 4.2) sind. Im Gegensatz zu öffentlichen Header-Parameternamen sind private Header-Parameternamen kollisionsanfällig und sollten mit Vorsicht verwendet werden.