Analisi di gestori di chiavi crittografiche

Stampa

Ingegneria Informatica

CRYPTOGRAPHIC KEYSTORES ANALYSIS
ANALISI DI GESTORI DI CHIAVI CRITTOGRAFICHE

Questo elaborato è frutto di un tirocinio svolto presso l'azienda Wincor Nixdorf International GmbH di Paderborn. L'attività è stata finanziata dalla Fondazione Università di Mantova nell'ambito della partnership stretta di recente tra Kreis di Paderborn e Provincia di Mantova.
Ho lavorato presso il Platform Software Department della Banking Division di Wincor Nixdorf per un periodo di tre mesi da maggio a luglio dell'anno corrente.
Il compito principale assegnatomi è consistito nell'analisi di gestori di chiavi crittografiche.
In informatica un gestore di chiavi crittografiche è da considerarsi un luogo sicuro nel quale immagazzinare parametri crittografici come certificati e chiavi per crittografia simmetrica e asimmetrica. PKCS#12  sviluppato da RSA Laboratories è al momento l’unico gestore di chiavi standard; tuttavia ha ricevuto diverse critiche[6] a causa della sua complessità. Java Cryptography Architecture fornisce una più semplice definizione dell’interfaccia di un gestore di chiavi. Tale interfaccia è implementata diversamente da vari provider crittografici tra questi figura il provider open source Bouncy Castle.
Il mio lavoro è consistito nell’analisi dei due gestori di chiavi BKS e UBER implementati all’interno delle Bouncy Castle Java APIs. Il loro codice sorgente è stato esaminato minuziosamente in modo da descriverne la struttura, le funzionalità e le vulnerabilità. Infatti durante l’analisi sono stati trovati due errori importanti all’interno delle Bouncy Castle Java APIs.
Questi errori affliggono direttamente il gestore di chiavi BKS: uno, il più grave, compromette totalmente l’autenticità del gestore di chiavi. L’altro porta a un congelamento dell’applicazione nel caso in cui essa tenti di caricare un gestore di chiavi opportunamente modificato allo scopo.
Al fine di semplificare la visualizzazione della struttura di UBER è stata sviluppata un applicazione che permette di mostrare informazioni sul gestore di chiavi e sui parametri in esso immagazzinati. Tali dati possono essere visualizzati tramite due viste differenti: una, più a basso livello, strutturata come un visualizzatore esadecimale nel quale vengono evidenziati i vari campi del gestore di chiavi. L’altra consiste in una vista dettagliata dei vari campi.
Successivamente è stato sviluppato uno strumento per la falsificazione di gestori di chiavi BKS capace di sfruttare la vulnerabilità nella procedura di autenticazione degli stessi.
Concludendo, l’esaustiva descrizione dei gestori di chiavi UBER e BKS permetterà, in caso di necessità, una semplice riscrittura degli stessi in un altro linguaggio di programmazione.
Inoltre questo studio ha condotto alla scoperta di due importanti errori all’interno di una ben nota libreria. Indicare tali errori agli sviluppatori di Bouncy Castle, specificando precisamente la riga e la classe coinvolta ha permesso una rapida risoluzione di uno degli errori e confermato la rapidità di risoluzione di errori tipica del software open source.

di ing. EDOARDO SCAGLIA (autore della tesi)
Relatore della tesi: Prof. Ing. Marco Ferretti