Attacco a canale laterale
Poiché gli attacchi a canale laterale si basano sulla relazione tra le informazioni emesse (trapelate) attraverso un canale laterale e i dati segreti, le contromisure si dividono in due categorie principali: (1) eliminare o ridurre il rilascio di tali informazioni e (2) eliminare la relazione tra le informazioni trapelate e i dati segreti, cioè rendere le informazioni trapelate non correlate, o piuttosto non correlate, ai dati segreti, tipicamente attraverso una qualche forma di randomizzazione del testo cifrato che trasforma i dati in un modo che può essere annullato dopo che l’operazione crittografica (ad esempio, la decrittografia) è completata.
Nella prima categoria, i display con schermatura speciale per ridurre le emissioni elettromagnetiche, riducendo la suscettibilità agli attacchi della TEMPESTA, sono ora disponibili in commercio. Il condizionamento e il filtraggio delle linee elettriche possono aiutare a scoraggiare gli attacchi di monitoraggio dell’alimentazione, sebbene tali misure debbano essere utilizzate con cautela, poiché anche piccole correlazioni possono rimanere e compromettere la sicurezza. Le custodie fisiche possono ridurre il rischio di installazione surrettizia di microfoni (per contrastare gli attacchi acustici) e altri dispositivi di micro-monitoraggio (contro gli attacchi di power-draw o thermal-imaging della CPU).
Un’altra contromisura (ancora nella prima categoria) è quella di inceppare il canale emesso con rumore. Ad esempio, un ritardo casuale può essere aggiunto per scoraggiare gli attacchi di temporizzazione, anche se gli avversari possono compensare questi ritardi facendo una media di più misurazioni (o, più in generale, utilizzando più misurazioni nell’analisi). Man mano che aumenta la quantità di rumore nel canale laterale, l’avversario deve raccogliere più misurazioni.
Un’altra contromisura sotto la prima categoria è quella di utilizzare software di analisi della sicurezza per identificare alcune classi di attacchi a canale laterale che possono essere trovati durante le fasi di progettazione dell’hardware sottostante stesso. Gli attacchi di temporizzazione e gli attacchi di cache sono entrambi identificabili attraverso alcune piattaforme software di analisi della sicurezza disponibili in commercio, che consentono test per identificare la vulnerabilità dell’attacco stesso, nonché l’efficacia della modifica architettonica per aggirare la vulnerabilità. Il metodo più completo per utilizzare questa contromisura consiste nel creare un ciclo di vita di sviluppo sicuro per l’hardware, che include l’utilizzo di tutte le piattaforme di analisi della sicurezza disponibili nelle rispettive fasi del ciclo di vita dello sviluppo hardware.
Nel caso di attacchi di temporizzazione contro bersagli i cui tempi di calcolo sono quantizzati in conteggi di ciclo di clock discreti, una contromisura efficace contro è quella di progettare il software per essere isocrono, cioè di eseguire in una quantità di tempo esattamente costante, indipendentemente da valori segreti. Questo rende gli attacchi di temporizzazione impossibili. Tali contromisure possono essere difficili da implementare nella pratica, poiché anche le singole istruzioni possono avere tempi variabili su alcune CPU.
Una contromisura parziale contro attacchi di potenza semplici, ma non attacchi di analisi di potenza differenziali, consiste nel progettare il software in modo che sia “PC-secure” nel “program counter security model”. In un programma PC-secure, il percorso di esecuzione non dipende da valori segreti. In altre parole, tutti i rami condizionali dipendono solo dalle informazioni pubbliche.(Questa è una condizione più restrittiva del codice isocrono, ma una condizione meno restrittiva del codice senza rami.) Anche se le operazioni moltiplicate traggono più potenza di NOP praticamente su tutte le CPU, l’utilizzo di un percorso di esecuzione costante impedisce a tali differenze di potenza dipendenti dall’operazione (differenze di potenza dalla scelta di un ramo rispetto a un altro) di perdere qualsiasi informazione segreta.Su architetture in cui il tempo di esecuzione delle istruzioni non dipende dai dati, un programma PC-secure è anche immune agli attacchi di temporizzazione.
Un altro modo in cui il codice può essere non isocrono è che le CPU moderne hanno una cache di memoria: l’accesso alle informazioni utilizzate raramente comporta una grande penalità di temporizzazione, rivelando alcune informazioni sulla frequenza di utilizzo dei blocchi di memoria. Il codice crittografico progettato per resistere agli attacchi della cache tenta di utilizzare la memoria solo in modo prevedibile (come accedere solo ai dati di input, output e programma e farlo secondo uno schema fisso). Ad esempio, le ricerche di tabelle dipendenti dai dati devono essere evitate perché la cache potrebbe rivelare a quale parte della tabella di ricerca è stato effettuato l’accesso.
Altre contromisure parziali tentano di ridurre la quantità di informazioni trapelate da differenze di potenza dipendenti dai dati.Alcune operazioni utilizzano la potenza correlata al numero di 1 bit in un valore segreto.L’utilizzo di un codice a peso costante (come l’utilizzo di Fredkin gates o la codifica dual-rail) può ridurre la perdita di informazioni sul peso di Hamming del valore segreto, anche se è probabile che le correlazioni sfruttabili rimangano a meno che il bilanciamento non sia perfetto. Questo “design bilanciato” può essere approssimato nel software manipolando insieme i dati e il loro complemento.
Diverse “CPU sicure” sono state costruite come CPU asincrone; non hanno alcun riferimento di temporizzazione globale. Mentre queste CPU erano destinate a rendere più difficili gli attacchi di temporizzazione e potenza, ricerche successive hanno rilevato che le variazioni di temporizzazione nei circuiti asincroni sono più difficili da rimuovere.
Un tipico esempio della seconda categoria (decorrelazione) è una tecnica nota come accecamento. Nel caso di RSA decifratura con segreto esponente d {\displaystyle d}
e corrispondente di crittografia esponente e {\displaystyle e}
e modulo m {\displaystyle m}
la tecnica si applica come segue (per semplicità, il sistema modulare di riduzione m è omesso nelle formule): prima di decifrazione, che è, prima di calcolare il risultato di y d {\displaystyle y^{d}}
per un dato testo cifrato y {\displaystyle y}
, il sistema sceglie un numero casuale r {\displaystyle r}
e crittografa con esponente pubblico e {\displaystyle e}
per ottenere r e {\displaystyle r^{e}}
. Quindi, la decodifica viene fatta sul ⋅ r e {\displaystyle y\cdot r^{e}}
per ottenere ( y ⋅ r ) d = y d ⋅ r ⋅ d = y d ⋅ r {\displaystyle {(y\cdot r^{e})}^{d}=y^{d}\cdot r^{e\cdot d}=y^{d}\cdot r}
. Dal momento che la decifrazione del sistema scelto r {\displaystyle r}
, si può calcolare la sua inversa modulo m {\displaystyle m}
per annullare il fattore r {\displaystyle r}
il risultato e ottenere y d {\displaystyle y^{d}}
, il risultato effettivo della decifrazione. Per gli attacchi che richiedono la raccolta di informazioni sul canale laterale da operazioni con dati controllati dall’attaccante, l’accecamento è una contromisura efficace, poiché l’operazione effettiva viene eseguita su una versione randomizzata dei dati, su cui l’attaccante non ha alcun controllo o addirittura conoscenza.
Una contromisura più generale (in quanto è efficace contro tutti gli attacchi del canale laterale) è la contromisura di mascheramento. Il principio di mascheramento è quello di evitare di manipolare qualsiasi valore sensibile y {\displaystyle y}
direttamente, ma piuttosto manipolare una condivisione di esso: un insieme di variabili (chiamate “azioni”) y 1 , . . . , y d {\stile di visualizzazione y_{1},…,y_{d}}
tale che y = y 1 ⊕ . . . ⊕ y d {\displaystyle y = y_{1} \ oplus …\oplus y_{d}}
(dove where {\displaystyle \oplus }
è l’operazione XOR). Un utente malintenzionato deve recuperare tutti i valori delle condivisioni per ottenere informazioni significative.
Recentemente, la modellazione di white-box è stata utilizzata per sviluppare una contromisura a livello di circuito generico a basso sovraccarico sia contro gli attacchi EM che contro gli attacchi power side-channel. Per ridurre al minimo gli effetti degli strati di metallo di livello superiore in un IC che agisce come antenne più efficienti, l’idea è di incorporare il core crittografico con un circuito di soppressione della firma, instradato localmente all’interno degli strati di metallo di livello inferiore, portando verso l’immunità agli attacchi di potenza e canale laterale EM.