Encryption de bout en bout dans Google Cloud avec une solution de Thales, et/ou dans AWS
Ce projet a été attribué.
Encadrants
- Matthieu Rambaud
- Emails: matthieu.rambaud@telecom-paris.fr
- Bureaux: 4D31
Nombre d'étudiant par instance du projet:
- Minimum: 4
- Maximum: 4
Nombre d'instances du projet :
1Sigles des UE couvertes et/ou Mots-clés :
cloud, cryptographieDescription du projet :
Contexte:
Thales, partenaire campus de Télécom Paris, a gagné la distinction de "Google partner of the year" en 2023 pour leur entreprise commune ("S3NS") dont le produit est un système d'encryption de bout en bout ("end to end") des données stockées dans Google cloud:
https://www.thalesgroup.com/en/worldwide/digital-identity-and-security/press_release/thales-wins-google-cloud-technology-partner
Plus généralement, le projet consiste en l'étude d'architectures proposées par Thales permettant de cryptage des données dans le cloud (notamment aussi pour AWS).
Le point commun de ces architectures est un serveur, appelé "Ciphertrust", que Thales propose au client de déployer dans son propre réseau.
Ce serveur reçoit des requêtes pour fournir la clé de déchiffrement d'un fichier crypté, et la fournit.
Objectifs du projet :
Le but est de déployer Ciphertrust avec une ou plusieurs des achitectures proposées. Puis les décrire sous l'angle de la sécurité/cryptographie:
- de qui Ciphertrust accepte-t-il la requête : Google ou le Client ou le client authentifié via son compte google (à éclaircir) ?)
- quelle machine effectue de chiffrement / déchiffrement / la génération des clés: une locale du client ? une VM du client chez google ? un serveur géré par Thales ?
- qui accepte de donner les clés à Ciphertrust: un hardware du client ? Ou une machine à distance qui détient aussi les clés d'autres clients ?
Alternativement, on pourra également étudier d'autres architectures de end-to-end encryption avec Ciphertrust, cette fois interfacées avec AWS https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/ddb-java-examples.html (je fournirai des exemples qui fonctionnent en Go, vous pourrez par exemple les adapter à Java).
Enfin un objectif en parallèle serait d'étudier la vulnérabilité de Ciphertrust aux attaques de Google qui ferait une requête de clés de décryption sur un mauvais fichier, dans l'espoir que le client ouvrira en clair ce mauvais fichier dans sa VM Google et donc que Google le verra. Ces attaques sont décrites dans https://eprint.iacr.org/2024/1616 (cf ci dessous) pour 5 systèmes de chiffrement end-to-end
Références bibliographiques:
CCS 2024: "End-to-End Encrypted Cloud Storage in the Wild: A Broken Ecosystem" ( https://eprint.iacr.org/2024/1616 )
Abstract
End-to-end encrypted cloud storage offers a way for individuals and organisations to delegate their storage needs to a third-party, while keeping control of their data using cryptographic techniques.
We conduct a cryptographic analysis of various products in the ecosystem, showing that many providers fail to provide an adequate level of security. In particular, we provide an in-depth analysis of five end-to-end encrypted cloud storage systems, namely Sync, pCloud, Icedrive, Seafile, and Tresorit, in the setting of a malicious server. These companies cumulatively have over 22 million users and are major providers in the field. We unveil severe cryptographic vulnerabilities in four of them. Our attacks invalidate the marketing claims made by the providers of these systems, showing that a malicious server can, in some cases, inject files in the encrypted storage of users, tamper with file data, and even gain direct access to the content of the files. Many of our attacks affect multiple providers in the same way, revealing common failure patterns in independent cryptographic designs.
We conclude by discussing the significance of these patterns beyond the security of the specific providers.