Dieses Dokument stellt die Prinzipien des Designs, den
Geltungsbereich und die erforderlichen Eigenschaften für
die XML-Verschlüsselung vor. Es behandelt die Anforderungen,
die an die Verschlüsselungssyntax, das Datenmodell,
das Format und die kryptografische Verarbeitung gestellt werden,
sowie externe Anforderungen und die Koordination.
Status dieses Dokuments
Dies ist das Last Call Working Draft der
XML Requirements der XML Encryption Working
Group (Activity
Statement). Diese Version repräsentiert den Konsens der
Arbeitsgruppe seit März 2001 über die Anforderungen
an das Dokument über die Syntax und die Verarbeitung der
XML-Verschlüsselung. Die Last Call Phase besteht für drei Wochen
und endet am 09. November 2001.
Die Veröffentlichung dieses Dokuments bedeutet nicht
die Billigung durch die W3C-Mitglieder. Dies ist ein
Arbeitsdokument und es kann zu jeder Zeit aktualisiert, ersetzt
oder von einem anderen Dokument als veraltet erklärt werden.
Es ist unpassend, dieses Dokument anders zu bezeichnen
als "in Arbeit". Die Liste der aktuellen Working Drafts kann
unter http://www.w3.org/TR/
eingesehen werden.
Bitte senden Sie (englische) Kommentare an den Editor <reagle@w3.org> und eine Kopie (cc:)
an die Mailingliste xml-encryption@w3.org (Archiv)
Patententhüllungen, die für diese Spezifikation
relevant sind, können auf der Patent
Disclosure Page der Arbeitsgruppe in Konformität mit der
W3C Policy gefunden werden.
Die Recommendation XML 1.0 [XML]
spezifiziert die Syntax einer Klasse bestimmter Quellen, die XML-Dokumente
genannt werden. Diese Spezifikation schlägt die Anforderungen
für eine XML-Syntax und XML-Verarbeitung zur Verschlüsselung
von digitalem Inhalt vor, eingeschlossen XML-Dokumentfragmente
und Protokollmeldungen.
Dieser Bereich beschreibt übergeordnete Prizipien des
Designs und die Definition des Geltungsbereichs. Diese Prizipien sind
Ausdruck einer Absicht/Motivation. Wie diese Motivationen
realisiert werden, wird in den unten stehenden Abschnitten
beschrieben.
- Die Spezifikation XML Encryption muss beschreiben, wie
XML verwendet werden muss, um eine digital verschlüsselte
Internet-Quelle zu beschreiben (XML selbst auch eingeschlossen)
{prop1, prop2}.
Die XML-Beschreibung der verschlüsselten Quelle muss
ein Objekt erster Klasse sein (z.B. referenzierbar und infolgedessen
beschreibbar, signierbar usw.), und muss von einem bestimmten
Elementtyp repräsentiert werden.
- Diese Spezifikation muss die Verschlüsselung eines
XML-Dokumentfragments oder die Verschlüsselung eines
ganzen XML-Dokuments vorsehen.
- Die Feinheit der Verschlüsselung in einem
XML-Dokument ist begrenzt auf Elemente (eingeschlossen
Start-/End-Tags) oder Elementinhalte (zwischen den
Start- und End-Tags) {prop2, WS, FTF1}.
- Die Spezifikation muss das Trennen von
Verschlüsselunginformationen aus verschlüsselten Daten
vorsehen, und Verweismechanismen für die Adressierung von
Verschlüsselungsinformationen in verschlüsselten
Datenbereichen unterstützen und umgekehrt.
{HP: R3.7, prop2}
- Die Spezifikation muss die Mehrfachverschlüsselung
von Daten erlauben (z.B. die Verschlüsselung von XML-Dokumenten,
in denen schon einige Elemente verschlüsselt sind)
{prop1, prop2}.
Mehrfach verschlüsselte Daten müssen die gleiche Syntax
und Semantik verwenden wie alle anderen verschlüsselten
Daten.
- Die Spezifikation muss einen Mechanismus beschreiben, der
die Übertragung von Verschlüsselungsinformationen zu
einem Empfänger vorsieht. Die Struktur muss so flexibel sein,
dass zahlreiche Anforderungen einer Anwendung erfüllt werden,
eingeschlossen:
- die Übertragung eines kodierten
Schlüsselwerts, der an den Empfänger mittels
eines asymmetrischen oder symmetrischen Schlüssels
gerichtet ist
- die Zuweisung eines Namens oder eines URI-Verweises zu einem
bekannten Schlüssel.
Es muss möglich sein (auch wenn es nicht notwendig ist),
Schlüsselinformationen als Teil einer verschlüsselten
XML-Datenrepräsentation einzuschließen oder auf externe
Schlüsselinformationen zu verweisen. Zusätzlich
müssen Schlüssel in der Lage sein (auch wenn es nicht
notwendig ist), die Daten, die sie verschlüsseln, zu
identifizieren.
- Die Verschlüsselungsmechanismen müssen einfach
sein: Beschreibe, wie digitaler Inhalt, XML-Dokumente und
Fragmente davon verschlüsselt/entschlüsselt werden
{Reagle}
- Nur Informationen, die für die Entschlüsselung
notwendig sind, müssen vorgesehen werden. {Reagle}
Die Spezifikation muss die effiziente Entschlüsselung
von verschlüsselten Daten und diesbezüblichen
Informationen erlauben, wenn die Gruppen sich auf eine
Verschlüsselungsweise und Schlüsselmaterial vorab
verständigt haben. So muss die Spezifikation kein
Attribut vorschreiben, das beschreibt, wie die Daten
verschlüsselt werden.
- Diese Spezifikation gibt keine Auskunft über
den Ort einer sicheren Anwendung, sollte ein Schlüssel
angegeben werden.
- Diese Spezifikation gibt keine Auskunft über
Authentisierung. {List:
Reagle, WS}
- Diese Spezifikation gibt keine Auskunft über
Zugangsberechtigungen und Zugangskontrolle. {List:
Reagle,
Simon,
Kudoh, WS}
- Die Arbeitsgruppe (WG - Working Group) muss bereits
existierende Spezifikationen verwenden, es sei denn, sie
kann die Notwendigkeit für eine neue nachhaltig
rechtfertigen. {Reagle}
Zum Beispiel sollte sie DOM oder Information Set als
Datenmodell für XML-Teile verwenden und Canonical XML
für die Kanonisierung, sofern nicht ein triftiger
Grund für eine Alternative spricht.
- Die Spezifikation muss ein minimales (erweiterbares)
Spektrum an Algorithmen und Schlüsselstrukturen
angeben, um die Anforderungen der Interoperabilität
zu erfüllen. {Reagle}
- Die Spezifikation sollte sich um ein Minimum an Optionalität
und um ein Maximum an Erweiterbarkeit bemühen, so dass die
Spezifikation zügig implementiert werden kann.
- Wann immer es möglich ist, ist jede
Verschlüsselungsquelle, bzw. jeder Algorithmus ein Objekt erster
Klasse (welches auch verschlüsselt oder signiert werden kann),
und wird durch einen URI identifiziert. {prop1,
prop2}
1. Encryption Data Model
und Syntax
- Das XML-Datenmodell,
das von XML-Encryption zur Identifizierung oder zur Repräsentation
von verarbeiteten Daten verwendet wird, muss basieren auf:
- einer einfachen, aneinandergereihten Untermenge des Datenmodells
(z.B. Element, Attribut usw.) und Eigenschaften (z.B. child, parent,
localname, prefix usw.). {WS}
- XML-Verschlüsselung kann auf jede Internetquelle
angewendet werden -- eingeschlossen Inhalte, die kein XML sind.
{prop1, prop2}
Siehe auch Anforderungen: Objekte.
- Wenn ein Objekt verschlüsselt wird, das nicht XML
ist (z.B. externe Daten), wird die Information, die nötig
ist, um dem Empfänger bei der Entschlüsselung zu helfen,
in einer Instanz von XML eingeschlossen (z.B. die
Verschlüsselungsmethode, Schlüsselinformationen usw.).
Die Entscheidung, die verschlüsselten Objektverschlüselungsdaten
als base64-verschlüsseltes CDATA in dieses XML einzubinden,
oder einfach nur einen Verweis auf die Oktettreihe der kodierten
Daten anzulegen, liegt bei der Anwendung. In beiden Fällen
müssen die verschlüsselten Daten wieder den Datentyp
des originalen Objekts annehmen. {TimBL, Dillaway}
- Es muss möglich sein, den originalen Typ
(z.B. XML CDATA, image/gif) der verschlüsselten Daten
anzugeben um den Entschlüsselungvorgang zu
unterstützen. Für nicht-XML-Daten, sollten
bereits existierende MIME-Typdefinitionen [MIME] verwendet
werden.
- Binäre Daten müssen als Base64 verschlüsselt
werden, wenn sie in XML dargestellt werden.
{FTF1}
- Diese Spezifikation muss kein Verpackungsformat für
Nicht-XML-Daten (z.B. MIME-Objekte) definieren, die sich von
den verschlüsselten Informationen unterscheiden, die in
der Syntax der XML-Encryption beschrieben sind.
- Die Spezifikation braucht kein Verpackungsformat zu definieren,
das die Beziehung zwischen verschlüsselten Objekten
beschreibt. Zum Beispiel wird die Spezifikation nicht angeben,
wie eine Anwendung anzeigen kann, dass mehrere verschlüsselte
Objekte die Verschlüsselung des gleichen Objekts sind, nur
in unterschiedlichen "Verpackungen" (Verschlüsselungen,
Kompression usw.). {prop3: offene Frage 2,
ausgeräumt in FTF1}
- Verarbeiten {WS}
- Anwendungen für XML Encryption müssen die
XML-Namensräume
[XML-namespaces] unterstützen.
- Anwendungen für XML Encryption müssen XML Schema [ XML-schema] in der Form
unterstützen, dass sie XML Encrytion Instanzen erzeugen,
die konform zum den Encryption Schema Definitionen sind.
{Reagle}
- Implementierungen der Spezifikation sollten mit existierenden
XML-Parsern und Schema-Implementierungen zusammenarbeiten.
Jedoch können sich Veränderungen an bestimmten DOM- und/oder
XML-Parser-Implementierungen als nützlich erweisen, um die
Anwendungsentwicklung zu vereinfachen oder die
Runtime-Effizienz zu verbessern. Auf diese Details geht die
Spezifikation XML Encryption nicht ein.
- XML-Instanzvalidität {WS}
- Verschlüsselte Instanzen müssen wohlgeformt sein,
aber sie müssen nicht gültig gegenüber ihrer
eigentlichen Definition sein (z.B. verstecken Anwendungen, die
die Elementstruktur verschlüsseln, sinnvollerweise
diese Struktur).
- Autoren von Instanzen, die verschlüsselte Instanzen
validieren wollen, müssen eine der folgenden Varianten
wählen:
- Das originale Schema so schreiben, als würden die
erzeugten Instanzen validiert werden, deren Änderungen
in Ihrer Struktur
und die Inklusion von Elementtypen auf dem Namensraum von
XML-Encryption beruhen.
- Ein Post-Encryption Schema angeben, um verschlüsselte
Daten zu validieren.
- Nur PCDATA-Text von Elementinhalten verschlüsseln
und deren Verschlüsselungs- und Schlüsselinformationen
in einem externen Dokument ablegen. (Dies erfordert eine
feinkörnige ausgelagerte /externe
Verschlüsselung.)
- Das Verarbeitungsmodell muss mit Hilfe
von XML, DOM oder Information Set Technologie beschrieben werden und
Implementierungen können auf anwendungsbezogener Logik basieren
(z.B. XPath und DOM werden nicht für eine Implementierung
benötigt). {List:
Ferguson, FTF1}
- Das Verweismodell muss auf den Grundlagen
von XML-Signature beruhen
Verweisverarbeitungsmodell
[XMLDSIG] mit den beiden folgenden
Anforderungen:
- Wie empfohlen in [XMLDSIG],
sollte jede Fragmentverarbeitung als Teil der Transformation
angegeben werden, wenn ein Verweismechanismus
Transformationen unterstützt.
- Unterstützt ein Verweismechanismus keine
Transformationen, sollten Anwendungen die
dokumentintern verweisenden XPointer
'#xpointer(/)' und '#xpointer(id("ID"))'
unterstützen.
- Transformationen {WS}
- Verschlüsselungstransformationen: Die Spezifikation
muss keine zusätzlichen Transformationen als Teil der
Verschlüsselung und Entschlüsselung von Daten
vorsehen; Transformationen von Daten, die
verschlüsselt/entschlüsselt sind, müssen von
der Anwendung vollzogen werden. Zum Beispiel könnte die
Kompression
so ablaufen, dass der Inhalt komprimiert wird und die Daten
in einer XML-Kompressionssyntax eingehüllt werden und dann
verschlüsselt werden. {FTF1}
- Verschlüsselung und Signaturen
- Die Spezifikation muss Möglichkeiten empfehlen,
XML-Signature mit XML-Encryption so zu verwenden, dass
mehrere Gruppen wahlweise Dokumentfragmente, die bereits
verschlüsselt und signiert sind, verschlüsseln
und signieren können. Empfänger sollten einfach
feststellen können, ob Daten vor der
Signaturüberprüfung entschlüsselt
werden müssen oder nicht.
- Anwendungen haben die folgenden Möglichkeiten:
- Werden Daten verschlüsselt, wird auch deren Signatur
verschlüsselt; folglich können die Signaturen, die
man sehen kann, validiert werden. (Jedoch
ist das mit abgetrennten Signaturen nicht immer einfach zu
erreichen..){List:
Finney}
- Die Signaturtransformation "Decrypt-Except" [XML-DSIG-Decrypt] anwenden.
Sie funktioniert wie folgt: Wird eine
Entschlüsselungstransformation in der laufenden
Ausführung der Signaturtransformation entdeckt, werden
alle verschlüsselten Inhalte in dem Dokument
entschlüsselt, außer denen, die durch eine
Verweisaufzählung ausgeschlossen wurden.
{List:
Maruyama, FTF1}.
- Die Verschlüsselung und die XML-Verarbeitung sollte
sein:
- schnell {List:
Ferguson}
- speichereffizient {List:
Ferguson}
- kompatibel zu Baum- und Event-basierten Parsern {List:
Ferguson}.
- Die Lösung muss mit willkürlichen
Verschlüsselungsalgorithmen zusammenarbeiten,
eingeschlossen symmetrische und asymmetrische
Schlüsselschemata, sowie dynamische Verhandlung von
Schlüsselmaterial. {prop1, prop2}
- Die Spezifikation muss einen obligatorischen Algorithmus
angeben oder auf einen verweisen, um einen Algorithmus zu
implementieren, der für die meisten Standardanwendungen
geeignet ist.
- Stream Encryption Algorithmen {FTF1}
- keine
- Block Encryption Algorithmen {FTF1}
- AES mit CMS-Schlüssellänge muss implementiert werden
- 3DES muss implementiert werden -- das kann eventuell
vernachlässigt werden, wenn AES ausgereift ist.
- AES kann optional mit anderen Schlüssellängen
implementiert werden.
- Verkettungsmodi {FTF1}
- CBC (Cipher Block Chaining) mit PKCS#5 kann optional implementiert
werden.
- Schlüsseltransport {FTF1}
- RSA-OAEP mit AES muss implementiert werden.
- RSA-v1.5 mit 3DES muss implementiert werden --das kann eventuell
vernachlässigt werden, wenn AES ausgereift ist.
- Key Agreement {FTF1}
- Diffie-Hellman kann optional implementiert werden.
- Symmetric Key Wrap {FTF1}
- AES KeyWrap ist erforderlich -- sobald es endgültig
spezifiziert ist.
- CMS-KeyWrap-3DES ist erforderlich.
- Message Integrity
- AES/3DES mit SHA1 kann optional implementiert werden.
- Authentisierung {FTF1}
- Es wird empfohlen, XML Signature
[XMLDSIG] zu implementieren.
- Kanonisierung {FTF1}
- Canonical XML kann optional implementiert werden.
- Kompression {FTF1}
- keine
-
Schlüsselstrukturen
- Umfang: es müssen nur Schlüsselstrukturen
definiert sein, die von den obligatorischen und
empfohlenen Algorithmen gefordert werden. {Reagle}
- Die Spezifikation sollte nicht angeben, wie der betreffende
Empfänger von Schlüsselinformationen im
optionalen Attribut "hint" angegeben wird.
{prop3: open issue 1, FTF1}
- Die Spezifikation sollte die Syntax für
Schlüsselinformationen der Spezifikation
XML Signature (das Element dsig:KeyInfo)
im höchst möglichen Maße
unterstützen.{prop3, FTF1}
Die Spezifikation XML Encryption muss eine Erörterung
über mögliche Verwundbarkeiten enthalten und
empfohlene Vorgehensweisen, wenn das definierte
Verarbeitungsmodell in einem breiten Anwendungskontext
verwendet wird. Auch wenn es unmöglich ist, alle
Anwendungsgebiete vorauszusagen wie ein XML Encryption
Standard verwendet werden kann, sollten die Benutzer
gewarnt werden, wie mögliche subtile Schwächen
eingebaut werden können.
Es müssen mindestens die folgenden Arten der Verwundbarkeit
angegeben werden.
- Sicherheitsaspekte, die von bekannten Plain-Text- und
Datenlängen-Informationen herrühren.
- Ein Angreifer könnte die originalen Strukturen
des Plain-Text über dessen Schema kennen.
{List:
Wiley}
- Ein Angreifer könnte die Längen und
die Redundanz der Plain-Text-Daten kennen.
{List:
Finney}
- Verarbeitung von ungültigen entschlüsselten Daten,
wenn kein Mechanismus zur Integritätsprüfung
in Verbindung mit der Verschlüsselung verwendet wird. {List:
Lambert, FTF1}
- Mögliche Schwachpunkte als Ergebnis der Kombination
von Signierung und Verschlüsselung.
- Signieren vor dem Verschlüsseln: die Signatur
könnte Informationen über die Daten offenlegen,
die nun verschlüsselt worden sind, wenn keine
adäquaten Vorkehrungen getroffen werden
(wie z.B. eine verschlüsselte zufällige
Zeichenkette vor dem Hashing an den Plain-Text
anzuhängen). {List:
Finney}
- Verschlüsseln vor dem Signieren: Benutzer könnten
versehentlich verschlüsselte Daten mit der Semantik
(e.g., asserts or agrees to)
der unverschlüsselten Form der Daten signieren.
[XMLDSIG:
Nur das,
was zu "sehen" ist, sollte signiert werden.].
Zusätzlich könnte es mehrere (Daten, Schlüssel)
Paare geben, die zu denselben verschlüsselten Daten
führen. Deshalb muss sehr große Sorgfalt bei der
Wahl der Verschlüsselungsfunktion oder des
Signierungsprozesses walten, um die Möglichkeit einer
Signaturrückweisung zu verringern. (z.B. "Ich hab das
nicht gesagt, ich habe eine andere Nachricht signiert, die
unter einem anderen Schlüssel verschlüsselt wurde.")
{List:
Wang,
Ashwood}.
- Die Spezifikation sollte Anwendungsdesigner
und Benutzer warnen, Informationen über
verschlüsselte Daten zu offenbaren.
- Über jede Semantik, die sich aus einem URI ergeben kann.
Die Spezifikation XML Encryption sollte die Anforderungen
der folgenden Anwendungen erfüllen (wie auch
unterstützen) oder mit den folgenden Anwendungen
zusammenarbeiten:
Um sicherzustellen, dass die oben genannten Forderungen
hinreichend erfüllt sind, muss die Spezifikation XML
Encryption von ernannten Mitgliedern folgender Communities
überprüft werden:
- XML Signature WG
- XML Protocol
- XML Schema WG
- XML Core WG
- Internationalization IG
- Die Spezifikation sollte keine behindernden Technologien
enthalten:
Sie sollte keine Inhalte besitzen, die Lizenzgebühren
für die Implementierung und die Verwendung erforderlich
machen. {List:
Ferguson}
"Von den Mitgliedern der XML Encryption Working Group und jeder
anderen Working Group, die in der XML Encryption
Activity mitgewirkt haben, wird erwartet, dass sie geistiges
Eigentum, das sie in diesem Bereich besitzen, freigeben.
Geistiges Eigentum, das grundlegend für die
Implementierung der Spezifikationen ist, die von dieser Activity
hervorgebracht wurden, muss zumindest für
die Lizensierung auf der Royalty-Free-Basis verfügbar sein.
Auf Vorschlag der Working Group und des Direktors des W3C,
können Technologien eventuell akzeptiert werden, wenn
sie zu vernünftigen und nicht-diskriminierenden Konditionen
lizensiert sind."
XML Encryption Charter.
- C2000
-
Crypto 2000 XML Encryption BoF. Santa Barbara, CA. 24. August
- DOM
- Document
Object Model Core, Level 3. Arnaud Le Hors. W3C Working Draft.
Januar 2001.
http://www.w3.org/TR/DOM-Level-3-Core/core.html
- FTF1
-
XML Encryption Face-to-Face. Boston, MA. März 2000
- HP
-
Requirements and Goals for the Design of an 'XML Encryption
Standard'. Gerald Huck und
Arne Priewe. November 2000.
- InfoSet
- XML Information Set, W3C Proposed Recommendation. John Cowan.
August 2001.
- http://www.w3.org/TR/2001/PR-xml-infoset-20010810/
- List
- XML
Encryption List (eine nicht moderierte und ungeprüfte
öffentliche Mailing-Liste).
- MIME
- RFC2046. MIME Part Two: Media Types November 1996.
- http://rfc.net/rfc2046.html
- MyProof
-
MyProof Position Paper On XML Encryption. Steve Wiley.
- prop1
-
XML Encryption strawman proposal. Ed Simon und Brian
LaMacchia. 09. Aug 2000.
- prop2
-
Another proposal of XML Encryption. Takeshi Imamura. 14. Aug 2000.
- prop3
-
XML Encryption Syntax and Processing. Dillaway, Fox, Imamura,
LaMacchia, Maruyama, Schaad, Simon. Dezember 2000.
- WS
- W3C
XML Encryption Workshop [minutes].
SanFrancisco. 02. November 2000.
- XML
- Extensible Markup Language (XML) 1.0 Recommendation. T. Bray,
J. Paoli, C. M. Sperberg-McQueen. Februar 1998.
- http://www.w3.org/TR/1998/REC-xml-19980210
- XML-C14N
- Canonical
XML. W3C Recommendation. J. Boyer. März 2001.
- http://www.w3.org/TR/2001/REC-xml-c14n-20010315
http://www.ietf.org/rfc/rfc3076.txt
- XML-ns
- Namespaces in XML Recommendation. T. Bray, D. Hollander, A.
Layman. Januar 1999.
- http://www.w3.org/TR/1999/REC-xml-names-19990114/
- XML-schema
- XML
Schema Part 1: Structures W3C Recommendation. D. Beech, M.
Maloney, N. Mendelsohn, H. Thompson. Mai 2001.
- http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/
XML
Schema Part 2: Datatypes W3C Recommendation. P. Biron, A.
Malhotra. Mai 2001.
- http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/
- XMLDSIG
-
XML-Signature
Syntax and Processing. W3C Proposed Recommendation. D.
Eastlake, J. Reagle, und D. Solo. August 2001.
- http://www.w3.org/TR/2001/PR-xmldsig-core-20010820/
- XML-DSIG-Decrypt
- Decryption Transform for XML Signature. W3C Working Draft. T.
Imamura und H. Maruyama.
- http://www.w3.org/TR/2001/WD-xmlenc-decrypt-20010626
- XSet
- Full Fidelity Information Set Representation. Jonathan Borden.
XML-Dev
- http://lists.xml.org/archives/xml-dev/200008/msg00239.html
- URI
- RFC2396. Uniform Resource Identifiers (URI): Generic
Syntax. T. Berners-Lee, R. Fielding, L. Masinter. August
1998
http://www.ietf.org/rfc/rfc2396.txt