Désencapsulage de clés de chiffrement de données avec des clés racine

Vous pouvez déballer un clé de cryptage des données(DEK)A cryptographic key used to encrypt data that is stored in an application. pour accéder au contenu en utilisant leIBM Cloud®Hyper Protect Crypto Services API du service de gestion de clés, si vous êtes un utilisateur privilégié. Le désencapsulage d'une clé de chiffrement de données permet de déchiffrer et de vérifier l'intégrité du contenu, et de renvoyer la clé d'origine à votre service de données IBM Cloud.

Pour découvrir comment l'encapsulage de clés peut vous aider à contrôler la sécurité des données au repos dans le cloud, reportez-vous à la rubrique Chiffrement d'enveloppe.

Désencapsulage de clés à l'aide de l'API

Après avoir effectué un appel d'encapsulage au service, vous pouvez déencapsuler une clé de chiffrement de données (DEK) spécifiée pour accéder au contenu en effectuant un appel POST au noeud final suivant.

https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/actions/unwrap

Les clés racine qui contiennent les mêmes informations de clé peuvent désencapsuler la même clé de chiffrement de données encapsulée.

  1. Extrayez vos données d'authentification et de service afin d'utiliser les clés dans le service.

  2. Copiez l'identifiant du clé racineA symmetric wrapping key that is used for encrypting and decrypting other keys that are stored in a data service. que vous avez utilisé pour effectuer la demande de bouclage initiale.

    Vous pouvez récupérer l'ID d'une clé en effectuant un GET /v2/keys demande, ou en affichant vos clés dans l’interface utilisateur.

  3. Copiez la valeur ciphertext qui a été renvoyée lors de la demande d'encapsulage initiale.

  4. Exécutez la commande cURL suivante pour déchiffrer et authentifier les informations de clé :

    curl -X POST \
      'https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>?action=unwrap' \
      -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>"
    }'
    

    Remplacez les variables de l'exemple de demande conformément au tableau suivant :

    Tableau 1. Décrit les variables nécessaires pour déballer les clés dansHyper Protect Crypto Services
    Variables Description
    region Obligatoire. Abréviation de la région, comme us-south ou au-syd, représentant la zone géographique dans laquelle votre instance de service Hyper Protect Crypto Services réside. Pour plus d'informations, voir Noeuds finaux de service régional.
    port Obligatoire. Numéro de port du noeud final d'API.
    key_ID Obligatoire. ID unique de la clé racine que vous avez utilisée pour la demande d'encapsulage initiale.
    IAM_token Obligatoire. Votre jeton d'accès IBM Cloud. Incluez l'ensemble du contenu du jeton IAM, y compris la valeur Bearer, dans la demande cURL. Pour plus d'informations, voir Extraction d'un jeton d'accès.
    instance_ID Obligatoire. Identificateur unique affecté à votre instance de service Hyper Protect Crypto Services. Pour plus d'informations, voir Extraction d'un ID d'instance.
    key_ring_ID Facultatif. Identificateur unique du fichier de clés auquel appartient la clé. S'il n'est pas spécifié, Hyper Protect Crypto Services recherche la clé dans chaque fichier de clés associé à l'instance spécifiée. Il est conseillé de spécifier l'ID de fichier de clés pour optimiser la demande.

    Remarque : les clés créées sans en-tête x-kms-key-ring ont l'ID de fichier de clé "default". Pour plus d'informations, voir Gestion des fichiers de clés.

    correlation_ID Facultatif. Identificateur unique qui est utilisé pour suivre et corréler des transactions.
    encrypted_data_key Le ciphertext valeur renvoyée lors d’une opération de bouclage.

    Les informations de clé d'origine sont renvoyées dans la section entity-body de la réponse. Le corps de réponse contient également l'ID de la version de clé qui a été utilisée pour désencapsuler le texte chiffré fourni. L'objet JSON suivant montre un exemple de valeur renvoyée.

    {
      "plaintext": "Rm91ciBzY29yZSBhbmQgc2V2ZW4geWVhcnMgYWdv",
      "keyVersion": {
        "id": "02fd6835-6001-4482-a892-13bd2085f75d"
      }
    }
    

    Si Hyper Protect Crypto Services détecte une rotation de la clé racine utilisée pour désencapsuler et accéder à vos données, le service renvoie également une clé de chiffrement de données nouvellement encapsulée (ciphertext) dans le corps de réponse de désencapsulage. La dernière version de clé (rewrappedKeyVersion) qui est associée au nouveau texte chiffré (ciphertext) est également renvoyée. Stocker et utiliser le nouveau ciphertext valeur pour les futures opérations de chiffrement d’enveloppe afin que vos données soient protégées par la dernière clé racine.

Décodage de vos informations de clé

Lorsque vous désencapsulez une clé de chiffrement de données, les informations de clé sont renvoyées codées en base64. Vous devez décoder la clé avant de la chiffrer.

Utilisation d'OpenSSL pour décoder des informations de clé

  1. Téléchargez et installez OpenSSL.

  2. Codez en base64 votre chaîne d'informations de clé en exécutant la commande suivante :

    $ openssl base64 -d -in <infile> -out <outfile>
    

    Remplacez les variables de l'exemple de demande conformément au tableau suivant :

    Tableau 2. Décrit les variables nécessaires pour décoder votre matériel de clé
    Variables Description
    infile Nom du fichier dans lequel réside votre chaîne d'informations de clé codée en base64.
    outfile Nom du fichier dans lequel la clé décodée est exportée après l'exécution de la commande.

    Si vous souhaitez afficher le matériel décodé directement dans la ligne de commande plutôt que dans un fichier, exécutez la commande openssl enc -base64 -d <<< '<key_material_string>', où key_material_string est le texte brut renvoyé par votre demande de déballage.