[BA] S4 - Secure S3: Towards Secure Cloud Storage

  • Tagung:

    S4 - Secure S3: Towards Secure Cloud Storage

  • Tagungsort:

    252

  • Datum:

    2026-09-01

  • Referent:

    Matthias Andreas Fischer

  • Zeit:

    15:45

  • The S3 API has become the de facto standard for cloud object storage. Users of an S3 service can protect the confidentiality of their stored data with server-side encryption. This defends confidentiality against outsiders but leaves it vulnerable against a compromised server or malicious storage provider. Client-side encryption offers protection in such a setting. Encryption clients exist but they only protect users who use them and some encryption clients restrict the API. In this work we develop a proxy that sits between the client and the backend and resides inside the users trusted domain. It transparently (to the clients) encrypts data before it leaves the user’s trusted environment and decrypts data upon retrieval without the need to change existing applications (besides routing traffic to the proxy) and keeps compatibility with the S3 API. We first derive the constraints that the S3 API imposes on any client-side encryption scheme and design two protocol variants over counter-based stream ciphers. We then introduce a game-based security notion, indistinguishability under chosen multipart plaintext attack (IND-CMPA) that models the interaction of the proxy protocol with the backend. We prove by reduction that the construction, which is based on the designed protocol, achieves it when the underlying encryption scheme that the proxy is using is secure against chosen-plaintext attacks. Finally, we implement the proposed protocol as a transparent encryption proxy in Go. We evaluate its performance by measuring the overhead relative to a direct client-to-server path against an unmodified MinIO backend. Multipart Uploads through the proxy take 76% longer in the least favorable configuration measured, while downloads are on par throughout. Therefore it is possible to provide confidentiality protection for existing unprotected clients with a proxy layer at limited overhead, without modifying the backend and without restricting multipart semantics.