Verschlüsselungsmethoden

Wenn Sie die Bindungseinstellungen für den Anforderungsgenerator angeben, müssen Sie für die Verschlüsselungsmethoden unter anderem die Verschlüsselungsalgorithmen für Daten und Schlüssel angeben, die zum Verschlüsseln der SOAP-Nachricht verwendet werden soleln. Die WSS-API für Verschlüsselung (WSSEncryption) gibt den Algorithmusnamen und den entsprechenden Algorithmus-URI für die Schlüssel- und Datenverschlüsselungsmethoden an. Wenn die Schlüssel- und Datenverschlüsselungsmethoden angegeben sind, werden nur Elemente akzeptiert, die mit diesen Algorithmen verschlüsselt wurden.

Datenverschlüsselungsalgorithmen

Der Datenverschlüsselungsalgorithmus wird verwendet, um Abschnitte der SOAP-Nachricht, z. B. den Hauptteil und die Signatur, zu verschlüsseln. Datenverschlüsselungsalgorithmen geben den Algorithmus-URI für jeden Typ von Datenverschlüsselungsalgorithmus an.

Die folgenden vorkonfigurierten Algorithmen für die Datenverschlüsselung werden unterstützt:
Tabelle 1. Datenverschlüsselungsalgorithmen. Die Algorithmen werden für die Verschlüsselung von SOAP-Nachrichten verwendet.
Name des Algorithmus für Datenverschlüsselung 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 die 192-Bit- und 256-Bit-AES-Verschlüsselungsalgorithmen (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 und Richtlinien Ihres Landes in Bezug auf den Import, den Besitz und den Reexport von Verschlüsselungssoftware prü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 auf der Generatorseite konfigurierte Datenverschlüsselungsalgorithmus muss mit dem Datenverschlüsselungsalgorithmus übereinstimmen, der für die Konsumentenseite konfiguriert ist.

Algorithmen für Schlüsselchiffrierung

Dieser Algorithmus wird zum Chiffrieren und Dechiffrieren von Schlüsseln verwendet. Mit diesen Schlüsseldaten wird die Konfiguration definiert, die für die Generierung des Schlüssels für die digitale Signatur und Verschlüsselung benötigt wird. Die Konfigurationen für Signaturdaten und Verschlüsselungsdaten können die Schlüsseldaten gemeinsam nutzen. Auf der Konsumentenseite enthalten die Schlüsseldaten die Informationen zum Schlüssel, die für die Validierung der digitalen Signatur in der empfangenen Nachricht bzw. für die Entschlüsselung der verschlüsselten Nachrichtenabschnitte benötigt werden. Für den Client wird der Anforderungsgenerator konfiguriert.

Anmerkung: Richtliniensätze unterstützen keine symmetrische Verschlüsselung von Schlüsseln. Wenn Sie die WSS-API für symmetrische Schlüsselchiffrierung verwenden, ist eine Interoperation mit Web-Service-Endpunkten, die Richtliniensätze verwenden, nicht möglich.

Die Schlüsselchiffrieralgorithmen geben den Algorithmus-URI der Schlüsselchiffriermethode an. Die folgenden vorkonfigurierten Algorithmen für Schlüsselchiffrierung werden unterstützt:

Tabelle 2. Unterstützte vorkonfigurierte Schlüsselverschlüsselungsalgorithmen. Dieser Algorithmus wird 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 (the default value) URI des Schlüsselchiffrieralgorithmus "key wrap RSA OAEP": http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p
WSSEncryption.KW_RSA15 URI des Schlüsselchiffrieralgorithmus "key wrap 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üsselbezogenen Informationen angegeben werden, wie z. B.:
  • algorithmName
  • keyLength
Standardmäßig verwendet der Algorithmus RSA-OAEP den Message-Digest-Algorithmus SHA1, um einen Nachrichten-Digest im Rahmen der Verschlüsselungsoperation zu berechnen. Optional können Sie den Message-Digest-Algorithmus SHA256 oder SHA512 verwenden, indem Sie eine Eigenschaft für den Verschlüsselungsalgorithmus für Schlüssel angeben. Der Eigenschaftsname ist com.ibm.wsspi.wssecurity.enc.rsaoaep.DigestMethod. Als Eigenschaftswert können Sie einen der folgenden URIs der Digest-Methode angeben:
  • 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 Verschlüsselungsoktettzeichenfolge für die OAEPParams. Sie können eine explizite Verschlüsselungsoktettzeichenfolge angeben, indem Sie eine Eigenschaft für den Verschlüsselungsalgorithmus für Schlüssel angeben. Als Eigenschaftsnamen können Sie com.ibm.wsspi.wssecurity.enc.rsaoaep.OAEPparams angeben. Der Eigenschaftswert ist der Base-64-verschlüsselte Wert der Oktettzeichenfolge.

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 (Simple Object Access Protocol) gelesen.

Für die Schlüsselchiffrieralgorithmen 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üsselchiffrieralgorithmus für die Generatorseite muss mit dem Schlüsseldechiffrieralgorithmus übereinstimmen, der für den Konsumenten konfiguriert ist.

Im Folgenden sehen Sie Beispielcode für die Verschlüsselung mit Triple DES als Datenverschlüsselungsmethode und RSA1.5 als Schlüsselchiffriermethode:

	  // 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);