Le chiffrement direct de volumes importants de données via KMS engendre une latence réseau et expose vos données sensibles en les faisant sortir de votre machine. Le chiffrement sous enveloppe résout ce problème en maintenant le chiffrement des données en local : KMS génère et protège une clé de données, que votre application utilise ensuite pour chiffrer les données sur la machine locale sans les transmettre à KMS.
Cette rubrique aborde le chiffrement sous enveloppe dans vos propres applications. Pour le chiffrement côté serveur dans les services Alibaba Cloud, consultez Intégration avec KMS .
Types de clés applicables
Vous pouvez utiliser des clés protégées par logiciel et des clés protégées par matériel pour le chiffrement sous enveloppe dans vos propres applications.
Les clés de service et les clés maîtres client (CMK) utilisées comme clés par défaut peuvent également servir au chiffrement sous enveloppe, mais leur usage est restreint au chiffrement côté serveur dans les services Alibaba Cloud ; elles ne peuvent pas être utilisées pour le chiffrement dans vos propres applications. Les clés protégées par logiciel et par matériel sont compatibles à la fois avec le chiffrement côté serveur dans les services Alibaba Cloud et le chiffrement dans vos propres applications.
Fonctionnement
La sécurité des données chiffrées repose sur la protection de la clé de données permettant de les déchiffrer. La bonne pratique mise en œuvre par le chiffrement sous enveloppe consiste à chiffrer la clé de données avec une clé KMS distincte et à stocker la forme chiffrée aux côtés des données.
Flux de chiffrement

-
Appelez GenerateDataKey pour générer une clé de données. Transmettez les paramètres suivants :
Paramètre Description KeyIdID ou alias de la clé KMS à utiliser NumberOfBytesLongueur de la clé de données en octets. Définissez une valeur d'au moins 24 octets. Pour AES (Advanced Encryption Standard), utilisez 16, 24 ou 32 octets. Pour 3DES (Triple Data Encryption Standard), utilisez 16 ou 24 octets. -
Recevez la clé de données depuis KMS. La réponse contient trois champs :
AvertissementConservez le texte chiffré de la clé de données en toute sécurité. En cas de perte, le déchiffrement devient impossible et vos données ne peuvent pas être récupérées.
Champ Description Texte en clair de la clé de données Utilisé pour chiffrer les données localement Texte chiffré de la clé de données Le texte en clair chiffré avec votre clé KMS en mode GCM (Galois/Counter Mode). Stockez-le aux côtés du texte chiffré des données. Paramètres de chiffrement L'algorithme de chiffrement et le vecteur d'initialisation (IV) utilisés pour générer le texte chiffré de la clé de données Utilisez le texte en clair de la clé de données pour chiffrer les données localement à l'aide d'une bibliothèque ou d'un module cryptographique conforme à votre langage et à vos exigences de conformité. Nous vous recommandons de détruire le texte en clair de la clé de données dès que possible après la fin du chiffrement.
Stockez le texte chiffré des données avec le texte chiffré de la clé de données, l'identifiant de la clé KMS et les paramètres de chiffrement.
Flux de déchiffrement

Lisez le texte chiffré des données, le texte chiffré de la clé de données, l'identifiant de la clé KMS et les paramètres de chiffrement stockés.
Appelez Decrypt avec le texte chiffré de la clé de données et les paramètres de chiffrement pour obtenir le texte en clair de la clé de données depuis KMS.
Utilisez le texte en clair de la clé de données pour déchiffrer le texte chiffré des données localement.
Cas d'utilisation
Chiffrement de plusieurs fichiers avec des clés indépendantes
L'utilisation d'une clé unique pour un grand nombre de fichiers augmente le risque de compromission de la clé. Avec le chiffrement sous enveloppe, chaque fichier obtient une clé de données unique protégée par une seule clé KMS, ce qui isole l'exposition de chaque fichier.
Chiffrement de volumes importants de données
L'envoi de données volumineuses à KMS pour un chiffrement via le réseau ajoute de la latence et des coûts. Le chiffrement sous enveloppe maintient le chiffrement des données en local — seule la petite clé de données est échangée avec KMS —, rendant ainsi pratique le chiffrement d'ensembles de données tels que les données de disque complet.
Limitations
Le chiffrement sous enveloppe nécessite une clé KMS symétrique provenant d'une instance de gestion de clés logicielle ou matérielle. Spécifications de clés prises en charge :
| Type d'instance | Spécifications prises en charge |
|---|---|
| Gestion de clés logicielle | Aliyun_AES_256 |
| Gestion de clés matérielle | Aliyun_AES_256, Aliyun_AES_192, Aliyun_AES_128, Aliyun_DES3_192 |
Prérequis
Avant de commencer, assurez-vous d'avoir :
Une clé KMS symétrique. Consultez Clés protégées par logiciel et Clés protégées par matériel
Un point d'accès applicatif (AAP). Consultez Accéder à une instance KMS à l'aide d'un AAP
Le SDK KMS Instance installé pour votre langage : Java, PHP, Go ou Python
Exemples de code
Les exemples suivants utilisent une clé de données AES de 32 octets chiffrée en mode GCM.
Java
Utilise la bibliothèque cryptographique SunJCE Provider.
Python
Utilise la bibliothèque cryptographique cryptography.hazmat.
Go
Utilise la bibliothèque cryptographique golang/crypto.
PHP
Utilise la bibliothèque cryptographique OpenSSL.