L'obiettivo di questo lavoro è stato la realizzazione di un framework per l'applicazione di contromisure software, al fine di proteggere, da attacchi di tipo side-channel a rilevazione di consumo di potenza (Power Analysis), i dispositivi che eseguono algoritmi crittografici a chiave simmetrica. Si è scelto di implementare il framework in maniera modulare, realizzando le contromisure scelte in due moduli distinti. Un modulo implementa lo shuffling, cioè il riarrangiamento dell’ordine di esecuzione di operazioni parallele; l’altro modulo realizza il morphing, cioè la modifica delle istruzioni del codice binario. L'implementazione è stata realizzata estendendo Clang, compilatore C della suite di LLVM, esponendo allo sviluppatore che utilizza il framework nuovi attributi per il linguaggio C. L’integrazione con il codice da proteggere è basata sull’annotazione di funzioni e variabili tramite gli attributi implementati. Il framework è stato sottoposto a benchmark per la verifica prestazionale. Le piattaforme hardware scelte per l’esecuzione del benchmark appartengono a tre generazioni distinte di ARM, con instruction set ARMv5 e ARMv7. Il framework è pensato per un utente finale di tipo sviluppatore, non necessariamente esperto nel campo; gli obiettivi del framework, in termini di mantenimento di un livello accettabile delle performance, sono stati raggiunti su tutte le piattaforme hardware testate.
Applicazione automatizzata di contromisure ad attacchi side-channel basati sull'analisi del consumo di potenza per primitive crittografiche a chiave simmetrica
FIDUCCIA, FRANCESCO
2013/2014
Abstract
L'obiettivo di questo lavoro è stato la realizzazione di un framework per l'applicazione di contromisure software, al fine di proteggere, da attacchi di tipo side-channel a rilevazione di consumo di potenza (Power Analysis), i dispositivi che eseguono algoritmi crittografici a chiave simmetrica. Si è scelto di implementare il framework in maniera modulare, realizzando le contromisure scelte in due moduli distinti. Un modulo implementa lo shuffling, cioè il riarrangiamento dell’ordine di esecuzione di operazioni parallele; l’altro modulo realizza il morphing, cioè la modifica delle istruzioni del codice binario. L'implementazione è stata realizzata estendendo Clang, compilatore C della suite di LLVM, esponendo allo sviluppatore che utilizza il framework nuovi attributi per il linguaggio C. L’integrazione con il codice da proteggere è basata sull’annotazione di funzioni e variabili tramite gli attributi implementati. Il framework è stato sottoposto a benchmark per la verifica prestazionale. Le piattaforme hardware scelte per l’esecuzione del benchmark appartengono a tre generazioni distinte di ARM, con instruction set ARMv5 e ARMv7. Il framework è pensato per un utente finale di tipo sviluppatore, non necessariamente esperto nel campo; gli obiettivi del framework, in termini di mantenimento di un livello accettabile delle performance, sono stati raggiunti su tutte le piattaforme hardware testate.File | Dimensione | Formato | |
---|---|---|---|
final_document.pdf
accessibile in internet per tutti
Descrizione: Thesis Text
Dimensione
770.11 kB
Formato
Adobe PDF
|
770.11 kB | Adobe PDF | Visualizza/Apri |
I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.
https://hdl.handle.net/10589/101986