Der Unterschied zwischen einer XML-Nachricht mit dsig Unterzeichnung: Unterschrift und TLS-Client-Zertifikat

StackOverflow https://stackoverflow.com/questions/4153568

Frage

Ich weiß, diese Frage etwas vage sein kann, oder ich kann falsche Terminologie verwenden, die, weil ich versuche, ist mit diesem Material in den Griff zu bekommen :).

habe ich eine Anforderung digitale Unterzeichnung einer XML-Nachricht zu implementieren, indem eine dsig mit: Signatur-Seite. Ich denke, dass ich diesen Prozess verstehen; Ich werde einen privaten Schlüssel verwenden, um es zu unterzeichnen, die an den Empfänger garantiert, dass es mir, wer die Nachricht gesendet und , dass niemand mit ihm manipuliert hat.

Bin ich richtig, dass diese von der Implementierung von TLS-Client-Zertifikaten anders ist, aber das Ziel ist das gleiche? (Weil TLS Transportebene ist, nicht wahr?) Würde Implementieren sein Client-Zertifikate einfacher? Ist man besser als die anderen?

Vielen Dank für Ihre Antwort,

Martijn

Update 1:

Ich denke, ein weiterer Unterschied besteht darin, dass ein TLS-Client-Zertifikat die gesamte Nachricht verwenden werden verschlüsselt, während bei digitaler Signierung der Nachricht selbst Klartext sein wird, einen Signatur Abschnitt enthält.

War es hilfreich?

Lösung

Du vergleichst Sicherheit auf Nachrichtenebene mit der Transportebene Sicherheit. Obwohl sie Ähnlichkeiten haben, haben sie verschiedene Zwecke.

Mit TLS schützt die Mitteilung durch Zwischen Parteien gesehen und verändert werden. Das X.509-Zertifikat auf der Serverseite garantiert, dass die Nachrichten an mich gesendet werden, können nur von dem Server mit diesem privaten Schlüssel gelesen werden und dass es, was von dem Server sendet mit diesem privaten Schlüssel kommt. Dies könnte lost in Betracht gezogen werden, wie von dem Server anmelden und für den Server mit dem X.509-Zertifikat verschlüsselt, obwohl es eigentlich nur auf die TLS Handshake-Nachrichten gilt, nicht die Anwendungsdaten, die danach ausgetauscht wird. (Ich lasse die Tatsache, dass Sie die symmetrische Verschlüsselung des Kanals ohnehin bekommen, ob eine Partei ein Zertifikat vorgelegt hat, ist es wichtig, zumindest hat die Verwendung Server ein Zertifikat, so dass der Kunde weiß, was er mit anstelle der Kommunikation ist Kommunikation mit einem potenziellen man-in-the-middle). Wenn Sie ein Client-Zertifikat dieses hinzufügen, auch der Kunde unterzeichnet die TLS Nachrichten, die es während des Handshakes ausgetauscht wird.

Wenn Sie sowohl Client- als auch Server-Zertifikate verwenden, können Sie (vorsichtig) eine Analogie mit Sicherheit auf Nachrichtenebene ziehen, dass die Nachrichten, die signiert und verschlüsselt die TLS Handshake-Nachrichten sind, die gegründet, um die TLS-Kanal verwendet werden.

Es gibt jedoch große Unterschiede mit Sicherheit auf Nachrichtenebene (zum Beispiel XML-DSig und XML-Enc).

Zum einen ist eines der Merkmale der Nachrichtensignatur (XML-DSig) ist Revision, so dass Sie Aufzeichnungen halten kann, was gesagt wurde. Es ist nicht speziell zeitlich begrenzt. Das ist viel schwieriger zu tun, auch wenn Sie die TLS-Pakete aufgenommen haben. Mit modernen Chiffriersätze in SSL / TLS, dass die Verwendung DHE (Diffie-Hellman ephemeren-Modus), auch wenn Sie den Server des privaten Schlüssel haben, können Sie nicht unbedingt entziffern den Kanal, wenn Sie alle seine Pakete aufgezeichnet haben (ohne weitere Kenntnis des DHE Mechanismus).

Zweitens in Bezug auf Implementierungen, XML-DSig neigt auf der Anwendungsebene durchgeführt werden, während TLS neigt durch den Server-Anschluss erfolgen. Der Unterschied kann in Abhängigkeit von den Einsatzbedingungen verschwommen, aber TLS ist etwa mit der Maschine / Behälter in Verbindung steht, anstatt die Anwendung hinter ihnen. Typischerweise wird das TLS-Zertifikat auf einem Java-Containern oder auf der WCF-Ebene aufgebaut werden, während das Zertifikat für XML-DSig verwendet wird von der webapp / Anwendung verwendet wird, läuft zurück. Es kann dort zuständig verschiedene Personen oder Verfahren sein.

(Sie sind auch richtig, dass, wenn Sie mit Hilfe von XML-DSig ohne XML-Enc, Sie nicht die Daten zu verschlüsseln.)

Andere Tipps

Bisher vergleichen Sie Äpfel mit Orangen.

XML-Daten können in vielerlei Hinsicht unterzeichnet werden, zum Beispiel unter Verwendung von Standard-XMLDSig und X.509-Zertifikat (es ist möglich, andere Schlüsseltypen in XMLDSig als auch zu verwenden). Unterschrift bestätigt die Urheberschaft des Dokuments (na ja, zu einem gewissen Grad natürlich).

TLS steht für Transport Layer Security und wird verwendet, um encrypt (nicht unterschrieben) werden die Daten während bei der Übertragung. Es hat nichts mit XML speziell zu tun. TLS verwendet X.509-Zertifikate als auch, aber Sie können nicht das gleiche Zertifikat für XMLSDig und TLS verwenden Ursache der Zertifikate bestimmte Zwecke (Schlüsselverwendung Feld) haben müssen.

Ich schlage vor, dass Sie sich auf PKI ein Buch nehmen (ich empfehle immer RSA Security Official Guide in der Kryptographie es die Einfachheit für) und es aufmerksam lesen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top