Come funziona: Crittografia dei messaggi SOAP

La crittografia XML viene applicata a un messaggio SOAP per garantire che solo il destinatario del messaggio possa leggerlo.

Funzione stabilizzata:

Il supporto per la firma e la crittografia dei messaggi SOAP per la funzione WS-Security è stato stabilizzato. In alternativa, considerate la possibilità di proteggere i messaggi SOAP utilizzando la Transport Layer Security. Si vedano anche gli avvisi di stabilizzazione e le funzioni interrotte.

6.3 Il supporto per la firma e la crittografia dei messaggi SOAP per la funzione WS-Security è stato rimosso a partire da CICS® TS 6.3.

6.16.2 Il supporto per la firma e la crittografia dei messaggi SOAP per la funzione WS-Security è stato stabilizzato.

Il mittente utilizza una chiave segreta (nota anche come chiave simmetrica ) per crittografare il messaggio e il destinatario utilizza la stessa chiave per decifrarlo.

Per i messaggi in entrata, CICS può decifrare qualsiasi elemento crittografato nel corpo SOAP e i blocchi di intestazione SOAP crittografati quando anche il corpo è crittografato. Per i messaggi in uscita, CICS cripta l'intero corpo SOAP.

La specifica WS-Security consente di criptare a livello di elemento alcuni dei contenuti di <Header> e tutti i contenuti di <Body>. In altre parole, in un messaggio i singoli elementi possono avere diversi livelli di crittografia o possono essere crittografati utilizzando algoritmi diversi. Ad esempio, in un messaggio utilizzato in un'applicazione di acquisto online, è opportuno crittografare i dati della carta di credito di un individuo per garantire che rimangano riservati. Tuttavia, per evitare l'overhead della crittografia dell'intero messaggio, alcune informazioni possono essere crittografate in modo sicuro utilizzando un algoritmo meno sicuro (ma più veloce) e altre informazioni possono rimanere tranquillamente non crittografate.

CICS supporta la crittografia del corpo del messaggio SOAP utilizzando un algoritmo simmetrico come l'algoritmo Triple DES o l'algoritmo AES. Un algoritmo simmetrico prevede l'utilizzo della stessa chiave per criptare e decriptare i dati. Questa chiave è nota come chiave simmetrica. La chiave simmetrica è inclusa nel messaggio e viene a sua volta crittografata utilizzando la chiave pubblica del destinatario con l'algoritmo di crittografia a chiave asimmetrica RSA 1.5. Questo metodo offre una maggiore sicurezza perché l'algoritmo asimmetrico è complesso ed è difficile decifrare la chiave simmetrica. Tuttavia, si ottengono prestazioni migliori perché la maggior parte del messaggio SOAP è crittografato con l'algoritmo simmetrico, che è più veloce da decifrare.

Per i messaggi in entrata, il gestore dei messaggi di sicurezza CICS può decifrare i singoli elementi del SOAP <Body> e può decifrare gli elementi del SOAP <Header> se anche il corpo SOAP è criptato. Il gestore dei messaggi di sicurezza decifra sempre i seguenti elementi:
  • Elementi che incontra nel sito <Header> nell'ordine in cui vengono trovati.
  • Elementi di SOAP <Body>.

Se il gestore è configurato per aspettarsi un corpo criptato (utilizzando l'elemento <expect_encrypted_body> ), CICS rifiuta con un errore qualsiasi messaggio SOAP in cui il corpo non è criptato.

Per i messaggi in uscita, il gestore dei messaggi di sicurezza supporta solo la crittografia del contenuto di SOAP <Body> ; non cripta alcun elemento di <Header>. Quando il gestore dei messaggi di sicurezza cripta il messaggio <Body>, tutti gli elementi del corpo vengono crittografati con lo stesso algoritmo e utilizzano la stessa chiave. L'algoritmo e le informazioni sulla chiave sono specificati nelle informazioni di configurazione del gestore.

CICS supporta gli algoritmi di crittografia richiesti dalla specifica XML Encryption. Ogni algoritmo è identificato da un identificatore universale di risorse (URI). Per gli algoritmi supportati, vedere Sicurezza dei servizi Web: Sicurezza dei messaggi SOAP.

Per utilizzare la crittografia di CICS XML, è necessario che z/OS® Integrated Cryptographic Service Facility (ICSF) sia avviato e configurato con dispositivi crittografici. Per ulteriori informazioni, vedere z/OS Integrated Cryptographic Service Facility (ICSF).

Nota: L'overhead prestazionale della crittografia XML è significativo.

Algoritmi di crittografia

CICS supporta gli algoritmi di crittografia richiesti dalla specifica XML Encryption. Ogni algoritmo è identificato da un identificatore universale di risorse (URI).
Algoritmo URI
Algoritmo Triple Data Encryption Standard (Triple DES) http://www.w3.org/2001/04/xmlenc#tripledes-cbc
Algoritmo Advanced Encryption Standard (AES) con lunghezza della chiave di 128 bit http://www.w3.org/2001/04/xmlenc#aes128-cbc
Algoritmo Advanced Encryption Standard (AES) con lunghezza della chiave di 192 bit http://www.w3.org/2001/04/xmlenc#aes192-cbc
Algoritmo Advanced Encryption Standard (AES) con lunghezza della chiave di 256 bit http://www.w3.org/2001/04/xmlenc#aes256-cbc

Esempio di messaggio criptato

Questo esempio mostra un messaggio SOAP criptato da CICS.
<?xml version="1.0" encoding="UTF8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
 <wsse:Security xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 
                xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
                xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
                xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" SOAP-ENV:mustUnderstand="1">

  <wsse:BinarySecurityToken 
                EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" 1 
                ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509" 
                wsu:Id="x509cert00">MIIChDCCAe2gAwIBAgIBADANBgkqhkiG9w0BAQUFADAwMQswCQYDVQQGEwJHQjEMMAoGA1UEChMD
                                    SUJNMRMwEQYDVQQDEwpXaWxsIFlhdGVzMB4XDTA2MDEzMTAwMDAwMFoXDTA3MDEzMTIzNTk1OVow
                                    MDELMAkGA1UEBhMCR0IxDDAKBgNVBAoTA0lCTTETMBEGA1UEAxMKV2lsbCBZYXRlczCBnzANBgkq
                                    hkiG9w0BAQEFAAOBjQAwgYkCgYEArsRj/n+3RN75+jaxuOMBWSHvZCB0egv8qu2UwLWEeiogePsR
                                    6Ku4SuHbBwJtWNr0xBTAAS9lEa70yhVdppxOnJBOCiERg7S0HUdP7a8JXPFzA+BqV63JqRgJyxN6
                                    msfTAvEMR07LIXmZAte62nwcFrvCKNPCFIJ5mkaJ9v1p7jkCAwEAAaOBrTCBqjA/BglghkgBhvhC
                                    AQ0EMhMwR2VuZXJhdGVkIGJ5IHRoZSBTZWN1cml0eSBTZXJ2ZXIgZm9yIHovT1MgKFJBQ0YpMDgG
                                    A1UdEQQxMC+BEVdZQVRFU0BVSy5JQk0uQ09NggdJQk0uQ09NhgtXV1cuSUJNLkNPTYcECRRlBjAO
                                    BgNVHQ8BAf8EBAMCAfYwHQYDVR0OBBYEFMiPX6VZKP5+mSOY1TLNQGVvJzu+MA0GCSqGSIb3DQEB
                                    BQUAA4GBAHdrS409Jhoe67pHL2gs7x4SpV/NOuJnn/w25sjjop3RLgJ2bKtK6RiEevhCDim6tnYW
                                    NyjBL1VdN7u5M6kTfd+HutR/HnIrQ3qPkXZK4ipgC0RWDJ+8APLySCxtFL+J0LN9Eo6yjiHL68mq
                                    uZbTH2LvzFMy4PqEbmVKbmA87alF
  </wsse:BinarySecurityToken>
  <xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
   <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/> 2 
   <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <wsse:SecurityTokenReference>
     <wsse:Reference URI="#x509cert00" 
                     ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509"/>  3 
    </wsse:SecurityTokenReference>
   </ds:KeyInfo>
   <xenc:CipherData>
    <xenc:CipherValue>M6bDQtJrvX0pEjAEIcf6bq6MP3ySmB4TQOa/B5UlQj1vWjD56V+GRJbF7ZCES5ojwCJHRVKW1ZB5 4 
                      Mb+aUzSWlsoHzHQixc1JchgwCiyIn+E2TbG3R9m0zHD3XQsKTyVaOTlR7VPoMBd1ZLNDIomxjZn2
                      p7JfxywXkObcSLhdZnc=</xenc:CipherValue>
   </xenc:CipherData>
   <xenc:ReferenceList>
    <xenc:DataReference URI="#Enc1"/>
   </xenc:ReferenceList>
  </xenc:EncryptedKey>
 </wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
 <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="Enc1" Type="http://www.w3.org/2001/04/xmlenc#Content">
  <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/> 5 
  <xenc:CipherData>
   <xenc:CipherValue>kgvqKnMcgIUn7rl1vkFXF0g4SodEd3dxAJo/mVN6ef211B1MZelg7OyjEHf4ZXwlCdtOFebIdlnK 6 
                     rrksql1Mpw6So7ID8zav+KPQUKGm4+E=</xenc:CipherValue>
  </xenc:CipherData>
 </xenc:EncryptedData>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
  • 1 Il token di sicurezza binario contiene la codifica base64binary del certificato X.509. Questa codifica include la chiave pubblica utilizzata per criptare la chiave simmetrica.
  • 2 È l'algoritmo utilizzato per criptare la chiave simmetrica.
  • 3 Fa riferimento al token di sicurezza binario che contiene la chiave pubblica utilizzata per crittografare la chiave simmetrica.
  • 4 Si tratta della chiave simmetrica criptata utilizzata per criptare il messaggio.
  • 5 È l'algoritmo di crittografia utilizzato per criptare il messaggio.
  • 6 Questo è il messaggio criptato.