Portage de l architecture sécurisée CryptoPage sur un microprocesseur x86 Guillaume Duc Ronan Keryell Département Informatique École Nationale Supérieure des Télécommunications de Bretagne Symposium en Architecture de Machines, 2005 G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 1 / 36
Plan de la présentation 1 Introduction 2 3 4 5 G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 2 / 36
Plan Introduction 1 Introduction 2 3 4 5 G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 3 / 36
Sécurité Informatique Problème d actualité Nombreuses solutions au niveau logiciel : Algorithmes (chiffrement, signatures numériques, etc.) Protocoles (IPsec, Kerberos, etc.) Applications (DRM, etc.) Mais support matériel d exécution non sécurisé (sauf applications restreintes comme les cartes à puces) et donc vulnérable à des attaques physiques G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 4 / 36
Les Besoins de Sécurité Grilles de calcul De plus en plus utilisées par les centres de recherche et les entreprises Mais sécurité des nœuds non garantie : Divulgation du code Divulgation des résultats Production de faux résultats Gestion des droits des œuvres numériques Applications en ligne (e-vote, banque, etc.) Code mobile G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 5 / 36
Plan Introduction 1 Introduction 2 3 4 5 G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 6 / 36
Plan Introduction 1 Introduction 2 3 4 5 G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 7 / 36
de sécurité de CryptoPage Architecture matérielle permettant l exécution de processus sécurisés : Confidentialité : un attaquant doit pouvoir obtenir le moins d information possible sur le code ou les données Intégrité : la bonne exécution d un processus ne peut pas être altérée par une attaque En parallèle avec des processus (sécurisés ou non) Avec un système d exploitation non sécurisé (mais adapté à CryptoPage) G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 8 / 36
de sécurité CryptoPage Tout ce qui est à l extérieur du processeur est considéré comme étant sous le contrôle d un attaquant Attaques physiques contre le processeur non étudiées ici (injection de fautes, attaques par mesure de consommation, etc.) Attaques par déni de service inévitables... Garder des performances raisonnables Différents compromis sécurité performance (zone lecture seule, zone lecture-écriture, zone en clair,... ) G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 9 / 36
Plan Introduction 1 Introduction 2 3 4 5 G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 10 / 36
Propriété de Confidentialité données et instructions des processus sécurisés Utilisation algorithme de chiffrement symétrique par bloc Deux clés par processus sécurisé Effectué entre le cache et la mémoire sur des lignes de cache Si interruption : chiffrement puis effacement du contexte matériel du processus sécurisé en cours G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 11 / 36
Propriété d Intégrité Protection des données et des instructions : mécanisme de vérification de l intégrité mémoire par fonction de hachage hiérarchique (arbres de Merkle) Protection des contextes matériels : Message Authentication Code (mac) G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 12 / 36
Survol de l architecture CryptoPage/x86 Cœur du processeur Cache Données E Kd,pid mmu Unité CryptoPage Tampons de contexte Registres de contrôle Cache Instructions E Ki,pid Vérification intégrité Mémoire Clé secrète Puce G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 13 / 36
Tampons de contexte cb 1 cb n cb cur F F Non chiffré Chiffré ecb 1 ecb n Bus de donnée G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 14 / 36
Nouvelles instructions Instruction IRETS SIG SIGEND cb i MOV src,ecb i,j MOV ecb i,j,dest MOV cb i,cb j MOVNE reg,dest MOVNE src,reg MOV reg,cpcr i MOV cpcr i,reg Description Retour d interruption en mode sécurisé Déclenchement d un signal Fin d un signal Charge un contexte matériel Sauvegarde un contexte matériel Déplacement d un contexte matériel Écriture mémoire non sécurisée Lecture mémoire non sécurisée Manipulation des registres de contrôle Manipulation des registres de contrôle G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 15 / 36
Plan Introduction 1 Introduction 2 3 4 5 G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 16 / 36
Introduction Projet Tcpa / Ngscb Puce (tpm), indépendante du processeur, offrant des mécanismes de sécurité Noyau sécurisé (Nexus) de sécurité différents de CryptoPage Isolation forte entre processus Stockage sécurisé Attestations cryptographiques Chemin sécurisés pour l utilisateur Vulnérable à certaines attaques (attaques physiques sur le bus) G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 17 / 36
Introduction aegis Intégrité mémoire : arbres de Merkle et hachage sur des multi-ensembles Confidentialité : chiffrement en mode compteur xom Intégrité mémoire : mac, vulnérable à des attaques par rejeu Confidentialité : chiffrement en mode compteur Description d un système d exploitation non sécurisé G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 18 / 36
Plan Introduction 1 Introduction 2 3 4 5 G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 19 / 36
Plan Introduction 1 Introduction 2 3 4 5 G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 20 / 36
Les modes d opération des algorithmes de chiffrement Algorithmes de chiffrement par blocs travaillent sur des blocs de données de taille fixe (128 bits pour l aes) Si la taille du message est différente de celle d un bloc, utilisation d un mode d opération Exemples : ecb : Electronic CodeBook cbc : Cipher-Block Chaining G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 21 / 36
Exemple de ecb Introduction P 0 P 1 P 2 Données en clair E K E K E K C 0 C 1 C 2 Données chiffrées E 1 K E 1 K E 1 K Déchiffrement P 0 P 1 P 2 Données en clair Mode ecb G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 22 / 36
Problème avec ecb... Non chiffré Chiffré en mode ecb G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 23 / 36
Exemple de cbc Introduction P 0 P 1 P 2 Données en clair E K E K E K IV C 0 C 1 C 2 Données chiffrées E 1 K E 1 K E 1 K Déchiffrement P 0 P 1 P 2 Données en clair Mode cbc G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 24 / 36
Exemple de cbc Introduction Non chiffré Chiffré en mode cbc G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 25 / 36
Plan Introduction 1 Introduction 2 3 4 5 G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 26 / 36
Stockage des Vecteurs d Initialisation Problème : stockage transparent des Vecteurs d Initialisation Modification de la mmu afin de cacher ce stockage : Manipulation d adresses virtuelles par processus sécurisés Adresses virtuelles dilatées en adresses logiques par la mmu Allocation de mémoire logique supplémentaire afin de stocker les iv Manipulation des adresses logiques par os (sans distinction données/iv) G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 27 / 36
Stockage des Vecteurs d Initialisation a b a iv b iv 0 0xFFFFFFFF A v mmu A l mmu A ϕ G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 28 / 36
Plan Introduction 1 Introduction 2 3 4 5 G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 29 / 36
du chiffrement Latence supplémentaire lors d un défaut de cache Parallélisation du déchiffrement en mode cbc Unités de déchiffrement pipelinées Latence supplémentaire lors de l écriture en mémoire en mode cbc non parallélisable Pipeline possible... Mais latence peu gênante Si ligne à nouveau nécessaire : récupération directement dans le pipeline G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 30 / 36
Plan Introduction 1 Introduction 2 3 4 5 G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 31 / 36
Appels systèmes : besoin de passer/récupérer arguments mécanisme d effacement et de restauration sélectif des registres Signaux Unix : mécanisme d autorisation de branchement d un processus à une adresse particulière à la demande du système d exploitation Chargement initial d un programme sécurisé : contexte initial du programme chiffré à l aide de la clé publique du processeur G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 32 / 36
Plan Introduction 1 Introduction 2 3 4 5 G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 33 / 36
Simulations Implémentation partie confidentialité dans simulateur de pc complet Bochs Programmes fonctionnent chiffrés dans Bochs avec noyau Linux 2.6.10 adapté pour tourner sur CryptoPage/x86 Bochs (100 000 lignes en tout) : + 800 lignes pour le cache + 2 000 lignes pour CryptoPage/x86 Noyau Linux (plusieurs millions lignes en tout) : + 500 lignes dietlibc : + 150 lignes des fichiers elf : 1 500 lignes G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 34 / 36
Travaux Futurs Mesures plus précises de l impact en terme de performance Implémentation des mécanismes d intégrité mémoire dans Bochs Multiprocesseurs Adaptation des concepts de CryptoPage à un processeur sparc sur fpga G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 35 / 36
Portage de l architecture sécurisée CryptoPage sur un microprocesseur x86 Guillaume Duc Ronan Keryell Département Informatique École Nationale Supérieure des Télécommunications de Bretagne Symposium en Architecture de Machines, 2005 G. Duc, R. Keryell (ENST Bretagne) CryptoPage/x86 SympAAA 2005 36 / 36