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:
|
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.
-
Für die Verschlüsselung mit Zertifikatspeicher wird die Spezialisierung SessionKeyEncryption gewählt (siehe Kapitel "Windows Zertifikatspeicher und Java Key Store").
-
Für die symmetrische Verschlüsselung wird die Spezialisierung SymmetricKeyEncryption gewählt.
Der Testschrittwert KeyType für die symmetrische Verschlüsselung besitzt die Spezialisierungen PlainTextSymmetricKey und HexCodeSymmetricKey für Klartext oder Hexadezimalcode.
Die Länge des PlainTextSymmetricKey muss der Schlüssellänge der AES-Variante in Byte entsprechen.
![]() |
Wurde die Verschlüsselungsvariante AES-128 gewählt, muss der Key (PlainTextSymmetricKey) aus 16 Zeichen bestehen (16 Byte sind 128 Bit).
|
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:
Beispiel Workflow für eine Ver- und Entschlüsselung |