Zum Hauptinhalt springen

7.2.8. Message Content (Nachrichteninhalt)

7.2.8. Message Content (Nachrichteninhalt)

Diese Spezifikation deckt den HTTP-Nachrichteninhalt allein nicht ab. [DIGEST] definiert Felder für kryptografische Digeste des Inhalts; solche Felder können wie jedes andere Feld nach Abschnitt 2.1 signiert werden.

Beispielantwort ohne Digest:

HTTP/1.1 200 OK
Content-Type: application/json

{"hello": "world"}

Mit Content-Digest (Zeilenumbruch gemäß [RFC8792]):

HTTP/1.1 200 OK
Content-Type: application/json
Content-Digest: \
sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=:

{"hello": "world"}

In der Signaturbasis z. B.:

"@status": 200
"content-digest": \
sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=:
"@signature-input": ("@status" "content-digest")

Anschließend verläuft das Signieren wie üblich.

Bei der Verifikation MUSS der Verifizierende nicht nur die Signatur, sondern auch Content-Digest gegen den tatsächlich empfangenen Inhalt prüfen. Andernfalls könnte ein Angreifer den Inhalt ersetzen und den Feldwert unverändert lassen — die Signatur deckt nur den Feldwert ab.

Wie in [DIGEST] beschrieben, hängt Content-Digest von der Content-Codierung ab; ändert ein Vermittler die Codierung, ändert sich der Digest und die Signatur bricht — der Vermittler müsste neu signieren (vgl. Abschnitt 4.3).

Bei Nutzung von req (Abschnitt 2.4): Ohne z. B. Content-Digest in der Anfrage kann der Server den Anfrageinhalt nicht in einer Antwortsignatur abdecken.