L'accesso alla memoria lo è Estremamente lento. Affinché le CPU funzionino a una velocità accettabile, è necessario “prevedere” cosa accadrà A sono i dati necessari: il programma che legge gli indirizzi 0x001, 0x002 e 0x003 probabilmente avrà bisogno anche di 0x004 e 0x005 nel prossimo futuro, quindi puoi effettivamente leggerli dalla memoria.
Il vantaggio è che l'accesso a 0x004 è molto più veloce, quindi la CPU non deve attendere la memoria. Lo svantaggio è che l'accesso a 0x004 è più veloce, quindi un utente malintenzionato può cronometrare il programma e concludere che il programma utilizza i valori segreti 0x002 e 0x003.
I cosiddetti “attacchi del canale laterale” sono noti da molto tempo. La soluzione abituale è scrivere intenzionalmente il codice in modo inefficiente, in modo che abbia sempre lo stesso tempo di esecuzione ed è impossibile per la CPU prevedere quali dati siano necessari. Ciò rende impossibile un attacco temporale.
Il problema che Apple ha ora è che la sua CPU cerca di essere troppo “intelligente”: invece di guardare solo agli accessi alla memoria, guarda anche Date In memoria: in futuro probabilmente verrà utilizzato qualcosa di simile a un indirizzo di memoria come indirizzo di memoria, in modo che i dati possano effettivamente essere caricati.
In questo attacco, l'aggressore fornisce valori appositamente specificati al programma vittima, facendo credere alla CPU che il valore intermedio assomigli a un indirizzo di memoria. Scegliendo correttamente i valori è possibile leggere bit per bit la chiave segreta in base al tempo di calcolo.
Questo probabilmente non può essere risolto nel firmware, poiché è un difetto fondamentale nella progettazione del chip. In linea di principio lo è tutti Il codice crittografico in esecuzione sul SoC Apple è vulnerabile: il documento spiega che l'attacco funziona anche con una connessione SSL standard a un server web, ad esempio, ma due applicazioni in esecuzione sullo stesso dispositivo possono attaccarsi anche a vicenda. Finché c'è solo uno Una forma di crittografia riguarda i dati provenienti da terzi e un attacco è possibile.
La “soluzione” è riscrivere il codice in modo che la CPU non possa vedere i dati come indirizzo di memoria, essenzialmente ingannando la CPU. Questo è “accecante”. Oppure puoi eseguirlo su una CPU che non dispone di un indicatore “intelligente”.
[Reactie gewijzigd door laurxp op 21 maart 2024 23:30]