Zum Hauptinhalt springen

2.3. Signature Parameters (Signaturparameter)

2.3. Signature Parameters (Signaturparameter)

HTTP-Nachrichtensignaturen haben Metadaten-Eigenschaften zur Erzeugung und Verifikation der Signatur: die geordnete Menge abgedeckter Komponenten und die geordnete Menge von Parametern (u. a. Zeitstempel der Erzeugung, Identifikatoren für Verifikationsschlüsselmaterial und weitere Hilfsmittel). Diese Metadaten werden durch eine spezielle Nachrichtenkomponente in der Signaturbasis für Signaturparameter dargestellt; sie wird etwas anders behandelt als andere Komponenten. Die Komponente der Signaturparameter ist als letzte Zeile der Signaturbasis (Abschnitt 2.5) ERFORDERLICH, und der Komponenten-Identifier DARF NICHT in der Menge abgedeckter Komponenten einer Signatur aufgeführt werden, auch nicht bei sich selbst.

Der Komponentenname der Signaturparameter ist @signature-params.

Der Komponentenwert der Signaturparameter ist die Serialisierung der Signaturparameter dieser Signatur, einschließlich der geordneten Menge abgedeckter Komponenten mit allen zugehörigen Parametern. Zu diesen Parametern können gehören:

created: Erzeugungszeit als UNIX-Zeitstempel vom Typ Integer. Subsekunden-Genauigkeit wird nicht unterstützt. Die Aufnahme dieses Parameters wird EMPFOHLEN.

expires: Ablaufzeit als UNIX-Zeitstempel Integer. Subsekunden werden nicht unterstützt.

nonce: Ein für diese Signatur erzeugter zufälliger, eindeutiger Wert als String.

alg: Der HTTP-Nachrichtensignaturalgorithmus aus dem Register „HTTP Signature Algorithms“ als String.

keyid: Der Identifikator für das Schlüsselmaterial als String.

tag: Ein anwendungsspezifischer Tag für die Signatur als String. Anwendungen nutzen ihn, um für Protokolle oder Anwendungen relevante Signaturen zu erkennen.

Weitere Parameter können im Register „HTTP Signature Metadata Parameters“ (Abschnitt 6.3) definiert werden. Die Parameter haben keine allgemeine Reihenfolge; einmal gewählte Reihenfolge für eine gegebene Parametermenge kann ohne Änderung des Signaturparameterwerts nicht geändert werden.

Der Komponentenwert der Signaturparameter wird als parametrisierte Inner List gemäß Abschnitt 4 von [STRUCTURED-FIELDS] serialisiert:

  1. Ausgabe als leere Zeichenkette beginnen.

  2. Eine Reihenfolge für die Komponenten-Identifikatoren der abgedeckten Komponenten festlegen, ohne @signature-params. Diese Reihenfolge MUSS mit der bei der Signaturbasis-Erzeugung (Abschnitt 2.5) übereinstimmen und darf danach nicht geändert werden.

  3. Die Identifikatoren der abgedeckten Komponenten inklusive aller Parameter als geordnete Inner List von String-Werten gemäß Abschnitt 4.1.1.1 von [STRUCTURED-FIELDS] serialisieren und an die Ausgabe anhängen. Parameter sind geordnete Mengen; einmal gewählte Reihenfolge der Parameter eines Identifikators darf nicht geändert werden.

  4. Reihenfolge für Signaturparameter festlegen; auch diese darf nicht geändert werden.

  5. Parameter der Inner List gemäß Abschnitt 4.1.1.2 von [STRUCTURED-FIELDS] anhängen, nicht verfügbare oder nicht genutzte Parameter auslassen.

  6. Die Ausgabe ist der Komponentenwert der Signaturparameter.

Die Inner-List-Serialisierung aus Abschnitt 4.1.1.1 von [STRUCTURED-FIELDS] wird für die abgedeckten Komponenten statt der List-Serialisierung aus 4.1.1 genutzt, um Parallelität zur Aufnahme im Feld Signature-Input zu erleichtern (Abschnitt 4.1).

Beispiel serialisierter Komponentenwert (Zeilenumbruch gemäß RFC 8792):

("@target-uri" "@authority" "date" "cache-control");keyid="test-key-rsa-pss";alg="rsa-pss-sha512";created=1618884475;expires=1618884775

Eine HTTP-Nachricht kann mehrere Signaturen enthalten (Abschnitt 4.3); in einem gegebenen Eintrag der Signaturparameter sind nur die Parameter einer einzelnen Signatur enthalten.