Die XML-Encryption (XML-Enc) ist eine Spezifikation von Möglichkeiten, wie XML-Dokumente ver- und entschlüsselt werden können.
Dabei sind folgende Möglichkeiten vorgesehen:
Dazu existieren einige spezielle Elemente. Die wichtigsten sind:
EncryptedData ist der einschließende Tag für die XML-Verschlüsselung. Das Attribut Type informiert darüber, ob ein ganzes XML-Element oder nur der Inhalt des Elementes verschlüsselt werden soll. Das Attribut Type ist optional.EncryptionMethod beschreibt den Algorithmus, der zur Verschlüsselung verwendet wird. Das Element ist optional. Wird dieses Element nicht verwendet, muss der Verschlüsselungsalgorithmus dem Empfänger bekannt sein.KeyInfo ist ein ebenfalls optionales Element, welches Informationen über den Schlüssel enthalten kann, mit dem die Daten verschlüsselt worden sind.CipherData ist das verschlüsselte Element. Es enthält entweder ein oder mehrere CipherValue-Elemente oder aber eine Referenz zu den verschlüsselten Daten (CipherReference).CipherValue enthält die verschlüsselten Daten.CipherReference ist eine Referenz zu den verschlüsselten Daten.Bei einem Bezahlvorgang im Internet könnte folgender XML-Datensatz auftreten:
<?xml version='1.0'?>
<PaymentInfo xmlns='http://example.org/paymentv2'>
<Name>John Smith</Name>
<CreditCard Limit='5,000' Currency='USD'>
<Number>4019 2445 0277 5567</Number>
<Issuer>Example Bank</Issuer>
<Expiration>04/02</Expiration>
</CreditCard>
</PaymentInfo>
Eine Möglichkeit, die vertraulichen Kreditkarteninformationen zu schützen besteht darin, das gesamte Element „CreditCard“ zu verschlüsseln.
<?xml version='1.0'?>
<PaymentInfo xmlns='http://example.org/paymentv2'>
<Name>John Smith</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>