XML Signatur

XML Signatur (auch genannt Xmldsig, Xml-dsig, Xml-sig) definiert an Xml Syntax für digitale Signaturen und ist in der definiert W3C -Empfehlung XML Signatursyntax und Verarbeitung. Funktionell hat es viel gemeinsam mit PKCS #7 ist jedoch erweiterbarer und auf die Unterzeichnung von XML -Dokumenten ausgerichtet. Es wird von verschiedenen verwendet Netz Technologien wie SEIFE, Saml, und andere.

XML -Signaturen können verwendet werden, um Daten zu signieren - a Ressource– Von jedem Typ, normalerweise XML -Dokumente, aber alles, was über a zugänglich ist URL kann signiert werden. Eine XML Abstandssignatur; Wenn es verwendet wird, um einen Teil seines enthaltenden Dokuments zu unterzeichnen, wird es als als bezeichnet umhüllt Unterschrift; Wenn es die signierten Daten in sich enthält, wird es als als genannt umhüllt Unterschrift.

Struktur

Eine XML -Signatur besteht aus a Unterschrift Element in der http://www.w3.org/2000/09/xmldsig# Namespace. Die Grundstruktur ist wie folgt:

     />   />     />   />   />     /> usw.    />   />   />  
  • Das SignedInfo Das Element enthält oder verweist die signierten Daten und gibt an, welche Algorithmen verwendet werden.
    • Das Signaturemethod und CanonicalizationMethod Elemente werden von der verwendet Signaturwert Element und sind in enthalten SignedInfo um sie vor Manipulationen zu schützen.
    • Ein oder mehr Bezug Elemente geben die Ressource an, die durch URI -Referenz und alle Transformationen vor der Unterschrift auf die Ressource unterzeichnet werden.
      • Transformationen Enthält die auf die Ressource angewendeten Transformationen vor der Unterschrift. Eine Transformation kann eine XPath-Expression sein, die eine definierte Teilmenge des Dokumentbaums auswählt.[1]
      • DigestMethod Gibt den Hash -Algorithmus an, bevor Sie den Hash anwenden.
      • DigestValue enthält die Basis64 codiertes Ergebnis der Anwendung des Hash -Algorithmus auf die in der definierten transformierten Ressourcen (en) Bezug Elementattribute.
  • Das Signaturwert Element enthält das Basis64 codiertes Signaturergebnis - die Signatur, die mit den in der angegebenen Parametern erzeugt wird Signaturemethod Element - der SignedInfo Element nach Anwendung des von der angegebenen Algorithmus CanonicalizationMethod.
  • KeyInfo Das Element ermöglicht es dem Unterzeichner optional, den Empfängern den Schlüssel zur Verfügung zu stellen, der die Signatur validiert, normalerweise in Form von einem oder mehrerer X.509 digitale Zertifikate. Die Verweigerungspartei muss den Schlüssel aus dem Kontext identifizieren, wenn KeyInfo ist nicht hier.
  • Das Objekt Element (optional) enthält die signierten Daten, wenn dies ein ist Umhüllungssignatur.

Überlegungen zur Validierung und Sicherheit

Bei der Validierung einer XML -Signatur wurde ein Verfahren aufgerufen Kernvalidierung wird gefolgt.

  1. Referenzvalidierung: Jeder BezugDie Digest wird verifiziert, indem die entsprechende Ressource abgerufen und Transformationen und dann die angegebene Digest -Methode darauf angewendet werden. Das Ergebnis wird mit dem aufgezeichneten verglichen DigestValue; Wenn sie nicht übereinstimmen, schlägt die Validierung fehl.
  2. Signaturvalidierung: Das SignedInfo Das Element wird unter Verwendung der in der in der Canonicalisierungsmethode festgelegten Kanonikalisierungsmethode serialisiert CanonicalizationMethodDie Schlüsseldaten werden mit Verwendung abgerufen KeyInfo oder auf andere Weise, und die Signatur wird unter Verwendung der in angegebenen Methode verifiziert Signaturemethod.

Dieses Verfahren legt fest, ob die Ressourcen von der mutmaßlichen Partei wirklich unterzeichnet wurden. Aufgrund der Erweiterbarkeit der Hanonizations- und Transformationsmethoden muss die überprüfende Partei jedoch auch sicherstellen, dass das, was tatsächlich signiert oder verdaut wurde Um die Bedeutung der signierten Daten zu ändern.

Da die Struktur des signierten Dokuments manipuliert werden kann, um zu "Signature -Wraping" -Angriffen zu führen, sollte der Validierungsprozess auch die XML -Dokumentstruktur abdecken. Signiertes Element und Signaturelement sollten mit Absolute ausgewählt werden XPath Ausdruck, nicht GetElementByName Methoden.[2]

XML -Kanonisierung

Die Erstellung von XML -Signaturen ist wesentlich komplexer als die Erstellung einer gewöhnlichen digitalen Signatur, da ein bestimmtes XML -Dokument (ein "Infoset"In allgemeinem Gebrauch unter XML -Entwicklern kann mehr als eine legale serialisierte Darstellung sein. Zum Beispiel ist die Whitespace innerhalb eines XML ist syntaktisch identisch mit .

Da die digitale Signatur die Datenintegrität gewährleistet, würde eine Einzelunterschiede zur Signatur variieren. Wenn ein XML -Dokument vom Computer zum Computer übertragen wird, ist das außerdem die Zeilenterminator kann von CR zu LF zu Cr LF usw. geändert werden. Ein Programm, das ein XML -Dokument verdaut und validiert, kann das XML -Dokument später auf andere Weise rendern, z. Hinzufügen von überschüssigen Raum zwischen Attributdefinitionen mit einer Elementdefinition oder Verwendung relativer (vs. absoluter) URLs oder durch Neuaufstellung von Namespace -Definitionen. Canonical XML ist besonders wichtig, wenn sich eine XML-Signatur auf ein Remote-Dokument bezieht, das von einem fehlerhaften Remote-Server auf zeitlich variierende Weise gerendert werden kann.

Um diese Probleme zu vermeiden und zu garantieren, dass logisch identische XML-Dokumente identische digitale Signaturen liefern, eine XML Kanonisierung Transformation (häufig abgekürzt C14n) wird bei der Unterzeichnung von XML -Dokumenten verwendet (zur Unterzeichnung der SignedInfoEine Kanonisierung ist obligatorisch). Diese Algorithmen garantieren, dass semantisch identische Dokumente genau identische serialisierte Darstellungen erzeugen.

Eine weitere Komplikation ergibt sich aus der Art und Weise, wie der Standard -Hanonisierungsalgorithmus -Namespace -Deklarationen abwickelt. Häufig muss ein signiertes XML -Dokument in ein anderes Dokument eingebettet werden. In diesem Fall liefert der ursprüngliche Kanonisationsalgorithmus nicht das gleiche Ergebnis, als ob das Dokument allein behandelt wird. Aus diesem Grund haben die sogenannten Exklusive Kanonisierung, was serialisiert XML -Namespace Erklärungen unabhängig vom umgebenden XML wurden geschaffen.

Vorteile

XML -Signatur ist flexibler als andere Formen digitaler Signaturen wie z. Sehr Gute Privatsphäre und Kryptografische Nachrichtensyntax, weil es nicht weiter funktioniert Binärdaten, aber auf der XML Infosetund ermöglicht, an Untergruppen der Daten zu arbeiten (dies ist auch mit binären Daten auf nicht standardmäßige Weise möglich, z. Ein weiteres Kernkonzept ist die Kanonisierung, dh nur die "Essenz" zu unterzeichnen, wodurch bedeutungslose Unterschiede wie Whitespace und Linienende beseitigt werden.

Ausgaben

Es gibt Kritikpunkte, die auf die Architektur der XML -Sicherheit im Allgemeinen gerichtet sind.[3] und bei der Eignung der XML -Kanonisierung insbesondere als Frontend für die Signatur und Verschlüsseln von XML -Daten aufgrund ihrer Komplexität, der inhärenten Verarbeitungsanforderungen und der schlechten Leistungsmerkmale.[4][5][6] Das Argument besteht Soa Anwendungen.

Diese Probleme werden in der angesprochen XML Security Working Group.[7][8]

Ohne ordnungsgemäße Richtlinie und Umsetzung[2] Die Verwendung von XML-DSIG in Seife und WS-Sicherheit kann zu Schwachstellen führen.[9] wie XML -Signaturverpackung.[10]

Anwendungen

Ein Beispiel für Anwendungen von XML -Signaturen:

Siehe auch

Verweise

  1. ^ http://www.w3.org/tr/xmldsig-filter2/ XML-Signatur XPath Filter 2.0
  2. ^ a b Pawel Krawczyk (2013). "Sichere SAML -Validierung, um die XML -Signatur -Verpackungsangriffe zu verhindern".
  3. ^ Warum die XML -Sicherheit gebrochen ist
  4. ^ Leistung der Webdienstesicherheit
  5. ^ Leistungsvergleich von Sicherheitsmechanismen für Netzdienste
  6. ^ Zhang, Jimmy (9. Januar 2007). "WSS-Anwendungen mit VTD-XML beschleunigen". JavaRld. Abgerufen 2020-07-24.
  7. ^ W3C -Workshop auf den nächsten Schritten für die XML -Signatur und die XML -Verschlüsselung, 2007
  8. ^ XML Security 2.0 Anforderungen und Konstruktionsüberlegungen
  9. ^ http://domino.research.ibm.com/library/cyberdig.nsf/papers/73053f26bfe5d1d385257067004cfd80/$File/rc23691.pdf[Bare URL PDF]
  10. ^ Juraj Somorovsky; Andreas Mayer; Jorg Schwenk; Marco Kampmann; Meiko Jensen (2012). "Break saml: Sei wer auch immer du sein willst" (PDF).
  11. ^ https://www.sbr-nl.nl/english/what-is-sbr/assurance/ SBR Assurance, niederländische Regierung, 2018

Externe Links