Artikel-ID: 000088045 Inhaltstyp: Produktinformationen und Dokumente Letzte Überprüfung: 19.10.2021

Wie wird der Heapspeicher während der Enklavenerstellung initialisiert?

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Zusammenfassung

Prozess für die Zuweisung von Heap-Speicher zu einer Intel® Software Guard Extensions (Intel® SGX)-Enklave

Beschreibung

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.

Lösung

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:

  1. 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
  2. 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
  3. Jede Enklavenseite wird hinzugefügt, indem der Treiber aufgerufen wird, der EADD aufruft: loader.cpp#L311

Zugehörige Produkte

Dieser Artikel bezieht sich auf 1 Produkte

Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.