XML-Sicherheitsaspekte

12.02.2002 von Holger Reibold
XML ist auf dem besten Wege, sich als flexibles Datenformat zu etablieren. Besonders in E-Commerce-Applikationen spielt es seine Stärken aus. Derlei Transaktionen erfordern aber strenge Sicherheitsmechanismen.

XML gilt als die Lingua Franca, die den Datenaustausch im Web - und darüber hinaus - vereinfacht. Wie bei kaum einer anderen "neuen" Technik sind sich Befürworter und Skeptiker darüber einig, dass die erweiterbare Auszeichnungssprache eine bedeutende Rolle übernimmt. Gerade für das zukunftsträchtige E-Business verfügt XML über ein hohes Potential.

Schon heute findet XML in den unterschiedlichsten Bereichen seine Anwendung. Man denke an die Entwicklung von XHTML-basierten Webdokumenten, an multimediale Inhalte auf SMIL-Basis, SVG-Grafiken, Meta Daten (RDF), den Objekt-Transfer per SOAP, Telefonie-Anwendungen auf VoiceXML-Basis oder XML-basiertes Messaging a la Jabber. Nicht zuletzt steckt XML auch in verschiedensten Trading-Standards wie ebXML oder BizTalk sowie in WebDAV, das die Entwicklung von Webinhalten im Team erlaubt.

Da XML insbesondere den Datenaustausch im E-Business vereinfachen soll, stellen sich zwangsläufig Fragen zur Sicherheit der zu übermittelnden und auszutauschenden Informationen. Als "ASCII des Web" sind XML-basierte Daten problemlos lesbar. Für den kommerziellen Einsatz sind allerdings Mechanismen gefragt, die insbesondere die Integrität der Daten und der am Austausch Beteiligten sicherstellen.

Zurzeit entsteht eine Sicherheitsarchitektur, die sich den verschiedenen sicherheitsrelevanten Aspekten widmet. Als ein zentraler Baustein dieser Architektur definiert XML-Encryption eine Syntax zur Repräsentation verschlüsselter XML-Daten und Verfahren zur Ver- und Entschlüsselung. Inzwischen sind nicht nur erste Sicherheitsstandards geschaffen, sondern auch Tools und Umgebungen für den gesicherten Austausch von XML-basierten Informationen.

XML-Sicherheit im Überblick

Sicherheitsrelevante Arbeiten werden im Zusammenhang mit XML meist unter dem Begriff XML-Security zusammengefasst. XML-Security beinhaltet aktuell drei zentrale Bereiche:

Access Control wird meist im Rahmen der Umsetzung einer Sicherheitspolitik durchgeführt. Diese dient in der Regel der Vergabe von Rechten beim Zugriff auf XML-basierte Daten - und auch Teilen davon wie beispielsweise Entitäten. Um einer Entität Ressourcen zuzuordnen, muss diese zuvor authentifiziert werden. Dies kann durch kryptographische Mechanismen geschehen.

Denkbar sind insbesondere Mechanismen zur serverseitigen Zugriffssteuerung, die folgendermaßen aussehen könnten: Der Sicherungsmechanismus wird auf Seiten des Servers implementiert und verteilt XML-Dokumente. Diese liegen in der Access-Control-Komponente als DOM-Bäume vor. An die Knoten des DOM-Baums werden Zusatzinformationen wie beispielsweise die erforderliche Berechtigungsstufe geknüpft. Bei Abruf des Dokuments und zuvor erfolgter Authentifikation des Anwenders wird der DOM-Baum spezifisch für den jeweiligen Nutzer (und seine Berechtigungen) zurechtgeschnitten.

XML-Signaturen definieren Syntaxkonstrukte und Verfahrensregeln zur Repräsentation von digitalen Signaturen in XML. XML-Encryption spezifiziert ein Datenformat, das verschlüsselte Daten mit Hilfe einer XML-basierten Syntax beschreibt.

XML-Signaturen

Bereits mit der Einführung von XML war klar, dass man auch einen Mechanismus benötigt, der für die Datenintegrität und Vollständigkeit bei der Übermittlung von XML-basierten Inhalten sorgt. Am einfachsten lassen sich diese Anforderungen durch XML-Signaturen erfüllen. Sie sorgen für eine so genannte End-to-End-Security. Das heißt, die Signaturen verbleiben bei der Weiterverarbeitung in den Daten und sind somit weiterhin verifizierbar.

XML-Signaturen kann man dabei auf beliebige Daten anwenden. Je nachdem, ob sie sich im gleichen XML-Dokument wie die Signatur befinden oder nicht, spricht man von Enveloped respektive Enveloping Signatures oder von Detached Signatures.

XML-Signaturen, wie auch herkömmliche digitale Signaturen, binden eine Nachricht an eine Nachrichtenquelle. Sie muss die Integrität der Nachricht garantieren und darf nicht auf eine andere Nachricht übertragbar sein. Eine digitale Signatur darf nur der Signierende selbst erzeugen und kann daher zum Nachweis der Herkunft verwendet werden.

Der XML-Signature-Mechanismus greift dabei auf die Funktionen der Canonical XML-Spezifikation zurück. Diese stellt sicher, dass Instanzen immer auf die gleiche Weise strukturiert werden. Canonical XML gewährleistet also, dass bei der Zeichnung die Inhalte nicht verändert wurden, sondern erhalten bleiben.

Beispielsignatur

Das Signieren von XML-Dokumenten erfolgt in zwei Schritten. In unserem Beispiel-Listing unten sehen Sie die typischen Bestandteile. Zunächst wird die Datenstruktur gemäß dem vom W3C spezifizierten Algorithmus durch Canonical XML vereinfacht.

Im zweiten Schritt folgen dann Aktionen, wie man sie von anderen Signiervorgängen kennt. Dabei wird beispielsweise an einem Hash-Wert eine Operation mit dem Private Key durchgeführt.

Die Verifizierung der Signatur erfolgt ebenfalls in zwei Schritten: Zunächst erfolgt die Validierung der Signatur, um die Authentizität sicherzustellen. Anschließend wird der Digest-Wert, in unserem Listing j6lwx3rvEPO0vKtMup4NbeVu8nk, verifiziert, um die Datenintegrität zu überprüfen. Hier ein Beispiel für eine angehängte Signatur, die also nicht in das XML-Dokument eingebettet ist:

<Signature Id="MeineErsteSignatur" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/T 20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/><Reference URI="http://www.w3.org/TR/2000/REC-xhtml1-20000126/"><Transforms><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue></Reference></SignedInfo><SignatureValue>MC0CFFrVLtRlk=...</SignatureValue><KeyInfo><KeyValue><DSAKeyValue><p>...</p><Q>...</Q><G>...</G><Y>...</Y></DSAKeyValue></KeyValue></KeyInfo></Signature>

XML-Encryption

Für die Sicherheit von XML-Dokumenten ist die saubere Verschlüsselung der Inhalte in hohem Maße kritisch. Das gilt natürlich insbesondere für Daten, die ein Anwender über ungeschützte Internet-Verbindungen übermittelt. Die XML-Encryption-Funktionen sorgen für die Verschlüsselung der XML-Dokumente - oder Teilen davon. Bei den verschlüsselten Daten handelt es sich ebenfalls um XML-Dokumente. Es gibt weitere Besonderheiten: So ist beispielsweise eine fein abgestufte Verschlüsselung möglich, etwa von einzelnen Attributen, deren Werten oder auch Teilbäumen. Wie die XML-Signaturen fügt sich auch diese Technik nahtlos in XML ein. Außerdem ermöglicht XML-Encryption Vertraulichkeit auf Anwendungs- und nicht nur auf Verbindungsebene.

Damit man Daten erfolgreich verschlüsseln und mit einer Gegenseite austauschen kann, sind vier Basisinformationen erforderlich:

Beispiel zur XML-Verschlüsselung

Auch die XML-Verschlüsselung greift auf traditionelle Methoden zurück, wobei man die Daten zunächst mit dem Public Key des Empfängers verschlüsselt. Ein einfaches Beispiel, bei dem das Ausgangsdokument mit den darin enthaltenen Kreditkarteninformationen eines Anwenders verschlüsselt wird:

<?xml version='1.0'?><PaymentInfo xmlns='http://beispiel.de/zahlung'><Name>Peter Müller<Name/><CreditCard Limit='5,000' Currency='EUR'><Number>1234 4567 3000 6666</Number><Issuer>Beispielbank</Issuer><Expiration>04/02</Expiration></CreditCard></PaymentInfo>

Das verschlüsselte Dokument, das alle relevanten Daten bis auf den Kundennamen kodiert, könnte wie folgt aussehen:

<?xml version='1.0'?><PaymentInfo xmlns='http://beispiel.de/zahlung'><Name>Peter Müller<Name/><EncryptedData Type='http://www.w3.org/2001/04/xmlenc#Element'
xmlns='http://www.w3.org/2001/04/xmlenc#'>
<CipherData><CipherValue>A23B45C56</CipherValue></CipherData>
</EncryptedData></PaymentInfo>

Wie man an obigem Beispiel erkennt, fasst das EncryptedData-Element die verschlüsselten Informationen ein. CipherData beinhaltet die chiffrierten Daten als CipherValue-Element.

XML-Key-Management

Einen weiteren Aspekt hat man im Komplex XML-Sicherheit berücksichtigt - das so genannte Key-Management. Dessen Aufgabe besteht darin, Schlüsselbeziehungen zwischen zwei oder mehreren autorisierten Entitäten einzurichten und zu pflegen. Dieser Punkt ist in der XML-Key-Management-Spezifikation definiert. Um Schlüsselbeziehungen zwischen Entitäten einzurichten, muss man ihnen Schlüsselmaterial verfügbar machen. Dies umfasst Techniken wie Key-Transport, Key-Agreement oder manuelle Schlüsselverteilung.

Das Key-Management von Sicherheitsdiensten besteht meist aus mehreren Schichten. Diese Struktur findet sich sowohl bei Diensten, die sichere Kommunikationskanäle implementieren, als auch bei solchen, die gesicherte Nachrichten austauschen, etwa bei der Übermittlung von E-Mails:

XMLPay

E-Commerce als zentraler Bestandteil der Webarchitektur benötigt natürlich auch ein System zur sicheren Abwicklung XML-basierter Zahlungsvorgänge. Um den Internet-Handel für alle gängigen Zahlungsmethoden zu rüsten, haben VeriSign, Ariba und andere das Zahlungs-Gateway XMLPay geschaffen. Auf XML-Basis werden Zahlungsanforderungen und -antworten definiert. Durch entsprechende Datentypendefinitionen regelt die XMLPay-Spezifikation typische Aktionen wie die Zahlung eines Clients. Die Verwendung von XML vereinfacht die clientseitige Verarbeitung, während man serverseitige XMLPay-Lösungen vergleichsweise simpel an XML-Datenbankserver oder Workflow-Umgebungen koppeln kann.

Die XMLPay-Spezifikation definiert Zahlungs-Requests, deren Bearbeitung durch Finanzinstitute und die Ausgabe des Transaktionsergebnisses. Schließlich ist XMLPay auch ein Webservice-Endpunkt, der von VeriSign betrieben wird. Es handelt sich dabei um ein "Zahlungs-Gateway" zu allen wichtigen Banken und Finanzdienstleistern. Der Vorteil für potenzielle Kunden: Sie überlassen VeriSign die Abwicklung der Zahlungstransaktionen und müssen sich nicht mehr mit Punkt-zu-Punkt- oder schwer zu integrierenden Zahlungslösungen herumschlagen.

IBM XML Security Suite

Auch IBM hat ein interessantes Anwendungspaket für sicherheitstechnische Belange geschnürt: die XML Security Suite. Mit dieser Werkzeugkiste stehen verschiedene Tools bereit, die den typischen Nachrichtenaustausch von XML-basierten Informationen sichern helfen. Die Suite stellt insbesondere Tools für digitale Signaturen, elementweise Verschlüsselung und Zugriffskontrolle zur Verfügung.

Die vier wichtigsten Utilities im Überblick:

Darüber hinaus enthält die XML Security Suite weitere Tools, beispielsweise eine Implementierung von DOMHASH oder Canonical XML.

Fazit

Als flexibles Datenformat steckt XML heute in einer Vielzahl von Applikationen. Gerade im E-Business-Bereich stellt sich aber die Frage, wie man kritische Informationen vor neugierigen Blicken schützen kann. Zu diesem Zweck entsteht derzeit eine Sicherheitsarchitektur. Sie definiert unter dem Schlagwort "XML-Security" Methoden zur Zugriffskontrolle, Ver- und Entschlüsselung sowie zum digitalen Signieren. Für die dringend benötigten Sicherheitsmechanismen greift man also auf Altbewährtes zurück, lediglich angepasst an die Struktur von XML-Dokumenten.

Daher sollte es problemlos gelingen, entsprechende Funktionen schnell zu standardisieren und zu implementieren. Die Chancen stehen also gut, dass sich in absehbarer Zeit XML-Dokumente nicht mehr nur durch dienstgebundene Sicherheitsmechanismen, sondern als solche schützen lassen. (tri)