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.
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 JCE (Java™ Cryptography Extension) mit eingeschränkten Chiffriergraden oder beschränkten Schlüssellängen geliefert. Wenn Sie die 192-Bit- und 256-Bit-AES-Verschlüsselungsalgorithmen (Advanced Encryption Standard) verwenden möchten, müssen Sie Richtliniendateien anwenden, die keinen gesetzlichen Einschränkungen unterliegen.
Wenn Sie die Algorithmen AES256-cbc und AES192-CBC verwenden möchten, müssen Sie die nicht eingeschränkte JCE-Richtliniendatei (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.
Die Schlüsselchiffrieralgorithmen geben den Algorithmus-URI der Schlüsselchiffriermethode an. Die folgenden vorkonfigurierten Algorithmen für Schlüsselchiffrierung werden unterstützt:
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 Algorithmus für 192-Bit-Schlüsselverschlüsselung
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 |
- algorithmName
- keyLength
- 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. Der Eigenschaftswert ist der Base-64-verschlüsselte Wert der Oktettzeichenfolge.
Für die Schlüsselchiffrieralgorithmen KW-AES256 und KW-AES192 müssen Sie die nicht eingeschrä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:
// Nachrichtenkontext abrufen
Object msgcontext = getMessageContext();
// WSSFactory-Instanz generieren
WSSFactory factory = WSSFactory.getInstance();
// WSSGenerationContext-Instanz generieren
WSSGenerationContext gencont = factory.newWSSGenerationContext();
// Callback-Handler generieren
X509GenerateCallbackHandler callbackHandler = new X509GenerateCallbackHandler(
"",
"enc-sender.jceks",
"jceks",
"storepass".toCharArray(),
"bob",
null,
"CN=Bob, O=IBM, C=US",
null);
// Für die Verschlüsselung zu verwendendes Sicherheitstoken generieren
SecurityToken token = factory.newSecurityToken(X509Token.class,
callbackHandler);
// WSSEncryption-Instanz zum Verschlüsseln des SOAP-Hauptteilinhalts generieren
WSSEncryption enc = factory.newWSSEncryption(token);
enc.addEncryptPart(WSSEncryption.BODY_CONTENT);
// Datenverschlüsselungsmethode festlegen
// STANDARD: WSSEncryption.AES128
enc.setEncryptionMethod(WSSEncryption.TRIPLE_DES);
// Schlüsselchiffriermethode festlegen
// STANDARD: WSSEncryption.KW_RSA_OAEP
enc.setEncryptionMethod(WSSEncryption.KW_RSA15);
// WSSEncryption zu WSSGenerationContext hinzufügen
gencont.add(enc);
// WS-Security-Header generieren
gencont.process(msgcontext);