Reimpacchettamento delle chiavi

Ricodificare le chiavi di crittografia dei dati utilizzando l'opzione IBM® Key Protect API.

Quando esegui la rotazione di una chiave root in Key Protect, il nuovo materiale della chiave crittografico diventa disponibile per la protezione delle DEK (data encryption key) associate alla chiave root. Con l'API di reimpacchettamento, puoi crittografare nuovamente o impacchettare nuovamente le tue DEK senza esporre le chiavi nel loro formato in chiaro.

Per sapere come la crittografia delle buste vi aiuta a controllare la sicurezza dei dati a riposo nel cloud, vedere Protezione dei dati con la crittografia a busta.

Reimpacchettamento delle chiavi utilizzando l'API

Puoi crittografare nuovamente una specifica DEK (data encryption key) con una chiave root che gestisci in Key Protect senza esporre la DEK nel suo formato in chiaro.

Il reimpacchettamento delle chiavi funziona combinando le chiamate unwrap e wrap al servizio. Ad esempio, puoi emulare un'operazione rewrap richiamando prima l'API unwrap per accedere a una DEK e richiamando quindi l'API wrap per crittografare nuovamente la DEK utilizzando il materiale della chiave root più recente.

Dopo aver ruotato una chiave principale nel servizio, riavvolgere una chiave di crittografia dei dati associata alla chiave principale effettuando un'operazione di POST al seguente endpoint.

https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rewrap
  1. Richiama le tue credenziali del servizio e di autenticazione per utilizzare le chiavi nel servizio.

  2. Copia l'ID della chiave root di cui hai eseguito la rotazione di cui ti sei servito per eseguire la richiesta di impacchettamento iniziale.

    È possibile recuperare l'ID di una chiave effettuando una richiesta a GET api/v2/keys, oppure visualizzando le chiavi nella sezione Key Protect GUI.

  3. Copia il valore ciphertext restituito durante la richiesta di impacchettamento più recente.

  4. Ricompattare la chiave con il materiale della chiave root più recente eseguendo quanto segue curl .

    $ curl -X POST \
        "https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rewrap" \
        -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 '{
                "ciphertext": "<encrypted_data_key>",
                "aad": [
                    "<additional_data>",
                    "<additional_data>"
                ]
            }'
    

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

Descrive le variabili necessarie per riavvolgere le chiavi in Key Protect.
Variabile Descrizione
regione Richiesto. L'abbreviazione della regione, come us-south o eu-gb, che rappresenta l'area geografica in cui risiede l'istanza Key Protect.
Per ulteriori informazioni, vedere Endpoint del servizio regionale.
keyID_or_alias Richiesto. L'identificatore unico o l'alias della chiave principale utilizzato per la richiesta iniziale di wrap.
IAM_token Richiesto. Il tuo token di accesso IBM Cloud. Includere l'intero contenuto del token IAM, compreso il valore Bearer, nella richiesta curl.
Per ulteriori informazioni, vedere Recupero di un token di accesso.
instance_id Richiesto. L'identificativo univoco che viene assegnato alla tua istanza del servizio Key Protect.
Per ulteriori informazioni, vedere Recupero dell'ID di un'istanza.
iD_anello_chiave Facoltativo. L'identificatore univoco del portachiavi a cui appartiene la chiave. Se non specificato, Key Protect cercherà la chiave in ogni portachiavi associato all'istanza specificata. Si consiglia di specificare l'ID del portachiavi per una richiesta più ottimizzata.
Nota: L'ID del portachiavi creato senza intestazione x-kms-key-ring è: default.
For more information, see Tasti di raggruppamento.
iD correlazione L'identificativo univoco utilizzato per tracciare e correlare le transazioni.
chiave_dati_crittografati Richiesto. Il valore del testo cifrato restituito dall'operazione di wrap originale.
dati_aggiuntivi OpzionaleI dati di autenticazione aggiuntivi (AAD) utilizzati per proteggere ulteriormente la chiave. Ogni stringa può contenere fino a 255 caratteri. Se hai fornito degli AAD per la chiamata di impacchettamento iniziale, devi specificare gli stessi AAD durante le successive chiamate di spacchettamento o reimpacchettamento.

Importante: il servizio Key Protect non salva dati di autenticazione aggiuntivi. Se fornisci gli AAD, salva i dati in un'ubicazione sicura per assicurarti di poter accedere e fornire gli stessi AAD durante le successive richieste di spacchettamento o reimpacchettamento.

La chiave di crittografia dei dati appena confezionata, versione originale della chiave keyVersion) associato al testo cifrato fornito e l'ultima versione della chiave rewrappedKeyVersion) associata al nuovo testo cifrato viene restituita nel corpo dell'entità di risposta il corpo dell'entità di risposta. Il seguente oggetto JSON mostra un valore restituito di esempio.

{
    "ciphertext": "eyJjaX ... h0Ijoi ... c1ZCJ9",
    "keyVersion": {
        "id": "02fd6835-6001-4482-a892-13bd2085f75d"
    },
    "rewrappedKeyVersion": {
        "id": "12e8c9c2-a162-472d-b7d6-8b9a86b815a6"
    }
}

Archivia e utilizza il nuovo valore ciphertext per future operazioni di crittografia envelope in modo che i tuoi dati siano protetti dall'ultima chiave root.

Convalida opzionale

Verificare che la chiave sia stata riavvolta con successo decodificando il base64 il valore ciphertext

$ echo <ciphertext> | base64 --decode

Sostituire <ciphertext> con il valore codificato base64 restituito nel passaggio precedente il passo precedente. Il seguente oggetto JSON mostra un esempio di output CLI.

{
    "ciphertext": "mIzRrwZAA8+WqRckG6gt1ji8HlEEJPSiV+TRBSR4GVr+FlAZlC5KvRriRF0=",
    "iv": "lbwxXlAW2DS7+5jGz5Y1Kg==",
    "version": "4.0.0",
    "handle": "8e309bae-b3ec-4270-9b87-89f8697fe54f"
}