Proceso para asignar memoria de montón a un enclave de Intel® Software Guard Extensions (Intel® SGX)
No se puede determinar cómo se asigna la memoria de montón mayor que la memoria caché de páginas de enclave (EPC) disponible a los enclaves en el momento de la creación.
Intel® Software Guard Extensions (Intel® SGX) utiliza las instrucciones del procesador EADD para agregar memoria, incluido el montón, a un enclave. Para AGREGAR una página de montón, debe haber una página gratuita de caché de página de enclave (EPC) disponible. Si ya existe una página gratuita, EADD la utiliza inmediatamente. Si el EPC ya está lleno, se pagina y libera una página actualmente en uso. Esa página ahora gratuita podría usarse para la página del montón. Esta página está en el EPC porque es una página recién liberada. En cualquier caso, no se intercambia ninguna página. Cuando se produce el EADD real, la página ya estará presente en el EPC, sin necesidad de paginación o intercambio.
Siguiendo el código:
- Primero, la herramienta de señalización SGX determina el diseño del enclave. Coloca la información de diseño en los metadatos. Aquí es donde se agrega el montón y se establece solo en EADD: manage_metadata#L775
- Durante la carga del enclave, el cargador del sistema de tiempo de ejecución (uRTS) que no es de confianza recorre las entradas de diseño y agrega adecuadamente: loader.cpp#L382
- Cada página de enclave se agrega llamando al controlador, que llama a EADD: loader.cpp#L311