Utiliser votre OVHcloud Key Management Service (KMS)
Chiffrez ou signez vos données avec l'API REST régionale du Key Management Service (KMS) OVHcloud
Objectif
L'objectif de ce guide est de présenter les différentes étapes pour interagir avec le KMS OVHcloud pour chiffrer ou signer vos données.
Prérequis
- Disposer d'un compte client OVHcloud.
- Avoir commandé un KMS OVHcloud.
- Avoir configuré une méthode d'authentification pour le plan de données OKMS (jeton d'accès personnel, compte de service ou certificat d'accès).
En pratique
Communiquer avec le KMS
La communication avec le KMS pour les actions de chiffrement et de signature se fait au travers des APIs.
Le KMS étant régionalisé, l'accès à l'API se fait directement sur la région de celui-ci : https://my-region.okms.ovh.net.
Par exemple, pour un KMS créé sur la région eu-west-rbx : https://eu-west-rbx.okms.ovh.net
Il est possible de communiquer avec le KMS en utilisant :
- L'interface utilisateur Swagger
- La CLI OKMS : https://github.com/ovh/okms-cli
- Le SDK Golang : https://pkg.go.dev/github.com/ovh/okms-sdk-go
Authentifiez-vous à l'aide d'un jeton d'accès personnel, d'un compte de service ou d'un certificat d'accès. Pour l'utilisation de l'API REST, un jeton d'accès personnel (PAT) ou un compte de service est recommandé. Les certificats d'accès sont obligatoires pour les intégrations KMIP.
Pour tester les appels API de manière interactive, utilisez l'interface Swagger OKMS à l'adresse https://<region>.okms.ovh.net/swagger/.
Créer une clé de chiffrement par API
La création d'une clé peut être faite soit à travers les soit sur les API spécifiques au KMS OVHcloud. Il n'y a pas de différences sur le résultat selon la méthode de création.
Les routes ci-dessous prennent l'identifiant de votre domaine OKMS. Il est renvoyé par l'appel API suivant :
Il figure également, avec l'endpoint régional, dans l'onglet Informations générales du .
Dans le cas des API spécifiques au KMS OVHcloud, la création d'une clé se fait par l'API suivante :
L'API attend les valeurs suivantes :
Exemple de création de clé symétrique :
Exemple de création de clé asymétrique :
Exemple de création de clé EC :
Les tailles et opérations possibles en fonction du type de clé sont les suivantes :
- oct :
- taille : 128, 192, 256
- opérations :
- encrypt, decrypt
- wrapKey, unwrapKey
- RSA :
- taille : 2048, 3072, 4096
- opérations :
- sign, verify
- wrapKey, unwrapKey
- EC :
- taille : ne pas spécifier
- curve : P-256, P-384, P-521
- opérations : sign, verify
Pour les clés RSA, wrapKey / unwrapKey sont mutuellement exclusives avec sign / verify.
Importer une clé de chiffrement
Lorsque vous créez une clé, vous pouvez importer une clé existante en clair au format JWK.
L'import de matériel de clé en clair est déconseillé pour les clés qui doivent rester dignes de confiance. Préférez le BYOK sécurisé par encapsulation RSA asymétrique.
Pour cela, vous pouvez ajouter un champ complémentaire keys dans le corps de la requête :
La clé doit être au format JSON Web Key (JWK). La valeur des champs contenus dans le tableau suit la documentation de la RFC 7518.
Gérer les clés de chiffrement
Afin de gérer les clés de chiffrement, plusieurs API sont disponibles :
La désactivation d'une clé de chiffrement implique que celle-ci ne sera plus utilisable, bien que la clé reste présente dans le KMS.
La suppression d'une clé de chiffrement n'est possible que sur une clé préalablement désactivée.
La suppression d'une clé de chiffrement est définitive. Toutes les données chiffrées à l'aide de celle-ci seront définitivement inaccessibles.
Attributs de sensibilité des clés de service
Lorsque vous créez ou récupérez une clé de service, les indicateurs de sensibilité et d'extractibilité sont renvoyés dans l'objet attributes de la réponse GET (aux côtés d'autres métadonnées telles que state). Seul extractable est modifiable par l'utilisateur (à la création ou via PATCH). Les autres indicateurs sont définis par le KMS. Définir extractable à true fixe définitivement never_extractable à false.
Exemple de réponse GET (champs abrégés) :
Pour extraire une clé en toute sécurité, définissez extractable à true uniquement pour l'opération d'export, exportez la clé avec encapsulation RSA, puis remettez-le à false. Consultez la section « Exporter une clé encapsulée » du guide « Importer et exporter des clés sur OVHcloud KMS avec BYOK ».
Chiffrer une donnée avec le KMS
Chiffrement sur le KMS
Le KMS OVHcloud dispose d'une API de chiffrement dédiée pour le chiffrement de petits volumes de données (moins de 4 kB).
Il s'agit de la méthode la plus simple, mais qui ne présente pas les meilleures performances.
L'API attend les valeurs suivantes :
Exemple de chiffrement
L'API renvoyant ensuite la donnée chiffrée dans un champ ciphertext :
Le déchiffrement de la donnée se faisant à l'inverse via l'API :
L'API attend les valeurs suivantes :
Le champ context devant avoir la même valeur que celle donnée lors du chiffrement.
Chiffrement avec une Data Key (DK)
Pour plus de performances, il est possible de générer une Data Key (DK) depuis une clé symétrique (AES) pour l'utiliser depuis votre application.
La clé AES utilisée doit avoir été générée avec les opérations wrapKey et unwrapKey.
La génération d'une DK se fait via l'API suivante :
L'API attend les valeurs suivantes :
Exemple de génération de Data Key :
L'API renverra ensuite la Data Key :
- key : clé chiffrée encodée en base64. Cette information doit être stockée avec la donnée chiffrée et sera utilisée pour le déchiffrement par le KMS.
- plaintext : clé en clair encodée en base64. Cette information doit être supprimée une fois le chiffrement effectué et ne doit pas être sauvegardée.
L'utilisation de la Data Key se fait ensuite à travers des algorithmes de chiffrement comme AES-GCM qui n'est pas couvert par cette documentation.
Inversement, il est possible de récupérer la version déchiffrée d'une Data Key via l'API suivante :
L'API attend les valeurs suivantes :
Et renvoie la Data Key déchiffrée dans un champ plaintext.
Signer avec le KMS
La signature de fichier se fait à l'aide de la clé privée d'une paire de clés asymétriques.
Algorithmes supportés
Le KMS OVHcloud supporte la liste d'algorithmes de signature suivante :
- RSASSA-PKCS1 v1.5
Suivant la documentation de la RFC 7518.
- ECDSA
Suivant la documentation de la RFC 7518.
- RSASSA-PSS
Suivant la documentation de la RFC 7518.
Signature d'un message
Étant donné que la clé privée ne peut être extraite en clair du KMS, la signature ne peut se faire que directement auprès du KMS.
L'API attend les valeurs suivantes :
Exemple de signature :
L'API renverra ensuite la signature du fichier :
Vérification d'un fichier
La vérification d'un fichier peut se faire soit directement auprès du KMS, soit en utilisant la clé publique.
Auprès du KMS, il est possible d'utiliser l'API suivante :
L'API attend les valeurs suivantes :
Exemple de vérification
L'API renverra ensuite le résultat de la vérification :
Aller plus loin
Importer et exporter des clés sur OVHcloud KMS avec BYOK
Méthodes d'authentification OKMS
Comment connecter un produit compatible en utilisant le protocole KMIP
Échangez avec notre communauté d'utilisateurs.