SSE-C encryption #602
Labels
No labels
action
check-aws
action
discussion-needed
action
for-external-contributors
action
for-newcomers
action
more-info-needed
action
need-funding
action
triage-required
kind
correctness
kind
ideas
kind
improvement
kind
performance
kind
testing
kind
usability
kind
wrong-behavior
prio
critical
prio
low
scope
admin-api
scope
background-healing
scope
build
scope
documentation
scope
k8s
scope
layout
scope
metadata
scope
ops
scope
rpc
scope
s3-api
scope
security
scope
telemetry
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Deuxfleurs/garage#602
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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