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
undCanonicalizationMethod
Elemente werden von der verwendetSignaturwert
Element und sind in enthaltenSignedInfo
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
- Das
Signaturwert
Element enthält das Basis64 codiertes Signaturergebnis - die Signatur, die mit den in der angegebenen Parametern erzeugt wirdSignaturemethod
Element - derSignedInfo
Element nach Anwendung des von der angegebenen AlgorithmusCanonicalizationMethod
. -
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, wennKeyInfo
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.
- Referenzvalidierung: Jeder
Bezug
Die 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 verglichenDigestValue
; Wenn sie nicht übereinstimmen, schlägt die Validierung fehl. - Signaturvalidierung: Das
SignedInfo
Das Element wird unter Verwendung der in der in der Canonicalisierungsmethode festgelegten Kanonikalisierungsmethode serialisiertCanonicalizationMethod
Die Schlüsseldaten werden mit Verwendung abgerufenKeyInfo
oder auf andere Weise, und die Signatur wird unter Verwendung der in angegebenen Methode verifiziertSignaturemethod
.
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 SignedInfo
Eine 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:
- Digitale Unterzeichnung von Xbrl Jahresberichte durch Wirtschaftsprüfer in dem Niederlande. EIN Pkioverheid X.509 Zertifikat, genehmigt vom Royal National Institute of Chartered Accountants , ist nötig. Die elektronische Signatur ist rechtlich bindend. Der SBR -Versicherungsstandard[11] ist Teil der Niederländer Standard -Geschäftsberichterstattung Programm.
Siehe auch
- Kanonischer XML
- XML -Verschlüsselung
- Xades, Erweiterungen zu XML-Dsig zur Verwendung mit fortschrittlicher elektronischer Signatur
- Kryptografische Nachrichtensyntax
Verweise
- ^ http://www.w3.org/tr/xmldsig-filter2/ XML-Signatur XPath Filter 2.0
- ^ a b Pawel Krawczyk (2013). "Sichere SAML -Validierung, um die XML -Signatur -Verpackungsangriffe zu verhindern".
- ^ Warum die XML -Sicherheit gebrochen ist
- ^ Leistung der Webdienstesicherheit
- ^ Leistungsvergleich von Sicherheitsmechanismen für Netzdienste
- ^ Zhang, Jimmy (9. Januar 2007). "WSS-Anwendungen mit VTD-XML beschleunigen". JavaRld. Abgerufen 2020-07-24.
- ^ W3C -Workshop auf den nächsten Schritten für die XML -Signatur und die XML -Verschlüsselung, 2007
- ^ XML Security 2.0 Anforderungen und Konstruktionsüberlegungen
- ^ http://domino.research.ibm.com/library/cyberdig.nsf/papers/73053f26bfe5d1d385257067004cfd80/$File/rc23691.pdf[Bare URL PDF]
- ^ Juraj Somorovsky; Andreas Mayer; Jorg Schwenk; Marco Kampmann; Meiko Jensen (2012). "Break saml: Sei wer auch immer du sein willst" (PDF).
- ^ https://www.sbr-nl.nl/english/what-is-sbr/assurance/ SBR Assurance, niederländische Regierung, 2018
Externe Links
- XML Signatursyntax und Verarbeitung
- Kanonischer XML
- Zusätzliche XML Security Uniform Resource Identifiers (URIS)
- Exklusive XML -Kanonisierung
- XmlSignaturen Java -Bindung Für XMLBeans und Jaxb.
- Schritt-für-Schritt-Beispiel wie eine Signatur erzeugt wird.