Politecnico di Milano Realizzazione di un componente per un sistema dedicato: sviluppo dell’algoritmo di crittografia RC6 a 128 bit Relatore: Prof. Fabrizio Ferrandi Correlatore: Ing. Marco Domenico Santambrogio Diego Nichetti Matr. #651159 Stefano Orlandi Matr. #651709 Sommario • Introduzione • FPGA e componenti delle Architetture • Metodologia di progetto • Presentazione dell’algoritmo: RC6 • Implementazione dell’IP Core • Test Effettuati • Conclusioni e lavori futuri Diego Nichetti – Stefano Orlandi 2 Introduzione - FPGA • FPGA (Field Programmable Gate Array) • Miglior compromesso per quanto riguarda flessibilità, costo ed efficienza. • Impiegati per la prototipazione (rapida verifica funzionalità dispositivi HW) • Composti da CLB Blocchi logici configurabili Reti configurabili Diego Nichetti – Stefano Orlandi 3 Introduzione – Componenti delle Architetture • Architetture • Componenti delle Architetture • Processori • Periferiche e IP Core • Bus • Core Connect (IBM) • PLB (Processor Local Bus) • OPB (On-Chip Peripheral Bus) • DCR (Device Control Register) Diego Nichetti – Stefano Orlandi 4 Metodologia di progetto • Passaggio dal Codice C alla descrizione VHDL • Ottimizzazione dello spazio: • Componenti per iterazioni: evitare il seguente problema • Ottimizzazione della frequenza: • Utilizzo di macchine a stati finiti: diminuzione del percorso critico Diego Nichetti – Stefano Orlandi 5 Metodologia di progetto • Fasi di progettazione Verifica del progetto File NGC Sorgenti VHDL Verifica del design Simulazione Comportamentale Sintesi Traduzione (NGD build) Simulazione Funzionale File NGD MAP Analisi Statica delle Temporizzazioni File NCD Implementazione del progetto VHDL PAR File NCD Diego Nichetti – Stefano Orlandi Simulazione Timing 6 Presentazione dell’algoritmo • Caratteristiche dell’RC6 (Rivest Cipher 6) • Algoritmo di crittografia simmetrica successore dell’RC5 • Parametrico rispetto a w, r, b • Introduce: • Utilizza la rotazione fissa (indipendenza dall’RC5) • Impiega la moltiplicazione intera come operazione primaria • Composto da due sottoalgoritmi • Algoritmo Key Schedule • Algoritmo Crypt Diego Nichetti – Stefano Orlandi 7 Presentazione dell’algoritmo • Algoritmo Key schedule Rotazione fissa Diego Nichetti – Stefano Orlandi 8 Presentazione dell’algoritmo • Algortimo Crypt Moltiplicazione intera Diego Nichetti – Stefano Orlandi 9 Implementazione dell’IP Core • Struttura dell’IP Core Operazioni dell’algoritmo RC6 Interconnessioni tra PSelect e rc6_encoder_core interfaccia di collegamento con il bus Diego Nichetti – Stefano Orlandi 10 Implementazione dell’IP Core • Memoria dell’IP Core Chiave Utente Parola da crittare Registri-comando Diego Nichetti – Stefano Orlandi 11 Implementazione dell’IP Core • Algoritmo key schedule Contatore iterazioni Diego Nichetti – Stefano Orlandi 12 Implementazione dell’IP Core • Struttura della descrizione VHDL dell’algoritmo key schedule Inizializzazione Macchina a stati finiti Avvio crypt Diego Nichetti – Stefano Orlandi 13 Implementazione dell’IP Core • Macchina a stati finiti per l’algoritmo Key Schedule Indicatore di stato Stati Necessario per case-when Diego Nichetti – Stefano Orlandi 14 Implementazione dell’IP Core • Algoritmo Crypt Diego Nichetti – Stefano Orlandi 15 Implementazione dell’IP Core • Risultati ed analisi della sintesi • Temporizzazioni • Occupazione FPGA Diego Nichetti – Stefano Orlandi 16 Implementazione dell’IP Core • Risultati ed analisi della sintesi • Riconoscimento macchina a stati finiti per crypt Diego Nichetti – Stefano Orlandi 17 Implementazione dell’IP Core • Funzioni del driver • Scrittura sui registri • Avvio dell’algoritmo • Lettura dei risultati Diego Nichetti – Stefano Orlandi 18 Test effettuati • Test della specifica RC6 36 a5 c3 8f rA Diego Nichetti – Stefano Orlandi 19 Conclusioni e lavori futuri • La moltiplicazione intera costituisce il collo di bottiglia dell’implementazione • Lavoro futuro: crittazioni di grandi moli di dati in sequenza con l’impiego di DMA (Direct Memory Access). Diego Nichetti – Stefano Orlandi 20