Verschlüsselungsmethoden

Für die Bindungseinstellungen des Anforderungsgenerators umfassen die Verschlüsselungsmethoden die Angabe der Verschlüsselungsalgorithmen für Daten und Schlüssel, die zum Verschlüsseln der SOAP-Nachricht verwendet werden. Die WSS-API für Verschlüsselung (WSSEncryption) gibt den Algorithmusnamen und den entsprechenden Algorithmus-URI für die Verschlüsselungsmethoden für Daten und Schlüssel an. Wenn die Daten-und Schlüsselverschlüsselungsalgorithmen angegeben werden, werden nur Elemente akzeptiert, die mit diesen Algorithmen verschlüsselt sind.

Datenverschlüsselungsalgorithmen

Der Datenverschlüsselungsalgorithmus wird verwendet, um Teile der SOAP-Nachricht zu verschlüsseln, einschließlich Hauptteil und Signatur. Datenverschlüsselungsalgorithmen geben den Algorithmus-URI (Uniform Resource Identifier) für jeden Typ von Datenverschlüsselungsalgorithmen an.

Die folgenden vorkonfigurierten Datenverschlüsselungsalgorithmen werden unterstützt:
Tabelle 1. Datenverschlüsselungsalgorithmen. Die Algorithmen werden zum Verschlüsseln von SOAP-Nachrichten verwendet
Name des Datenverschlüsselungsalgorithmus Algorithmus-URI
WSSEncryption.AES128 (Standardwert) URI des Datenverschlüsselungsalgorithmus AES 128: http://www.w3.org/2001/04/xmlenc#aes128-cbc
WSSEncryption.AES192 URI des Datenverschlüsselungsalgorithmus AES 192: http://www.w3.org/2001/04/xmlenc#aes192-cbc
WSSEncryption.AES256 URI des Datenverschlüsselungsalgorithmus AES 256: http://www.w3.org/2001/04/xmlenc#aes256-cbc
WSSEncryption.TRIPLE_DES URI des Datenverschlüsselungsalgorithmus TRIPLE DES: http://www.w3.org/2001/04/xmlenc#tripledes-cbc

Standardmäßig wird Java™ Cryptography Extension (JCE) mit eingeschränkten oder eingeschränkten Verschlüsselungswerten geliefert. Wenn Sie 192 -Bit-und 256-Bit-AES-Verschlüsselungsalgorithmen (AES = Advanced Encryption Standard) verwenden möchten, müssen Sie uneingeschränkte Standortrichtliniendateien anwenden.

Wichtig: Für Ihr Herkunftsland bestehen möglicherweise Einschränkungen hinsichtlich des Imports, des Besitzes, der Verwendung oder des Reexports von Verschlüsselungssoftware in ein anderes Land. Bevor Sie die uneingeschränkten Richtliniendateien herunterladen oder verwenden, müssen Sie die Gesetze Ihres Landes, die zugehörigen Bestimmungen und die Richtlinien in Bezug auf den Import, den Besitz, die Verwendung und den Reexport von Verschlüsselungssoftware überprüfen, um festzustellen, ob dies zulässig ist.

Für die Algorithmen AES256-cbc und AES192-CBC müssen Sie die uneingeschränkten JCE-Richtliniendateien (Java™ Cryptography Extension) von der folgenden Website herunterladen: http://www.ibm.com/developerworks/java/jdk/security/index.html.

Der für die Verschlüsselung auf Generatorseite konfigurierte Datenverschlüsselungsalgorithmus muss mit dem Datenverschlüsselungsalgorithmus übereinstimmen, der für die Entschlüsselung auf Konsumentenseite konfiguriert ist.

Schlüsselverschlüsselungsalgorithmen

Dieser Algorithmus wird zum Verschlüsseln und Entschlüsseln von Schlüsseln verwendet. Diese Schlüsselinformationen werden verwendet, um die Konfiguration anzugeben, die zum Generieren des Schlüssels für digitale Signatur und Verschlüsselung erforderlich ist. Die Konfigurationen für Signaturdaten und Verschlüsselungsdaten können die Schlüsseldaten gemeinsam nutzen. Die Schlüsselinformationen auf der Konsumentenseite werden verwendet, um Informationen zu dem Schlüssel anzugeben, der für die Validierung der digitalen Signatur in der empfangenen Nachricht oder für die Entschlüsselung der verschlüsselten Abschnitte der Nachricht verwendet wird. Der Anforderungsgenerator ist für den Client konfiguriert.

Anmerkung: Richtliniensätze unterstützen keine symmetrische Verschlüsselung von Schlüsseln. Wenn Sie die WSS-API für symmetrische Schlüsselverschlüsselung verwenden, können Sie nicht mit Web-Service-Endpunkten interagieren, die die Richtliniensätze verwenden.

Schlüsselverschlüsselungsalgorithmen geben den Algorithmus-URI (Uniform Resource Identifier) der Schlüsselverschlüsselungsmethode an. Die folgenden vorkonfigurierten Schlüsselverschlüsselungsalgorithmen werden unterstützt:

Tabelle 2. Unterstützte vorkonfigurierte Schlüsselchiffrieralgorithmen. Die Algorithmen werden zum Verschlüsseln und Entschlüsseln von Schlüsseln verwendet.
WSS-API URI
WSSEncryption.KW_AES128 URI des Schlüsselchiffrieralgorithmus "key wrap AES 128": http://www.w3.org/2001/04/xmlenc#kw-aes128
WSSEncryption.KW_AES192 URI des Schlüsselchiffrieralgorithmus "key wrap AES 192": http://www.w3.org/2001/04/xmlenc#kw-aes192
Einschränkung: Verwenden Sie den 192-Bit-Schlüsselverschlüsselungsalgorithmus nicht, wenn Ihre konfigurierte Anwendung mit dem Basic Security Profile (BSP) konform sein soll.
WSSEncryption.KW_AES256 URI des Schlüsselchiffrieralgorithmus "key wrap AES 256": http://www.w3.org/2001/04/xmlenc#kw-aes256
WSSEncryption.KW_RSA_OAEP (Standardwert) URI des Schlüsselverschlüsselungsalgorithmus Key wrap RSA OAEP: http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p
WSSEncryption.KW_RSA15 URI des Schlüsselverschlüsselungsalgorithmus Key Wrapping RSA 1.5: http://www.w3.org/2001/04/xmlenc#rsa-1_5
WSSEncryption.KW_TRIPLE_DES URI des Schlüsselchiffrieralgorithmus "key wrap TRIPLE DES": http://www.w3.org/2001/04/xmlenc#kw-tripledes
Für Secure Conversation müssen zusätzliche schlüsselbezogene Informationen angegeben werden, wie z. B.:
  • Algorithmname
  • Schlüssellänge
Standardmäßig verwendet der Algorithmus RSA-OAEP den Message-Digest-Algorithmus SHA1 , um einen Message-Digest als Teil der Verschlüsselungsoperation zu berechnen. Optional können Sie den Message-Digest-Algorithmus SHA256 oder SHA512 verwenden, indem Sie eine Eigenschaft für den Schlüsselverschlüsselungsalgorithmus angeben. Der Eigenschaftsname lautet: com.ibm.wsspi.wssecurity.enc.rsaoaep.DigestMethod. Der Eigenschaftswert ist einer der folgenden URIs der Digest-Methode:
  • http://www.w3.org/2001/04/xmlenc#sha256
  • http://www.w3.org/2001/04/xmlenc#sha512

Standardmäßig verwendet der Algorithmus RSA-OAEP eine Nullzeichenfolge für die optionale Codierungsoktettzeichenfolge für die OAEPParams. Sie können eine explizite Verschlüsselungsoktettzeichenfolge angeben, indem Sie eine Eigenschaft für den Schlüsselverschlüsselungsalgorithmus angeben. Als Eigenschaftsnamen können Sie com.ibm.wsspi.wssecurity.enc.rsaoaep.OAEPparamsangeben. Der Eigenschaftswert ist der Base64-codierte Wert der Oktettfolge.

Wichtig: Sie können diese Digest-Methode und OAEPParams-Eigenschaften nur auf Generatorseite festlegen. Auf der Konsumentenseite werden diese Eigenschaften aus der eingehenden SOAP-Nachricht gelesen.

Für die Schlüsselverschlüsselungsalgorithmen KW-AES256 und KW-AES192 müssen Sie die uneingeschränkten JCE-Richtliniendateien von der folgenden Website herunterladen: http://www.ibm.com/developerworks/java/jdk/security/index.html.

Der Schlüsselverschlüsselungsalgorithmus für den Generator muss mit dem Schlüsselentschlüsselungsalgorithmus übereinstimmen, der für den Konsumenten konfiguriert ist.

In diesem Beispiel wird Beispielcode für die Verschlüsselung bereitgestellt, um Triple DES für das Datenverschlüsselungsverfahren und RSA1.5 für das Schlüsselverschlüsselungsverfahren zu verwenden:

	  // get the message context
	  Object msgcontext = getMessageContext();

	  // generate WSSFactory instance
	  WSSFactory factory = WSSFactory.getInstance();		

	  // generate WSSGenerationContext instance
	  WSSGenerationContext gencont = factory.newWSSGenerationContext();

	  // generate callback handler
	  X509GenerateCallbackHandler callbackHandler = new X509GenerateCallbackHandler(
			  "",
			  "enc-sender.jceks",
			  "jceks", 
			  "storepass".toCharArray(), 
			  "bob", 
			  null, 
			  "CN=Bob, O=IBM, C=US", 
			  null);

	  // generate the security token used to the encryption
	  SecurityToken token = factory.newSecurityToken(X509Token.class, 
        callbackHandler);

	  // generate WSSEncryption instance to encrypt the SOAP body content
	  WSSEncryption enc = factory.newWSSEncryption(token);
	  enc.addEncryptPart(WSSEncryption.BODY_CONTENT);

	  // set the data encryption method
	  // DEFAULT: WSSEncryption.AES128
	  enc.setEncryptionMethod(WSSEncryption.TRIPLE_DES);

	  // set the key encryption method
	  // DEFAULT: WSSEncryption.KW_RSA_OAEP
	  enc.setEncryptionMethod(WSSEncryption.KW_RSA15);

	  // add the WSSEncryption to the WSSGenerationContext
	  gencont.add(enc);

	  // generate the WS-Security header
	  gencont.process(msgcontext);