Nicht unterstützte C++ Standardbibliotheken in Intel® SGX Enklaven
Warum ist es nicht möglich, std::stringstream in einem Enklavenbereich zu verwenden?
Stringstream ist Teil von der von Intel SGX nicht unterstützt wird. Im Intel SGX SDK-Entwickler-Referenzleitfaden heißt es:
"Was die C++ Standardbibliothek betrifft, funktionieren die meisten Funktionen genauso wie ihr nicht vertrauenswürdiges Pendant, aber hier finden Sie eine zusammenfassung der funktionen auf höchster Ebene, die im Enklavenbereich nicht unterstützt werden:
- I/O-bezogene Funktionen und Klassen, wie ;
- Funktionen, die von einer Locale-Bibliothek abhängen;
- Alle anderen Funktionen, die Systemanrufe erfordern."
Der Abschnitt Nicht unterstützte C++ Standardklassen und Funktionen enthält eine Tabelle mit dem Titel Input/Output Library,in der iostream als nicht unterstützt aufgeführt wird.
Erstellen Sie als Problemumgehung für den Zugriff auf Iostream-Funktionen innerhalb eines Enklavens einen Ocall, der die Iostream-Funktionen in der nicht vertrauenswürdigen App im Namen der Enklave aufruft. Das Beispiel SampleEnclave im SGX Software Development Kit (SGX SDK) zeigt, wie sie einen Ocall für die Verwendung von printf in einer Enklave implementieren.