Implementazione hardware dell’algoritmo MD5, tramite EDK, per sistemi riconfigurabili Relatore: Prof. Fabrizio Ferrandi Correlatore: Ing. Marco Domenico Santambrogio Antonio Canclini Matr. #657338 Maurizio Sala Matr. #659392
Antonio Canclini – Maurizio Sala Sommario Introduzione: FPGA e introduzione all’hashing Descrizione algoritmo MD5 Realizzazione VHDL Importazione in una architettura in EDK – Device driver Prestazioni, test e simulazioni Conclusioni e lavori futuri Antonio Canclini – Maurizio Sala
FPGA FPGA Field Programmable Gate Array Utilizzo per test e prototipi Miglior compromesso tra costi e prestazioni, garantendo buona flessibilità Blocco di input/output Blocco logico configurabile Interconnessione Antonio Canclini – Maurizio Sala
Crittografia e Hashing L’Hashing è una particolare tecnica di crittografia: Permette di garantire l’integrità dei dati Utilizzata nella firma digitale L’algoritmo MD5 è un esempio di funzione di hashing Messaggio di lunghezza arbitraria Message digest di n bit ALGORITMO Antonio Canclini – Maurizio Sala
Descrizione algoritmo MD5 Riceve in ingresso una stringa di lunghezza arbitraria e calcola un digest di 128 bit Strutturato in 5 passi, descritti nella specifica RFC 1321 Antonio Canclini – Maurizio Sala
OPERAZIONE CRITICA IN TERMINI DI FREQUENZA Realizzazione in VHDL Ottimizzazione della frequenza di lavoro di un’implementazione esistente dell’algoritmo MD5 Ricerca del percorso critico OPERAZIONE CRITICA IN TERMINI DI FREQUENZA Antonio Canclini – Maurizio Sala
Antonio Canclini – Maurizio Sala Realizzazione in VHDL La somma può essere eseguita in modo parallelo: Mediante l’utilizzo di più processi VHDL, e sincronizzando in modo opportuno le operazioni svolte dai processi add1 <= a + temp; add3 <= add1 + add2; add2 <= k + t(i); Antonio Canclini – Maurizio Sala
Realizzazione in VHDL Implementazione dei 4 round dell’algoritmo MD5: I processi per il calcolo delle somme vengono replicati 4 volte SEGNALE round : MANTIENE L’INFORMAZIONE SUL ROUND IN ESECUZIONE SEGNALE nsw : CONTATORE CHE REGOLA L’ESECUZIONE DI UN ROUND Antonio Canclini – Maurizio Sala
Antonio Canclini – Maurizio Sala Realizzazione in VHDL AGGIORNAMENTO DEI SEGNALI PER IL CONTROLLO DEL FLUSSO DI ESECUZIONE PASSAGGIO DEI VALORI DEI REGISTRI DAL ROUND 3 AL ROUND 4 Antonio Canclini – Maurizio Sala
Importazione in una architettura EDK PROCESSORE POWER-PC BUS OPB COMPONENTE REALIZZATO Antonio Canclini – Maurizio Sala
Importazione in una architettura EDK Interfacciamento del componente sul bus OPB: In modalità slave Mediante il modulo PSelect COMPONENTE REALIZZATO PERIPHERAL SELECT: SI OCCUPA DELLA DECODIFICA DEGLI INDIRIZZI PRESENTI SUL BUS OPB Antonio Canclini – Maurizio Sala
Importazione in una architettura EDK Gestione della memoria mediante il meccanismo di memory mapping 64 BYTE DI MEMORIA DEDICATI ALLA PARTE DI MESSAGGIO DA ELABORARE INDIRIZZO DI START, INDICA IL COMPLETAMENTO DELLA FASE DI INIZIALIZZAZIONE E L’INIZIO DELL’ALGORITMO INDIRIZZI DEDICATI AGLI MD BUFFER Antonio Canclini – Maurizio Sala
Antonio Canclini – Maurizio Sala Device driver Funzioni del driver: Accesso alla memoria (lettura/scrittura registri) Gestione interrupt Antonio Canclini – Maurizio Sala
Antonio Canclini – Maurizio Sala Prestazioni Confronto di prestazioni tra il componente esistente e la nuova implementazione (rispetto al round 1) Prestazioni del componente realizzato: Antonio Canclini – Maurizio Sala
Antonio Canclini – Maurizio Sala Test e simulazioni Simulazione con Modelsim Utilizzo di un testbench Casi di test ufficiali forniti nella specifica RFC 1321 MESSAGE DIGEST FINE ELABORAZIONE COMUNICATA DAL SEGNALE DI INTERRUPT Antonio Canclini – Maurizio Sala
Conclusioni e lavori futuri L’implementazione preesistente è stata migliorata sia in termini di frequenza che dal punto di vista dell’occupazione su scheda Lavori futuri: impiego del DMA (Direct Memory Access) per aumentare la velocità di esecuzione delle operazioni di accesso alla memoria Antonio Canclini – Maurizio Sala