Privagic : confidential computing made practical with secure typing - TEL - Thèses en ligne
Thèse Année : 2024

Privagic : confidential computing made practical with secure typing

Privagic : utilisation d'environnement d'exécution sécurisé rendu pratique avec typage

Résumé

For more than twenty years, several tools have been proposed to automatically partition an application between a secure memory zone and a non-secure memory zone. These tools analyze the data flow of the application in order to identify the memory locations that may contain sensitive values. Most of these tools behave incorrectly in the presence of pointers. When they are correct, they are unable to handle threads because of the difficulty to track pointers in a multi-threaded application. The current tools are also unable to split an application in more than two partitions. This is caused by over-approximation, which leads to memory locations falsely shared between the two partitions.In the thesis, instead of starting from data flow analysis, we propose to start from a more accurate technique: language typing. We introduce secure typing, which consists in embedding a partition identifier in the type system of a language. Based on secure typing, we designed a language-agnostic compiler based on LLVM. The compiler takes a legacy application enriched with secure types as input, and generates multiple partitions for Intel SGX. Our evaluation with micro- and macro-applications show that (i) secure typing can handle pointers, multiple threads and more than two partitions, (ii) adding secure types in a legacy application is easy, (iii) secure typing reduces the trusted computing base, and is more efficient than embedding a full application inside an enclave.
L'informatique confidentielle consiste à protéger les données des utilisateurs lorsqu'elles sont traitées dans un système non fiable tel qu'une infrastructure cloud. Au niveau matériel, l'informatique confidentielle repose sur un environnement d'exécution fiable (TEE) (SGX d'Intel, SEV d'AMD ou TrustZone d'ARM). Un TEE est un environnement matériel qui isole une zone de mémoire, appelée enclave, d'un système d'exploitation ou d'un hyperviseur potentiellement compromis. Étant donné qu'il est difficile de partitionner manuellement une application entre une enclave et la mémoire non sécurisée, de nombreux outils de partitionnement automatique ont été proposés. Avec ces outils, le développeur annote certaines valeurs sensibles et l'outil analyse ensuite le code pour trouver les emplacements de mémoire dans lesquels les valeurs sensibles propagent. La plupart de ces outils se comportent incorrectement en présence de pointeurs. Lorsqu'ils sont corrects, ils ne parviennent pas à gérer les threads en raison de la difficulté à suivre les pointeurs dans une application multi-thread. Les outils actuels sont également incapables de diviser une application en plus de deux partitions. Cela est causé par une surapproximation, qui conduit à des emplacements mémoire faussement partagés entre les deux partitions.Nous proposons de partir d'un autre point de l'espace de conception, en laissant le développeur annoter explicitement tous les emplacements de mémoire qui contiennent des valeurs sensibles. Puisque le développeur annote explicitement tous les emplacements de mémoire sensibles, il n'est pas nécessaire d'analyser le code. Nous évitons ainsi par construction tout risque d'erreur d'analyse dans une application multithread. Afin de permettre au développeur d'indiquer les emplacements de mémoire qui contiennent des valeurs sensibles, nous introduisons une nouvelle construction du langage appelée « type sécurisé ». Un type sécurisé est un type enrichi d'un identifiant d'enclave, que nous appelons une couleur.Le typage sécurisé indique comment partitionner le code. En lui-même, le typage sécurisé ne fournit aucune garantie de sécurité. Pour renforcer la sécurité, nous proposons donc de compléter le typage sécurisé par des règles de typage. Le typage explicite de chaque emplacement de mémoire susceptible de contenir une valeur sensible rend possible le partitionnement d'une application multithread. L'ajout d'un type sécurisé à chaque emplacement mémoire sensible peut prendre beaucoup de temps au développeur.Pour cette raison, nous proposons de faciliter l'utilisation du typage sécurisé avec une forme simple d'inférence de type. Nous déduissons le type d'une variable locale non colorée, mais seulement si le code ne crée pas de pointeur sur la variable. Dans ce cas, la variable ne s'échappe pas de la portée d'une seule fonction, ce qui évite l'analyse inter procédurale.De plus, comme la variable ne s'échappe pas de la portée de sa fonction, elle ne peut pas être accédée par un autre thread. Avec cette restriction, la déduction d'un type sécurisé nécessite une simple analyse de la chaîne use-def, et le type déduit est correct même dans les applications multithread. Nous avons mis en œuvre notre principe de typage sécurisé dans le cadre Privagic pour Intel SGX et le langage C.Le compilateur Privagic s'appuie sur le compilateur LLVM, ce qui signifie qu'il ne s'appuie pas sur la sémantique C : il considère une représentation intermédiaire de bas niveau du code avec des types sécurisés ajoutés aux variables, aux arguments et aux champs des structures de données. Notre évaluation avec des micro- et macro-applications montre que (i) le typage sécurisé peut gérer les pointeurs, le multi-threads et plus de deux partitions, (ii) l'ajout de types sécurisés dans une application existante est facile, (iii) le typage sécurisé réduit la base de confiance et est plus efficace que l'intégration complète d'une application dans une enclave.
Fichier principal
Vignette du fichier
102024_TANIGASSALAME_2024_archivage_Final.pdf (1.37 Mo) Télécharger le fichier
Origine Version validée par le jury (STAR)

Dates et versions

tel-04860592 , version 1 (01-01-2025)

Identifiants

  • HAL Id : tel-04860592 , version 1

Citer

Subashiny Tanigassalame. Privagic : confidential computing made practical with secure typing. Computer Science [cs]. Institut Polytechnique de Paris, 2024. English. ⟨NNT : 2024IPPAS004⟩. ⟨tel-04860592⟩
0 Consultations
0 Téléchargements

Partager

More