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.