Cifrado del lado del servidor con claves proporcionadas por el cliente (SSE-C)

Se impone SSE-C sobre los objetos. Las solicitudes de leer o escribir objetos o sus metadatos utilizando claves gestionadas por el cliente envían la información de cifrado necesaria como cabeceras en las solicitudes HTTP. La sintaxis es la misma que la de la API S3, y las bibliotecas compatibles con S3 que dan soporte a SSE-C funcionan correctamente en IBM Cloud® Object Storage.

Cualquier solicitud que utilice cabeceras SSE-C se debe enviar utilizando SSL. Los valores de ETag de las cabeceras de respuesta no son el hash MD5 del objeto, sino una serie hexadecimal de 32 bytes generada aleatoriamente.

Una solicitud PUT object típica puede utilizar las cabeceras siguientes:

Cabecera Tipo Descripción
x-amz-server-side-encryption-customer-algorithm Serie Esta cabecera se utiliza para especificar el algoritmo y el tamaño de clave que se deben utilizar con la clave de cifrado almacenada en la cabecera x-amz-server-side-encryption-customer-key. Este valor se debe establecer en la serie AES256.
x-amz-server-side-encryption-customer-key Serie Esta cabecera se utiliza para transportar la representación de serie de bytes codificada en base 64 de la clave AES 256 utilizada en el proceso de cifrado del lado del servidor.
x-amz-server-side-encryption-customer-key-MD5 Serie Esta cabecera se utiliza para transportar el valor MD5 de 128 bits codificado en base 64 de la clave de cifrado de acuerdo con RFC 1321. El almacén de objetos utiliza este valor para validar que se pasa la clave en x-amz-server-side-encryption-customer-key y que no ha resultado dañada durante el proceso de transporte y codificación. El valor se debe calcular en la clave ANTES de que la clave se codifique en base 64.

Un mandato cURL podría ser similar al siguiente:

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"