In che modo i progettisti di CPU possono prevenire perdite di informazioni dall'esecuzione ipotizzata?

7

Sappiamo di misure a breve termine per mitigare le vulnerabilità Meltdown e Spectre in alcuni microprocessori in cui l'esecuzione speculativa ha effetti misurabili sui temporizzatori della cache (principalmente patch al microcode, sistemi operativi e qualsiasi applicazione che contenga limiti di affidabilità).

Quali sono le soluzioni a lungo termine al problema?

Ovviamente, è improbabile che soluzioni semplici come "non speculare" o "ignora la cache durante la speculazione" siano accettabili a causa delle considerazioni sulle prestazioni che hanno introdotto la speculazione in primo luogo.

Le istruzioni ipotizzate potrebbero utilizzare una cache separata, che viene copiata sulla cache principale solo se la speculazione ha esito positivo? In caso contrario, perché no?

I processori potrebbero aggiungere informazioni privilegiate alle voci della tabella di pagina, per rendere automatico l'isolamento della tabella delle pagine del kernel (e ridurne l'impatto sulle prestazioni)?

Ci sono altre modifiche al design che migliorano la sicurezza senza un grande impatto sulle prestazioni?

    
posta Toby Speight 19.01.2018 - 14:13
fonte

3 risposte

5

Fixing Meltdown è semplice: se la CPU sta eseguendo un'esecuzione speculativa, non leggere i dati dalle aree protette della memoria. Il fatto che Meltdown sia quasi esclusivamente Intel mostra che si tratta di un difetto di progettazione, piuttosto che un effetto collaterale intrinseco dell'esecuzione speculativa.

Fixing Specter nel caso generale è molto più difficile. Spectre sta inducendo un programma a malfunzionamenti speculativi, quindi osservando gli effetti collaterali di quel malfunzionamento. Tu non puoi eliminare tutti gli effetti collaterali: anche se tu potessi ripristinare tutte le cache, i buffer, le tabelle e quant'altro, c'è il semplice fatto che l'esecuzione speculativa implica l'esecuzione speculativa . L'esecuzione di istruzioni speculative richiede una quantità di tempo (un po 'controllabile dai dati), che non può essere annullata prima di capire il viaggio nel tempo.

Ciò che si può fare è aumentare notevolmente la difficoltà di indurre un malfunzionamento speculativo. Attualmente, la maggior parte delle CPU non ha alcun concetto di "processo" e utilizza solo una parte dell'indirizzo quando si eseguono le ricerche nella tabella di previsione delle filiali. Se i dati di previsione dei rami vengono taggati per indicare a quale processo appartiene, o se la tabella di predizione delle derivazioni viene svuotata su ogni switch di contesto, la capacità di un programma di addestrare in modo errato le azioni del predittore di ramo per un altro programma viene effettivamente eliminata. Allo stesso modo, se la previsione delle diramazioni viene eseguita utilizzando l'indirizzo completo, un programma non può attaccare se stesso (ad esempio, Javascript non sarebbe in grado di usare Spectre uscire dalla sandbox di un browser web).

    
risposta data 19.01.2018 - 23:02
fonte
1

Tutti e tre gli attacchi utilizzano canali laterali in cui l'esecuzione speculativa produce effetti collaterali che possono essere praticamente osservati.

Per prevenire questa classe di attacchi, i circuiti di esecuzione speculativi dovranno essere modificati per non produrre alcun cambiamento dello stato del processore osservabile (a parte i risultati temporanei che hanno prodotto). Ad esempio, il processore può eseguire un'istantanea di tutte le cache, i buffer e le tabelle prima dell'esecuzione speculativa e ripristinarli se il ramo non è stato preso. In alternativa, può impedire che l'effetto venga osservato rendendo l'accesso a tutte le linee della cache ugualmente lento per la prima volta dopo un errore di previsione del ramo, ad esempio.

Sfortunatamente, qualsiasi correzione comporterà un grande cambiamento rispetto ai progetti e alle metodologie attuali del processore e probabilmente annullerà molti dei vantaggi della previsione dei rami e dell'esecuzione speculativa.

    
risposta data 19.01.2018 - 20:06
fonte
-2

Bene, per quanto ne so, le misure a breve termine per attenuare le vulnerabilità Meltdown e Spectre in alcuni microprocessori in cui l'esecuzione speculativa ha effetti misurabili sui timing della cache (principalmente patch al microcode, sistemi operativi e qualsiasi applicazione che contenga limiti di affidabilità).

Quindi potrei dire che il modo corretto di impedire a QUALSIASI fuga di informazioni da una CPU / GPU / PSU sarebbe il paradigma "Ziploc". Il paradigma ziploc A.K.A Ziparadignloc è l'unico modo per evitare che venga sigillato correttamente una volta sigillato.

    
risposta data 19.01.2018 - 15:17
fonte

Leggi altre domande sui tag