Zum Hauptinhalt springen

3. Cryptographic Algorithms for Digital Signatures and MACs (Kryptografische Algorithmen für digitale Signaturen und MACs)

JWS verwendet kryptografische Algorithmen, um den Inhalt des JWS Protected Header (JWS geschützter Header) und der JWS Payload (JWS-Nutzlast) digital zu signieren oder einen MAC zu erstellen.

3.1 "alg" (Algorithm) Header Parameter Values for JWS ("alg" Header-Parameterwerte für JWS)

Die folgende Tabelle definiert die "alg" (algorithm) Header-Parameterwerte für JWS, die durch diese Spezifikation definiert werden:

"alg" ParameterwertDigitale Signatur- oder MAC-AlgorithmusImplementierungsanforderungen
HS256HMAC using SHA-256 (HMAC mit SHA-256)Required (Erforderlich)
HS384HMAC using SHA-384 (HMAC mit SHA-384)Optional (Optional)
HS512HMAC using SHA-512 (HMAC mit SHA-512)Optional (Optional)
RS256RSASSA-PKCS1-v1_5 using SHA-256 (RSASSA-PKCS1-v1_5 mit SHA-256)Recommended (Empfohlen)
RS384RSASSA-PKCS1-v1_5 using SHA-384 (RSASSA-PKCS1-v1_5 mit SHA-384)Optional (Optional)
RS512RSASSA-PKCS1-v1_5 using SHA-512 (RSASSA-PKCS1-v1_5 mit SHA-512)Optional (Optional)
ES256ECDSA using P-256 and SHA-256 (ECDSA mit P-256 und SHA-256)Recommended+ (Empfohlen+)
ES384ECDSA using P-384 and SHA-384 (ECDSA mit P-384 und SHA-384)Optional (Optional)
ES512ECDSA using P-521 and SHA-512 (ECDSA mit P-521 und SHA-512)Optional (Optional)
PS256RSASSA-PSS using SHA-256 and MGF1 with SHA-256 (RSASSA-PSS mit SHA-256 und MGF1 mit SHA-256)Optional (Optional)
PS384RSASSA-PSS using SHA-384 and MGF1 with SHA-384 (RSASSA-PSS mit SHA-384 und MGF1 mit SHA-384)Optional (Optional)
PS512RSASSA-PSS using SHA-512 and MGF1 with SHA-512 (RSASSA-PSS mit SHA-512 und MGF1 mit SHA-512)Optional (Optional)
noneNo digital signature or MAC performed (Keine digitale Signatur oder MAC)Optional (Optional)

Hinweis: Das "+" in der Spalte Implementierungsanforderungen zeigt an, dass die Anforderungsstärke in zukünftigen Versionen der Spezifikation erhöht werden kann.

3.2 HMAC with SHA-2 Functions (HMAC mit SHA-2-Funktionen)

Hash-based Message Authentication Codes (HMACs) (Hashbasierte Nachrichtenauthentifizierungscodes) ermöglichen es, ein Geheimnis plus eine kryptografische Hashfunktion zu verwenden, um einen MAC zu generieren. Dieser Algorithmus ist in RFC 2104 [RFC2104] definiert.

Schlüsselanforderungen: Ein Schlüssel derselben Größe wie die Hash-Ausgabe (beispielsweise 256 Bits für "HS256") oder größer muss (MUST) mit diesem Algorithmus verwendet werden.

HMAC-Algorithmenwerte:

"alg" ParameterwertMAC-Algorithmus
HS256HMAC using SHA-256 (HMAC mit SHA-256)
HS384HMAC using SHA-384 (HMAC mit SHA-384)
HS512HMAC using SHA-512 (HMAC mit SHA-512)

Validierungsanforderungen: Der Vergleich von HMAC-Werten muss (MUST) in konstanter Zeit durchgeführt werden, um Timing-Angriffe zu verhindern.

3.3 Digital Signature with RSASSA-PKCS1-v1_5 (Digitale Signatur mit RSASSA-PKCS1-v1_5)

Dieser Abschnitt definiert die Verwendung des RSASSA-PKCS1-v1_5 digitalen Signaturalgorithmus, wie in Abschnitt 8.2 von RFC 3447 [RFC3447] definiert, mit den SHA-2-Hashfunktionen.

Schlüsselanforderungen: Ein Schlüssel der Größe 2048 Bits oder größer muss (MUST) mit diesem Algorithmus verwendet werden.

Algorithmenwerte:

"alg" ParameterwertDigitaler Signaturalgorithmus
RS256RSASSA-PKCS1-v1_5 using SHA-256 (RSASSA-PKCS1-v1_5 mit SHA-256)
RS384RSASSA-PKCS1-v1_5 using SHA-384 (RSASSA-PKCS1-v1_5 mit SHA-384)
RS512RSASSA-PKCS1-v1_5 using SHA-512 (RSASSA-PKCS1-v1_5 mit SHA-512)

3.4 Digital Signature with ECDSA (Digitale Signatur mit ECDSA)

Der Elliptic Curve Digital Signature Algorithm (ECDSA) (Elliptische-Kurven-Digitalsignaturalgorithmus) [DSS] verwendet elliptische Kurvenkryptografie und bietet äquivalente Sicherheit zu RSA mit kürzeren Schlüssellängen und schnellerer Verarbeitung.

Unterstützte Kurven und Hashfunktionen:

  • P-256-Kurve mit SHA-256
  • P-384-Kurve mit SHA-384
  • P-521-Kurve mit SHA-512

ECDSA P-256 SHA-256 Signaturgenerierungsschritte:

  1. Generieren einer digitalen Signatur der JWS Signing Input (JWS-Signierungs-Eingabe) unter Verwendung von ECDSA P-256 SHA-256 mit dem privaten Schlüssel, was ein (R, S)-Paar erzeugt, jeweils eine 256-Bit vorzeichenlose Ganzzahl
  2. Konvertieren von R und S in Oktettsequenzen in Big-Endian-Reihenfolge, jeweils 32 Oktette lang
  3. Verketten der beiden Oktettsequenzen in der Reihenfolge R dann S
  4. Die resultierende 64-Oktett-Sequenz ist der JWS Signature (JWS-Signatur)-Wert

Algorithmenwerte:

"alg" ParameterwertDigitaler Signaturalgorithmus
ES256ECDSA using P-256 and SHA-256 (ECDSA mit P-256 und SHA-256)
ES384ECDSA using P-384 and SHA-384 (ECDSA mit P-384 und SHA-384)
ES512ECDSA using P-521 and SHA-512 (ECDSA mit P-521 und SHA-512)

Signaturlängen:

  • ES256: 64 Oktette (R und S sind jeweils 32 Oktette)
  • ES384: 96 Oktette (R und S sind jeweils 48 Oktette)
  • ES512: 132 Oktette (R und S sind jeweils 66 Oktette)

3.5 Digital Signature with RSASSA-PSS (Digitale Signatur mit RSASSA-PSS)

Dieser Abschnitt definiert die Verwendung des RSASSA-PSS digitalen Signaturalgorithmus, wie in Abschnitt 8.1 von RFC 3447 [RFC3447] definiert, mit der MGF1-Maskengenerierungsfunktion und SHA-2-Hashfunktionen.

Hauptparameter:

  • Die RSASSA-PSS-Hashfunktion und die MGF1-Hashfunktion verwenden dieselbe Hashfunktion
  • Die Salzwertgröße entspricht der Ausgabegröße der Hashfunktion
  • Schlüsselgrößenanforderung: 2048 Bits oder größer

Algorithmenwerte:

"alg" ParameterwertDigitaler Signaturalgorithmus
PS256RSASSA-PSS using SHA-256 and MGF1 with SHA-256 (RSASSA-PSS mit SHA-256 und MGF1 mit SHA-256)
PS384RSASSA-PSS using SHA-384 and MGF1 with SHA-384 (RSASSA-PSS mit SHA-384 und MGF1 mit SHA-384)
PS512RSASSA-PSS using SHA-512 and MGF1 with SHA-512 (RSASSA-PSS mit SHA-512 und MGF1 mit SHA-512)

3.6 Using the Algorithm "none" (Verwendung des Algorithmus "none")

Die JWS-Spezifikation [JWS] definiert den "alg"-Wert "none" zur Verwendung bei der Erstellung von Unsecured JWS (Ungesicherten JWS)-Objekten, die keinen Integritätsschutz bieten.

Sicherheitswarnung: Implementierungen müssen (MUST) die Sicherheitsauswirkungen der Verwendung dieses Algorithmus verstehen. Der "alg"-Wert "none" sollte (SHOULD) nur verwendet werden, wenn kein Integritätsschutz benötigt wird.