Ressourcen signieren, verifizieren, entschlüsseln und verschlüsseln

XML-Resourcen können signiert, Signaturen verifiziert, ent- und verschlüsselt werden. Dabei können Schlüssel aus dem Windows Zertifikatspeicher oder aus einem Java Key Store benutzt werden.

Soll im Test in der Rolle eines beliebigen Benutzers gearbeitet werden, müssen die folgenden Voraussetzungen erfüllt werden:

  • Der private key muss exportierbar sein.

  • Der ausführende Benutzer muss Administratorrechte besitzen.

  • Die Benutzerverwaltung muss deaktiviert sein (user account control).

Windows Zertifikatspeicher und Java Key Store

Das Modul CertificateData erlaubt die Verwendung von Zertifikaten (Schlüssel), die in Windows Zertifikatspeichern oder Java Keystores gespeichert sind.

Das Modulattribut Certificate besitzt zwei Spezialisierungen: CertificateStoreData und JavaKeyStoreData. Die Spezialisierung wird beim Aufbau des Testfalls ausgewählt (siehe Kapitel "Generalisierungen und Spezialisierungen").

Verwenden Sie für die Spezialisierungen die Module CertificateStoreData und JavaKeyStoreData.

Diese Module sind Teil der Standard-Untermenge. Diese finden Sie unter Standard modules->TBox XEngines->Parameter data.

CertificateStoreData

In den klassischen Aufgabenstellungen werden die Modulattribute StoreLocation für den Zertifkatsspeicher (LocalMachine oder CurrentUser), StoreName (Eine Liste mit gültigen Bezeichnungen finden Sie unter http://msdn.microsoft.com/de-de/library/system.security.cryptography.x509certificates.storename.aspx) und FindOptions verwendet, um ein bestimmtes Zertifikat zu benutzen.

Operationen wie Signieren und Entschlüsseln benötigen Zugriff auf den privaten Schlüssel. Unter Windows kann der Zugriff darauf eingeschränkt werden. Sofern der aktuelle Benutzer die notwendige Rechte nicht hat, kann hier ein anderer Benutzer angegeben werden.

In diesem Beispiel wird ein Zertifikat im Speicher My innerhalb des benutzerspezifischen Zertifikatspeichers CurrentUser angegeben.

Identifiziert wird es über seinen Thumbprint, in dem der Wert des Modulattributs FindType auf FindByThumbprint gesetzt wird und das Modulattribut FindValue mit dem konkreten Wert für den Schlüssel definiert wird.

Beispiel für die Verwendung des Windows Zertifikatspeichers

JavaKeyStoreData

Benutzt man die Spezialisierung JavaKeyStoreData sind die Modulattribute StoreFile, StorePassword, KeyAlias und KeyPassword notwendig um die eindeutige Auswahl eines Schlüssels zu treffen.

Im Beispiel wird mit dem Testschrittwert StoreFile der Pfad zur Keystore-Datei definiert. Das Passwort für den KeyStore wird mit StorePassword und die Zugangsparameter zum Schlüssel mit KeyAlias und KeyPassword definiert.

Beispiel für die Verwendung des Java Keystores

XML-Signatur erstellen

XML-Signaturen werden verwendet um die Integrität und die Urheberschaft der Daten zu garantieren. Tosca unterstützt XML-Signaturen gemäß dem xml-dsig Standard (siehe auch http://www.w3.org/TR/xmldsig-core/). Dabei wird die Signatur mit einem privaten Schlüssel erzeugt. Der Empfänger der Daten kann die Gültigkeit mit dem zugehörigen, öffentlichen Schlüssel überprüfen.

Mit dem Modul Sign XML Resource kann eine XML-Ressource mit einem Zertifikat aus dem Windows-Zertifikatspeicher oder einem Java Key Store signiert werden. Dieses Modul ist Teil der Standard-Untermenge. Sie finden es unter Standard modules->TBox XEngines->XML.

Unterstützt werden die beiden Signaturtypen Enveloped und Enveloping.

Das Modul Sign XML Resource enthält alle notwendigen Modulattribute um das Signieren einer XML-Resource vorzunehmen.

Dazu gehört die Definition des benutzten Zertifikats mit dem Modulattribut Certificate und die Spezifizierung der Details zur Signatur mit dem Modulattribut Signature. Mit dem Attribut IncludeKeyInfo kann der öffentliche Schlüssel des signierenden Schlüssels mitgegeben werden. Das ermöglicht dem Empfänger die Überprüfung der Signatur.

Das Modulattribut Certificate kann die folgenden beiden Spezialisierungen annehmen: JavaKeyStoreData für die Benutzung des Java Key Store und CertificateStoreData für den Windows-Zertifikatspeicher.

Im folgenden Beispiel wird das letzte Buch in der Resource library signiert und das Ergebnis in der Resource signedLibrary hinterlegt. Dazu wird der Schlüssel im Modulattribut FindOptions per Thumbprint aus dem benutzerspezifischen Zertifikatspeicher geholt. Die Signatur wird mit enveloping erstellt. Das signierte Objekt ist das letzte Buch, das mittels des XPath book[last()] gefunden wird.

Beispieltestfall

XML-Signatur überprüfen

Verwenden Sie das Modul Verify Signed XML Resource, um ein signiertes XML zu überprüfen.

Dieses Modul ist Teil der Standard-Untermenge. Sie finden es unter Standard modules->TBox XEngines->XML.

Das Modulattribut Certificate kann die folgenden beiden Spezialisierungen annehmen: JavaKeyStoreData für die Benutzung des Java Key Store und CertificateStoreData für den Windows-Zertifikatspeicher. Eine genaue Beschreibung der beiden Spezialisierungen finden Sie unter "Windows Zertifikatspeicher und Java Key Store". Bleibt das Attribut Certificate leer, sucht Tosca nach einem eingebetteten Schlüssel und benutzt diesen.

Im folgenden Beispiel wird die Resource signedLibrary verifziert. Über den Parameter ExpectedResult wird das erwartete Resultat der Verifikation definiert.

Beispieltestfall

XML-Inhalte verschlüsseln und entschlüsseln

Durch die Verschlüsselung von Daten wird die Vertraulichkeit der Daten garantiert. Tosca unterstützt das symmetrische Verschlüsselungsverfahren AES und die asymmetrische Verschlüsselungsverfahren RSAP-OAEP und RSA 1.5. XML-Inhalte können entsprechend der Empfehlung des W3 mit dem Titel XML Encryption Syntax and Processing (http://www.w3.org/TR/xmlenc-core/) laut Tabelle verschlüsselt werden.

Die Schlüssel von Sitzungen werden mit RSAP-OAEP oder RSA 1.5 verschlüsselt, die Daten mit AES-WRAP (laut http://www.ietf.org/rfc/rfc3394.txt) mit Algorithmen laut folgender Tabelle.

Unterstützte Algorithmen für symmetrische Verschlüsselung

AES-128

AES-192

AES-256

Um Daten zu verschlüsseln, verwenden Sie das Modul Encrypt XML Resource.

Um Daten zu entschlüsseln, verwenden Sie das Modul Decrypt XML Resource.

Diese Module sind Teil der Standard-Untermenge. Sie finden sie unter Standard modules->TBox XEngines->XML->Encryption.

Unterstützte Verschlüsselungs-Granularität

Mit Ausnahme der Super-Encryption werden alle Typen der Granularität laut http://www.w3.org/TR/xmlenc-core/#sec-eg-Granularity unterstützt:

  • Verschlüsselung eines Elements

  • Verschlüsselung des Elementinhalts

  • Verschlüsselung beliebiger Daten und XML-Dokumente

Diese Granularität kann über das Modulattribut XPath geregelt werden. Ist das Modulattribut leer, wird das gesamte Dokument verschlüsselt.

Der Schlüssel kann als Klartext, in Hexadezimalwerten oder aus dem Windows Zertifikatspeicher benutzt werden.

Im Testfall muss zuerst für den Testschrittwert EncryptionMethod die Spezialisierung ausgewählt werden.

Wurde die Verschlüsselungsvariante AES-128 gewählt, muss der Key (PlainTextSymmetricKey) aus 16 Zeichen bestehen (16 Byte sind 128 Bit).

Schlüssellänge in Bit

Zeichen in Byte

AES-128

16

AES-192

24

AES-256

32

Verschlüsselung mit Klartext

Verschlüsselung mit Hexadezimalwert

Verschlüsselung mit einem Schlüssel aus dem Windows Zertifikatspeicher

Das Entschlüsseln funktioniert analog zum Verschlüsseln. Der Testschrittwert XPath muss nicht definiert werden, da die verschlüsselten Knoten automatisch identifiziert werden.

Die Verwendung des Modulattributs EncryptionMethod ist analog zur Verschlüsselung.

Das Modul Decrypt XML Resource

Im Beispiel werden die folgenden Schritte durchlaufen:

  1. Eine Resource encr4 wird erstellt.

  2. Im nächsten XTestschritt wird der Inhalt der Resource encr4 definiert.

  3. Der XTestschrittwert XPath definiert den Namen eines Autors. Dieser wird verschlüsselt und in die Resource encr4out geschrieben. In diesem Beispiel wird hierfür der XTestschrittwert EncryptionMethod als SymmetricKeyEncryption und der XTestschrittwert KeyType in weiterer Folge als PlainTextSymmetricKey spezialisiert.

  4. Die Resource encr4out wird entschlüsselt und in die Resource decr4out geschrieben. Es muss definiert werden, welche Verschlüsselungstechnik und welcher Schlüssel benutzt werden sollen. Die Spezialisierungen sind wie im letzten Schritt vorzunehmen.

  5. Die Resource decr4out wird in eine xml-Datei gespeichert. Der Pfad liegt als Konfigurationsparameter vor.

Beispiel Workflow für eine Ver- und Entschlüsselung