Verschlüsselungsmethoden für Generatorbindungen

Wenn Sie den Client für die Anforderungsverschlüsselung für die Generatorbindung konfigurieren möchten, müssen Sie die Verschlüsselungsmethoden angeben, die verwendet werden sollen, wenn der Client die SOAP-Nachrichten verschlüsselt.

Vorbereitungen

Bevor Sie diese Schritte ausführen, sollten Sie die Informationen zur XML-Verschlüsselung lesen, um sich mit dem Verschlüsseln und Entschlüsseln von SOAP-Nachrichten vertraut zu machen.

Führen Sie die folgenden Tasks aus, um die Algorithmusmethoden anzugeben, die verwendet werden sollen, wenn der Client die SOAP-Nachrichten verschlüsselt:
  • Verwenden Sie die API WSSEncryption, um den Datenverschlüsselungsalgorithmus und die Algorithmusmethoden für Schlüsselchiffrierung zu konfigurieren.
  • Verwenden Sie die API WSSEncryptPart, um bei Bedarf eine Umsetzungsalgorithmusmethode zu konfigurieren. Es gibt keinen Standardumsetzungsalgorithmus.

Informationen zu dieser Task

Einige der verschlüsselungsbezogenen Definitionen basieren auf der Spezifikation "XML-Encryption". Im Folgenden finden Sie Definitionen einiger Begriffe, die sich auf die Datenverschlüsselung beziehen:

Algorithmus der Datenverschlüsselungsmethode
Datenverschlüsselungsalgorithmen geben den Algorithmus-URI (Uniform Resource Identifier) der Datenverschlüsselungsmethode an. Dieser Algorithmus verschlüsselt und entschlüsselt Daten in mehrere Oktettblöcken fester Größe.

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

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

Algorithmus der Schlüsselverschlüsselungsmethoden
Die Algorithmen für Schlüsselchiffrierung geben den Algorithmus-URI der Methode für die Verschlüsselung des Schlüssels an, der zum Verschlüsseln der Daten verwendet wird. Der Algorithmus stellt die öffentlichen Schlüsselchiffrieralgorithmen dar, die für die Verschlüsselung (Chiffrierung) und Entschlüsselung (Dechiffrierung) von Schlüsseln verwendet werden.

Standardmäßig verwendet der Algorithmus RSA-OAEP den Message-Digest-Algorithmus SHA1, um einen Message-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:
  • https://www.w3.org/2001/04/xmlenc#sha256
  • https://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 die OAEPParams-Eigenschaften nur auf der Generatorseite festlegen. Auf der Konsumentenseite werden diese Eigenschaften aus der eingehenden SOAP-Nachricht (Simple Object Access Protocol) gelesen.

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

Wichtig: In Ihrem Herkunftsland gelten möglicherweise Beschränkungen für den Import, Besitz, die Verwendung oder den Reexport 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.
Tabelle 1. Verschlüsselungsnutzungstypen . In den folgenden Abschnitten sind die Verschlüsselungsmethoden beschrieben, die den Verwendungstypen zugeordnet sind.
Verwendungstypen Beschreibung
Datenverschlüsselung Gibt den für die Verschlüsselung und Entschlüsselung von Daten verwendeten Algorithmus-URI an. Ver- und entschlüsselt Daten fester Größe in mehreren Oktettblöcken.
Schlüsselchiffrierung Gibt den für die Chiffrierung und Dechiffrierung von Chiffrierschlüsseln verwendeten Algorithmus-URI an.

Datenverschlüsselung

WebSphere® Application Server unterstützt die folgenden vorkonfigurierten Datenverschlüsselungsalgorithmen:

Tabelle 2. Datenverschlüsselungsalgorithmen . Diese vorkonfigurierten Verschlüsselungsalgorithmen werden unterstützt von WebSphere Application Server.
Name der Datenverschlüsselung Algorithmus-URI
WSSEncryption.AES128 (Standardwert) URI des Datenverschlüsselungsalgorithmus AES 128: https://www.w3.org/2001/04/xmlenc#aes128-cbc
WSSEncryption.AES192 URI des Datenverschlüsselungsalgorithmus AES 192: https://www.w3.org/2001/04/xmlenc#aes192-cbc
WSSEncryption.AES256 URI des Datenverschlüsselungsalgorithmus AES 256: https://www.w3.org/2001/04/xmlenc#aes256-cbc
WSSEncryption.TRIPLE_DES URI des Datenverschlüsselungsalgorithmus 3DES: https://www.w3.org.2001/04/xmlenc#tripledes-cbc

Schlüsselchiffrierung

WebSphere Application Server unterstützt die folgenden vorkonfigurierten Schlüsselverschlüsselungsalgorithmen:

Tabelle 3. Schlüsselverschlüsselungsalgorithmen . Diese vorkonfigurierten Verschlüsselungsalgorithmen werden unterstützt von WebSphere Application Server.
Name der Schlüsselchiffrierung Algorithmus-URI
WSSEncryption.KW_AES128 URI des Schlüsselchiffrieralgorithmus "key wrap AES 128": https://www.w3.org/2001/04/xmlenc#kw-aes128
WSSEncryption.KW_AES192 URI des Schlüsselchiffrieralgorithmus "key wrap AES 192": https://www.w3.org/2001/04/xmlenc#kw-aes192
Beschränkung: Verwenden Sie nicht den 192-Bit-Schlüsselverschlüsselungsalgorithmus, wenn Ihre konfigurierte Anwendung dem Basic Security Profile (BSP) entsprechen soll.
WSSEncryption.KW_AES256 URI des Schlüsselchiffrieralgorithmus "key wrap AES 256": https://www.w3.org/2001/04/xmlenc#kw-aes256
WSSEncryption.KW_RSA_OAEP (the default value) URI des Schlüsselchiffrieralgorithmus "key wrap RSA OAEP": https://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p
WSSEncryption.KW_RSA15 URI des Schlüsselchiffrieralgorithmus "key wrap RSA 1.5": https://www.w3.org/2001/04/xmlenc#rsa-1_5
WSSEncryption.KW_TRIPLE_DES https://www.w3.org/2001/04/xmlenc#kw-tripledes

Verwenden Sie zum Konfigurieren der Algorithmusmethoden für Verschlüsselung und verschlüsselte Abschnitte die API WSSEncryption, oder konfigurieren Sie über die Administrationskonsole Richtliniensätze.

Notiz: Richtliniensätze unterstützen keine symmetrische Schlüsselverschlüsselung. 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.

Während der WSS-API-Verarbeitung werden die folgenden übergeordneten Schritte ausgeführt, um anzugeben, welche Verschlüsselungsmethoden verwendet werden sollen, wenn der Client für die Anforderungsverschlüsselung konfiguriert wird:

Vorgehensweise

  1. Bei der Verwendung der API WSSEncryption wird der erforderliche Datenverschlüsselungsalgorithmus hinzugefügt.
    Der Datenverschlüsselungsalgorithmus wird für die Ver- und Entschlüsselung von Teilen einer SOAP-Nachricht. Datenverschlüsselungsalgorithmen geben den Algorithmus-URI (Uniform Resource Identifier) der Datenverschlüsselungsmethode an.

    Die Konfiguration des Clientgenerators muss mit der Konfiguration des Providerkonsumenten übereinstimmen.

    Standardmäßig wird der Datenverschlüsselung AES 128 verwendet. Der Datenverschlüsselungsname ist AES128, und der URI des Datenverschlüsselungsalgorithmus ist https://www.w3.org/2001/04/xmlenc#aes128-cbc. WebSphere Application Server unterstützt die folgenden vorkonfigurierten Datenverschlüsselungsalgorithmen:

    • AES 128: https://www.w3.org/2001/04/xmlenc#aes128-cbc

      Standardmäßig wird die Datenalgorithmusmethode AES 128 verwendet.

    • AES 192: https://www.w3.org/2001/04/xmlenc#aes192-cbc

      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.

      Um diesen AES 192-cbc-Algorithmus zu verwenden, müssen Sie die uneingeschränkte Java Cryptography Extension (JCE)-Richtliniendatei von der folgenden Website herunterladen: https://www.ibm.com/developerworks/java/jdk/security/index.html.

    • AES 256: https://www.w3.org/2001/04/xmlenc#aes256-cbc

      Um diesen AES 256-cbc-Algorithmus zu verwenden, müssen Sie die uneingeschränkte Java Cryptography Extension (JCE)-Richtliniendatei von der folgenden Website herunterladen: https://www.ibm.com/developerworks/java/jdk/security/index.html.

    • TRIPLEDES: https://www.w3.org/2001/04/xmlenc#tripledes-cbc
  2. Ändern Sie bei Bedarf die API-Methode "WSSEncryption" in einen anderen Datenverschlüsselungsalgorithmus.
    Sie können beispielsweise den folgenden Code hinzufügen, um den Standardalgorithmus von AES 128 in Triple DES zu ändern:
    // Default data encryption algorithm: AES128
    WSSEncryption enc = factory.newWSSEncryption(x509t); 
       enc.setEncryptionMethod(EncryptionMethod.TRIPLEDES_CBC);
    gencont.add(enc); 
  3. Bei der Verwendung der API WSSEncryption wird der erforderliche Schlüsselchiffrieralgorithmus hinzugefügt.
    Der Algorithmus für Schlüsselchiffrierung wird für die Ver- und Entschlüsselung des Schlüssels verwendet, mit dem die Nachrichtenabschnitte in der SOAP-Nachricht verschlüsselt werden. Wenn der Chiffrierschlüssel, d. h. der Schlüssel, der für die Verschlüsselung der Nachrichtenabschnitte verwendet wird, nicht verschlüsselt ist, wählt die API für Entschlüsselung dem unverschlüsselten Chiffrierschlüssel entsprechend die Einstellung false aus.

    Die Konfiguration des Clientgenerators muss mit der Konfiguration des Providerkonsumenten übereinstimmen.

    Der Standardwert für den Schlüsselchiffrieralgorithmus ist "key wrap RSA OAP". Der Name der Schlüsselchiffrierung ist KW_RSA_OAEP, und der URI des Schlüsselchiffrieralgorithmus ist https://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p. WebSphere Application Server unterstützt die folgenden vorkonfigurierten Schlüsselverschlüsselungsalgorithmen:

    • KW AES128: https://www.w3.org/2001/04/xmlenc#kw-aes128
    • KW AES192: https://www.w3.org/2001/04/xmlenc#kw-aes192

      Um diesen Key Wrap AES 192-Algorithmus zu verwenden, müssen Sie die uneingeschränkte Java Cryptography Extension (JCE)-Richtliniendatei von der folgenden Website herunterladen: https://www.ibm.com/developerworks/java/jdk/security/index.html.

      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.

      KW AES 256: https://www.w3.org/2001/04/xmlenc#kw-aes256

      Um diesen Key Wrap AES 256-cbc-Algorithmus zu verwenden, müssen Sie die uneingeschränkte Java Cryptography Extension (JCE)-Richtliniendatei von der folgenden Website herunterladen: https://www.ibm.com/developerworks/java/jdk/security/index.html.

    • KW RSA OAEP: https://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p.

      Standardmäßig wird der Algorithmus "KW RSA OAEP" als Schlüsselalgorithmusmethode verwendet.

      Wenn Sie mit Software Development Kit (SDK) Version 1.4 arbeiten, ist dieser Algorithmus nicht in der Liste der unterstützten Schlüsseltransportalgorithmen enthalten. Dieser Algorithmus erscheint in der Liste der unterstützten Schlüsseltransportalgorithmen, wenn Sie mit SDK 1.5 arbeiten. Weitere Informationen finden Sie unter https://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p

    • KW RSA15: https://www.w3.org/2001/04/xmlenc#rsa-1_5
    • KW TRIPLE DES: https://www.w3.org/2001/04/xmlenc#kw-tripledes
    Notiz: Für Web Services Secure Conversation kann die WSSEncryption-API zusätzliche schlüsselbezogene Informationen angeben, beispielsweise:
    • algorithmName
    • keyLength

Ergebnisse

Wenn eine Fehlerbedingung eintritt, wird eine Ausnahme vom Typ "WSSException" angezeigt. Bei erfolgreicher Ausführung wird WSSGenerationContext.process() von der API aufgerufen, der WS-Security-Header generiert und die SOAP-Nachricht damit über Web Services Security gesichert.

Beispiel

Im folgenden WSS-API-Beispielcode werden die Methoden WSSEncryption.setEncryptionMethod() und WSSEncryption.setKeyEncryptionMethod() verwendet.

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

// Generate the WSSFactory instance
   WSSFactory factory = WSSFactory.getInstance();

// Generate the 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 for encryption
   SecurityToken token = factory.newSecurityToken(X509Token.class , callbackHandler);

// Generate WSSEncryption instance 
   WSSEncryption enc = factory.newWSSEncryption(token);

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

Nächste Schritte

Wenn Sie einen Umsetzungsalgorithmus hinzufügen möchten, sehen Sie sich als Nächstes den Prozess der API WSSEncryptPart an.