Attacchi Side-Channel

Tempo di lettura: 6 minuti

Gli attacchi a canale laterale utilizzano fughe non intenzionali di informazioni riguardanti il consumo di energia, il tempo di esecuzione o le radiazioni elettromagnetiche per compromettere la sicurezza di un dispositivo o del codice utilizzato.

Il primo attacco di questo tipo viene attuato nel 1996, quando Kocher ha trovato, analizzando il tempo di esecuzione di sistemi crittografici, il modo di estrarre informazioni segrete relative a Diffie-Hellman e RSA.

Nel corso successivo degli anni si è assistito a diverse implementazioni di questi attacchi, tra cui:

  • Timing attack;
  • Power attacks;
  • Cache attack;
  • Different fault attack.

Timing Attacks

In questo attacco, l’obiettivo è compromettere un sistema crittografico analizzando il tempo di esecuzione dell’algoritmo. L’affidabilità dell’attacco si basa sul fatto che molti algoritmi sono dipendenti dai dati immessi e studiandone molteplici casi con input differenti è possibile estrarre informazioni in base alle statistiche ottenute.

Due paper che lo descrivono dettagliatamente sono Cache-timing attacks on AES (2005, Bernstein) e Timing attacks made pratical (2015, BlackHat Conf.)

Power Attacks

Come si evince la titolo, in questo caso viene analizzato il consumo di energia di un dispositivo crittografico (come smart-card o circuiti integrati) per cercare di estrapolare informazioni rilevanti. È la tecnica meno invasiva e si divide principalmente in due casi principali:

  • Simple Power Analysis (SPA):  si basa sul presupposto che differenti operazioni hanno un consumo differente, in esse si analizza il grafico del consumo di energia;
  • Differential Power Analysis (DPA): oltre che basarsi sul presupposto di SPA, vengono immessi e analizzati diversi dati eseguendo la stessa operazione.

Un ottimo documento che spiega passaggio per passaggio l’attacco lo si può trovare su Github, mentre su Youtube un ricercatore mostra l’ottenimento di una chiave AES in meno di due minuti.

Cache attacks

In questo caso la vittima è l’architettura del processore e come vengono implementate le richieste tra la memoria e la CPU.  Il primo attacco è stato attuato da Osvik nel 2005 il quale riuscì a rivelare i pattern di accesso di AES. Nel corso degli anni sono stati implementati diverse tipologie di questo attacco tra cui:

  • Evict+Time: l’obiettivo è manipolare la cache prima di ogni cifratura e poi osservare il tempo di esecuzione della cifratura;
  • Prime+Probe: in questo caso prima si riempe la cache con dati conosciuti dall’attaccante, poi si esegue la cifratura ed infine si analizzano i cache hit e cache miss;
  • Flush+Reload: introdotto da Yarom nel 2013, colpisce la cache L3 e sfrutta una vulnerabilità nei processore Intel x86 monitorando gli accessi nelle pagine condivise in memoria;
  • Flush+Flush.

Conclusioni

Per chi fosse interessato ad approfondire l’argomento consiglio il corso su Coursera (gratuito), l’ho seguito poco tempo fa e mi ha fatto capire molte cose altrimenti non chiare. Nei prossimi articoli andrò ad approfondire l’ultima tipologia di attacchi, spiegando in maniera approfondita l’effettivo funzionamento degli stessi.