Wrapping chiavi di crittografia dei dati con chiavi di root

Puoi gestire e proteggere le tue chiavi di crittografia con a chiave radiceA symmetric wrapping key that is used for encrypting and decrypting other keys that are stored in a data service. utilizzando ilIBM Cloud®Hyper Protect Crypto Services API del servizio di gestione delle chiavi, se sei un utente privilegiato.

Quando avvolgi a chiave di crittografia dei dati(DEK)A cryptographic key used to encrypt data that is stored in an application. con una chiave fondamentale,Hyper Protect Crypto Services combina la forza di più algoritmi per proteggere la privacy e l'integrità dei tuoi dati crittografati.

Per ulteriori informazioni su come l'impacchettamento ti aiuta a controllare la sicurezza dei dati inattivi nel cloud, consulta Crittografia envelope.

Impacchettamento delle chiavi utilizzando l'API

Puoi proteggere una chiave di crittografia dei dati (o DEK, data encryption key) specificata con una chiave root che gestisci in Hyper Protect Crypto Services .

Quando fornisci una chiave root per l'impacchettamento, assicurati che la chiave root sia di 128, 192 o 256 bit in modo che la chiamata di impacchettamento possa avere esito positivo. Se crei una chiave root nel servizio,Hyper Protect Crypto Services genera una chiave a 256 bit dagli HSM, supportata dall'algoritmo AES-CBC.

Dopo aver designato una chiave root nel servizio, puoi impacchettare una DEK con la crittografia avanzata effettuando una chiamata POST al seguente endpoint.

https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/actions/wrap
  1. Richiama le tue credenziali del servizio e di autenticazione per utilizzare le chiavi nel servizio.

  2. Copia il materiale della chiave della DEK che vuoi gestire e proteggere.

    Se disponi dei privilegi di manager o scrittore per il tuoHyper Protect Crypto Services istanza del servizio,è possibile recuperare il materiale della chiave per una chiave specifica creando a GET /v2/keys/<key_ID> richiesta.

  3. Copia l'ID della chiave root che vuoi utilizzare per l'impacchettamento.

  4. Esegui il seguente comando cURL per proteggere la chiave con un'operazione di impacchettamento.

    curl -X POST \
      'https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/actions/wrap' \
      -H 'accept: application/vnd.ibm.kms.key_action+json' \
      -H 'authorization: Bearer <IAM_token>' \
      -H 'bluemix-instance: <instance_ID>' \
      -H 'content-type: application/vnd.ibm.kms.key_action+json' \
      -H 'x-kms-key-ring: <key_ring_ID>' \
      -H 'correlation-id: <correlation_ID>' \
      -d '{
      "plaintext": "<data_key>"
    }'
    

    Sostituisci le variabili nella richiesta di esempio in base alla seguente tabella.

    Tabella 1. Descrive le variabili necessarie per avvolgere una chiave specificata
    Variabile Descrizione
    region Obbligatorio. L'abbreviazione della regione, come us-south o au-syd, che rappresenta l'area geografica in cui si trova la tua istanza del servizio Hyper Protect Crypto Services. Per ulteriori informazioni, vedere Endpoint del servizio regionale.
    port Obbligatorio. Il numero di porta dell'endpoint API.
    key_ID Obbligatorio. L'identificativo univoco della chiave root che vuoi utilizzare per l'impacchettamento.
    IAM_token Obbligatorio. Il tuo token di accesso IBM Cloud. Includere l'intero contenuto del file IAM token, compreso il valore al portatore, nel filecURL richiesta. Per ulteriori informazioni, vedere Recupero di un token di accesso.
    instance_ID Obbligatorio. L'identificativo univoco che viene assegnato alla tua istanza del servizio Hyper Protect Crypto Services. Per ulteriori informazioni, vedere Recupero di un ID istanza.
    key_ring_ID Facoltativo. L'identificatore univoco dell'anello chiave a cui appartiene la chiave. Se non specificato, Hyper Protect Crypto Services ricercherà la chiave in ogni anello chiave associato all'istanza specificata. Pertanto, si consiglia di specificare l'ID key ring per una richiesta più ottimizzata.

    Nota: l'ID key ring dei tasti creati senza intestazione x-kms-key-ring è: default. Per ulteriori informazioni, consultare Gestione degli anelli chiave.

    correlation_ID Facoltativo. L'identificativo univoco utilizzato per tracciare e correlare le transazioni.
    data_key Il materiale della chiave della DEK che vuoi gestire e proteggere. IL plaintext il valore deve esserebase64 codificato. Per generare un nuovo DEK, omettere il file plaintext attributo. Il servizio genera un testo normale casuale (32 byte), racchiude tale valore e quindi restituisce nella risposta sia i valori generati che quelli racchiusi. I valori generati e impacchettati sono codificati base64 e dovrai decodificarli per decodificare le chiavi.

    La tua chiave di crittografia dei dati impacchettata (o WDEK, wrapped data encryption key), contenente il materiale codificato con base64, viene restituita nel corpo-entità della risposta. Il corpo della risposta contiene anche l'ID della versione della chiave utilizzata per racchiudere il testo semplice fornito. Il seguente oggetto JSON mostra un valore restituito di esempio.

    {
      "ciphertext": "eyJjaXBoZXJ0ZXh0IjoiYmFzZTY0LWtleS1nb2VzLWhlcmUiLCJpdiI6IjRCSDlKREVmYU1RM3NHTGkiLCJ2ZXJzaW9uIjoiNC4wLjAiLCJoYW5kbGUiOiJ1dWlkLWdvZXMtaGVyZSJ9",
      "keyVersion": {
        "id": "02fd6835-6001-4482-a892-13bd2085f75d"
      }
    }
    

    Se ometti l'attributo plaintext quando esegui la richiesta di impacchettamento, il servizio restituisce sia la chiave di crittografia dei dati (o DEK, data encryption key) generata sia la DEK impacchettata in formato con codifica base64.

    {
      "plaintext": "Rm91ciBzY29yZSBhbmQgc2V2ZW4geWVhcnMgYWdv",
      "ciphertext": "eyJjaXBoZXJ0ZXh0IjoiYmFzZTY0LWtleS1nb2VzLWhlcmUiLCJpdiI6IjRCSDlKREVmYU1RM3NHTGkiLCJ2ZXJzaW9uIjoiNC4wLjAiLCJoYW5kbGUiOiJ1dWlkLWdvZXMtaGVyZSJ9",
      "keyVersion": {
        "id": "12e8c9c2-a162-472d-b7d6-8b9a86b815a6"
      }
    }
    

    Il valore plaintext rappresenta il DEK non avvolto e il valore ciphertext rappresenta il DEK avvolto e sono entrambi base64 codificati. Il valore keyVersion.id rappresenta la versione della chiave principale utilizzata per il confezionamento.

    Se desideri che Hyper Protect Crypto Services generi una nuova DEK per tuo conto, puoi anche passare un corpo che non contiene alcun dato in una richiesta di impacchettamento. La tua DEK generata, contenente il materiale con codifica base64, viene restituita nel corpo-entità della risposta, insieme alla DEK impacchettata.