Cause et atténuation pour l’allocation lente d’une grande quantité de mémoire dans une enclave.
- L’initialisation d’une enclave avec une taille de veille de quelques mégaoctets prend en moins d’une seconde.
- L’initalisation d’une enclave avec une grande taille de désinitation, par exemple, 1 Go, prend plusieurs secondes.
Cause :
L’initialisation de grandes quantités de mémoire pour une formation d’enclave devrait prendre du temps. L’initialisation et l’ajout de la mémoire dans le cache de page d’enclave (EPC) pour une enclave sont beaucoup plus complexes qu’une simple allocation de mémoire dans une application régulière. Avant qu’un morceau de mémoire ne soit ajouté à l’EPC, il doit passer par plusieurs contrôles de sécurité, y compris en utilisant une fonction de hachage sécurisée SHA-2 256 bits.
Reportez-vous aux sections 5.1, 5.3 et 5.6 de SGX expliquées, et aux instructions QUE L’on peut lire dans Intel SGX cycle de vie de l’enclave.
Atténuation:
Si le processeur prend en charge Intel® Software Guard Extensions (Intel® SGX) SGX2, dans le fichier de configuration de l’enclave :
- le jeu L’entassement est défini DuxtmaxSize sur la plus grande quantité de mémoire dont l’enclave aura besoin
- définissez L’uxtitSize à quelque chose de minimal.
L’entassement Est la quantité à initialiser entièrement (c.-à-d. QUE L’application AAssed la page a été complètement initialisé, puis EEXTEND ) au lancement d’une enclave, ce qui prend du temps. Avec une taille d’initialisation minimale, elle serait plus rapide et le reste de la mémoire ne serait ajouté qu’en utilisant les instructions SGX2 lorsqu’elle est allouée, via malloc, par l’enclave pendant le temps d’exécution.