Encapsulage de clés
Vous pouvez gérer et protéger vos clés de chiffrement avec une clé racine à l'aide de l'API et la console IBM® Key Protect.
Lorsque vous enveloppez une clé de chiffrement de donnéesClé de chiffrement permettant de chiffrer les données stockées dans une application avec une ( DEKClé d'encapsulage symétrique permettant de chiffrer et de déchiffrer les autres clés stockées dans un service de données. ), Key Protect Combine la puissance de plusieurs algorithmes pour protéger la confidentialité et l'intégrité de vos données chiffrées.
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 Protection des données avec le chiffrement d'enveloppe.
Envelopper une clé à l'aide de la console
Si vous disposez déjà d'une instance de Key Protect et que vous souhaitez chiffrer votre clé DEK à l'aide d'une interface graphique, vous pouvez utiliser la console IBM Cloud.
Une fois que vous avez importé ou créé vos propres clés, suivez les étapes suivantes pour crypter vos données à l'aide de la clé :
-
Connectez-vous à la console IBM Cloud.
-
Dans Menu, sélectionnez Liste de ressources pour afficher la liste de vos ressources.
-
Dans la liste de ressources IBM Cloud, sélectionnez votre instance Key Protect mise à disposition.
-
Sélectionnez la clé racine dans la liste de vos clés que vous souhaitez utiliser pour encapsuler vos données.
-
Cliquez sur l'icône
⋯, puis sur l'option Chiffrement d'enveloppe pour ouvrir le panneau latéral. Assurez-vous que l'option « Wrap key » est sélectionnée. -
Vous pouvez autoriser Key Protect à envelopper vos données ou fournir votre propre texte en clair codé Base64 et des données d'authentification supplémentaires (AAD), si nécessaire, pour envelopper les données. Si vous choisissez de fournir vous-même votre texte en clair et votre AAD, vous devrez les indiquer lors du déballage de vos données. Si vous n'avez pas d'expérience dans la création de texte en clair encodé selon les normes AAD et « Base64 », laissez Key Protect se charger de l'encodage de vos données en laissant l'option « Wrap key for me » sélectionnée.
-
Cliquez sur le bouton Désencapsuler une clé.
Encapsulage de clés à l'aide de l'API
Vous pouvez protéger la clé DEK indiquée avec une clé racine que vous gérez dans Key Protect.
Après avoir désigné une clé racine dans le service, vous pouvez encapsuler une clé DEK avec un chiffrement avancé en soumettant un appel POST au noeud final suivant.
https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/wrap
-
Extrayez vos données d'authentification afin d'utiliser les clés dans le service.
-
Copiez les informations de clé DEK que vous voulez gérer et protéger.
Si vous disposez des privilèges de gestionnaire ou d'auteur pour votre Instance Key Protect,vous pouvez extraire les informations d'une clé spécifique en effectuant une demande
GET /v2/keys/<keyID_or_alias>. -
Copiez l'ID de la clé racine que vous voulez utiliser pour l'encapsulage.
-
Exécutez la commande
curlsuivante pour protéger la clé par une opération d'encapsulage.$ curl -X POST \ "https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/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>", "aad": [ "<additional_data>", "<additional_data>" ] }'
Remplacez les variables de l'exemple de demande conformément au tableau suivant :
| Variable | Description |
|---|---|
| région | Obligatoire. Abréviation de la région, telle que us-south ou eu-gb, qui représente la zone géographique où réside votre instance Key Protect. Pour plus d'informations, voir Points d'extrémité de service. |
| keyID_or_alias | Obligatoire. Identificateur unique ou alias de la clé racine que vous souhaitez utiliser pour l'encapsulage. |
| IAM_token | Obligatoire. Votre jeton d'accès IBM Cloud. Incluez le contenu complet du jeton IAM, notamment la valeur Bearer, dans la requête curl. Pour plus d'informations, voir Extraction d'un jeton d'accès. |
| instance_ID | Obligatoire. Identificateur unique affecté à votre instance de service Key Protect. Pour plus d'informations, voir Extraction d'un ID d'instance. |
| key_ring_ID | Facultatif. Identificateur unique du fichier de clés dont la clé fait partie. S'il n'est pas spécifié, Key Protect recherche la clé dans chaque fichier de clés associé à l'instance spécifiée. Il est recommandé de spécifier
l'identifiant du porte-clés pour optimiser la demande. L'ID du fichier de clés des clés créées sans l'en-tête x-kms-key-ring est default. Pour plus d'informations, voir Grouping keys. |
| correlation_ID | Facultatif. Identificateur unique qui est utilisé pour suivre et corréler des transactions. |
| data_key | Facultatif. Informations de clé de la clé de chiffrement de données que vous voulez gérer et protéger. La valeur du texte en clair doit être codée en base64. Pour plus d'informations sur le codage de votre matériel de clé, voir Codage de votre matériel de clé. Pour générer une nouvelle clé DEK, omettez l'attribut de texte en clair. Le service génère un texte brut aléatoire (32 octets), l'encapsule, puis renvoie la valeur générée et la valeur encapsulée dans la réponse. Les valeurs générées et encapsulées sont encodées au format « Base64 »; vous devez les décoder pour déchiffrer les clés. |
| additional_data | Facultatif. Les données d'authentification supplémentaires (AAD) utilisées pour renforcer la sécurité de la clé. Chaque chaîne peut inclure jusqu'à 255 caractères. Si vous indiquez des données d'authentification supplémentaires lorsque vous soumettez un appel d'encapsulage au service, vous devez indiquer les mêmes données d'authentification supplémentaires lors de l'appel de désencapsulage ultérieur. Important : le service « Key Protect » n'enregistre aucune donnée d'authentification supplémentaire. Si vous fournissez un identifiant AAD, enregistrez ces données dans un emplacement sécurisé afin de pouvoir y accéder et fournir le même identifiant AAD lors des prochaines demandes de déballage. |
La clé de chiffrement de données encapsulée, qui contient le matériel de clé codé en base64, est renvoyée 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 encapsuler le texte brut fourni. L'objet JSON suivant illustre un exemple de valeur renvoyée.
{
"ciphertext": "eyJjaXBoZXJ0ZXh0IjoiYmFzZTY0LWtleS1nb2VzLWhlcmUiLCJpdiI6IjRCSDlKREVmYU1RM3NHTGkiLCJ2ZXJzaW9uIjoiNC4wLjAiLCJoYW5kbGUiOiJ1dWlkLWdvZXMtaGVyZSJ9",
"keyVersion": {
"id": "02fd6835-6001-4482-a892-13bd2085f75d"
}
}
Si vous omettez l'attribut plaintext dans votre demande d'encapsulage, le service renvoie à la fois la clé de chiffrement de données (DEK) générée et la clé de chiffrement de données encapsulée codées en base64.
{
"plaintext": "Rm91ciBzY29yZSBhbmQgc2V2ZW4geWVhcnMgYWdv",
"ciphertext": "eyJjaXBoZXJ0ZXh0IjoiYmFzZTY0LWtleS1nb2VzLWhlcmUiLCJpdiI6IjRCSDlKREVmYU1RM3NHTGkiLCJ2ZXJzaW9uIjoiNC4wLjAiLCJoYW5kbGUiOiJ1dWlkLWdvZXMtaGVyZSJ9",
"keyVersion": {
"id": "12e8c9c2-a162-472d-b7d6-8b9a86b815a6"
}
}
La valeur plaintext représente la clé de chiffrement de données désencapsulée et la valeur ciphertext représente la clé de chiffrement de données encapsulée et les deux sont codées en base64. La valeur keyVersion.id représente la version de la clé racine qui a été utilisée pour l'encapsulage.
Si vous voulez que Key Protect génère pour vous une nouvelle clé de chiffrement de données (DEK), vous pouvez également transmettre une section body vide dans votre demande d'encapsulage. La clé de chiffrement de données générée, qui contient le matériel de clé codé en base64, est renvoyée dans la section entity-body de la réponse, avec la clé de chiffrement de données encapsulée.