ziali o che consenta di guadagnare l’accesso ad una chiave segreta, viene detto attacco.
Fino a pochi decenni fa, gli attacchi erano ideati e indirizzati alla sola strut- tura matematica sottostante gli algoritmi. Si classificano ad esempio attacchi in grado di recuperare una chiave segreta dati una o pi`u coppie di testo cifrato con il corrispondente testo in chiaro, oppure ipotizzando di avere la possibilit`a di ottenere il cifrato di qualunque testo in chiaro, e di seguito con altre ipotesi di questo tipo.
Pi`u recentemente, un altro tipo di attacco sta guadagnando successo. Si tratta di attacchi che ipotizzano un accesso fisico ad un dispositivo che esegua operazioni crittografiche, contenendo al suo interno i segreti necessari. Si consi- dera di non essere in grado di avere un accesso diretto a tali segreti. Gli attacchi di tipo side-channel non considerano solo la forma matematica di un algoritmo crittografico, ma anche la sua specifica implementazione, e per raggiungere lo scopo vengono usati canali di comunicazione con il dispositivo diversi da quelli ufficialmente pensati in fase di progettazione.
Ad esempio, si considerano canali di accesso secondari ad un dispositivo il suo consumo di potenza o la radiazione da esso emessa. Un attacco pu`o svilupparsi dal monitoraraggio di alcune di queste quantit`a interessanti.
Un’altra via percorribile `e quella di manipolare in modo anomalo l’interfaccia fisica del dispositivo. Per esempio inviando glitch sul segnale di clock, o spike sul segnale di alimentazione. Altri metodi di questo tipo sono riportati nel capitolo 3. L’obiettivo di queste tecniche `e di ottenere risultati sbagliati a causa delle condizioni anomale forzate sul dispositivo. L’analisi di questi risultati pu`o portare a scoprire la chiave segreta. Un semplice esempio `e riportato in sezione 3.4.
Per la realizzazione di attacchi basati sui guasti si utilizzano modelli per astrarre dal livello fisico del dispositivo in esame. Una spiegazione dei tipi di questi modelli si trova in sezione 3.3.
Inoltre, una lista di attacchi noti a sistemi basati su curve ellittiche `e ripor- tata nel capitolo 4.
A.4
Attacco Proposto
L’attacco che proponiamo appartiene alla categoria degli attacchi basati sui gua- sti. Considereremo un modello di guasto semplice ed efficace, molto studiato in letteratura: il bit flip. Supporremo cio`e che durante lo svolgimento delle com- putazioni, il dispositivo sotto attacco utilizzi una variabile con un bit cambiato rispetto al valore corretto.
L’attacco procede dall’iniezione del guasto e si articola successivamente in al- cune fasi di realizzazione. Si pu`o delineare la seguente struttura per la procedura di attacco:
• immersione del dispositivo in ambiente controllato al fine di costringerlo ad operare in condizioni di funzionamento anomale,
• esecuzione dell’algoritmo di firma digitale da parte del dispositivo in con- dizioni di guasto,
• identificazione all’interno della collezione dei risultati derivanti dal tipo di guasto previsto,
• taratura e utilizzo di una procedura di recupero della chiave segreta a partire dai risultati ottenuti al passo precedente.
La presente descrizione si concentra sugli ultimi due passi esposti. I metodi per iniettare guasti sono infatti ampiamente studiati in letteratura e, finch`e valgono le ipotesi di bit flip, i dettagli del metodo utilizzato non sono importanti al fine delle procedure seguenti.
Sono state identificate due posizioni, all’interno dell’algoritmo di genera- zione di una firma digitale ECDSA, per le quali un guasto provoca la riuscita dell’attacco. Precisamente, `e necessario che il guasto colpisca una delle due mol- tiplicazioni modulari che compongono il calcolo del valore s della firma digitale, come descritto in sezione 5.3.
Data la natura piuttosto semplice del guasto, `e possibile analizzare come l’errore nella computazione si propaga durante l’esecuzione dell’algoritmo. Si ottiene che il bit sbagliato provoca l’addizione di un termine di tipo 2¯b
¯ ı al
risultato s correttamente corrispondente al valore r precedentemente calcolato. In questa scrittura, b¯ırappresenta una parola di uno degli operandi partecipanti
alla moltiplicazione modulare. Maggiori dettagli sulla propoagazione dell’errore sono esposti in sezione 5.4. A seconda della posizione in cui il guasto avviene, questa parola potrebbe essere una parola del valore intermedio (e + rd) oppure una parola della chiave segreta d. La firma cos`ı ottenuta `e quindi costituita dalla coppia (r, ˜s) e ovviamente non `e valida, ovvero non supera il test dell’algoritmo di verifica.
Se il guasto `e avvenuto in questo modo, `e possibile recuperare la parola b¯ı
attraverso una procedura di ricerca esaustiva, oppure attraverso una procedura adattata dall’algoritmo per il calcolo del logaritmo discreto su curve ellittiche. Si vedano a questo scopo le sezioni 5.5 e 5.6.
Le procedure di ricerca appena citate si applicano ad una firma guastata e consentono di stabilire se il guasto `e avvenuto nel modo cercato oppure no, oltre a trovare la parola b¯ı in caso positivo. Per portare l’attacco a successo, questa
ricerca va ripetuta per una quantit`a di firme maggiore di uno. L’ordine di gran- dezza di tale valore dipende dalla lunghezza della chiave segreta, dalla lunghezza delle parole del dispositivo utilizzato. Per sistemi tipici possiamo comunque in- dicare un numero di firme necessario tra 10 e 100. Il valore preciso dovrebbe invece essere trovato durante l’esecuzione delle ricerche dipendentemente dai risultati trovati, se si intende ottimizzare le prestazioni.
La successiva parte dell’attacco consiste nell’ottenere la chiave segreta a par- tire dalle singole parole ritrovate per ogni firma guasta. Per questo la procedura `
e diversa a seconda che il guasto abbia colpito l’una o l’altra moltiplicazione mo- dulare. Comunque la ricerca precedente `e in grado di evidenziare a posteriori in quale caso ci si trovi.
Nel caso le parole trovate corrispondano alle parole della chiave segreta sar`a necessario soltanto trovare la permutazione giusta di tali parole per ricostruire la chiave. Ci`o pu`o essere effettuato per tentativi esaustivi, ma il costo dell’ope- razione `e piuttosto elevato se la chiave `e composta di pi`u di 16 parole. Abbiamo perci`o trovato il modo di ottenere degli indizi dai risultati della procedura di ricerca al fine di limitare notevolmente il numero di tentativi da effettuare. In