2017-12-12 1 views
1

Kann ein Gerätetreiber in einer Intel SGX-Enklave ausgeführt werden? Oder ist es für eine Enklave unmöglich, auf den DMA-Speicher zuzugreifen und speicherabgebildete E/A durchzuführen?Gerätetreiber im Intel SGX-Gehäuse?

Ich habe bereits einen Gerätetreiber, der den gesamten erforderlichen Speicher zugeordnet hat, aber ich weiß nicht, ob es möglich ist, eine Enklave zu erstellen, die diese Zuordnungen teilt. Ich bin im Wesentlichen darüber verwirrt, ob Enklaven können nur Zugriff auf ihre eigenen privaten Speicher oder ob sie auch Zugriff beliebigen physischen Speicher, den ich ihnen zuordnen würde.

Die Dokumentation scheint zu sagen, dass die Enklave nicht auf Code an beliebigen Orten zugreifen kann, aber ich möchte die Regeln für Daten und MMIO kennen.

+0

Enclave kann nur in Ring-3 laufen, daher kann es nicht als Treiber ausgeführt werden. Sie können jedoch einen Ring-3-Prozess erstellen, der vom Treiber zum Laden und Kommunizieren mit dem Treiber verwendet wird, aber Sie müssen immer noch eine Datei-IO außerhalb der Enklave ausführen. Datenzugriff außerhalb der Enklave ist möglich. –

+0

Danke für die Antwort! Ich habe bereits meinen Fahrer in Ring-3 laufen. Bedeutet das, dass ich es in eine Enklave bringen kann? Wie ist die Speicherkarte für die Enklave definiert? (Vielleicht eine Dokumentation Referenz? Ich vermisste es bis jetzt.) Der Trick, den ich benutze, um den Treiber in Ring-3 auszuführen ist https://github.com/lukego/blog/issues/13 –

+0

Sie finden Informationen auf wie es im Intel SGX SDK implementiert ist: https:///01.org/intel-software-guard-extensions/documentation/intel-sgx-developer-guide. Dennoch sind mlock, open, etc. syscalls und können nicht innerhalb einer Enklave aufgerufen werden - Sie benötigen eine Überbrückung, um sie in einer Enklave zu verwenden. –

Antwort

1

Enclaves sind statisch verknüpfte Bibliotheken, da sie den Prozess mit der Anwendung teilen, in die er geladen wird. Mehrere Enklaven können in einen Prozess geladen werden.

Ein Enclave besitzt eine oder mehrere Seitentabellen, diese Seiten sind verschlüsselt und vor Zugriff von außen geschützt. Dies ist besser erklärt unter: https://software.intel.com/sites/default/files/332680-002.pdf, page 28.

Enclaves können auf Speicher von dem Prozess zugreifen, den sie ausführen, aber ihr Speicher kann nur von ihnen selbst zugegriffen werden. DMA-Zugriffsversuche werden zurückgewiesen/abgebrochen, kann nicht in den Speicher einer Enklave gemappt werden, Sie können jedoch dem Speicher des Prozesses zuordnen und von innerhalb der Enklave darauf zugreifen.

Enclaves sind nach dem Konzept von der Außenwelt isoliert, sie haben keine E/A-Funktionen der geschützten Dateisystembibliothek. Also, Ich glaube nicht, dass es möglich ist, einen Treiber in sgx auszuführen.