Quali sono le implicazioni per la sicurezza di abilitare l'accesso ai contatori delle prestazioni su ARM Cortex A9?

3

Su un core ARM Cortex A9, è necessario eseguire istruzioni privilegiate in modo che il codice non privilegiato possa utilizzare i contatori delle prestazioni. Ad esempio con questo codice in linea GCC, che dovrebbe essere eseguito in un kernel:

/* Allow access to perf counter */
__asm__ __volatile__ ("\tMCR p15, 0, %0, C9, C14, 0\n" :: "r" (1));

/* Turn off counter overflow interrupts */
__asm__ __volatile__ ("\tMCR p15, 0, %0, C9, C14, 2\n" :: "r" (0x8000000f));

Se l'accesso non è abilitato, i programmi utente che tentano di accedere al contatore di cicli ricevono un'eccezione "istruzione illegale" e, naturalmente, i programmi utente non possono eseguire la sequenza di abilitazione.

La mia domanda è, c'è qualche motivo di sicurezza per proteggere i contatori?

Tutto quello che posso pensare è che in un ambiente di tipo informatico fidato, il codice non privilegiato potrebbe ottenere informazioni di temporizzazione molto precise sulle chiamate ad un certo codice sensibile alla sicurezza.

Voglio ottenere quante più informazioni possibile prima di aggiungere tale codice al codice di avvio di un kernel che i clienti integreranno nei prodotti finali che hanno requisiti di sicurezza rigorosi.

    
posta Kaz 16.04.2013 - 02:06
fonte

1 risposta

4

Informazioni sulla temporizzazione molto precise sono molto utili quando si effettuano attacchi di canale laterale . Alcuni esempi famosi (in condizioni di laboratorio) includono il furto di una chiave di crittografia utilizzata da qualche altro processo, su dati che non vediamo (né cleartext né testo cifrato). Questo può funzionare sulla rilevazione di errori di cache L1 o di previsione di salto (errata) nella CPU. Divieto di accesso al contatore del ciclo renderà tali attacchi più difficili (non impossibile, ma più difficile).

Se non si dispone di processi concorrenti potenzialmente ostili tra loro, in esecuzione sulla stessa CPU (uno scenario che include il caso di due macchine virtuali distinte che condividono lo stesso hardware), allora vi sono pochi motivi per disattivare il contatore di cicli .

    
risposta data 16.04.2013 - 03:49
fonte

Leggi altre domande sui tag