Prozess für die Zuweisung von Heap-Speicher zu einer Intel® Software Guard Extensions (Intel® SGX)-Enklave
Es kann nicht bestimmt werden, wie der Heap-Speicher, der größer als der verfügbare EPC-Speicher (Enclave Page Cache) ist, den Enklaven bei der Erstellung zugewiesen wird.
Intel® Software Guard Extensions (Intel® SGX) verwendet die EADD-Prozessoranweisung, um einer Enklave Speicher, einschließlich Heap, hinzuzufügen. Um eine Heap-Seite hinzuzufügen, muss eine freie Enclave Page Cache (EPC)-Seite verfügbar sein. Wenn bereits eine freie Seite vorhanden ist, wird sie sofort von EADD verwendet. Wenn der EPC bereits voll ist, wird eine derzeit verwendete Seite ausgelagert und freigegeben. Diese jetzt freie Seite könnte für die Heap-Seite verwendet werden. Diese Seite befindet sich im EPÜ, da es sich um eine neu freigegebene Seite handelt. In beiden Fällen wird keine Seite ausgetauscht. Wenn das eigentliche EADD auftritt, ist die Seite bereits im EPC vorhanden – kein Paging oder Austauschen erforderlich.
Befolgen Sie den Code:
- Zunächst bestimmt das SGX-Signtool das Enklavenlayout. Es platziert die Layoutinformationen in den Metadaten. Hier wird der Heap hinzugefügt und auf nur EADD gesetzt: manage_metadata#L775
- Während des Ladens der Enklave durchläuft der nicht vertrauenswürdige uRTS-Loader (Run-time System) die Layouteinträge in einer Schleife und fügt entsprechend hinzu: loader.cpp#L382
- Jede Enklavenseite wird hinzugefügt, indem der Treiber aufgerufen wird, der EADD aufruft: loader.cpp#L311