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
Scarica

sviluppo dell`algoritmo di crittografia RC6 a 128 bit