IBM Cloud Docs
Chiffrement côté serveur avec des clés générées par le client (SSE-C)

Chiffrement côté serveur avec des clés générées par le client (SSE-C)

Le chiffrement SSE-C est appliqué sur les objets. Les demandes de lecture ou d'écriture d'objets ou de leurs métadonnées à l'aide de clés gérées par le client envoient les informations de chiffrement requises sous forme d'en-têtes dans les demandes HTTP. La syntaxe est la même que celle de l'API S3, et les bibliothèques compatibles S3 qui prennent en charge SSE-C fonctionnent comme prévu sur IBM Cloud® Object Storage.

Toute demande qui utilise des en-têtes SSE-C doit être envoyée en utilisant SSL. Les valeurs ETag dans les en-têtes de réponse ne correspondent pas au hachage MD5 de l'objet, mais à une chaîne hexadécimale de 32 octets générée de façon aléatoire.

Une demande PUT object standard peut utiliser les en-têtes suivants:

En-tête Type Description
x-amz-server-side-encryption-customer-algorithm Chaîne Cet en-tête est utilisé pour spécifier l'algorithme et la taille de clé à utiliser avec la clé de chiffrement stockée dans l'en-tête x-amz-server-side-encryption-customer-key. La chaîne AES256 doit être affectée à cette valeur.
x-amz-server-side-encryption-customer-key Chaîne Cet en-tête est utilisé pour transporter la représentation de chaîne d'octets codée en base 64 de la clé AES 256 utilisée dans le processus de chiffrement côté serveur.
x-amz-server-side-encryption-customer-key-MD5 Chaîne Cet en-tête est utilisé pour transporter le prétraitement MD5 128 bits codé en base 64 de la clé de chiffrement selon la norme RFC 1321. Le conteneur d'objets utilise cette valeur pour confirmer que la clé transmise dans x-amz-server-side-encryption-customer-key n'a pas été endommagée lors du processus de transport et de codage. Le prétraitement doit être calculé sur la clé AVANT que celle-ci ne soit codée en base 64.

Une commandecURL peut se présenter comme suit:

curl -v -T $FILE https://$ENDPOINT/$BUCKET  \
   -H "Authorization: bearer $TOKEN" \
   -H "Content-MD5: $MD5_OBJECT_HASH" \
   -H "x-amz-server-side-encryption-customer-algorithm: AES256" \
   -H "x-amz-server-side-encryption-customer-key:$ENCRYPTION_KEY" \
   -H "x-amz-server-side-encryption-customer-key-MD5:$MD5_KEY_HASH"