XML-Encryption ist eine W3C-Spezifikation. Sie definiert eine Reihe von Möglichkeiten, in XML-Dokumenten zu beschreiben, welche Teile des Dokumentes wie verschlüsselt sind.
Dabei sind folgende Möglichkeiten vorgesehen:
- Verschlüsselung des gesamten XML-Dokumentes
- Verschlüsselung eines einzelnen Elementes und seiner Unterelemente
- Verschlüsselung des Inhaltes eines XML-Elementes
- Verschlüsselung für mehrere Empfänger
Zur Kennzeichnung sind spezielle Tags definiert. Die wichtigsten sind:
<EncryptedData> umschließt die XML-Verschlüsselung. Das optionale Attribut "Type" informiert darüber, ob ein ganzes XML-Element oder nur der Inhalt des Elementes verschlüsselt werden soll.
<EncryptionMethod> beschreibt den Verschlüsselungsalgorithmus. Das Tag ist optional. Wird dieses Element nicht verwendet, muss der Verschlüsselungsalgorithmus dem Empfänger bekannt sein.
<KeyInfo> ist ein ebenfalls optionales Tag, welches Informationen über den Schlüssel enthalten kann, mit dem die Daten verschlüsselt wurden.
<CipherData> ist das verschlüsselte Element. Es enthält ein oder mehrere <CipherValue>-Elemente oder aber eine <CipherReference>.
<CipherValue> enthält die verschlüsselten Daten.
<CipherReference> ist eine Referenz zu den verschlüsselten Daten.