
Intel SGX en un coup d'œil et son rôle dans le cloud
Les extensions Intel Software Guard (Intel SGX) sont un ensemble d'instructions de processeur qui créent des zones protégées privées (enclaves) dans l'espace d'adressage de l'application où se trouve le code de niveau utilisateur. La technologie garantit la confidentialité et l'intégrité des données sensibles. En les isolant dans une enclave, ils bénéficient d'une protection supplémentaire contre les accès externes non autorisés, y compris du fournisseur de cloud, et contre les menaces internes, y compris les attaques de logiciels privilégiés.
Principes de travail.La technologie Intel SGX alloue une mémoire réservée au processeur (PRM) pour stocker le code et les données d'enclave. Le processeur le protège de tous les appels externes, y compris l'accès au noyau et à l'hyperviseur. Le PRM contient un cache de page d'enclave (EPC) de 4 blocs de page Kio, chaque page doit appartenir à une seule enclave et leur état est capturé dans les métadonnées du cache de page d'enclave (EPCM) et surveillé par le CPU.
La sécurité EPC est assurée par le moteur de chiffrement de la mémoire (MEE), qui génère des clés de chiffrement stockées sur le processeur. On suppose que les pages ne peuvent être déchiffrées qu'à l'intérieur du cœur du processeur physique.
Avantages.Intel SGX contribue à augmenter le niveau de confiance dans le cloud public de la part des organisations utilisant des données sensibles dans leur travail (mots de passe, clés de chiffrement, identification, données biométriques, médicales, ainsi que des informations liées à la propriété intellectuelle). Nous parlons de représentants d'une grande variété d'industries - le secteur financier, la médecine et les soins de santé, la vente au détail, le développement de jeux, les télécommunications, les médias.
Notre approche de la mise en œuvre d'Intel SGX
Pour permettre d'allouer des machines virtuelles avec des enclaves Intel SGX dans le cloud public de G-Core Labs, nous avons dû passer de la compilation du noyau KVM et QEMU patché à l'écriture de scripts Python dans les services OpenStack Nova. Nous avons décidé de définir les nœuds de calcul qui devaient être utilisés pour allouer des machines virtuelles haute sécurité dans un agrégateur distinct - un type de ressources de calcul qui nécessite une configuration supplémentaire. Sur de tels nœuds, il était nécessaire:
- Activez la prise en charge du BIOS Intel SGX.
- Installez QEMU / KVM corrigé.
Au départ, nous ne savions pas comment cela devait fonctionner et ce que nous devions finalement visser pour obtenir la VM de la configuration souhaitée. Une partie du guide du développeur Intel a aidé à résoudre ce problème. Avec son aide, nous avons appris comment préparer un nœud de calcul pour qu'il fonctionne avec SGX et quels paramètres supplémentaires le fichier de configuration XML d'une machine virtuelle devrait avoir. Nous avons trouvé ici des informations complètes sur la création d'une machine invitée à l'aide d'Intel SGX à l'aide de la virtualisation KVM. Pour nous assurer que nous sommes en mesure de fournir un support pour cette technologie, nous avons utilisé deux méthodes:
- Vérification de la section / dev / sgx / virt_epc dans le fichier / proc / $ PID / smaps:
[root@compute-sgx ~]# grep -A22 epc /proc/$PID/smaps 7f797affe000-7f797b7fe000 rw-s 00000000 00:97 57466526 /dev/sgx/virt_epc Size: 8192 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB LazyFree: 0 kB AnonHugePages: 0 kB ShmemPmdMapped: 0 kB FilePmdMapped: 0 kB Shared_Hugetlb: 0 kB Private_Hugetlb: 0 kB Swap: 0 kB SwapPss: 0 kB Locked: 0 kB THPeligible: 0 VmFlags: rd wr sh mr mw me ms pf io dc dd hg
- Et nous avons utilisé ce script shell, après avoir installé le pilote SGX (toutes les actions ont été effectuées à l'intérieur de la VM):
[root@sgx-vm ~]# cat check_sgx.sh #!/bin/bash METRICS="sgx_nr_total_epc_pages \ sgx_nr_free_pages \ sgx_nr_low_pages \ sgx_nr_high_pages \ sgx_nr_marked_old \ sgx_nr_evicted \ sgx_nr_alloc_pages \ " MODPATH="/sys/module/isgx/parameters/" for metric in $METRICS ; do echo "$metric= `cat $MODPATH/$metric`" done [root@sgx-vm ~]# curl -fsSL https://raw.githubusercontent.com/scontain/SH/master/install_sgx_driver.sh | bash -s - install -p metrics -p page0 [root@sgx-vm ~]# ./check_sgx.sh sgx_nr_total_epc_pages= 2048 sgx_nr_free_pages= 2048 sgx_nr_low_pages= 32 sgx_nr_high_pages= 64 sgx_nr_marked_old= 0 sgx_nr_evicted= 0 sgx_nr_alloc_pages= 0
Il convient de garder à l'esprit que si une page représente 4 Kio, alors 2048 pages nécessitent 8 Mio (2048 x 4 = 8192).
Difficultés de développement et les surmonter
L'absence de documentation technique pour l'intégration d'Intel SGX dans OpenStack était notre principale difficulté au moment de la mise en œuvre. La recherche nous a conduit à un article du projet SecureCloud, qui présentait un moyen de gérer des machines virtuelles avec des enclaves SGX.
Les informations trouvées ont aidé à comprendre exactement sur quoi nous devons travailler. En conséquence, nous avons formé les tâches suivantes:
- Obtenez le service OpenStack Nova pour générer un fichier XML avec des paramètres supplémentaires pour les machines virtuelles prenant en charge Intel SGX.
- Ecrivez un filtre de planificateur OpenStack Nova pour déterminer la mémoire disponible pour les enclaves sur les nœuds de calcul et effectuez d'autres vérifications.
Leur exécution a suffi à intégrer Intel SGX dans notre cloud public.
De plus, nous avons ajouté la collecte de statistiques prenant en compte l'EPC:
# openstack usage show
Usage from 2020-11-04 to 2020-12-03 on project a968da75bcab4943a7beb4009b8ccb4a:
+---------------+--------------+
| Field | Value |
+---------------+--------------+
| CPU Hours | 47157.6 |
| Disk GB-Hours | 251328.19 |
| EPC MB-Hours | 26880.02 |
| RAM MB-Hours | 117222622.62 |
| Servers | 23 |
+---------------+--------------+
Environnement sûr pour exécuter des applications conteneurisées

Après avoir appris à provisionner des VM compatibles Intel SGX, nous avons utilisé la plate-forme SCONE de Scontain pour garantir que les applications conteneurisées peuvent s'exécuter en toute sécurité en cas de menaces logicielles privilégiées. Pour les environnements Docker, Kubernetes et Rancher, cette solution nécessite un processeur compatible Intel SGX et un pilote Linux SGX pour sécuriser de manière transparente les systèmes de fichiers.
Le lancement de chacun des conteneurs n'est possible que s'il existe un fichier de configuration créé par l'extension client de la plateforme SCONE. Il contient des clés de chiffrement, des arguments d'application et des variables d'environnement. Les fichiers, le trafic réseau et les flux d'E / S standard (stdin / stdout) sont cryptés de manière transparente et inaccessibles même aux utilisateurs root.
La plate-forme SCONE dispose d'un service d'attestation et de configuration intégré qui valide les applications par rapport à une politique de sécurité établie. Il génère des clés privées et des certificats qui ne devraient être disponibles que dans l'enclave. La confidentialité et l'intégrité des données au cours de leur transfert sont assurées par le protocole cryptographique TLS.
Le pilote SGX réserve jusqu'à 64 Go de mémoire pour chaque enclave dans l'espace d'adressage virtuel. La plateforme SCONE prend en charge les langages de programmation C / C ++ / C # / Rust / Go / Python / Java. Grâce au compilateur spécial, le code source est automatiquement (sans nécessiter de modifications supplémentaires) préparé pour une utilisation avec Intel SGX.
Cas d'agrégion
Après avoir terminé tous les travaux nécessaires sur l'intégration d'Intel SGX, nous avons connecté la plateforme de gestion de données distribuée Aggregion à notre cloud public.
Il est destiné à la mise en œuvre de projets de marketing conjoints par des représentants de diverses industries - services financiers et d'assurance, gouvernement, télécommunications, commerce de détail. Les partenaires analysent le comportement des consommateurs, développent une promotion ciblée des biens et services, développent des programmes de fidélisation demandés, échangent et traitent des ensembles de données anonymisés sur la plateforme Aggregion. Étant donné que la fuite d'informations confidentielles est hautement indésirable et menace de graves risques pour la réputation, l'entreprise accorde une attention particulière aux problèmes de sécurité.
Le logiciel Aggregion est entièrement intégré au fournisseur de données, ce qui signifie qu'il dispose d'une infrastructure avec le support Intel SGX à sa disposition. Désormais, les clients de l'entreprise peuvent envisager de se connecter à notre cloud public comme alternative à la location ou à l'achat de serveurs physiques.
Principes de travail sécurisé sur la plateforme Aggregion. Dans la boucle de chaque fournisseur, les données sensibles sont isolées dans des enclaves Intel SGX, qui sont en fait des boîtes noires: ce qui se passe à l'intérieur n'est accessible à personne, y compris au fournisseur d'infrastructure cloud. La vérification de l'état initial de l'enclave et de la possibilité de son utilisation pour stocker des informations confidentielles est effectuée par attestation à distance, lorsque MrEnclavedéfinit une valeur de hachage.
Bénéfice client potentiel. La combinaison de bases de données de plusieurs fournisseurs peut améliorer l'efficacité des campagnes publicitaires conjointes. Lorsque le public cible est alloué en fonction des paramètres spécifiés, la correspondance de segment est effectuée directement à l'intérieur des conteneurs avec prise en charge des enclaves Intel SGX. Seul le résultat final est affiché hors limites: par exemple, le nombre d'utilisateurs correspondant aux attributs sélectionnés. L'efficacité des campagnes est évaluée de la même manière: les données sur les impressions publicitaires et les ventes réalisées sont téléchargées vers des enclaves pour calculer l'augmentation des achats du groupe cible par rapport au groupe témoin, qui est ensuite diffusée à l'extérieur pour une utilisation ultérieure.

conclusions
Nous comprenons qu'Intel SGX n'est pas une panacée pour la protection des données et vous pouvez trouver un certain nombre d'articles condamnant cette technologie, y compris sur Habré. Périodiquement, il y a des rapports d'attaques capables d'extraire des données sensibles d'enclaves: par exemple, Meltdown et Spectre en 2018 ont ouvert des trous SGX, et SGAxe et CrossTalk en 2020. À son tour, Intel s'attaque aux vulnérabilités identifiées via des mises à jour du microcode du processeur.
Pourquoi avons-nous décidé de mettre en œuvre cette technologie? Nous voyons l'utilisation d'Intel SGX comme une opportunité de réduire la zone potentielle de cyberattaques en créant une boucle de protection supplémentaire pour l'infrastructure cloud de G-Core Labs ainsi que les technologies de sécurité de l'information déjà utilisées et en augmentant ainsi la confiance de nos utilisateurs dans le stockage et le traitement des données confidentielles. Nous espérons qu'à l'avenir, nous n'avons pas encore partagé avec vous des cas de clients réussis, bien que nous ne nous engageons pas à affirmer que nos articles ne seront pas basés sur des histoires de découverte et d'élimination de nouvelles vulnérabilités. En attendant, nous vous invitons à partager vos méthodes de protection des données sensibles dans les commentaires.