Digitale Signaturen sollen E-Transaktionen schützen

W3C verabschiedet XML-Sicherheitsstandard

22.03.2002
MÜNCHEN (ws) - Der vom W3C und der IETF gemeinsam erarbeitete Standard "XML Signature" soll XML-Dokumente durch digitale Unterschriften vor Manipulationen schützen. Für die Verschlüsselung von XML-Daten sieht das W3C "XML Encryption" vor, das kürzlich den Status "Candidate Recommendation" erreichte.

Angesichts der großen Unterstützung durch die Softwareindustrie besteht kaum ein Zweifel daran, dass sich die Extensible Markup Language (XML) als Lingua Franca des E-Business etabliert. Sie setzt sich nicht nur als Standardsyntax für Geschäftsdokumente durch, sondern bildet auch die Grundlage für die vielbeworbenen Web-Services. XML dient somit nicht nur zum Datenaustausch zwischen heterogenen Systemen, sondern fungiert auch als Basistechnologie für Transaktionen über das Internet.

Angesichts dieser wichtigen Aufgaben liegt es auf der Hand, dass Schutzmechanismen für XML-Dokumente benötigt werden. Sie sollen verhindern, dass Unbefugte derartige Daten manipulieren oder einsehen können. Zurzeit ist es üblich, XML-Dokumente bei ihrem Versand über das Internet auf der Transportebene zu verschlüsseln, bevorzugt durch Protokolle wie Secure Socket Layer (SSL) beziehungsweise Transport Layer Security (TSL). Dieses Verfahren bietet aber beispielsweise keinen Schutz, wenn Hacker in Server einbrechen, auf denen nach erfolgreicher Übermittlung die Informationen gespeichert werden.

Geht es etwa um die Übertragung von Bestellungen oder Rechnungen, dann sollten nach Möglichkeit auch die Authentizität des Absenders und die Integrität der Informationen gewährleistet sein. Diese Aufgabe können digitale Signaturen übernehmen. Für deren Erstellung existieren natürlich schon bewährte Verfahren. So definieren etwa die RSA Laboratories in den Public Key Cryptography Standards (PKCS) eine allgemeine Syntax für Daten, die mit kryptografischen Informationen wie Signaturen versehen werden (http://www.rsasecurity.com/rsalabs/pkcs/pkcs-7). Dieser Standard kann aber die spezifischen Möglichkeiten von XML nicht nutzen und eignet sich primär dazu, komplette Dokumente oder Softwarekomponenten zu signieren. Mit XML Signatures hingegen empfehlen das W3-Consortium und die Internet Engineering Task Force (IETF) nun ein Verfahren, das auf XML-Dokumente abgestimmt ist. Zum einen nutzt es erwartungsgemäß die XML-Syntax, um alle Informationen einer digitalen Unterschrift (siehe Kasten "Digitale Signatur") darzustellen. Zum anderen bietet die Empfehlung des Gremiums die Möglichkeit, unter Einsatz des XML-Co-Standards Xpointer einzelne Dokumentabschnitte zu signieren. Als Vorteil könnte sich diese Option etwa bei Workflow-Anwendungen erweisen. Beispielsweise müssten im Rahmen einzelner Bearbeitungsschritte nur die jeweils davon betroffenen Dokumentteile digital unterzeichnet werden, während andere Abschnitte für weitere Änderungen noch offen stehen. Bei nicht XML-spezifischen Signaturen würde jede Änderung innerhalb des Workflows vorhandene Unterschriften ungültig machen, da sie ja die Integrität des gesamten Dokuments gewährleisten.

Referenzverfahren bringt FlexibilitätAufgrund dieser Fähigkeit, einzelne Dokumentteile separat unterzeichnen zu können, sieht der W3C-Standard vor, dass eine Signatur Bezüge zu mehreren Ressourcen herstellen kann. Diese Referenzen erfolgen in Form von Uniform Resource Identifiers (URIs). Sie dürfen entweder auf Abschnitte des Dokuments verweisen, das die digitale Unterschrift enthält, oder aber auch auf jede beliebige Adresse im Web zeigen. Mithin lassen sich Signaturen nicht nur in Daten einbetten, sondern können auch unabhängig von ihnen gespeichert werden. Zusätzliche Flexibilität erhält das Verfahren des W3C, indem für jede Resource gesondert die Methode angegeben wird, nach der der Hash errechnet wurde. Zu diesem Zweck fügt der Autor wiederum einen Verweis (URI) auf die Beschreibung des benutzten Algorithmus ein. Nach dem gleichen Muster wird der Empfänger über das eingesetzte Verschlüsselungsverfahren informiert.

Einheitliche RepräsentationNeben Xpointer und XML Schema, auf dessen Basis XML Signature definiert wurde, kommt mit "Canonical XML" (http://www.w3.org/TR/xml-c14n) eine weitere W3C-Empfehlung ins Spiel. Da sich logisch identische XML-Daten physisch verschieden repräsentieren lassen, würde abhängig von der Darstellung ein jeweils anderer Hash-Wert errechnet. Dieses Problem stellt sich vor allem deswegen, weil die Verarbeitung eines XML-Dokuments durch Applikationen, etwa einen Parser, Veränderungen in dessen Repräsentation bewirken können. Die Varianten eines XML-Dokuments unterscheiden sich etwa durch die Anordnung von Attributen oder nicht signifikante Leerzeichen. Canonical XML beschreibt ein Verfahren für eine einheitliche Repräsentation logisch äquivalenter Daten.

Verschlüsselung einzelner PassagenDie Verwendung von Signaturen hat unter kryptologischen Gesichtspunkten den Vorteil, dass die Verschlüsselung des Hash-Codes nur wenig Rechenleistung erfordert. Im Gegensatz dazu erweist sich die Codierung größerer Datenmengen mit asymmetrischen Verfahren als aufwändig. Wenn aber der Inhalt eines Geschäftsdokuments vor fremden Blicken verborgen werden muss, führt kein Weg an dessen Verschlüsselung vorbei. Mit "XML Encryption" (http://www.w3.org/TR/xmlenc-core) bereitet das W3C einen weiteren Standard vor, der auf XML abgestimmt ist. Er erreichte Anfang März den Status einer Candidate Recommandation.

Wie schon XML Signature bietet auch der bevorstehende Verschlüsselungsstandard die Möglichkeit, via Xpointer nur ausgewählte Dokumentabschnitte anzusprechen. So ließe sich beispielsweise in einer Bestellung nur die Passage verschlüsseln, in der die Kreditkarteninformationen des Kunden hinterlegt sind. Diese selektive Codierung kann bei geringerem Rechenaufwand trotzdem den notwendigen Schutz für sensible Informationen erbringen.

Auch wenn wegen der Bedeutung von XML für das E-Business die beiden Initiativen des W3C entsprechende Akzeptanz finden werden, so hängt ihr praktischer Einsatz letztlich doch von den verfügbaren Werkzeugen ab. Für XML Signature existieren mittlerweile eine Reihe von Programmierbibliotheken. Mit deren Hilfe können Anwendungen um die Fähigkeit erweitert werden, XML-Daten mit digitalen Unterschriften zu versehen beziehungsweise diese zu verifizieren. Zu den Anbietern zählen etwa Verisign (http://www.xmltrustcenter.org/xmlsig/developer/verisign/index.htm), IBM mit der "XML Security Suite" (http://www.alphaworks.ibm.com/tech/xmlsecuritysuite), Entrust (https://www.entrust.com/developer/toolkits.htm) oder das Institut für angewandte Informationsverarbeitung und Kommunikation der TU Graz (http://jcewww.iaik.at/products/ixsil). Alle genannten Packages basieren auf Java und zeigen, dass der Sun-Technolgie wie bei der XML-Bearbeitung insgesamt die größte Bedeutung zukommt. Einige der Bibliotheken (etwa von IBM oder Entrust) unterstützen bereits XML Encryption in seiner derzeit noch vorläufigen Form. Für eine Open-Source-Variante sorgt zudem die Apache Software Foundation. Im Rahmen ihrer umfangreichen XML-Aktivitäten richtete sie ein Projekt namens "XML Security" (http://xml.apache.org/security) ein. Die Java-Bibliothek "Security-J 1.0.1" geht auf eine Codespende der Universität Siegen zurück und unterstützt XML Signature.

Derzeit bieten noch alle Java-Libraries verschiedene Programmier-Schnittstellen an. Diesem Wildwuchs soll indes ein Standard Einhalt gebieten, der im Rahmen des Java Community Process entsteht. Unter dem Java Specification Request (JSR) 105 (http://jcp.org/jsr/detail/105.jsp) definieren die involvierten Firmen die XML-Digital-Signature-APIs, unter JSR 106 (http://jcp.org/jsr/detail/106.jsp) jene für XML Encryption.

Insgesamt erweitern das W3C und die IETF die XML-Familie mit den zwei Krypto-Standards um wichtige Bausteine für die Nutzung der Markup-Sprache im E-Business. Beide eignen sich zur Sicherung aller XML-Anwendungen. Dazu zählen Dokumente auf Basis von Business-Standards wie Rosetta.Net oder BMECat genauso wie Anwendungsprotokolle vom Typ Soap oder solchen aus dem Peer-to-Peer-Umfeld.

Digitale SignaturFür die Signierung wird der Hash-Code (auch "Digest") eines Dokuments berechnet, also quasi sein Fingerabdruck genommen. Dieser wird anschließend mit dem privaten Schlüssel des Senders kodiert. Der Empfänger kalkuliert nach Erhalt der signierten Daten deren Hash-Wert neu. Das Ergebnis vergleicht er dann mit dem Digest in der Signatur, den er mit dem Public Key des Senders dekodiert. Damit ist gewährleistet, dass seit der Signierung des Dokuments daran keine Änderungen vorgenommen wurden.

Allerdings garantiert dieses Verfahren noch nicht die Authentizität der Informationen. Es steht nämlich noch nicht fest, dass es sich beim Absender tatsächlich um die Person oder Firma handelt, als die sie sich ausgibt. Zertifikate sollen die Identität des Verfassers belegen und verbürgen, dass das eingesetzte Schlüsselpaar tatsächlich ihm gehört. Diese elektronischen Identitätsnachweise folgen typischerweise dem Standard X.509 und werden häufig von einem Trust Center wie Verisign ausgestellt. Um die Authentizität von Informationen sicherzustellen, können Zertifikate in die Signatur mit aufgenommen werden.