Zum Hauptinhalt springen

1. Introduction (Einführung)

1. Introduction (Einführung)

Integrität und Authentizität von Nachrichten sind Sicherheitseigenschaften, die für den sicheren Betrieb vieler HTTP-Anwendungen (HTTP applications) entscheidend sind. Anwendungsentwickler verlassen sich typischerweise auf die Transportschicht (transport layer), indem sie ihre Anwendung über TLS [TLS] betreiben. TLS garantiert diese Eigenschaften jedoch nur über eine einzelne TLS-Verbindung, und der Pfad zwischen Client und Anwendung kann aus mehreren unabhängigen TLS-Verbindungen bestehen (z. B. TLS-terminierendes Gateway, TLS-Inspection beim Client). Dann ist keine Ende-zu-Ende-Integrität oder -Authentizität zwischen Client und Anwendung gewährleistet. Einige Umgebungen erschweren TLS (z. B. Client-Zertifikate im Browser) oder nötige Authentizitätsfunktionen. Manche Anwendungen verlangen die Bindung eines anwendungsspezifischen Schlüssels an die HTTP-Nachricht, unabhängig von TLS-Zertifikaten. TLS erfüllt viele Anforderungen, ist aber keine universelle Lösung.

Viele Anwendungen müssen Signaturen erzeugen und verifizieren, obwohl die HTTP-Nachricht auf der Leitung unvollständig sichtbar ist (Bibliotheken, Proxys, Frameworks). Sie benötigen ein Mittel, relevante Teile zu schützen, ohne Schichtung und Abstraktion zu verletzen.

Objektbasierte Verfahren wie JSON Web Signature [JWS] verlangen die unveränderte Übertragung der signierten Information. Bei HTTP müssten Elemente dupliziert oder gehasht werden, was bei der Verifikation aufwendige Konsistenzprüfungen erfordert.

Dieses Dokument definiert Ende-zu-Ende-Integrität und -Authentizität für Komponenten einer HTTP-Nachricht durch abgetrennte Signaturen auf HTTP-Nachrichten. Anwendungen können digitale Signaturen oder MACs nur über sinnvolle Komponenten erzeugen. Strenge Kanonisierungsregeln ermöglichen Verifikation trotz vieler von HTTP erlaubter Transformationen.

Das Verfahren besteht aus drei Teilen:

  • gemeinsame Nomenklatur und Kanonisierungsregeln für Protokollelemente und Komponenten zur Bildung der Signaturbasis (Abschnitt 2);

  • Algorithmen zum Signieren und Verifizieren über diese Signaturbasis (Abschnitt 3);

  • Anhängen und Parsen von Signatur und Metadaten; Felder Signature-Input und Signature (Abschnitt 4).

Zusätzlich gibt es Aushandlung über Accept-Signature (Abschnitt 5).

Die definierten Mittel sind Werkzeuge für ein Gesamtsicherheitskonzept, ersetzen es aber nicht. Die Anforderungen in Abschnitt 1.4 und die Sicherheitsüberlegungen in Abschnitt 7 sind für alle Implementierer wichtig. Die Spezifikation deckt den HTTP-Nachrichteninhalt ([HTTP], Abschnitt 6.4) nicht direkt ab; stattdessen wird auf [DIGEST] und Abschnitt 7.2.8 verwiesen.