SSE-C encryption #602
Labels
No Label
AdminAPI
Bug
Check AWS
CI
Correctness
Critical
Documentation
Ideas
Improvement
Low priority
Newcomer
Performance
S3 Compatibility
Testing
Usability
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Deuxfleurs/garage#602
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
SSE-C is a server-side encryption method supported by AWS where the keys are provided by the client on each request. This might make sense to be implemented in Garage, as it doesn't require us to do any key management, contrarily to the other server-side encryption methods that use KMS (SSE-KMS) or S3-managed keys (SSE-S3). ref
Hello !
On va utiliser Garage pour stocker des données Nextcloud, et on a vu que pour le chiffrement, Nextcloud recommendait SSE-C. On se dit qu'on aimerait bien stocker nos données de manière chiffrées, et du coup on se disait qu'on allait mettre +1 un pour l'implémentation de cette fonctionnalité.
Après je ne suis pas sûr d'avoir bien compris comment ça fonctionne. Est-ce que dans une perspective d'entre-hébergement par exemple ça veut dire que le serveur garage reçoit les clés de déchiffrement ?
Merciiii
Bon visiblement on récupère une erreur 500 si on veut mettre un emoji 👍 en commentaire... (dans mon précédent message)
En effet avec SSE-C, le serveur reçoit la clef de chiffrement dans chaque requête de lecture ou d'écriture, il s'en sert sur le moment pour chiffrer ou déchiffrer le contenu de l'objet et ensuite il la jette. Mais il faut donc faire confiance au serveur :)
En tous cas au Cloud Girofle, on souhaite mettre un 👍 pour le développement de cette fonctionnalité :).
Findings concerning SSE-C:
Open question: what is the hash of an encrypted block of a file? For compression, the hash is computed before compression. For encrypted data, we will probably have to compress, then encrypt, then hash (or skip compression).
For multipart uploads, we probably want to check that the given encryption key is correct for each part upload. If we encrypt the metadata/headers given in CreateMultipartUpload, the check can be done by trying to decrypt these headers with the passed key.
Docs: https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html