Intel SGX è una nuova tecnologia intrigante che verrà spedita come parte dei prossimi processori Intel. È progettato per abilitare la gestione software in un'enclave sicura. Il codice in esecuzione nell'enclave verrà isolato dall'hardware dal codice non attendibile in esecuzione sullo stesso processore, in modo da poter eseguire codice di sicurezza nell'enclave e proteggerlo dagli attacchi. Mentre SGX non è supportato nei processori attualmente disponibili, Intel suggerisce che sarà presto disponibile. La speranza è che questo possa fornire una solida base per certi tipi di isolamento: gli sviluppatori saranno in grado di eseguire determinati codici (ad esempio, codice crittografico di gestione delle chiavi) in un'enclave protetta, con garanzie che altri codici non saranno in grado di manomettere esso.
Un registro specifico del modello (MSR) è uno speciale registro di configurazione che controlla il funzionamento del processore. Ad esempio, gli MSR possono essere utilizzati per abilitare la ramificazione, i contatori delle prestazioni, i watchpoint hardware e altre utili funzioni speciali. Normalmente, solo il codice privilegiato può leggere e scrivere la maggior parte dei MSR.
La mia domanda: in che modo la modalità SGX interagisce con gli MSR? Cosa devono sapere gli sviluppatori di codice che gira in modalità SGX sui MSR?
La specifica SGX non dice in che modo la modalità SGX interagisce con gli MSR. Tuttavia, si potrebbe immaginare che i MSR potrebbero potenzialmente rappresentare un rischio per il codice in esecuzione in un'enclave, a seconda di come i due interagiscono. Ad esempio, se il codice non affidabile può abilitare la tracciatura di ramo (tramite un MSR) e quindi attivare il richiamo di un'enclave sicura e se questa impostazione è stata mantenuta attraverso il selettore di modalità che ha causato la registrazione di tutti i rami presi dal codice di enclave in memoria accessibili da non attendibili codice, quindi questo potrebbe consentire al codice non affidabile di attivare potenti attacchi di canale laterale contro il codice di enclave.
Quindi, in che modo i valori del MSR influenzano l'esecuzione del codice in esecuzione in un'enclave? Gli MSR vengono ignorati durante l'esecuzione in modalità enclave? Il codice progettato per funzionare in un'enclave deve cancellare / resettare tutti gli MSR prima di fare qualcosa di sensibile? Cosa devono sapere gli sviluppatori di codice che gireranno in un'enclave per sapere come funzionano gli MSR in modalità SGX, per scrivere codice sicuro e proteggere il loro codice dagli attacchi?