Serverseitige Verschlüsselung mit vom Kunden bereitgestellten Schlüsseln (SSE-C)
SSE-C (Server-Side Encryption with Customer-Provided Keys; serverseitige Verschlüsselung mit vom Kunden bereitgestellten Schlüsseln) wird für Objekte umgesetzt. Anforderungen zum Ausführen von Lese- oder Schreiboperationen für Objekte oder deren Metadaten mithilfe von vom Kunden verwalteten Schlüsseln senden die erforderlichen Verschlüsselungsinformationen als Header in den HTTP-Anforderungen. Die Syntax ist identisch mit der Syntax der S3-API und S3-kompatible Bibliotheken, die SSE-C unterstützen, können für IBM Cloud® Object Storage wie erwartet ausgeführt werden.
Jede Anforderung, die SSE-C-Header verwendet, muss mit SSL gesendet werden. Beachten Sie hierbei, dass ETag
-Werte in Antwortheadern nicht den MD5-Hashwert des Objekts darstellen, sondern eine nach dem Zufallsprinzip generierte
32-Byte-Hexadezimalzeichenfolge.
Eine typische PUT object -Anforderung kann die folgenden Header verwenden:
Überschrift | Typ | Beschreibung |
---|---|---|
x-amz-server-side-encryption-customer-algorithm |
Zeichenfolge | Dieser Header wird verwendet, um den Algorithmus und die Schlüsselgröße anzugeben, die mit dem Verschlüsselungsschlüssel verwendet werden sollen, der im Header x-amz-server-side-encryption-customer-key gespeichert wird. Dieser
Wert muss auf die Zeichenfolge AES256 gesetzt werden. |
x-amz-server-side-encryption-customer-key |
Zeichenfolge | Dieser Header wird verwendet, um die Base64-codierte Bytefolgedarstellung des AES-256-Schlüssels zu transportieren, die im serverseitigen Verschlüsselungsprozess verwendet wird. |
x-amz-server-side-encryption-customer-key-MD5 |
Zeichenfolge | Dieser Header wird verwendet, um den Base64-codierten 128-Bit-MD5-Digest-Wert des Verschlüsselungsschlüssels gemäß RFC 1321 zu transportieren. Der Objektspeicher verwendet diesen Wert, um zu validieren, dass der in x-amz-server-side-encryption-customer-key übergebene Schlüssel während des Transports und des Codierungsprozesses nicht beschädigt wurde. Der Digest-Wert muss für den Schlüssel berechnet werden, BEVOR der Schlüssel im Base64-Format codiert wird. |
Ein cURL -Befehl könnte wie folgt aussehen:
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"