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.
BARENGHI, ALESSANDRO
PELOSI, GERARDO
ING - Scuola di Ingegneria Industriale e dell'Informazione
18-dic-2014
2013/2014
Tesi di laurea Magistrale
File allegati
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.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/101986