2016-06-21 8 views
1

Ich versuche, den Remote-Attestierungs-Beispielcode im Intel SGX SDK auszuführen. Ich bekomme immer den Fehler "Fehler, rufen Sie sgx_ra_get_msg1 fail [wmain]." Ich denke es ist, weil die sgx_ra_init(&g_sp_pub_key, b_pse, p_context) Funktion einen Nullwert p_context zurückgibt, der nicht verwendet werden kann.Intel SGX-Fernbescheinigung Beispielcode

Kann jemand den Remote-Attestierungs-Beispielcode korrekt ausführen? PS: Ich kann den lokalen Attestierungs-Beispielcode ausführen, ich denke, die Intel SGX-Entwicklungsumgebung ist in Ordnung.

+0

Laufen Sie im Simulationsmodus oder auf SGX-Hardware? – Freddy

+0

@Freddy Ich bin auf einem Dell-Laptop mit SGX-Hardware unterstützt. Der Beispielcode befindet sich im Debug-Modus (Nicht-Produktion). – WooShin

+0

Ich habe den Code erfolgreich im Simulationsmodus ausgeführt. Ich habe nicht die Hardware, um es im Debug-Modus zu betreiben, sorry. – Freddy

Antwort

2

Ich gehe davon aus Sie den Beispielcode auf Ubuntu unter folgendem Link zur Verfügung gestellt ausgeführt werden: https://github.com/01org/linux-sgx/tree/master/SampleCode/RemoteAttestation

Ich hatte das gleiche Problem. Es könnte mehrere Gründe geben, warum es nicht funktioniert hat. Ich löste es, indem ich die folgenden Schritte befolge:

  1. Überprüfen auf BIOS-Update. Falls verfügbar, aktualisieren Sie Ihr BIOS.
  2. Stellen Sie sicher, dass Intel (R) Software Guard Extensions (SGX) im BIOS aktiviert ist.
  3. Überprüfen Sie, ob die Internetverbindung aufgrund einer Firewall/eines Proxy eingeschränkt ist. Wenn es eingeschränkt ist, müssen Sie dies in Ihrer Umgebung und/oder Ihrem Code berücksichtigen, oder Sie können einfach eine Verbindung ohne Einschränkungen verwenden.
  4. Überprüfen Sie, ob der Intel (r) SGX-Treiber geladen ist.

    sudo lsmod | sort 
    
  5. Stellen Sie sicher, dass Makefile hat den richtigen SGX_SDK Pfad festgelegt: Sie können auf der geladenen Kernel-Module Liste vorhanden ist, indem geprüft wird, ob „isgx“ erzeugt, indem Sie den folgenden Befehl ausgeführt wird auf dem Linux-Shell bash tun.
  6. Angenommen, Sie haben die oben genannten Schritte ausgeführt, können Sie den AESM-Daemon-Dienst neu starten. Auf der Schale:

    sudo service aesmd restart 
    
  7. Dann versuchen Sie, das Programm auszuführen. Sie müssen das Projekt nicht erneut erstellen.

Gerade FYI, können Sie Ihr Projekt für SGX Hardware & Debug-Modi erstellen und dann durch die folgenden Befehle auf der Shell ausführen:

make clean 
make SGX_MODE=HW SGX_DEBUG=1 
./app 

Ich hoffe, das hilft.