REALIZZAZIONE DI UN COMPONENTE PER UN SISTEMA DEDICATO: CODIFICA AES A 512 BIT

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "REALIZZAZIONE DI UN COMPONENTE PER UN SISTEMA DEDICATO: CODIFICA AES A 512 BIT"

Transcript

1 POLITECNICO DI MILANO FACOLTÀ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA REALIZZAZIONE DI UN COMPONENTE PER UN SISTEMA DEDICATO: CODIFICA AES A 512 BIT Relatore: Correlatore: Prof. Fabrizio FERRANDI Ing. Marco Domenico SANTAMBROGIO Tesi di Laurea di: Roberto Palazzo Matricola n Davide Pavoni Matricola n ANNO ACCADEMICO

2

3 Alla mia famiglia Davide Alla mia famiglia Roberto

4

5 Indice Introduzione 1 1 Panoramica su FPGA, Strumenti di Sviluppo e Algoritmi Crittografici e Applicazioni Chiave Privata Lo spazio delle chiavi Chiave Pubblica AES come nuovo standard Applicazioni di AES SSL e TLS i FPGA Struttura delle FPGA Tipi di FPGA Breve introduzione al dispositivo usato IBM Core Connect Introduzione agli strumenti di sviluppo ISE ModelSim EDK Specifica dell AES con blocchi in ingresso di 512 bit Specifica Originale Introduzione iii

6 2.1.2 Definizioni Notazione e Convenzioni Richiami di Algebra dei Campi Finiti Specifica dell algoritmo Modifiche apportate alla specifica originale Estensione con macro-blocchi in ingresso da 512 bit Implementazione dell AES Prima implementazione Macchine a stati Suddivisione dell AES Commenti sull implementazione Interfaccia dell AES core Funzioni Simulazione dell AES core Inserimento dell AES in un architettura hardware Interfacciamento con il Bus IPIF Segnali dell IPIC Parametri dell IP Core Registri dell IP Core Mappatura della memoria Struttura dell IP Core Inserimento dell AES nell architettura Driver Funzioni del Driver Interrupt Struttura delle directory dell IP Core Risultati Sperimentali Occupazione della scheda

7 5.2 Temporizzazioni Test Effettuati Descrizione dei test Valutazione delle Prestazioni Confronto con un implementazione software Conclusioni e Sviluppi futuri 93 Bibliografia 97

8

9 Elenco delle figure 1.1 Schema di comunicazione con crittografia simmetrica Schema a Chiave pubblica con confidenzialità Schema a Chiave pubblica con autenticazione e integrità Struttura Riconfigurabile Blocco Logico Base Blocco Logico Xilinx Serie Slice Virtex II Pro Menù con le funzionalità di Project Navigator Schermata iniziale di ModelSim Finestra Signals di ModelSim Finestra Wave di ModelSim Platform Studio Funzioni di Platform Studio Ingresso, Stato e Uscita S-box ShifRows MixColumns Macrostruttura della periferica Estratto del file di Report in cui viene riconosciuta una Macchina a Stati Porte dell AES core vii

10 3.3 Interfaccia dell AES core Sub Bytes Finite Field Multiplication Cifratura Simulazione dell AES core (inizio) Simulazione dell AES core (fine) Macchina a stati dell AES Schema di un IP Core connesso a bus PLB che fa uso di IPIF Reference Designs Forniti dalla Xilinx Schema entità del plb core ssp1 ref Segnali utilizzati dell IPIC Parametri dell IP Core Estratto VHDL scrittura dei registri interni Memory Map dell IP Core Interfaccia entità Aes512 userlogic Schema a blocchi IP Core Descrizione VHDL che pilota il segnale dell IPIC IP2Bus Ack Estratto temporizzazione (IPIC) di una slave reading corretta Architettura dopo l inserimento dei vari blocchi Schema collegamento segnali gestione interrupt Struttura del file aes512.h Implementazione della funzione per scrivere i registri della periferica Implementazione C della routine di interrupt Struttura delle directory e file dell AES Elenco dei componenti logici estratti dall HDL Synthesis per l IP Core AES Occupazione Post Map Vincoli temporizzazioni Estratto log di test

11 5.5 Risultato implementazione software

12

13 Introduzione L uomo ha da sempre avuto la necessità di trasmettere informazioni sensibili in modo tale che apparissero incomprensibili a chiunque tranne che al destinatario legittimo del messaggio. Al fine di dare una soluzione a questa innata esigenza dell essere umano è nata, e si è sviluppata nel corso dei secoli, la crittografia. La crittografia è indubbiamente una scienza antichissima e la storia riporta numerosissimi casi di utilizzo delle tecniche crittografiche che, in alcune circostanze, si sono rivelate essere un fattore determinante capace ad esempio di cambiare il corso di una guerra. Uno dei più antichi e celebri cifrari che si ricorda è il cosiddetto Cifrario di Cesare. Il sistema che usava il grande condottiero romano potrebbe oggi apparire addirittura ridicolo, ha solo una chiave possibile, tuttavia poteva essere più che sufficiente per le esigenze del tempo [20]. Nel secolo scorso, la seconda guerra mondiale è stata anche uno scontro tra i cifrari elaborati dalle macchine elettromeccaniche dei diversi schieramenti. Celebre per la sua efficacia e resistenza è la macchina tedesca Enigma, la cui decrittazione ha mobilitato studiosi del calibro di Alan Turing ed ha persino portato alla realizzazione del primo calcolatore elettronico della storia, che però è rimasto a lungo coperto da segreto militare al termine del conflitto. C è anche chi afferma che le sorti della guerra avrebbero potuto essere molto differenti senza questa vittoria crittografica alleata [21]. Lo sviluppo delle tecniche crittografiche è stato determinato dall eterna lotta a distanza tra Crittografi e Crittoanalisti, ovvero tra chi creava nuovi metodi di protezione dell informazione e chi cercava di violarli. 1

14 Introduzione Nel mondo moderno la crittografia ha un ruolo sempre più di primo piano e sta sempre più entrando nella nostra vita di tutti i giorni. La crittografia è probabilmene l unico metodo per garantire la riservatezza nell era delle comunicazioni digitali. Un forte impulso allo sviluppo di nuovi algoritmi crittografici è stato dato dall esplosione dell utilizzo di Internet. Per le caratteristiche su cui si basa l infrastruttura della rete, infatti, le informazioni che viaggiano tra due computer attraversano un certo numero di router e host intermedi utilizzando dei canali di trasmissione pubblici. Si comprende che chiunque sia maleintenzionato può ad esempio facilmente sniffare i pacchetti di dati in transito e risalire alla comunicazione tra i due host. Altri esempi di utilizzo della crittografia sono relativi alla protezione delle comunicazioni delle rete di telefonia cellulare GSM per via della natura pubblica intrinseca del mezzo trasmissivo. In questo contesto sono stati sviluppati diversi sistemi crittografici pubblici che hanno cercato di imporsi come standard a livello mondiale in modo tale da cercare di garantire l interoperabilità dei sistemi. Il primo ad essere standardizzato fu il DES (Data Encryption Standard) nel Tuttavia nel 1998 ne fu dimostrata la vulnerabilità e l inadeguatezza di fronte alle minacce possibili con la tecnologia attuale. Nel 2001 è stato approvato il documento di specifica del successore del DES: AES (Advanced Encryption Standard). AES è stato scelto tra una rosa di possibili algoritmi candidati in modo tale da garantire sufficiente resistenza agli attacchi crittoanalitici noti, in modo tale da rimanere valido ottimisticamente per mezzo secolo. L algoritmo scelto dall ente di standardizzazione americano è quello di Rijndael ed è stato progettato in modo tale da avere una implementazione efficiente sia se realizzata in hardware che in software. L obiettivo di questo lavoro di tesi, svoltosi presso il laboratorio di Micro Architetture del Politecnico di Milano, è quello di implementare un componente che esegua le operazioni di cifratura AES per un sistema dedicato. L algoritmo viene quindi scaricato nella parte programmabile (FPGA) di una scheda di sviluppo disponibile in laboratorio. In particolare il componente effettua una cifratura AES 2

15 Introduzione con chiave da 128 bit accettando in ingresso blocchi di dati da 512 bit alla volta come sarà meglio chiarito nel seguito. La tesi si divide in vari capitoli, ognuno dei quali descrive una parte del lavoro che è stato fatto. Nel capitolo 1 si darà una panoramica sui due principali tipi di algoritmi crittografici moderni e si tratteranno brevemente alcune possibili applicazioni dell AES; inoltre si parlerà in generale delle FPGA e degli strumenti software utilizzati durante il lavoro. Nel capitolo 2 verrà descritto l algoritmo che esegue la cifratura AES, così come è riportato nella specifica originale, e la sua estensione con blocchi in ingresso di 512 bit. Nel capitolo 3 verrà spiegato come è stata effettuata l implementazione dell algoritmo in un linguaggio di descrizione hardware, i principali problemi riscontrati e le eventuali scelte progettuali che sono state fatte; inoltre alla fine si riporterà un test fatto con un software di simulazione necessario per verificare la corretta implementazione. Nel capitolo 4 verrà mostrato come è stato possibile inserire il componente descritto al capitolo 3 in un architettura hardware implementata poi nella FPGA. Nel capitolo 5 si riporteranno i risultati sperimentali ottenuti in laboratorio, che verranno valutati sia in termini di correttezza che di velocità. Infine il capitolo 6 conterrà le conclusioni e le eventuali future applicazioni di questo lavoro. 3

16

17 Capitolo 1 Panoramica su FPGA, Strumenti di Sviluppo e Algoritmi Crittografici e Applicazioni La crittografia moderna è nata nel secolo scorso per rispondere all esigenza di riservatezza delle comunicazioni attraverso i mezzi di comunicazione a distanza. Inoltre, un impulso fortissimo allo sviluppo di nuove tecniche crittografiche si è avuto grazie all introduzione dei calcolatori elettronici. Sfruttando le potenzialità di calcolo offerte dai moderni computer è possibile realizzare macchine cifranti automatiche in grado di trattare in ingresso flussi consistenti di dati, impensabili per i primi cifratori elettromeccanici. Essenzialmente gli algoritmi crittografici moderni si dividono in due tipi: a chiave privata (o simmetrici) e a chiave pubblica (o asimmetrici) [20]. 1.1 Chiave Privata Gli algoritmi crittografici a chiave privata permettono di mantenere la confidenzialità delle informazioni non impedendone la possibilità di lettura, ma trasformando il messaggio originale in modo tale che risulti intellegibile solamente a chi possieda la chiave segreta. Il mittente del messaggio sceglie una chiave ed esegue 5

18 CAPITOLO 1. Algoritmi Crittografici e Applicazioni Figura 1.1: Schema di comunicazione con crittografia simmetrica. un operazione (cifratura) che a partire dal messaggio originale (testo in chiaro o plain text) crea il testo cifrato (cipher text). Questo viene inviato al destinatario tipicamente attraverso un canale di comunicazione pubblico e quindi insicuro. Al lato ricezione il destinatario del messaggio deve effettuare l operazione inversa di decifratura, utilizzando la chiave segreta, in modo tale da risalire al testo originale. La caratteristica peculiare di questi tipi di algoritmi è proprio di utilizzare la stessa chiave segreta per effettuare sia l operazione di cifratura che di decifratura, e per questo sono detti simmetrici. L assunzione fondamentale per la sicurezza di questo tipo di cifratura è quindi che nessuno al di fuori dei due soggetti che stanno comunicando sappia la chiave segreta, mentre deve essere noto e di pubblico dominio il funzionamento degli algoritmi utilizzati. É così rispettato il cosiddetto principio di Kerckhoffs della crittografia. Infatti l unico elemento critico del sistema crittografico, e pertanto da mantenere segreto, è solamente la chiave. Tuttavia è evidente il problema dello scambio della chiave segreta tra i due lati della comunicazione che non può di certo avvenire in chiaro sullo stesso canale insicuro su cui avviene la comunicazione cifrata. In Figura 1.1 è riportato lo schema fondamentale di riferimento su cui si basa la comunicazione cifrata con chiave privata o simmetrica. 6

19 CAPITOLO 1. Algoritmi Crittografici e Applicazioni Esistono moltissimi tipi differenti di algoritmi di cifratura simmetrica, tra i tanti si ricordano DES, Triple DES, RC4, RC6, AES, IDEA. Essi si possono implementare sia in modo puramente hardware con componenti elettronici digitali sia via software. Generalmente la prima soluzione è notevolmente più veloce a parità di algoritmo. Le implementazioni di diversi algoritmi, invece, possono risultare più o meno efficienti a seconda delle operazioni da effettuare sui dati. Implementazioni hardware (ad esempio su ASIC) particolarmente spinte e ad architettura fortemente parallela possono raggiungere anche velocità dell ordine di Gigabit/s, mentre con realizzazioni software particolarmente ottimizzate (ad e- sempio implementando alcune parti dell algoritmo come tabelle) si possono raggiungere velocità dell ordine di decine di Megabit/s. L algoritmo di codifica e decodifica in molti casi può essere identico e quindi si può utilizzare lo stesso hardware / software. 1.2 Lo spazio delle chiavi Solitamente la chiave utilizzata dall algoritmo di cifratura/decifratura è rappresentata da una stringa di bit. A seconda della lunghezza L della chiave è possibile determinare il numero totale delle chiavi possibili che risulta pari a 2 L. Lo spazio delle chiavi permette di valutare la resistenza di un sistema di cifratura ad un attacco del tipo a forza bruta che consiste banalmente nel provare tutte le chiavi possibili. Ad esempio il DES utilizza una chiave di 56 bit e quindi ha a disposizione 2 56 chiavi, ovvero all incirca 7, Sebbene il numero di combinazioni possa sembrare elevatissimo, allo stato attuale, considerando la potenza di calcolo disponibile ed il ritmo di crescita, si possono ritenere sicuri solamente algoritmi con chiavi lunghe almeno 128 bit. In questo caso lo spazio delle chiavi è di 3, e con la tecnologia attuale non è possibile attuare un attacco a forza bruta in tempo ragionevole. 7

20 CAPITOLO 1. Algoritmi Crittografici e Applicazioni 1.3 Chiave Pubblica Il concetto di crittografia a chiave pubblica è stato introdotto verso la metà degli anni Settanta dai matematici Diffie e Hellman. Il problema fondamentale che è già stato evidenziato per i cifrari simmetrici è quello dello scambio della chiave privata. Infatti è necessario un canale sicuro attraverso il quale il mittente deve trasmettere la chiave al destinatario. Tuttavia tale canale non è spesso disponibile ed in caso di intercettazione tutto il sistema di protezione delle informazioni risulterebbe seriamente compromesso. L idea che sta alla base della crittografia a chiave pubblica è quella che ogni utente dispone di una coppia di chiavi: una privata (nota solo a lui) ed una pubblica (liberamente distribuibile). In questo caso non è necessario scambiarsi alcuna chiave per comunicare in modo confidenziale tra due utenti. Supponendo che A voglia inviare un testo riservato a B, A deve cifrare il testo con la chiave pubblica (nota per definizione) di B. A questo punto si ottiene un testo cifrato che potrà essere decifrato solamente con la chiave privata di B. E evidente che non è necessaria la condivisione di alcun segreto, ma ciò che è cifrato con la chiave pubblica potrà essere decifrato solamente con la corrispondente chiave privata. Per questo motivo la cifratura a chiave pubblica è detta anche a chiave asimmetrica. Il meccanismo a chiave pubblica si basa su alcuni problemi della teoria dei numeri, come la fattorizzazione dei numeri primi o l inversione della funzione modulo, che sono facilmente calcolabili in un senso, ma molto difficili da calcolare in senso opposto [21]. La crittografia a chiave pubblica si presta anche ad un altra interessante funzione di autenticazione del mittente ed integrità dei dati. Invertendo, infatti, l ordine delle operazioni cifrando prima il testo in chiaro con la chiave privata del mittente e quindi decifrandolo con la chiave pubblica del mittente, il destinatario ha la certezza che il testo è stato spedito effettivamente dal mittente e che non è stato alterato. Tuttavia viene ovviamente meno la confidenzialità in quanto chiunque ha a disposizione la chiave pubblica del mittente. In Figura 1.2 è rappresentato l utilizzo della crittografia a chiave pubblica per garantire la riservatezza della comunicazione, mentre in Figura 1.3 è riportato l utilizzo della chiave pubblica per 8

21 CAPITOLO 1. Algoritmi Crittografici e Applicazioni garantire l autenticazione e l integrità. Figura 1.2: Schema a Chiave pubblica con confidenzialità. Figura 1.3: Schema a Chiave pubblica con autenticazione e integrità. Esistono molti tipi di algoritmi a chiave pubblica, ma i più noti ed utilizzati sono RSA e il D/H (Diffie-Hellman). In ogni caso gli algoritmi a chiave pubblica sono molto pesanti dal punto di vista computazionale e pertanto sono spesso usati per scambiare tra mittente e destinatario una chiave segreta da utilizzare con un sistema crittografico simmetrico. 9

22 CAPITOLO 1. Algoritmi Crittografici e Applicazioni 1.4 AES come nuovo standard Con il sempre più ampio diffondersi dei computer e delle comunicazioni per via elettronica, si è presto sentita la necessità di introdurre un algoritmo di uso commerciale standardizzato in modo da garantire l interoperabilità e la compatibilità tra i diversi sistemi. Così nel lontano 1977 il National Bureau of Standards americano pubblicò la specifica del primo sistema di crittografia simmetrica standard: DES (Data Encryption Standard). Il DES utilizza chiavi di 56 bit ed è stato ampiamente utilizzato e ritenuto sufficientemente sicuro fino al 1997 quando è stato pubblicamente forzato mediante un attacco a forza bruta [20]. Il principale limite del DES è infatti costituito dalla scarsa lunghezza della chiave. Così, nello stesso anno, il National Institute of Standards and Technology (NIST) ha indetto la gara per sostituire il DES con un nuovo algoritmo che sia in grado di resistere alle minaccie della tecnologia di oggi e alle nuove tecniche di crittoanalisi differenziale. Il nome ufficiale del nuovo algoritmo è AES (Advanced Encryption Standard). Il bando del concorso pubblico stabiliva diversi requisiti per AES, in particolare si ricordano: Cifrario a blocchi Lunghezza della chiave di almeno 128 bit Permettere l implementazione su smart card Libero da brevetti La selezione nella rosa dei possibili candidati è stata effettuata tenendo conto delle seguenti caratteristiche: Sicurezza rispetto agli attacchi crittoanalitici noti ed in particolare di crittoanalisi differenziale Efficienza delle implementazioni hardware e software Grandezza del codice e della memoria utilizzata 10

23 CAPITOLO 1. Algoritmi Crittografici e Applicazioni Il processo di selezione per AES ha visto la partecipazione di 15 algoritmi candidati e 5 finalisti: MARS, RC6, Rijndael, SERPENT, TWOFISH. L algoritmo che è stato infine scelto come nuovo standard è Rijndael, di Joan Daemen e Vincent Rijmen. E stato pubblicato dal National Institute of Standards and Technology (NIST) statunitense tra i Federal Information Processing Standards il 26 Novembre 2001 con il codice FIPS PUB 197. É chiaramente un cifrario a blocchi e permette di utilizzare chiavi da 128, 192 e 256 bit. Nel caso si utilizzino chiavi da 128 bit si hanno 2 128, circa 3, , chiavi possibili. Supponendo di avere a disposizione una macchina potentissima che provi 2 60 chiavi al secondo, essa impiegherebbe comunque circa miliardi di anni per provare tutte le chiavi. Viste queste premesse si può ritenere che AES resterà sicuro per almeno i prossimi venti anni a meno di incredibili sviluppi nel campo dell informatica o dello sviluppo di nuovi tipi di attacchi crittoanalitici. AES ha quindi tutte le carte in regola per divenire il nuovo standard mondiale della crittografia a chiave simmetrica. Solitamente, quando si introduce un nuovo standard in un qualsiasi campo, si è spesso restii ad adottarlo in quanto possono essere richiesti notevoli investimenti e potrebbe essere addirittura necessario dismettere intere apparecchiature hardware/software. Tuttavia, nel caso di AES si prevede un adeguamento al nuovo standard in tempi rapidi vista la manifesta debolezza del DES e l inefficienza di Triple-DES. Inoltre AES è completamente libero da brevetti e limitazioni a differenza di molti algoritmi commerciali. In questo contesto di aggiornamento delle infrastrutture di comunicazione che fanno uso della crittografia, a livello hardware è interessante l utilizzo delle FPGA (Field Programmable Gate Arrays) e delle logiche programmabili in generale. Si supponga ad esempio di avere un router, firewall, VPN server, acceleratore SSL o un qualunque altro componente di internetworking che deve offrire funzionalità di cifratura, ad esempio DES. Se il componente è realizzato mediante tecnologia ASIC (Application Specific Integrated Circuit), questo dovrà essere necessariamente sostituito per adeguarsi al nuovo standard crittografico. Se invece il componente è stato costruito in modo tale da essere riconfigurabile si potrà sem- 11

24 CAPITOLO 1. Algoritmi Crittografici e Applicazioni plicemente riprogrammarlo aggiungendo la funzionalità di cifratura/decifratura AES. 1.5 Applicazioni di AES Nel presente paragrafo verranno discussi brevemente alcuni esempi possibili di utilizzo di AES con particolare riferimento alle reti di calcolatori. Il campo di applicazione di AES è sostanzialmente lo stesso di DES in quanto sono entrambi algoritmi simmetrici ed il primo è l evoluzione del secondo. Le comunicazioni digitali attraverso internet sono per definizione insicure in quanto avvengono su un canale che si può considerare pubblico. I pacchetti dati, infatti, sono trasmessi in chiaro e nel percorso end-to-end attraversano diversi router e computer, quindi in ogni punto è possibile intercettare le informazioni trasmesse. Inoltre i protocolli IP e TCP su cui si basa Internet non prevedono alcuna funzionalità di autenticazione e riservatezza. Tuttavia buona parte del traffico internet odierno riguarda dati sensibili, basti pensare alle transazioni di commercio elettronico, alle attività bancarie, all invio di documenti riservati, alla posta elettronica SSL e TLS SSL (Secure Socket Layer) è un protocollo progettato dalla Netscape per realizzare comunicazioni sicure su Internet. La versione 3.0 del 1996 di SSL è stata poi utilizzata dalla IETF (Internet Engineering Task Force) per definire TLS (Transport Secure Layer). Quest ultimo include la possibilità di utilizzare AES. Entrambi i protocolli utilizzano la crittografia per consentire alle applicazioni client/server di comunicare in modo tale da garantire l autenticazione delle parti, la riservatezza e prevenire la manomissione dei dati. I protocolli di sicurezza risiedono sotto i protocolli applicativi e sopra il protocollo di trasporto TCP, pertanto possono essere utilizzati con qualsiasi protocollo che utilizza TCP. L impiego più comune è con il protocollo HTTPS che viene utilizzato per aggiungere sicurezza alle pagine del World Wide Web in modo tale da rendere possibili applicazioni come il commercio elettronico e l home banking. 12

25 CAPITOLO 1. Algoritmi Crittografici e Applicazioni Sia TLS che SSL richiedono una fase preliminare di handshake in cui si effettuano: Negoziazione tra le parti degli algoritmi da utilizzare. Autenticazione del server mediante l invio del proprio certificato digitale al client che lo verifica. Scambio della chiave segreta di sessione mediante cifratura a chiave pubblica. Quindi segue la comunicazione tra le parti con cifratura a chiave simmetrica, ad esempio AES, mediante la chiave scambiata durante la fase di handshaking. In commercio esistono dei componenti hardware detti Acceleratori SSL, che permettono di sgravare la CPU dei server dalle operazioni crittografiche che richiedono notevole potenza di calcolo i L i, recentemente approvato dalla IEEE (giugno 2004), è dedicato alla standardizzazione della sicurezza delle reti locali wireless. Queste reti hanno avuto un notevole tasso di crescita negli ultimi mesi grazie ai ridotti costi di installazione, alla facilità di utilizzo e alla crescente esigenza di mobilità. Tuttavia allo stato attuale la sicurezza delle reti installate lascia spesso molto a desiderare. Oltre alle problematiche classiche delle reti tradizionali, per le reti wireless si aggiunge il problema intrinseco derivante dalla trasmissione ad onde radio: tutto quello che viene trasmesso può essere ascoltato entro una certa distanza da chiunque, pertanto è necessaria una protezione crittografica forte i è lo standard che è stato a lungo atteso per le reti wireless e che sostituisce il precedente standard ufficiale di sicurezza introdotto nel 1999 con b: WEP (Wired Equivalent Privacy). WEP si basa su una cifratura RC4 a bit, ma nel 2001 è stato dimostrato che è vulnerabile. Attraverso un attacco di tipo passivo è possibile risalire alla chiave di cifratura con poche ore di ascolto dei pacchetti in transito. 13

26 CAPITOLO 1. FPGA Per colmare le lacune di WEP, nel 2002 il consorzio Wi-Fi Alliance ha introdotto WPA (Wi-Fi Protected Access). WPA sfrutta lo stesso hardware di b, mediante delle operazioni di aggiornamento firmware permette di raggiungere un livello di protezione più adeguato i possiede tutte le caratteristiche del WPA, ma aggiunge il requisito di utilizzare AES per cifrare i dati. Per supportare il nuovo standard i è tuttavia necessario un nuovo hardware in quanto le apparecchiature wireless prodotte per essere compatibili con b/g non possiedono chip dedicati all algoritmo AES. 1.6 FPGA Al giorno d oggi i dispositivi riconfigurabili più comuni sono i Field Programmable Gate Arrays, FPGA. Un FPGA è un circuito integrato che può essere riprogrammato dopo la costruzione. Come principio le FPGA sono simili ai chip di memoria di sola lettura programmabile (PROM), ma rispetto a queste hanno un potenziale applicativo molto più vasto. Le FPGA vengono utilizzate dagli ingegneri nella progettazione di Core specializzati che poi verranno prodotti cablati in grandi quantità per la distribuzione a fabbricanti di computer o a utenti finali Struttura delle FPGA Le FPGA sono costituite da parti assemblate indipendentemente e sono vendute sia come piattaforme di sviluppo e prototipazione che come alternative riconfigurabili alle ASIC. La struttura di una FPGA è rappresentata in Figura 1.4. Il blocco logico base è una tabella delle verità che prende in ingresso 4 bit e genera in uscita 1 bit, come mostrato in Figura 1.5. Riempiendo la tabella con i giusti bit, si può realizzare qualunque funzione logica a quattro ingressi; vari studi hanno dimostrato che quattro ingressi sono una buona dimensione per queste tabelle, poiché rappresentano un buon compromesso tra utilità (quanto sono potenti i blocchi) e utilizzabilità (che frazione degli stessi rimane inutilizzata). I blocchi logici nelle FPGA attuali tendono ad essere più complessi di una singola tabella delle verità: in Figura 1.6 un digramma di un blocco logico di una Xilinx 14

27 CAPITOLO 1. FPGA Figura 1.4: Struttura Riconfigurabile. Figura 1.5: Blocco Logico Base. 15

28 CAPITOLO 1. FPGA Figura 1.6: Blocco Logico Xilinx Serie serie 4000, che ha due tabelle di verità a 4 ingressi e un ulteriore tabella a 3 ingressi, per un tolale di 11 ingressi e 4 uscite. Un circuito dedicato alla catena di riporti in cima alla Figura 1.6 rende semplice collegare più blocchi per formare un relativamente veloce sommatore a più bit. Questo diagramma però ignora molti dettagli addizionali, come la maniera in cui due tabelle di verità a 16 bit possono essere usate come 32 bit di memoria ad accesso casuale, o l opzione presente per controllare la temporizzazione dei due registri a 1 bit. Anche un blocco logico complesso Xilinx risulta abbastanza piccolo se comparato alla solita unità funzionale di un computer. Ma in grandi numeri, i piccoli blocchi logici si possono sommare fino a formare una considerevole potenza computazionale: ad esempio, la XCV3200E ha abbastanza hardware da poter implementare più di 2000 sommatori a 32 bit. A seconda poi di come viene configurato il dispositivo, questo equivale a centinaia di shifter a 32 bit o dozzine di moltiplicatori a 32 bit; inoltre in futuro si cercherà sempre più di aumentare la densità dei componenti presenti diminuendo la dimensione degli stessi, in modo da aumentare sempre più la potenza computazionale. La FPGA è un circito integrato 16

29 CAPITOLO 1. FPGA che contiene molte (da 64 a oltre 10000) celle logiche (LC) identiche, che possono essere viste come componenti standard: ogni cella logica può indipendentemente assumere una tra le possibili configurazioni. Le celle logiche sono interconnesse da una matrice di cablaggi e da una serie di interruttori programmabili. Un progetto è implementato specificando la semplice funzione logica per ogni cella e chiudendo opportunamente gli interruttori nella matrice di interconnessioni: progetti complessi sono creati combinando questi blocchi base per costruire il circuito desiderato. Field Programmable significa che la funzione dell FPGA è definita da un programma di configurazione dell utente anziché dal costruttore del dispositivo. A seconda del particolare dispositivo, il programma o viene scritto permanentemente o semi permanentemente come fosse una parte dello stesso assemblaggio della scheda, o viene caricato da una memoria esterna ogni volta che il dispositivo viene acceso. Le FPGA sono costituite da tre tipi di oggetti configurabili: CLB (blocco logico configurabile), blocchi di ingresso/uscita e interconnessioni. Le CLB costituiscono gli elementi funzionali per la costruzione degli IP Core, gli IOB servono per interfacciare i piedini esterni e le linee dei segnali interni alla user logic, mentre le interconnessioni programmabili creano i cammini di instradamento per connettere ingressi e uscite di CLB e IOB alle reti opportune. Ogni CLB contiene 4 LC, organizzate in due slices simili: nella Figura 1.7 si può vedere la rappresentazione dettagliata di una slice. I generatori di funzione della Virtex sono implementati come tabelle di verità a 4 ingressi (4-input lookup table, LUT) Tipi di FPGA I dispositivi logici programmabili complessi (CLPD) stanno diventando una parte critica della progettazione di ogni sistema. Ci sono molti tipi di FPGA con differenti architetture/processi: principalmente in commercio ci sono attualmente 4 grandi categorie di FPGA, che differiscono per la maniera con cui sono effettuate le interconnessioni, e per come vengono programmate. A livello costruttivo al momento ci sono 4 tecnologie: celle di RAM statica (riprogrammazione molto 17

30 CAPITOLO 1. FPGA Figura 1.7: Slice. veloce e un numero infinito di volte, a discapito di dimensioni non proprio ridotte; inoltre la configurazione deve essere caricata da un dispositivo esterno), anti-fuse (meno costosa della tecnologia RAM, ma può essere programmata una sola volta), transistor EPROM (come per le memorie EPROM, non possono essere riprogrammati nel circuito, ma devono venire resettati con raggi UV) e transistor EEPROM (come per le memorie EEPROM, può essere resettato elettricamente, ma di solito non può essere riprogrammato direttamente nel circuito): a seconda dell applicazione, una tecnologia può essere migliore di un altra. Nella prossima sezione verrà introdotto il dispositivo usato per sviluppare e testare l applicazione proposta in questo lavoro di tesi. 18

31 CAPITOLO 1. FPGA Figura 1.8: Virtex II Pro Breve introduzione al dispositivo usato Ogni dispositivo Virtex contiene blocchi di logica programmabili: CLB, IOB, block RAM, linee di clock dedicate, instradamento programmabile e circuiteria di configurazione: tutto questo viene configurato dal bitstream di configurazione, che contiene un insieme di comandi e dati, e può essere letto o scritto attraverso una delle interfacce di configurazione del dispositivo. La FPGA usata in questo lavoro di tesi è una Virtex II Pro xc2vp7 ff896-5, rappresentata nella Figura 1.8. In questa figura si vedono una seriale, un display 7 segmenti, dei led e al centro a sinistra un blocco grigio con su scritto Virtex II Pro. In esso è contenuta tutta la parte programmabile e il processore principale, un PowerPC 405 direttamente cablato nel dispositivo (hard processor): questo è l implementazione a 0.13µm del core PowerPC 405D4, dell IBM. Questo PPC405 integrato implementa la User Istruction Set Architecture (UISA) del PowerPC, registri, tipi di dati e indirizzamento per operazioni a 32 bit; operazioni a 64 bit, operazioni ausiliarie e in virgola mobile possono essere effettuate via software. 19

32 CAPITOLO 1. Strumenti di Sviluppo IBM Core Connect Il PPC405 accede alle risorse di sistema tramite i Bus OPB e PLB, che sono componenti della tecnologia Core Connect sviluppata da IBM. Questa tecnologia permette la connessione tra IP Core diversi al fine di creare nuove architetture; inoltre facilita l integrazione ed il riuso di processori e periferiche per ottenere migliori prestazioni. L architettura dei bus del Core Connect oltre ai già citati PLB, Processor Local Bus, e OPB, On-chip Peripheral Bus, contiene anche un bridge tra i due bus, due arbitri ed un ultimo bus, chiamato DCR bus o Device Control Register bus. Il bus DCR è stato progettato per trasferire dati tra i registri di uso comune del processore GPR (General Purpose Register) ed i registri di controllo dei componenti connessi con il bus DCR stesso. Questo bus ha dimensione di 10 bit per gli indirizzi e 32 bit per i dati. Il bus PLB è direttamente collegato al processore, che quindi lo utilizzerà per accedere alle periferiche più veloci. Esso ha una dimensione di 32 bit per gli indirizzi e di 64 bit per i dati e le istruzioni. Il bus OPB è stato creato per limitare il traffico sul bus PLB ed è collegato indirettamente al processore (tramite un bridge con il bus PLB); di conseguenza è più lento del PLB e quindi è più indicato per le periferiche che non necessitano di alta velocità. Ha una dimensione di 32 bit sia per gli indirizzi che per dati e istruzioni. Di seguito verrà approfondito maggiormente il bus PLB, che è stato usato in questo lavoro di tesi per collegare l IP Core che effettua la crittografia AES, mentre si è lasciata al bus OPB la gestione della comunicazione con il PC, tramite seriale, e l interfacciamento con i led. 1.7 Introduzione agli strumenti di sviluppo In questo paragrafo verranno introdotti i tre strumenti software che sono stati utilizzati per lo sviluppo di questo lavoro di tesi: essi sono ISE, MoldelSim e EDK. 20

33 CAPITOLO 1. Strumenti di Sviluppo ISE ISE (Integrated Software Environment), prodotto dalla Xilinx, è un software che permette lo sviluppo completo di un componente a partire da descrizioni in linguaggio Verilog o VHDL (Very high speed integrated circuit Hardware Description Language). Per fare questo si usa lo strumento Project Navigator, un interfaccia grafica che permette l utilizzo di tutti i vari strumenti software contenuti in ISE. Per mostrare come si presenta Project Navigator, in Figura 1.9 si riporta la schermata con il menù che permette di utilizzare tutte le funzionalità messe a disposizione dal software. Figura 1.9: Menù con le funzionalità di Project Navigator. 21

34 CAPITOLO 1. Strumenti di Sviluppo Nel riquadro A c è la definizione del progetto, in termini di: nome, tipo di FPGA utilizzata, file di descrizione del progetto (VHDL, elf, bmm, etc). Invece nel riquadro B sono presentate le varie funzioni, che sono suddivise in una serie di cinque gruppi: Design Entry Utilities, User Constraints, Synthesize-XST, Implement Design, Generate Programming File. Il gruppo User Constraints consente di settare i vincoli di spazio e tempo che dovranno essere rispettati dai passi di sintesi successivi. Un gruppo molto importante è Synthesize-XST, che raggruppa due bottoni dalle funzioni indispensabili. Il primo serve per controllare la sintassi del VHDL scritto, mentre il secondo serve per fare la sintesi del VHDL con XST (Xilinx Synthesize Tool), operazione molto complessa dal punto di vista computazionale, dato che il VHDL deve venire tradotto in una rete hardware composta da porte logiche e interconnessioni. La riuscita di questa operazione è necessaria affinché con il VHDL scritto si possa passare alle fasi successive dello sviluppo. Il gruppo Implement Design invece contiene una serie di programmi (Translate, Map, Place&Route) che, data la rete logica generata dalla sintesi, provvede a mapparla su una FPGA (che viene specificata al momento della creazione del progetto) rispettando i vincoli di spazio imposti. Se questa operazione va a buon fine si passa poi a piazzare i blocchi e a creare una rete di instradamento tra i vari blocchi logici della FPGA, cercando di rispettare le temporizzazioni imposte. L ultimo gruppo consente di generare i file di configurazione per le FPGA, ma non verrà usato in questo lavoro di tesi, dato che questa operazione verrà implementata in EDK. Infine, Project Navigator contiene anche un semplice editor di testo. In definitiva questo software verrà utilizzato nella parte di scrittura del codice VHDL dell IP Core, principalmente per la sua comodità: infatti, oltre all editor di testo, vi è anche la funzione per il controllo della sintassi (che permette di rilevare semplici errori di sintassi) e quella per la sintesi (che permette invece di rilevare errori di non sintetizzabilità). 22

35 CAPITOLO 1. Strumenti di Sviluppo Figura 1.10: Schermata iniziale di ModelSim ModelSim ModelSim è uno strumento software prodotto dalla Mentor Graphics e supportato da Xilinx. Il suo scopo è quello di simulare (eventualmente anche scrivere o modificare) dei file VHDL, per verificarne il corretto funzionamento. All avvio del programma nel riquadro B vi è un prompt dei comandi, mentre nel riquadro A si trovano tutte le librerie necessarie ad effettuare la simulazione, come in Figura Per effettuare la simulazione di un file VHDL lo si può compilare da qui e a questo punto simularlo, oppure da ISE premendo il tasto Launch ModelSim Simulator presente tra i comandi in Figura 1.11: in questo secondo caso il file VHDL viene compilato e la simulazione viene lanciata automaticamente. Si passa quindi a forzare dei valori in ingresso dalla finestra signals, in Figura 1.11, in modo da verificare che il VHDL abbia il comportamento desiderato. A questo punto si passa a monitorare lo sviluppo del VHDL tramite la finestra che 23

36 CAPITOLO 1. Strumenti di Sviluppo Figura 1.11: Finestra Signals di ModelSim. Figura 1.12: Finestra Wave di ModelSim. 24

37 CAPITOLO 1. Strumenti di Sviluppo mostra l evoluzione temporale delle forme d onda, rappresentata in Figura Si può monitorare l andamento dei segnali anche dalla finestra signals, dato che anche questi evolvono col passare del tempo, ma è più comodo usare la finestra wave, sia per il fatto che qui si ha tutta l evoluzione temporale, sia perché nella finestra wave i segnali di tipo std logic vector possono anche essere mostrati in decimale o esadecimale, mentre nella finestra signals vengono visulizzati solo in binario e questo, specie quando i segnali sono parecchio lunghi, può risultare parecchio scomodo. Con questa procedura si riesce a verificare il corretto funzionamento del codice VHDL senza ancora provarlo in hardware: questa cosa è parecchio utile in fase di debugging, quando non si ha ancora a disposizione un architettura in cui inserirlo e un interfacciamento verso di essa EDK EDK (Embedded Development Kit) è un software prodotto dalla Xilinx che permette di realizzare architetture hardware partendo dalla descrizione dei vari componenti scritta in un linguaggio di descrizione hardware. Per utilizzarlo si usa l interfaccia grafica Platform Studio. Questa, una volta aperto un progetto, si presenta come in Figura 1.13, mentre in Figura 1.14 si vede una barra degli strumenti con cui si possono richiamare tutte le funzioni messe a disposizione dallo strumento di sviluppo. Nella Figura 1.13 si osserva che lo schermo viene diviso principalmente in tre parti: nel riquadro A c è una descrizione del progetto in termini di schema ad albero dei componenti presenti, file contenenti la descrizione hardware e software del progetto e vincoli fisici, opzioni relative al progetto (tipo di FPGA usato, linguaggio usato per la descrizione dell hardware, sintetizzatore). Nel riquadro C viene invece visualizzato l output dei comandi eseguiti sul progetto. Nel riquadro B, a seconda del file che viene aperto, viene visualizzato uno schema dell architettura del progetto (come in Figura 1.13), una descrizione dell hardware o del software, o semplicemente un editor con cui modificare tutti gli altri file che descrivono il progetto. 25

38 CAPITOLO 1. Strumenti di Sviluppo Figura 1.13: Platform Studio. Figura 1.14: Funzioni di Platform Studio. 26

39 CAPITOLO 1. Strumenti di Sviluppo Si passa ora a descrivere la Figura 1.14, in cui sono visibili una barra di menù e due barre strumenti: nel menù ci sono i comandi presenti in un qualsiasi software (apri, salva, etc) e in più una serie di comandi propri di questo strumento, che sono anche disponibili come bottoni nelle due righe sotto. Tra questi pulsanti, i più utili ai fini del lavoro svolto sono quelli nella seconda riga, a partire dal quinto, e di questi si spiegherà brevemente cosa fanno e a cosa servono. Add/Edit Cores (dialog): apre una schermata in cui sono visibili tutte le periferiche dell architettura e tutte le net che li connettono, dicendo anche se sono di ingresso o uscita e se rimangono interni alla FPGA o vanno a finire in altre parti della scheda di sviluppo (ad esempio i led). Generate Libraries: legge i file.mdd che si trovano nella cartella dei driver e contengono la lista delle librerie necessarie alla compilazione dei driver e la lista dei file sorgenti che al momento della creazione delle librerie verranno copiati all interno della cartella corrispondente all IP Core AES512 nella struttura delle cartelle del processore. Quindi passa a compilare i file nomeperiferica l.h e nomeperiferica l.c che contengono l implementazione del driver seguendo le istruzioni di compilazione nel file makefile. Infine esegue il file.tcl che contiene il codice dello script che verrà eseguito da EDK durante la creazione dei driver [4]. Compile Program Sources: utilizza il compilatore GNU GCC per compilare i file che contengono il codice che deve venire eseguito dal processore. Generate Netlist: utilizza il sintetizzatore XST per generare una rete composta di porte logiche e interconnessioni (nella stessa maniera in cui lo fa ISE) a partire dalla descrizione del progetto in termini di blocchi e interconnessioni. Per prima cosa genera un file.ngc per ogni componente. Successivamente utilizza tutti questi file per generarne uno solo, system.ngd (NGD è acronimo di Native Generic Database), che contiene tutti i blocchi che compongono il progetto, le interconnessioni e i vincoli. Generate Bitstream: utilizza il file prodotto dalla Generate Netlist per mapparlo sul componente fisico prescelto (la FPGA che si decide di usare al momento di definizione del progetto EDK). Per prima cosa viene eseguito il comando di map, che prende direttamente il file system.ngd e fa il mapping tecnologico: in 27

40 CAPITOLO 1. Strumenti di Sviluppo pratica confronta la descrizione del sistema sintetizzato con le librerie fornite che descrivono il dispositivo. Successivamente a questa fase si esegue il place&route, che crea un legame tra la netlist e i blocchi logici presenti sulla FPGA, provvedendo a cercare gli instradamenti corretti per i segnali in modo da rispettare i vincoli di timing imposti. Update Bitstream: lega il software generato (sia i driver che l eseguibile) all hardware, in particolare alla BRAM del processore, facendo così l inizializzazione della memoria. Crea in output il file download.bit (di lunghezza fissa, ad esempio 547 Kbyte per la scheda utilizzata in laboratorio), da scaricare nella FPGA. Download: effettua il download del file download.bit nella FPGA tramite la connessione via Parallel Cable IV che si avvale del protocollo di comunicazione JTAG. Appena terminato il download si accende un led che notifica l avvenuta programmazione della scheda e il processore inizia subito l esecuzione del codice contenuto nel file system.c. Sim Model Generation e Run Simulation: questi due comandi servono a creare ed avviare una simulazione del progetto con ModelSim. Il primo compila una serie di librerie necessarie alla simulazione del progetto, mentre il secondo bottone lancia il programma di simulazione ModelSim. In ogni caso questa opzione non è stata utilizzata perché si è preferito fare una simulazione a priori del componente progettato con ModelSim e debuggare il progetto completo con un debug hardware. Run XMD e Run Debugger: questi due comandi servono invece per eseguire un debug hardware del progetto. Premendo il primo bottone viene lanciato un server con un prompt da cui digitare un comando che serve a stabilire una connessione tra il computer collegato alla scheda di sviluppo e il processore (PowerPC o MicroBlaze) utilizzato nel progetto già presente sulla FPGA. A questo punto si può lanciare il secondo comando, che permette di reinizializzare la BRAM come era subito dopo il download ed eseguire passo dopo passo il codice: quindi si può visualizzare istante per istante il contenuto delle celle di memoria (si imposta l indirizzo e si riceve il contenuto della memoria a quell indirizzo). Questo comando 28

41 CAPITOLO 1. Strumenti di Sviluppo è molto utile nella fase di debugging perché confrontando il contenuto effettivo della memoria con quello previsto si riescono ad individuare eventuali errori. 29

42

43 Capitolo 2 Specifica dell AES con blocchi in ingresso di 512 bit In questo capitolo verrà inizialmente presentato l algoritmo AES come è stato rilasciato al pubblico dal NIST (National Institute of Standards and Technology) [1]. Alla fine del capitolo verrà invece spiegato come si è completata la specifica affinché l algoritmo accettasse in ingresso blocchi da crittografare da 512 bit. 2.1 Specifica Originale In questa sezione si riporterà la traduzione in italiano della parte di interesse della specifica rilasciata dal NIST (verranno tralasciate le parti non importanti ai fini di questo lavoro di tesi, come ad esempio quelle relative alla chiave a 192 o 256 bit): questa specifica si divide nelle seguenti sottosezioni: 1. Introduzione 2. Definizione dei termini, acronimi e parametri dell algoritmo, simboli e funzioni; 3. Notazioni e convenzioni usate nella specifica dell algoritmo, incluso l ordinamento e la numerazione di bit, byte e parole; 31

44 CAPITOLO 2. Specifica dell AES 512 bit 4. Proprietà matematiche utili per comprendere l algoritmo; 5. Specifica dell algoritmo: espansione della chiave, cifratura e descrizione delle funzioni Introduzione L Advanced Encryption Standard si basa sull algoritmo di Rijndael, un algoritmo di crittografia simmetrico che elabora blocchi di dati di 128 bit, usando chiavi di 128, 192 e 256 bit [2]. L algoritmo di Rijndael era stato progettato per gestire chiavi e blocchi anche di altra lunghezza, ma comunque questi non sono stati considerati nella specifica dell Advanced Encryption Standard. Per tutto il resto del capitolo, l algoritmo qui sopra specificato sarà chiamato l algoritmo AES. L algoritmo può essere usato con chiavi delle tre lunghezze differenti indicate sopra, e questi tre varianti saranno chiamate AES-128, AES-192 e AES-256; ai fini di questo lavoro di tesi sarà però considerato solo l AES Definizioni Le seguenti definizioni saranno usate in questo capitolo: Strutture Dati Bit: un valore binario che può assumere i valori 0 e 1. Byte: un gruppo di 8 bit che è trattato come una singola entità o come un vettore di 8 bit individuali. Parola: gruppo di 32 bit che è trattato come una singola entità o come un array di 4 byte. Array: una collezione enumerata di entità di caratteristiche simili. Blocco: sequenza di bit che può rappresentare input, output, Stato o Round Key. La lunghezza della sequenza è rappresentata dal numero di bit che contiene. I blocchi possono anche essere interpretati come array di byte. 32

45 CAPITOLO 2. Specifica dell AES 512 bit Variabili dell algoritmo AES Chiave di cifratura: chiave segreta che è utilizzata dalla funzione Key Expansion per generare un insieme di Round Key; può essere rappresentata come una matrice quadrata di byte, con 4 righe e 4 colonne. Stato: risultato intermedio della cifratura che può essere rappresentato come una matrice quadrata di byte, con 4 righe e 4 colonne. Round Key: valori derivati dalla chiave di cifratura usando la funzione Key Expansion. Sono applicate allo Stato nella cifratura e nella cifratura inversa. Dati originali: dati che sono in ingresso al processo di cifratura o sono usciti dal processo di cifratura inversa. Dati cifrati: dati che sono usciti dal processo di cifratura o sono in ingresso al processo di cifratura inversa. S-box: tabella di sostituzione non lineare usata in molte trasformazioni di sostituzione di byte. Funzioni e costanti AddRoundKey (): trasformazione nella cifratura e nella cifratura inversa in cui una Round Key viene aggiunta allo Stato usando un operazione di XOR. MixColumns (): trasformazione nella cifratura che prende tutte le colonne dello Stato e mischia il loro contenuto (indipendentemente l una dall altra) per produrre nuove colonne. RotWord (): funzione usata nella funzione Key Expansion che prende una parola di 4 byte e fa una permutazione ciclica. ShiftRows (): trasformazione nella cifratura che elabora lo stato spostando ciclicamente le ultime 3 righe dello Stato di offset differenti. SubBytes (): trasformazione nella cifratura che elabora lo Stato usando una tabella (S-box) non lineare per la sostituzione dei byte, che opera indipendentemente in ognuno dei byte dello stato. SubWord (): funzione usata nella funzione Key Expansion che prende in ingresso una parola di 4 byte e applica la S-box a ognuno dei 4 byte per produrre una parola in uscita. 33

46 CAPITOLO 2. Specifica dell AES 512 bit Rcon []: la matrice di round word costanti. XOR: operazione di OR esclusivo. : operazione di OR esclusivo. : moltiplicazione di due polinomi (ognuno di grado minore di 4) modulo x : moltiplicazione su un campo finito. Altre definizioni AES: Advanced Encryption Standard. Rijndael: algoritmo di crittografia su cui si basa l Advanced Encryption Standard (AES). Trasformazione Affine: una trasformazione che consiste in una moltiplicazione per una matrice seguita dalla somma di un vettore. Cifratura: serie di trasformazioni che converte i dati originali in dati cifrati usando la chiave di cifratura. Cifratura inversa: serie di trasformazioni che converte i dati cifrati nei dati originali usando la chiave di cifratura. Key Expansion: funzione usata per generare una serie di Round Key dalla chiave di cifratura Notazione e Convenzioni In questo paragrafo verranno spiegate le strutture dati utilizzate per rappresentare le varie fasi della crittografia AES: ad esempio si presenteranno le strutture che costituiscono l ingresso, l uscita o lo Stato interno su cui vengono fatte le operazioni che costituiscono la cifratura. Inputs e Outputs L input e l output dell algoritmo AES consistono in sequenze di 128 bit. Ci si riferirà a queste sequenze come blocchi, e al numero di bit che contengono come la loro lunghezza. La chiave di cifratura per l algoritmo è una sequenza di 128 bit. I bit in queste sequenze verranno numerati partendo da zero fino alla lunghezza 34

47 CAPITOLO 2. Specifica dell AES 512 bit della sequenza meno uno. Il numero i attaccato a un bit viene detto indice ed è compreso tra 0 e 127 estremi inclusi. Byte L unità base per l elaborazione nell algoritmo AES è il byte, una sequenza di 8 bit trattata come una singola entità. Le sequenze di 128 bit di input, output e chiave di crittografia sono elaborate come array di byte. Detto a un blocco rappresentante un input, output o una chiave, i byte nell array risultante saranno referenziati usando una delle due forme, an o a [n], dove n sarà nell intervallo 0 n<16. Tutti i valori dei byte nell algoritmo AES saranno presentati come la concatenazione dei valori individuali (0 o 1) dei suoi bit, nell ordine {b 7, b 6, b 5, b 4, b 3, b 2, b 1, b 0 }. Questi bytes sono interpretati come elementi di un campo finito tramite una rappresentazione polinomiale: b 7 x 7 + b 6 x 6 + b 5 x 5 + b 4 x 4 + b 3 x 3 + b 2 x 2 + b 1 x + b 0 = 7 b i x i i=0 Per esempio { } identifica lo specifico elemento del campo finito x 6 +x 5 +x +1. Usando poi una notazione esadecimale, lo stesso { } può essere rappresentato come {63}. Alcune operazioni nei campi richiedono un bit addizionale (b 8 ) a sinistra di un byte. Quando questo bit è presente, apparirà come {01}, ad esempio {01}{63}. Vettori di Byte I vettori di bytes saranno rappresentati nella seguente forma: a 0 a 1 a 2...a 15 I byte e i bit da ordinare in bytes sono derivati dalla sequenza in ingresso di 128 bit input 0 input 1 input 2...input 126 input

48 CAPITOLO 2. Specifica dell AES 512 bit Figura 2.1: Ingresso, Stato e Uscita. come segue: a 0 = {input 0 input 1...input 7 } a 1 = {input 8 input 9...input 15 }... a 15 = {input 120 input input 127 } Lo Stato Internamente, le operazioni dell algoritmo AES sono effettuate su una matrice bidimensionale di byte, detta Stato. Lo Stato consiste in 4 righe contenenti ciascuna 4 byte. All inizio della cifratura e della cifratura inversa, l ingresso viene copiato nella matrice di Stato, come mostrato in Figura 2.1. Quindi le operazioni di cifratura o cifratura inversa vengono effettuate sulla matrice di Stato, che alla fine viene copiata nell uscita. Così, in accordo con lo schema sopra riportato, all inizio della cifratura o della cifratura inversa, l array di ingresso viene copiato nello Stato secondo la relazione: s[r,c] = in[r + 4c] per 0 r < 4 e 0 c < 4. Analogamente, alla fine della cifratura o cifratura inversa, lo Stato viene copiato nell array di uscita secondo la relazione: out[r + 4c] = s[r,c] per 0 r < 4 e 0 c < 4. 36

49 CAPITOLO 2. Specifica dell AES 512 bit Lo Stato come un Array di Colonne I quattro bytes in ciascuna colonna dello Stato formano parole di 32 bit, dove il numero di riga r è l indice dei 4 byte all interno di ciascuna parola. Lo stato può quindi essere interpretato come un array monodimensionale delle parole da 32 bit (le colonne) w 0...w 3, dove il numero di colonna c è l indice di questo array. Quindi, lo Stato può essere considerato un array di 4 parole, come segue: w 0 = s 0,0 s 1,0 s 2,0 s 3,0 w 2 = s 0,2 s 1,2 s 2,2 s 3,2 w 1 = s 0,1 s 1,1 s 2,1 s 3,1 w 3 = s 0,3 s 1,3 s 2,3 s 3, Richiami di Algebra dei Campi Finiti Tutti i bytes nell algoritmo AES sono interpretati come elementi di un campo finito usando la notazione introdotta nel paragrafo Gli elementi di questo campo finito possono essere sommati e moltiplicati, ma queste operazioni sono differenti da quelle usate per i numeri interi. Nelle seguenti sottosezioni verranno introdotti i concetti di base necessari. Addizione L addizione di due elementi in un campo finito viene effettuata sommando i coefficienti delle corrispettive potenze dei polinomi per i due elementi. L addizione viene fatta con l operazione XOR (denotata dal simbolo ). Di conseguenza, la sottrazione tra polinomi è identica alla somma di polinomi. In alternativa, l addizione di elementi del campo finito può essere descritta come l addizione modulo 2 dei singoli bit del byte. Per due bytes {a 7 a 6 a 5 a 4 a 3 a 2 a 1 a 0 } e {b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 } la somma vale {c 7 c 6 c 5 c 4 c 3 c 2 c 1 c 0 }, dove ogni c i =a i b i. Moltiplicazione Nella rappresentazione polinomiale, la moltiplicazione, denotata da, nei Campi di Galois(2 8 ) (d ora in poi GF(2 8 )) corrisponde alla moltiplicazione tra 37

50 CAPITOLO 2. Specifica dell AES 512 bit polinomi modulo un polinomio irriducibile di grado 8. Un polinomio si dice irriducibile se i suoi soli divisori sono uno e se stesso. Per l algoritmo AES questo polinomio irriducibile è m(x) = x 8 + x 4 + x 3 + x + 1, o {01}{1b} in notazione esadecimale. La riduzione modulo m(x) assicura che il risultato sia un polinomio binario di grado minore di 8, e così può essere rappresentato da un byte. Diversamente dall addizione, non c è una semplice operazione a livello di byte che corrisponde a questa moltiplicazione. La moltiplicazione sopra definita è associativa, e l elemento {01} rappresenta l elemento neutro; inoltre, per ogni polinomio binario b(x) diverso da 0 di grado minore di 8, l inversa moltiplicativa di b(x), detta b 1 (x), può essere trovata usando l algoritmo esteso di Euclide. Ne segue che l insieme di 256 possibili valori dei byte, con XOR usata come addizione e la moltiplicazione qui sopra definita, ha la struttura del campo finito GF(2 8 ). Polinomi con coefficienti in GF(2 8 ) Si possono definire polinomi di 4 termini, con coefficienti che sono elementi del campo finito, come: a(x) = a 3 x 3 + a 2 x 2 + a 1 x + a 0 che sarà rappresentato come una parola nella forma [a 0,a 1,a 2,a 3 ]. Notare che i polinomi definiti in questa sezione si comportano in maniera abbastanza differente dai polinomi usati nella definizione degli elementi del campo finito, anche se entrambi i tipi di polinomi usano la stessa variabile, x. I coefficienti in questa sezione sono essi stessi elementi del campo finito, cioè bytes, invece che bits; inoltre, la moltiplicazione di questi polinomi di 4 temini utilizza un polinomio di riduzione differente, definito di seguito. La distinzione dovrebbe sempre essere chiara dal contesto. 38

51 CAPITOLO 2. Specifica dell AES 512 bit Il polinomio per completare la moltiplicazione, per l algoritmo AES è x Poiché x non è un polinomio irriducibile in GF(2 8 ), la moltiplicazione per un polinomio di 4 termini fissato non è necessariamente invertibile. Comunque, l algoritmo AES specifica un polinomio di 4 termini fissato che ha un inversa: a(x) = {03}x 3 + {01}x 2 + {01}x + {02} a 1 (x) = {0b}x 3 + {0d}x 2 + {09}x + {0e} Un altro polimonio utilizzato nell algoritmo AES (nella funzione RotWord ()) ha a 0 =a 1 =a 2 ={00} e a 3 ={01}, che è il polinomio x 3. Il suo effetto è quello di formare la parola in uscita ruotando i byte della parola in ingresso. Questo significa che [b 0,b 1,b 2,b 3 ] viene trasformato in [b 1,b 2,b 3,b 0 ] Specifica dell algoritmo Per l algoritmo AES, la lunghezza dei blocchi di ingresso, blocchi di uscita, Stato e chiave di cifratura è di 128 bit; il numero di rounds da eseguire è (nel caso di interesse con chiave a 128 bit) pari a 10. Sia per la cifratura che per la cifratura inversa, l algoritmo AES utilizza una round function che è composta di 4 differenti trasformazioni orientate ai byte: 1) Sostituzione dei byte usando una tabella di sostituzione (S-box). 2) Spostamento delle righe dello Stato di offset differenti. 3) Mescolamento dei dati all interno di ogni colonna della matrice di Stato. 4) Aggiunta di una round key allo Stato. Queste trasformazioni saranno descritte nel dettaglio tra breve. Crittografia All inizio dell algoritmo di crittografia, l input viene copiato nella matrice di Stato usando la convenzione sopra descritta, dopodiché vengono applicate ciclicamente le varie funzioni, infine la matrice di Stato viene copiata nell output, come 39

52 CAPITOLO 2. Specifica dell AES 512 bit descritto nello pseudo codice sotto riportato: Cipher (byte in[16], byte out[16], word w[44]) begin byte state[4, 4] state=in AddRoundKey (state, w[0, 3]) for round=1 step 1 to 9 SubBytes (state) ShiftRows (state) MixColumns (state) AddRoundKey (state, w[4*round, 4*(round+1)-1]) end for SubBytes (state) ShiftRows (state) AddRoundKey (state, w[4*round, 4*(round+1)-1]) end out=state Trasformazione SubBytes () La trasformazione SubBytes () è una trasformazione non lineare di sostituzione di bytes che opera indipendentemente su ogni byte dello Stato usando una tabella di sostituizione (S-box). Questa S-box, che è invertibile, viene costruita componendo due trasformazioni: 1. Calcolare l inversa moltiplicativa nel campo finito GF(2 8 ); per l elemento {00} si prende come inversa se stesso. 40

53 CAPITOLO 2. Specifica dell AES 512 bit Figura 2.2: S-box. 2. Applicare la seguente trasformazione affine (su GF(2)): b i = b i b (i+4)mod8 b (i+5)mod8 b (i+6)mod8 b (i+7)mod8 c i per 0 i<8, dove b i è l i-esimo bit del byte, e c i è l i-esimo bit di un byte c di valore {63} o { }. Qui e anche da altre parti, un primo su una variabile (ad esempio b ) indica che la variabile deve venire sostituita dal valore sulla destra. Data la complessità computazionale del calcolo dell inversa moltiplicativa, anziché applicare ad ogni byte la trasformazione affine sopra descritta, si preferisce memorizzare e utilizzare una tabella, la S-box, riportata in Figura 2.2, che per ogni byte contiene il risultato dell applicazione della trasformazione affine stessa (ad esempio il byte {53} verrà sostituito dal byte {ed}). Trasformazione ShiftRows () Nella trasformazione ShiftRows (), i bytes nelle ultime 3 righe della matrice di Stato sono spostati ciclicamente di un diverso numero di bytes (offset). La prima riga, r=0, non viene spostata. Più precisamente, la trasformazione ShoftRows () agisce come segue: s r,c = s r,(c+shi ft(r,4))mod4 per 0 < r < 4 e 0 c < 4 41

54 CAPITOLO 2. Specifica dell AES 512 bit Figura 2.3: ShifRows. dove il valore di spostamento shi ft(r,4) dipende dal numero di riga, r, come segue: shift(1,4)=1; shift(2,4)=2; shift(3,4)=3. Questo ha l effetto di muovere i byte nella posizione più bassa della riga, mentre i byte in posizione più bassa girano e vanno in cima alla riga. La figura 2.3 illustra la trasformazione ShiftRows (): Trasformazione MixColumns () La trasformazione MixColumns () lavora sullo Stato colonna per colonna, trattando ogni colonna come un polinomio di 4 termini, come illustrato in figura 2.4. Le colonne sono considerate come polinomi di GF(2 8 ) e moltiplicati modulo x 4 +1 per un polinomio fissato a(x), dato da a(x) = {03}x 3 + {01}x 2 + {01}x + {02} Quindi la trasformazione si può scrivere come la moltiplicazione in GF(2 8 ) s (x) = a(x) s(x) 42

55 CAPITOLO 2. Specifica dell AES 512 bit Figura 2.4: MixColumns. Trasformazione AddRoundKey () Nella trasformazione AddRoundKey () una round key viene sommata alla matrice di Stato con una semplice operazione di XOR bit a bit. Ogni round key consiste di 4 parole prese dal key schedule, descritto in seguito. Queste 4 parole sono sommate ognuna a una colonna dello Stato, cosicché [s 0,c,s 1,c,s 2,c,s 3,c ] = [s 0,c,s 1,c,s 2,c,s 3,c ] [w round 4+c ] per 0 c < 4, dove [w i ] sono le parole del key schedule, mentre round è un valore nel range 0 round 10. Generazione della chiave L algoritmo AES prende la chiave di cifratura di 128 bit, K, e applica una funzione di generazione della chiave per generare il key schedule. La generazione della chiave genera in totale 44 parole da 32 bit: l algoritmo richiede un set iniziale di 4 parole, e ognuno dei 10 rounds richiede 4 parole di dati di chiave. Il key schedule risultante consiste in un vettore lineare di parole di 4 byte, detto [w i ], con i nel range 0 i<44. La generazione del key schedule data la chiave in ingresso viene fatta in accordo allo pseudo codice qui sotto riportato: KeyExpansion (byte key[16], word w[44]) 43

56 CAPITOLO 2. Specifica dell AES 512 bit begin word temp i=0 while (i<4) w[i]=word (key[4*i], key[4*i+1], key[4*i+2], key[4*i+3]) i=i+1 end while while (i<44) temp=w[i-1] if (i mod 4=0) temp=subword (RotWord (temp)) xor Rcon [i/4] w[i]=w[i-4] xor temp i=i+1 end while end SubWord () è una funzione che prende una parola di 4 byte in ingresso e applica la S-box ad ognuno dei 4 byte per produrre una parola in uscita. La funzione RotWord () prende in ingresso una parola [a 0,a 1,a 2,a 3 ], esegue una permutazione ciclica, e ritorna la parola [a 1,a 2,a 3,a 0 ]. Il vettore di parole costanti, Rcon[i], contiene i valori dati da [x i 1, {00}, {00}, {00}], con x i 1 che sono le potenze di x (x è denotato da {02}) nel campo finito GF(2 8 ) (nota che i parte da 1, non da 0). 2.2 Modifiche apportate alla specifica originale In questa sezione si riporteranno le modifiche (in realtà non si tratta di una modifica, bensì di un estensione) apportate alla specifica originale rilasciata dal NIST descritta nel paragrafo 2.1, e la loro motivazione. 44

57 CAPITOLO 2. Specifica dell AES 512 bit Estensione con macro-blocchi in ingresso da 512 bit L algoritmo AES sopra descritto accetta blocchi in ingresso da 128 bit, che vengono elaborati con varie trasformazioni fino a restituire in uscita ancora blocchi da 128 bit. Poiché l obiettivo finale della tesi è quello di realizzare l algoritmo AES come una periferica in un architettura hardware, si è pensato di costruire la periferica in modo che accettasse blocchi in ingresso di dati da crittografare di dimensione maggiore, ma sempre a multipli di 128 bit (nel nostro caso 512 bit), operi su questi dati e li restituisca tutti insieme. Il vantaggio di una simile scelta può essere ad esempio quello che la periferica debba sollevare un interrupt verso il processore quando finisce di elaborare i dati molte meno volte rispetto all analoga periferica che lavora su 128 bit alla volta: infatti la prima solleva un interrupt per dare i dati crittografati e richiedere nuovi dati da crittografare ogni 512 bit, la seconda ogni 128 bit, un pò come lavora la tecnologia DMA (Direct Memory Access) per la gestione dei dischi rigidi e delle unità ottiche. Si passa ora ad analizzare più in dettaglio come avviene la crittografia su questi macroblocchi da 512 bit. Si deve immaginare la periferica come composta di 512 flip flop e un unità centrale che implementa l algoritmo AES esattamente (o quasi) come descritto dalla specifica del NIST, chiamata AES core. Per prima cosa si copiano, tramite il bus a cui viene collegata la periferica stessa, i primi 512 bit della stringa da crittare nei flip flop della periferica: una volta terminata questa operazione la periferica è pronta a far partire il processo di crittografia, che può essere descritto dallo pseudo codice qui sotto riportato: Cipher 512 (byte plain data[128], byte cipher data[128]) begin for i=0 step 1 to 3 AES core input=plain data[16*i, 16*i+15] wait (AES core internal interrupt) cipher data[16*i, 16*i+15]=AES core output i=i+1 end while end 45

58 CAPITOLO 2. Specifica dell AES 512 bit Figura 2.5: Macrostruttura della periferica. In altre parole nella periferica c è un processo che fornisce i dati all AES core 128 bit alla volta, aspetta che siano pronti i risultati, li copia e manda i 128 bit successivi fino a che non esaurisce i 512 bit che aveva in memoria: solo a questo punto manda un interrupt al processore, per inviargli i dati crittati e chiederne di nuovi su cui lavorare. Graficamente la macro struttura della periferica qui sopra descritta può essere rappresentata dalla Figura

59 Capitolo 3 Implementazione dell AES In questo capitolo verrà illustrato come l algoritmo AES descritto nel capitolo 2 è stato implementato in un linguaggio di descrizione hardware (il VHDL), i problemi che si sono riscontrati nel realizzarlo e le scelte progettuali che sono state fatte. Nella parte finale si riporteranno anche dei test (solo dell AES core a 128 bit) realizzati tramite una simulazione del codice VHDL scritto con lo strumento software ModelSim. 3.1 Prima implementazione Una volta compreso il funzionamento dell algoritmo AES, la prima idea è stata quella di tradurre lo pseudo codice di generazione della chiave e cifratura riportato nel capitolo 2 in VHDL, con il risultato che il codice scritto risultava inizialmente non sintetizzabile. Infatti i linguaggi di descrizione hardware presentano una serie di problemi che non si incontrano quando si scrive software, come ad esempio segnali che vengono scritti da più processi contemporaneamente (errore di multi-source) o impossibilità di usare dei cicli while, che non sono sintetizzabili e vanno sostituiti da cicli for (questo perché la sintesi hardware quando trova un ciclo per riuscire a sintetizzarlo deve srotolarlo, e ciò non è possibile con un ciclo while, di cui non si conosce a priori la fine e quindi quante volte 47

60 CAPITOLO 3. Implementazione dell AES verrà eseguito, mentre è possibile farlo con un ciclo for). In ogni caso una volta risolti questi problemi (ed altri simili), e fatta la sintesi, ci si è subito resi conto della presenza di un altro problema rilevante, ovvero che lo spazio richiesto dall implementazione hardware del solo AES era immensamente superiore a quello disponibile sulla FPGA. Quindi si è reso necessario fare delle pesanti modifiche alla descrizione, in modo da alleggerire il lavoro dello strumento di sintesi: infatti si ricorda che i normali sintetizzatori che esistono in commercio (e quindi anche XST della Xilinx, lo strumento che si è utilizzato) lavorano con degli algoritmi euristici e non esaustivi, quindi trovano una soluzione ottimale, e non l ottima (in altri termini si doveva impostare il codice in ingresso agli algoritmi di sintesi in modo che il sintetizzatore imboccasse subito la strada giusta). 3.2 Macchine a stati Alla luce dei problemi riscontrati si è quindi deciso di abbandonare l implementazione descritta nel paragrafo 3.1, a favore di un implementazione più complessa, ma sicuramente più semplice da elaborare per il sintetizzatore. Lo schema generale è rimasto lo stesso, cioè un processo che effettua la generazione della chiave, e un altro che invece effettua la vera e propria cifratura dei dati in ingresso, ma questi due processi sono stati cambiati profondamente. Nella prima implementazione (quella sopra descritta) questi processi erano sostanzialmente dei cicli for, che facevano riferimento a delle funzioni implementate in altre parti del codice, mentre nella nuova implementazione i cicli sono stati sostituiti con delle macchine a stati, soluzione che presenta diversi vantaggi, tra i quali: non è più necessario srotolare tutto il ciclo e crearlo con della logica combinatoria (cosa che veniva fatta nella precedente implementazione, e portava alla duplicazioni di parecchie parti non necessaria); è semplice fare una sincronizzazione con il clock del bus, dato che nell implementazione basta fare in modo che ad ogni ciclo di clock corrisponda uno stato; 48

61 CAPITOLO 3. Implementazione dell AES Figura 3.1: Estratto del file di Report in cui viene riconosciuta una Macchina a Stati. il lavoro necessario per fare tutta la crittografia viene spezzato in delle sotto parti (ogni funzione corrisponde a una sotto parte), che necessitano di un numero minore di livelli di logica combinatoria rispetto all algoritmo completo. Dato che per sincronizzare la macchina a stati con il clock di sistema deve succedere che i risultati della logica combinatoria si rendano validi e stabili nella durata di un ciclo di clock, abbassando i livelli di logica si riesce ad abbassare il tempo necessario alla logica combinatoria per stabilizzarsi, quindi ad alzare la frequenza di clock. Inoltre le macchine a stati sono una struttura riconosciuta dal sintetizzatore della Xilinx (come mostrato nell estratto del file di report di XST in Figura 3.1), quindi sono molto semplici e snelle da tradurre in hardware dal sintetizzatore stesso. A questo punto l algoritmo viene sintetizzato in un tempo non particolarmente elevato, e senza dare errori di nessun tipo (né interni agli strumenti di sintesi, né esterni, come ad esempio esaurimento della memoria virtuale o simili). Purtroppo però, andando a vedere le statistiche date da XST al termine della sintesi, ci si è resi conto che lo spazio occupato dall implementazione dell algoritmo AES (d ora in poi chiamato per semplicità soltanto AES) era proprio al limite dello spazio presente nella FPGA (era superiore al 90% delle risorse disponibili). Considerando che, oltre all AES, nella FPGA dovevano venire inseriti anche l interfacciamento dell AES verso un bus dell architettura hardware, nonché l architettura stessa, ci 49

62 CAPITOLO 3. Implementazione dell AES si è resi conto che l AES occupava ancora troppo spazio, ed andava ulteriormente ottimizzato. 3.3 Suddivisione dell AES Considerato quanto detto nel paragrafo 3.2 a causa delle limitazioni fisiche dell hardware a disposizione, si è reso necessario fare delle ulteriori modifiche al VHDL. Non essendo però possibile fare un ulteriore ottimizzazione del tipo di quella fatta nel passare dalla prima implementazione a quella con macchine a stati, questa volta si è deciso di dividere il tutto in due parti, realizzando quindi una parte dell AES in hardware (cioè come una periferica da aggiungere all architettura hardware), e la restante parte in software (cioè come del codice C da compilare e da far eseguire al PowerPC presente nell architettura hardware). È risaputo che una qualsiasi operazione, e quindi anche un algoritmo, o un qualsiasi programma, viene eseguita molto più velocemente se è realizzata con della logica dedicata rispetto alla stessa operazione scritta in C, compilata ed eseguita da un microprocessore, quindi questa soluzione rappresenta un compromesso rispetto alla realizzazione completamente hardware che si voleva fare in principio. Di conseguenza si è dovuto analizzare l AES in modo da individuare una parte non troppo importante e pesante dal punto di vista computazionale: questa parte verrà quindi implementata in software da eseguire sul PowerPC. Fortunatamente questa operazione non è stata particolarmente difficile, anche perché l AES si presta bene a una suddivisione di questo tipo. Infatti l AES può essere tranquillamente diviso in due macro processi: quello di generazione della chiave e quello di crittografia vera e propria. Il compito del primo processo è quello di generare un espansione della chiave di crittografia ricevuta come parametro, compito che viene eseguito ogni volta si cambia la chiave di crittografia; il secondo processo invece utilizza la chiave generata dall altro processo, e per ogni stringa di 128 bit di dati ricevuti in ingresso genera una stringa di 128 bit contenente i dati crittografati secondo l algoritmo AES. Poiché è lecito supporre che la chiave di crittografia rimanga la stessa durante tutto il processo di cifratura, ed 50

63 CAPITOLO 3. Implementazione dell AES anche che i dati da crittografare siano in quantità maggiore di 128 bit, si intuisce che il primo processo viene eseguito una sola volta, mentre il secondo molte di più; inoltre, osservando lo pseudo codice dei due processi si vede che il costo temporale dei due è all incirca lo stesso (entrambi gli algoritmi hanno un solo ciclo, quindi hanno complessità temporale Θ(n)). Alla luce di queste considerazioni è chiaro che il tempo di esecuzione del primo processo (generazione della chiave), moltiplicato per il numero di volte che viene eseguito (1 volta), può essere considerato trascurabile rispetto a quello del secondo (cifratura), moltiplicato per il numero di volte che viene eseguito (dipendente dalla grandezza del file che si deve crittografare: ad esempio per un file di 1 Mbyte il processo viene eseguito volte): quindi si è optato per questa nuova configurazione dell AES: l espansione della chiave di crittografia (il processo di generazione della chiave) viene effettuata dal codice C che viene eseguito dal PowerPC presente nella FPGA e salvata in una variabile; la chiave generata via software viene passata alla periferica che implementa l AES tramite il bus a cui è collegata prima dell invio degli stessi dati da crittare: solo quando tutta la chiave generata è stata traferita alla periferica può iniziare la cifratura dei dati; la periferica hardware connessa all architettura implementa solo il processo di cifratura dei dati. Con questa soluzione l occupazione della scheda da parte del solo AES è scesa considerevolmente, al di sotto del 50%, quindi a questo punto era lecito immaginare che non ci sarebbero stati problemi particolari di spazio una volta inseriti anche l interfacciamento verso un bus dell architettura e l architettura stessa (questi argomenti verranno però trattati nei capitoli successivi). Si passa ora invece a dare delle delucidazioni sul codice, sia sulla parte hardware che su quella software, giustificando il perché di alcune scelte o spiegando alcuni passaggi dello stesso magari non particolarmente chiari. 51

64 CAPITOLO 3. Implementazione dell AES Figura 3.2: Porte dell AES core. 3.4 Commenti sull implementazione In questo paragrafo verrano riportati dei frammenti di codice VHDL relativi all algoritmo di crittografia con i relativi commenti Interfaccia dell AES core Per prima cosa si passa ad analizzare l interfaccia verso l esterno dell AES core, con la quale si può già spiegare buona parte del funzionamento. La struttura delle porte è rappresentata in Figura 3.2, o alternativamente, in Figura 3.3, dove si può vedere l AES core rappresentato come un blocco con dei fili che entrano ed escono, che rappresentano i dati e i comandi. Da queste figure si capisce che l AES core prende in ingresso 128 bit di dati, la chiave generata di 1408 bit (rappresentata qui come 44 segnali da 32 bit) e da in uscita 128 bit contenenti i dati crittati. In ingresso c è anche il segnale di clock (la periferica è sincrona sul segnale di clock) del processore, e un segnale start cypher: questo segnale è quello che fa partire la macchina a stati che effettua la cifratura dei dati in ingresso: per funzionare correttamente deve rimanere alto per almeno un ciclo di clock (di solito è tenuto basso). In uscita invece troviamo anche un segnale encrypted data ready: anche questo segnale è normalmente tenuto basso, e viene alzato per due cicli di clock quando la macchina a stati che effettua la cifratura termina, come nella simulazione in Figura

65 CAPITOLO 3. Implementazione dell AES Figura 3.3: Interfaccia dell AES core Funzioni Verrano qui riportate e analizzate le implementazioni di alcune funzioni di particolare interesse. Per prima si analizzerà l implementazione della funzione sub bytes, riportata in Figura 3.4: per l implementazione di questa funzione si è scelto il metodo più Figura 3.4: Sub Bytes. semplice algoritmicamente, cioè quello di salvare in una costante (che verrà poi sintetizzata come una ROM) tutta la matrice S-box. Un implementazione che, dato l ingresso, si fosse calcolata l uscita con il procedimento descritto nella specifica avrebbe comportato il calcolo dell inversa moltiplicativa, operazione molto complessa dal punto di vista algoritmico, e quindi impraticabile in un implementazione hardware: di conseguenza si è preferito adottare la prima soluzione. La 53

66 CAPITOLO 3. Implementazione dell AES matrice sub mat cui si fa riferimento nella funzione è salvata come una costante nel package constants and type, ed è organizzata come una matrice di 256 righe e 8 colonne: accedendo alla riga i-esima si trovano nelle 8 colonne gli 8 bit che costituiscono l inversa moltiplicativa di i. Figura 3.5: Finite Field Multiplication. Utile è anche riportare l implementazione della moltiplicazione nel campo finito descritta nella specifica: questa infatti non è una normale moltiplicazione tra due numeri binari, ma una moltiplicazione tra i due polinomi che la codifica binaria dei due numeri rappresenta, modulata per un polinomio irriducibile fissato dalla specifica dell AES. L implementazione, come si vede in Figura 3.5, si scompone in due parti: nella prima parte (righe di codice 41-46) si effettua la moltiplicazione vera e propria tra i due polinomi, che verrà salvata in un vettore di 15 elementi (si ricorda che la moltiplicazione tra due polinomi di 7 o grado è al massimo un polinomio di 14 o grado); nella seconda parte (righe di codice 48-58) 54

67 CAPITOLO 3. Implementazione dell AES Figura 3.6: Cifratura. viene invece effettuata la modulazione per il polinomio irriducibile salvato nella costante polynomial: praticamente si scorre il risultato della moltiplicazione dal termine di grado più elevato fino a quello dello stesso grado di polynomial e ogni volta se il termine vale 1 si effettua la classica divisione tra polinomi e si calcola il resto. L ultimo resto (che è di sicuro di grado inferiore a 8) sarà il risultato della moltiplicazione nel campo finito. Per quanto riguarda l implementazione delle altre funzioni non ci sono grossi commenti da fare, dato che seguono quasi esattamente la specifica originale. Si passa quindi a spiegare brevemente il funzionamento della macchina a stati che effettua la cifratura e ad analizzarne qualche parte che necessita di ulteriori commenti. Quando vi è un impulso del segnale start cypher la macchina a stati parte e si incomincia il procedimento vero e proprio di crittografia. Il cuore della macchina a stati si può vedere nella Figura 3.6. Vengono chiamate ciclicamente le funzioni di Sub Bytes, Shift Rows, Mix Columns e Add Round Key per 9 volte, dopodiché si esce verso la parte finale della macchina a stati, che effettua le ultime operazioni 55

68 CAPITOLO 3. Implementazione dell AES e poi alza un segnale per dire che il risultato è stato calcolato ed è pronto. In questa macchina a stati è utile notare il primo stato, cioè quello in cui viene eseguita sullo Stato la funzione Sub Bytes. In questo stato della macchina ad ogni ciclo di clock si chiama la funzione di Sub Bytes su un singolo byte dello Stato: questo porta all allocazione di una sola ROM contenente la matrice S-box, perché gli accessi vengono fatti a tempi differenti. Quindi questa S-box può essere usata per effettuare l operazione di Sub Bytes su tutto lo Stato, però affinché l operazione di Sub Byte venga completata sono necessari 16 cicli di clock. In un implementazione alternativa si sarebbe potuto mettere in quello stesso stato della macchina le 16 chiamate alla Sub Bytes una dopo l altra, cosa che avrebbe portato a fare l operazione su tutto lo Stato in un singolo ciclo di clock, ma avrebbe costretto il sintetizzatore ad istanziare 16 ROM, dato che gli accessi sono vincolati ad avvenire in parallelo. Un analisi in simulazione (riportata in Figura 3.7) ci suggerisce sia molto meglio la seconda soluzione della prima: infatti, se si considera uno solo dei 16 cicli di clock necessari per terminare la Sub Bytes, si vede che il tempo impiegato è circa 1 5 rispetto alla prima soluzione. Purtroppo la seconda soluzione andava fuori dai limiti fisici di spazio della FPGA, quindi si è dovuto optare per la prima, meno performante ma fisicamente implementabile e testabile sull hardware a disposizione Simulazione dell AES core A questo punto del lavoro si pone però il problema di valutare se quanto è stato implementato funziona correttamente; non disponendo ancora dell interfacciamento non si è potuto provarlo direttamente su scheda, quindi si è utilizzato uno strumento software, ModelSim, per simulare il VHDL. Il metodo standard per simulare una parte di codice VHDL è quello di scrivere un altro file VHDL, un testbench, che non sia dotato di porte verso l esterno: in questo file verrà istanziato l AES core, e si provvederà a forzare gli ingressi dello stesso con dei valori (non si riporta il file di testbench perché data la sua estrema semplicità non c è nulla da commentare). A questo punto si compilano i file, si lancia la simulazione e si monitorizzano le uscite di interesse, per vedere se il risultato ottenuto dalla 56

69 CAPITOLO 3. Implementazione dell AES simulazione coincide con quello ottenuto ad esempio da una semplice implementazione C dello stesso AES core. Per prima cosa può essere interessante vedere come parte la cifratura dei dati in ingresso: a questo scopo in Figura 3.8 si riporta l inizio di una simulazione: le righe orizzontali rappresentano i vari segnali: quelli sopra il divisore sono segnali del testbench, quelli sotto invece sono segnali dell AES core; alcuni, come ad esempio il clock, sono replicati. Qui si può vedere Figura 3.7: Simulazione dell AES core (inizio). come una volta scritti i dati da crittografare sugli ingressi, viene alzato il segnale start cypher (start cyph per il blocco esterno), e questo non appena si abbassa fa partire la macchina a stati sopra descritta. Si passa ora invece alla Figura 3.8, dove viene riportata l ultima parte di una simulazione dell AES core. Tra le cose da notare in questa figura c è, come già detto nel paragrafo 3.4.2, il trade off prestazionale a cui si è stati obbligati a causa della capacità fisica limitata della FPGA: questo può essere ben visto lungo la diagonale di valori presente nel disegno. Infatti, nel caso si fosse fatta l altra 57

70 CAPITOLO 3. Implementazione dell AES Figura 3.8: Simulazione dell AES core (fine). implementazione, tutta quella diagonale (calcolata in 16 cicli di clock) sarebbe stata calcolata in un solo ciclo di clock, e considerando che per completare quella diagonale se ne vanno la maggior parte dei cicli di clock necessari (16 su 19), si intuisce quanto avrebbe giovato alle prestazioni un simile cambiamento nell implementazione. Un altra cosa da notare è che l uscita rimane indeterminata per tutto il tempo (ma in questo tempo naturalmente non deve MAI essere letta), e solo alla fine viene copiato in essa lo Stato; contemporaneamente viene alzato per 2 cicli di clock il segnale encrypted data ready (all esterno corrisponde a enc data ready) che dice al blocco esterno che ora i dati sulle uscite (data out, o data2 per il blocco esterno) sono validi, e vanno letti; inoltre una volta qui l AES core rimane in attesa di nuovi valori sugli ingressi e del nuovo comando di start. Appurato quindi che l implementazione fatta dell AES core funziona correttamente in simulazione, rimane ora da scrivere l implementazione della parte re- 58

71 CAPITOLO 3. Implementazione dell AES lativa all estensione della specifica a 512 bit e un interfacciamento che permetta alla stessa implementazione di funzionare all interno di un architettura hardware; si passa per prima cosa ad esaminare il completamento della specifica. Avendo realizzato il core che effettua la cifratura di blocchi di dati da 128 bit, e dovendo farlo lavorare su blocchi di dati da 512 bit, l idea, come è già stato accennato nell ultima parte della specifica e illustrato nella Figura 2.5, è quella di: salvare i 512 bit da crittare in un opportuno registro della user logic; inviare i primi 128 bit al core della periferica (l AES 128); attendere che il core dia risultati stabili (i dati crittati) in uscita; leggere i risultati dall uscita del core e salvarli su un opportuno registro; inviare i 128 bit successivi al core e ripetere il procedimento fino a che non si sono esauriti i 512 bit da crittare presenti nei registri della user logic; lanciare un interrupt al processore, che a questo punto leggerà i 512 bit di dati crittati dalla user logic e provvederà a scrivere altri 512 bit da crittare. Questo procedimento è stato implementato tramite una macchina a stati, che parte quando sono stati letti dal bus i 512 bit da crittare e i 1408 bit della chiave generata via software. Di questa macchina a stati si riporta solo una parte, più precisamente la parte finale, quella in cui viene inviato l ultimo troncone di 128 bit da crittare, in Figura 3.9: questa parte è però sufficiente per ben capirne il funzionamento. Come si vede dal codice in Figura 3.9, la macchina a stati copia sull ingresso del core 128 bit da crittare (riga 148), e alza il segnale di start per due cicli di clock, in modo da far partire la macchina a stati interna al core (già descritta). A questo punto rimane in attesa che si alzi l uscita dell AES core che segnala la fine delle operazioni (riga 156), dopodiché salva i dati letti dall uscita della periferica in un suo registro interno ciph data (righe immediatamente successive). Infine, dato che ha finito i 512 bit da crittare, alza per un ciclo di clock il segnale di interrupt, che verrà poi visto ed interpretato dal processore. 59

72 CAPITOLO 3. Implementazione dell AES Figura 3.9: Macchina a stati dell AES 512. NOTA: potrebbe essere interessante ampliare l implementazione proposta in modo che lavori su blocchi più grandi, in modo da ridurre ancora di più il numero di interrupt lanciati al processore. Le modifiche da effettuare sul codice VHDL per implementare questa modifica sono estremamente semplici, e richiedono solo uno spazio (in termini di slices, LUT, CLB) leggermente maggiore sulla FPGA. In ordine le modifiche da fare sono (nel caso in cui per esempio si voglia portare la dimensione dei blocchi a 1024 bit): cambiare la struttura dati matrix 32 nel file constants and type in modo che anziché contenere 16 parole di 32 bit (totale di 512 bit) ne contenga 32 (totale di 1024 bit); leggere dal bus anche i dati da plain data (16) a plain data (31) e scrivere sul bus quelli crittati tramite memory map; modificare la macchina a stati (aggiungendo degli stati) in modo che chiami il core 8 volte anziché 4 prima di lanciare l interrupt. 60

73 CAPITOLO 3. Implementazione dell AES Si passerà ora nel prossimo capitolo a spiegare come è stato fatto l interfacciamento verso l architettura e l inserimento dell AES in essa. 61

74

75 Capitolo 4 Inserimento dell AES in un architettura hardware In questo capitolo si presenterà la struttura hardware complessiva dell IP Core dotato delle funzionalità di cifratura AES. L IP Core si può dividere in due blocchi: uno che realizza le operazioni crittografiche e uno che realizza l interfacciamento con il bus PLB. Nel capitolo 3 è già stata discussa la parte di hardware dedicata alla cifratura, pertanto nel presente capitolo ci si concentrerà prevalentemente sulle problematiche di interfacciamento. Si passerà poi a descrivere brevemente come inserire l IP Core all interno dell architettura disponibile in laboratorio ed infine si descriverà il driver che la gestisce. 4.1 Interfacciamento con il Bus E stato scelto di realizzare un IP Core dotato di interfaccia con il bus PLB. Il PLB è un elemento dell architettura Core Connect di IBM ed è un bus ad alte prestazioni specificamente progettato per il collegamento di processori con periferiche ad alte prestazioni. La FPGA Avnet VirtexII-Pro è dotata di un microprocessore PowerPC collegato direttamente a tale bus. L IP Core dovrà essere a sua volta 63

76 CAPITOLO 4. Architettura Hardware dell AES collegato al bus e mappato in un opportuno spazio di memoria del sistema. Inoltre l IP Core dovrà presentare una linea di uscita dedicata a segnalare l interrupt al microprocessore IPIF Il bus PLB è composto da numerosi segnali ciasuno da pilotare correttamente secondo lo standard rispettando tutti i vincoli di tempo. E facile comprendere che si tratta di un problema piuttosto complesso, pertanto per venire incontro alle esigenze dei progettisti, la Xilinx fornisce alcune interfaccie predefinite che si occupano di gestire la comunicazione con i bus della famiglia Core Connect [11]. L IP Core può dunque far uso di una interfaccia predefinita e portabile detta IPIF. In questo caso, l IP Core si può a sua volta dividere in IPIF e User Logic come mostrato in Figura 4.1: IPIF (IP Interface) - è una interfaccia predefinita, fornita dalla Xilinx, con il tipo di bus scelto che si occupa della gestione di tutti i vari segnali e protocolli necessari per la comunicazione con il bus. L IPIF presenta inoltre un interfaccia con la user logic detta IPIC (IP InterConnect). User Logic - è la parte hardware che realizza la funzione propria dell IP Core, descritto in linguaggio VHDL, che comunica con l IPIF del bus scelto attraverso l interfaccia IPIC. Una user logic progettata con un interfaccia IPIC ha il vantaggio di essere portabile. All interno dell ambiente di sviluppo EDK sono forniti vari esempi, chiamati reference designs, che contengono il codice VHDL che instanzia l IPIF opportuna (in base al tipo di bus) e la collega ad una user logic di default. Ciascuno di questi esempi forniti dalla Xilinx fa uso di una particolare versione ridotta dell IPIF che utilizza solo un sottoinsieme delle funzionalità dell IPIF completa del bus scelto. In questo modo è possibile scegliere il reference design più adatto alle proprie esigenze e quindi modificarlo, limitando lo spreco di risorse sulla FPGA dovuto a funzioni inutilizzate. In Figura 4.2 sono riportate le funzionalità offerte dalle varie implementazioni. 64

77 CAPITOLO 4. Architettura Hardware dell AES Figura 4.1: Schema di un IP Core connesso a bus PLB che fa uso di IPIF. Figura 4.2: Reference Designs Forniti dalla Xilinx. Tra le varie implementazioni disponibili si è scelta la plb core ssp1 ref, che presenta tutte le funzionalità richieste per interfacciare l AES: in particolare essa dispone di: Interfacciamento al bus PLB di tipo slave-only. Supporto per bus acknowledge ritardato e controllato dalla user logic. Module Identification Register (MIR) per l identificazione software dell IP Core. Reset Register per generare un reset della periferica via software. 65

78 CAPITOLO 4. Architettura Hardware dell AES Figura 4.3: Schema entità del plb core ssp1 ref. IP Interrupt Source Control (ISC) service per generare un interrupt al processore. Decodifica degli indirizzi assegnati alla user logic. Connessione alla user logic con un insieme semplificato dei segnali dell IPIC. In Figura 4.3 è riportato lo schema delle entità VHDL che istanzia il plb core ssp1 ref Segnali dell IPIC L IP Core che è stato realizzato sfruttando l implementazione plb core ssp1 ref fa uso di un sottoinsieme dei segnali dell IPIC realmente disponibili. In particolare si fa uso dei segnali riportati in Figura 4.4. Si fa notare che la dicitura Bus2IP è legata alla direzione dei segnali, infatti, indica i segnali provenienti dalla IPIF e diretti alla User Logic. Invece IP2Bus indica i segnali che vanno dalla User Logic all IPIF. 66

79 CAPITOLO 4. Architettura Hardware dell AES Figura 4.4: Segnali utilizzati dell IPIC. 67

80 CAPITOLO 4. Architettura Hardware dell AES Figura 4.5: Parametri dell IP Core Parametri dell IP Core L esempio plb core ssp1 ref definisce alcuni parametri che permettono di definire l ampiezza del collegamento con il bus dati e indirizzi del PLB. Inoltre questi parametri permettono di definire a che indirizzi di memoria risponderà l IP Core: ovvero che indirizzi dovrà porre il PowerPC sul bus indirizzi del PLB in modo tale da accedere ai vari registri interni della periferica, come illustrato nel paragrafo seguente. In Figura 4.5 sono brevemente descritti tali parametri Registri dell IP Core All interno dello spazio di indirizzamento dell IP Core sono accessibili dall esterno numerosi registri. Alcuni di essi sono definiti dall interfaccia IPIF, mentre nello spazio di indirizzamento tra C BASEADDR e C HIGHADDR è possibile porre i registri che contengono i dati da cifrare, la chiave di cifratura e i dati cifrati. A seconda dell indirizzo che è posto sul bus PLB è possibile effettuare una operazione di lettura/scrittura sul registro corretto. 68

81 CAPITOLO 4. Architettura Hardware dell AES Registri dell IPIF Il PLB IPIF Core SSP1 definisce quattro registri più uno virtuale oltre quelli propri della user logic [13]. MIR (Module Identification Register): permette al sistema di avere diverse informazioni quali ad esempio la versione dell IPIF o dell hardware. Comunque, non è stato utilizzato dal software di gestione dell IP Core. SW RST (Software Reset Register): condivide lo stesso indirizzo di memoria del MIR. Non è in realtà un registro, ma scrivendo a questo indirizzo 0xA è attivato il segnale dell IPIC Bus2IP Reset che provoca il reset software dell IP Core. GIE (Global Interrupt Enable Register): determina l abilitazione/disabilitazione della linea di interrupt dall IPIF verso il processore. È composto da un solo bit. Deve essere settato per generare gli interrupt anche se sono abilitati nel IP IER. IER (IP Interrupt Enable Register): è dotato di un bit per ogni interrupt che può essere sollevato dalla user logic. Il registro ha una corrispondenza uno a uno con i corrispondenti bit nello Status register. Ogni bit settato abilita l interrupt corrispondente, resettato lo disabilita. Nel caso dell AES che può sollevare un unico interrupt interessa solamente il bit 0 dell IER e ISR. ISR (IP Interrupt Status Register): memorizza lo stato dei vari interrupt. Ogni evento di interrupt deve durare almeno un ciclo del clock affinché sia catturato correttamente. Ciascun bit dell ISR può essere settato o resettato via software attraverso una operazione di Toggle-on-Write (i bit in cui è scritto 1 vengono invertiti). Registri della User Logic All interno dello spazio di memoria tra gli indirizzi C BASEADDR e C HIGH- ADDR è possibile porre i registri dell IP Core che sono effettivamente utilizzati 69

82 CAPITOLO 4. Architettura Hardware dell AES per le operazioni di crittografia con algoritmo AES. In particolare, viste le specifiche, l IP Core deve cifrare 512 bit di dati alla volta e considerando che l AES cifra (nel caso in esame) 128 bit alla volta, si devono memorizzare 4 blocchi da 128 bit in ingresso e 4 blocchi da 128 bit in uscita. Inoltre, poichè come si è detto al Capitolo 3.3 la generazione della chiave espansa avviene via software, si devono passare i 1408 dell expanded key all IP Core. Il PowerPC esegue operazioni su registri di 32 bit, pertanto si è scelto per semplicità di utilizzare dei registri accessibili dall esterno di 32 bit. In tal modo sono necessari 4 registri da 32 bit per memorizzare un blocco da 128 bit. Poichè servono 4 blocchi da 128 bit per il plaint text e per il cipher text servono in totale 16 registri in ingresso e 16 in uscita. Invece i 1408 bit della chiave espansa sono memorizzati in 44 registri da 32 bit. Ricapitolando servono: Plain-Text: 16 registri da 32 bit (Ingresso) Cipher-Text: 16 registri da 32 bit (Uscita) Expanded Key: 44 registri da 32 bit (Ingresso) I registri sono stati posti in memoria nell ordine appena illustrato a partire dall indirizzo C BASEADDR. Si noti che per semplificare l hardware i registri che contengono la chiave e i dati in ingresso possono essere solo scritti, mentre i dati cifrati possono solo essere letti dal processore. In Figura 4.6 è riportato un estratto di codice VHDL che si occupa della decodifica degli indirizzi e della scrittura nei registri interni. L idea di base è quella di scrivere il dato presente su Bus2IP Data nel registro opportuno in base al valore di Bus2IP Addr Mappatura della memoria Per quanto detto nei due paragrafi precedenti, si può ricavare la mappa di memoria dell IP Core riportata in Figura 4.7. Si fa notare che gli spazi inutilizzati sono dovuti a delle limitazioni dell ambiente di sviluppo che richiede di assegnare zone di memorie multiple di 0xFF. 70

83 CAPITOLO 4. Architettura Hardware dell AES Figura 4.6: Estratto VHDL scrittura dei registri interni. Figura 4.7: Memory Map dell IP Core. 71

84 CAPITOLO 4. Architettura Hardware dell AES 4.2 Struttura dell IP Core L hardware dell IP Core è stato descritto completamente in linguaggio VHDL. In particolare si è distribuita la descrizione in 3 file: aes512.vhd, aes512 userlogic.vhd, aes core.vhd. Aes core.vhd descrive l entità che effettua la cifratura di blocchi da 128 bit ed è già stata ampiamente analizzata nel Capitolo 3. Aes512.vhd definisce l interfaccia esterna dell IP Core. In particolare essa contiene tutti i segnali del bus PLB e la linea che segnala l interrupt al processore IP2INTC Irpt. Inoltre questo file contiene l istanziazione dell IPIF (in versione ridotta compatibilmente con quanto prevede il reference design PLB versione 1) e dell entità Aes512 userlogic. Provvede inoltre al collegamento delle due entità con gli opportuni segnali dell IPIC e definisce l interfaccia esterna dell IP Core. Il file Aes512 userlogic.vhd istanzia un Aes core e definisce la mappature della memoria dell IP Core descritto nel paragrafo precedente, in quanto contiene tutta la parte relativa alla decodifica degli indirizzi e alla scrittura/lettura dei registri. In questo file è anche definita la macchina a stati, già descritta nel Capitolo 3, che si occupa di cifrare i dati in ingresso inviandoli all Aes core a blocchi di 128 bit. Quando sono pronti i 512 bit cifrati in uscita attiva la linea di interrupt verso il processore. In Figura 4.8 è riportata l interfaccia dell entità Aes512 userlogic. La struttura complessiva dell IP Core si può schematizzare come in Figura 4.9. Figura 4.8: Interfaccia entità Aes512 userlogic. 72

85 CAPITOLO 4. Architettura Hardware dell AES Figura 4.9: Schema a blocchi IP Core. Si può osservare che l IP Core comunica con il resto del sistema solamente attraverso il bus dati PLB e con una linea che andrà collegata ad un gestore esterno di interrupt per segnalare il termine dell operazione di cifratura al processore. Non ci si soffermerà oltre a descrivere il codice VHDL in quanto la parte più importante ai fini dell algoritmo di cifratura è già stata descritta nel Capitolo 3. Tuttavia si segnala che è stato necessario cambiare il pilotaggio del segnale IP2Bus Ack, che in origine era un assegnamento asincrono, con la parte di codice in Figura che fa lo stesso assegnamento (righe ), ma solo in corrispondenza di un fronte di salita del clock. Figura 4.10: Descrizione VHDL che pilota il segnale dell IPIC IP2Bus Ack. Questa modifica si è resa necessaria alla luce dei risultati ottenuti in laboratorio configurando effettivamente la FPGA: le scritture sui registri avvenivano correttamente, ma le letture fornivano sistematicamente valori errati. Questo è stato spiegato con il fatto che la versione originale del reference design attivava 73

86 CAPITOLO 4. Architettura Hardware dell AES Figura 4.11: Estratto temporizzazione (IPIC) di una slave reading corretta. l Ack in modo asincrono subito dopo il ritardo dovuto ai tempi di propagazione delle porte logiche: quindi il dato veniva segnalato come pronto ancora prima che venisse aggiornato nel registro (operazione fatta sul fronte di salita del ciclo di clock), e questo portava al fatto che la lettura dei registri contenesse sempre il dato della lettura precedente. In Figura 4.11 è mostrato con quali temporizzazioni si devono pilotare i segnali dell IPIC nelle operazioni di lettura in modo tale da restituire il valore corretto. Con la modifica al codice VHDL riportata in Figura 4.10 si ottiene il risultato corretto. Per maggiori dettagli su questo problema si rimanda al documento [3]. 4.3 Inserimento dell AES nell architettura Completata la descrizione a livello hardware del cifratore AES su PLB, si può passare a inserire l IP Core nell architettura che si andrà a configurare sulla FPGA. Si segue la procedura descritta nel dettaglio in [6] in modo tale da avere l AES512 tra i blocchi disponibili all interno dell ambiente di sviluppo EDK. Quindi lo si 74

87 CAPITOLO 4. Architettura Hardware dell AES inserisce nell architettura collegandolo al bus PLB. Inoltre, rispetto all architettura di base, si inserisce il componente opb intc, che serve a gestire gli interrupt, e si inserisce anche un opb gpio, che sarà usato per pilotare dei led in modo tale da avere un responso visivo per il debugging. L architettura complessiva della parte hardware è rappresentata in Figura Figura 4.12: Architettura dopo l inserimento dei vari blocchi. Per concludere la definizione della parte hardware è necessario impostare tutti gli spazi di memoria dei vari componenti in modo tale che non risultino sovrapposti. Inoltre occorre collegare la porta di interrupt in uscita all AES512 al gestore di interrupt e da questo al PowerPC, come illustrato in Figura Driver Per poter utilizzare l IP Core creato all interno di un architettura hardware è necessario scrivere dell opportuno software che lo gestisca. L IP Core interagisce 75

88 CAPITOLO 4. Architettura Hardware dell AES Figura 4.13: Schema collegamento segnali gestione interrupt. con il resto del sistema attraverso il canale di comunicazione rappresentato dal bus PLB. Esso è di tipo slave only, quindi sarà il microprocessore (in questo caso un PowerPC) che effettuerà delle operazioni di I/O puntando agli indirizzi di memoria che corrispondono ai registri dell IP Core. Per il cifratore AES è stato scelto di creare per semplicità un driver a basso livello. In questo paragrafo saranno tuttavia solamente descritti gli elementi fondamentali del driver realizzato. Per ulteriori informazioni sui driver e sulle modalità di inserimento del driver stesso all interno di un progetto di EDK si consiglia di far riferimento a [3] e [4]. La parte fondamentale del driver è composta da due file C: un file di interfaccia aes512 l.h che contiene i prototipi delle funzioni e definisce eventuali parametri, e un file aes512 l.c che contiene l implementazione delle funzioni dell header file. Oltre a questi due file sono presenti i file.mdd e.tcl che si occupano di definire quali librerie utilizzare e di fornire al compilatore le direttive per la creazione del driver Funzioni del Driver In Figura 4.14 è riportato il contenuto del file aes512.h. Si può osservare che sono definiti come parametri gli spiazzamenti dei registri dell ISC e la maschera di interrupt per l interrupt controller. In totale il driver definisce nove funzioni che possono essere chiamate dal microprocessore. 76

89 CAPITOLO 4. Architettura Hardware dell AES Figura 4.14: Struttura del file aes512.h. XAes512 mwritereg(baseaddress, RegOffset, Data): Questa funzione ridefinisce l istruzione di XIo Out32 della Xilinx in modo tale da accettare in ingresso un BaseAddress e un offset. Inoltre ridefinisce il nome della funzione in modo tale che risulti significativo per il contesto. XAes512 mreadreg(baseaddress, RegOffset):analogo al punto sopra, ma ridefinisce XIo In32. void aes512 int handler (void): è la routine che viene chiamata dal Power- PC quando il cifratore termina le operazioni e segnala l interrupt. Questa routine deve anche resettare i flag di interrupt in ISR. 77

90 CAPITOLO 4. Architettura Hardware dell AES void XAes512 int disable(): scrive i registri IER e GIE dell IP Core in modo tale da disabilitare la linea di interrupt esterna. void XAes512 int enable(): scrive i registri IER e GIE dell IP Core in modo tale da abilitare la linea di interrupt esterna. void XAes512 reset(): scrive nel registro MIR/SW RST per generare un reset via software dell IP Core. void XAes512 write expanded key (Xuint32 base addr, Xuint32*w): questa funzione riceve in ingresso l indirizzo base dell AES512 e il vettore della chiave espansa. Quindi provvede a scriverlo nei registri interni dell IP Core a partire dall indirizzo 0x80. void XAes512 write data (Xuint32 base addr, Xuint32*data): scrive i 512 bit di dati da cifrare passati con il vettore data all interno dei registri dell IP Core dall indirizzo 0x00 a 0x3F. Quando viene completata la scrittura si attiva automaticamente la macchina. void XAes512 read data (Xuint32 base addr, Xuint32*data): restituisce all interno del vettore data i dati cifrati. Per avere dei risultati corretti si deve chiamare questa funzione quando è terminata la cifratura ed è attiva la linea di interrupt in uscita. Tutte queste funzioni fondamentalmente non fanno altro che leggere e scrivere dai registri dell IP Core, pertanto si basano sulle istruzioni XAes512 mwritereg e XAes512 mreadreg. A titolo di esempio, in figura 4.15 si riporta il codice C che implementa la funzione XAes512 write data. La funzione XAes512 mwritereg è la ridefinizione della funzione XIo Out32 creata dalla Xilinx e permette di scrivere un dato da 32 bit all indirizzo di memoria specificato. Il vettore data viene passato dal codice del main eseguito dal Power- PC e contiene i 512 bit dati da scrivere sull IP Core per essere cifrati. Il vettore è di tipo Xuint32 e pertanto in ogni scrittura vengono traferiti 32 bit di dati alla volta. 78

91 CAPITOLO 4. Architettura Hardware dell AES Figura 4.15: Implementazione della funzione per scrivere i registri della periferica Interrupt L IP Core implementato è dotato anche della funzionalità di sollevare degli interrupt, pertanto si deve prevedere un apposita funzione di gestione degli interrupt. Si ricorda che nel caso in esame, poichè si utilizza un microprocessore PowerPC, è necessario fare uso di un file di linker script per collocare opportunamente nella memoria BRAM i vettori di interrupt. Si vedano per ulteriori dettagli [3] e [5]. Il sistema che è stato realizzato non aveva particolari requisiti di funzionamento se non di permettere di testare le prestazioni del cifratore AES. Si era pensato inizialmente di creare una funzione che leggesse il risultato della cifratura dai registri, lo scrivesse su seriale e quindi utilizzasse il risultato dell operazione come ingresso per la cifratura successiva. Tuttavia in laboratorio è stato verificato che questo approccio non permetteva di sfruttare appieno la velocità dell IP Core in quanto la seriale a bps rappresentava il collo di bottiglia del sistema. Per quanto detto, si è passati all implementazione di Figura In questo caso la funzione di interrupt utilizza un contatore (di tipo Xuint32) che viene incrementato ad ogni chiamata. Fino a quando il contatore è minore di la funzione utilizza l uscita di una cifratura come ingresso per la successiva. Infatti, legge i registri dei dati cifrati in un vettore temporaneo e quindi scrive il vettore 79

92 CAPITOLO 4. Architettura Hardware dell AES Figura 4.16: Implementazione C della routine di interrupt. nuovamente nei dati da cifrare dell IP Core avviando così una nuova operazione di cifratura di altri 512 bit. Ovviamente la funzione provvede anche a resettare il flag di interrupt dell ISR. Quando invece il contatore raggiunge il valore di si stampa su seriale un messaggio che segnala il termine delle operazioni e termina la funzione non avviando una nuova operazione. 4.5 Struttura delle directory dell IP Core La descrizione hardware e software dell IP Core è stata organizzata in diversi file che sono stati distribuiti in una struttura gerarchica secondo i vincoli imposti dall ambiente di sviluppo. In Figura 4.17 è riportata la struttura finale della directory che contiene l implementazione dell IP Core e a lato sono riportati i file contenuti nelle varie directory. Si può osservare che il nome della directory principale è aes512 v1 00 a in quanto all hardware è stato assegnato il numero di revisione v1.00a. Si hanno tre sottodirectory: data contiene i file che definiscono i parametri 80

93 CAPITOLO 4. Architettura Hardware dell AES Figura 4.17: Struttura delle directory e file dell AES512. utili a integrare l IP Core all interno dei un progetto EDK; hdl contiene la descrizione dell hardware in VHDL ed infine src che contiene l implementazione dei driver. A questo punto l implementazione dell IP Core è completata, e si può quindi passare a fare una serie di test direttamente su scheda al fine di verificare la correttezza e le prestazioni di quanto è stato fatto. 81

94

95 Capitolo 5 Risultati Sperimentali In questo capitolo saranno presentati i risultati sperimentali ottenuti nel laboratorio di Micro Architetture programmando il dispositivo hardware presentato nel Capitolo Si presenteranno brevemente nell ordine l occupazione della FPGA in termini di risorse e la frequenza massima a cui può operare l IP Core. Quindi si passerà a descrivere nel dettaglio la tipologia dei test effettuati sulla scheda di sviluppo Avnet in modo tale da verificare il corretto funzionamento del cifratore AES a 512 bit. 5.1 Occupazione della scheda Una volta inserito correttamente l IP Core all interno dell architettura illustrata nel Capitolo 4, è possibile procedere alla creazione del bitstream che contiene la descrizione dell hardware che andrà a configurare l FPGA. Dall analisi dei file di log, prodotti al termine della fase di PAR, è possibile ricavare delle informazioni relative all occupazione di area dell IP Core su FPGA e informazioni relative al tipo di componenti logici elementari usati. In Figura 5.1 sono riportati i componenti logici che sono stati estratti dalla sintesi del codice VHDL per il solo componente cifratore AES512. Ad esempio si può osservare che sono presenti 79 registri a 32 bit, e per la sola parte relativa al memory map sono necessari =76 registri. Gli altri 3 registri sono utilizzati dall IPIF e dall Aes512 userlogic. 83

96 CAPITOLO 5. Risultati Sperimentali Figura 5.1: Elenco dei componenti estratti dall HDL Synthesis per l IP Core AES512. In Figura 5.2 é invece riportata l occupazione di area dell architettura completa dopo la fase di mapping tecnologico. L occupazione è mostrata in termini di slices, 4 input LUT, IOB dell FPGA Virtex II Pro. In particolare si osserva che l occupazione delle slices si avvicina molto al 100%, quella delle LUT si attesta invece intorno al 69%. Visto che la scheda risulta essere quasi completamente utilizzata, risulta impossibile aggiungere altri IP Core all interno dell architettura. 5.2 Temporizzazioni Gli strumenti presenti nell ambiente congiunto ISE/EDK forniscono direttamente in uscita anche il valore della frequenza massima a cui può operare correttamente la FPGA. In Figura 5.3 sono riportati: nella parte A la stima delle prestazioni (post sintesi) in termini di velocità del solo blocco AES512, mentre nella parte B è riportata l indicazione della frequenza massima a cui può operare l intera architettura su FPGA. L ultimo valore è il più attendibile in quanto è quel- 84

97 CAPITOLO 5. Risultati Sperimentali Figura 5.2: Occupazione Post Map. Figura 5.3: Vincoli temporizzazioni. lo calcolato al termine delle operazioni di place and route ed è quindi quello a cui si deve fare riferimento. Si osserva infatti che il primo valore si avvicina a 118 Mhz, mentre il secondo indica una frequenza massima ammissibile di Mhz. La FPGA potrà quindi funzionare correttamente alla frequenza di 100 Mhz. 5.3 Test Effettuati Nel Capitolo sono stati presentati i risultati della simulazione del sottoblocco dell IP Core che si occupa della cifratura a 128 bit. In questo paragrafo, invece, si vuole testare il corretto funzionamento dell intero IP Core dopo che è stato programmato sulla FPGA presente sulla scheda di sviluppo Avnet del laboratorio. 85

98 CAPITOLO 5. Risultati Sperimentali Come è già stato presentato all interno di questo lavoro di tesi, l IP Core è stato inserito all interno di una architettura dotata di un microprocessore PowerPC. Nel caso in esame il microprocessore non deve svolgere alcuna funzione in particolare, pertanto l idea di base per effettuare il test di funzionamento dell AES512 è quella di sfruttare il PowerPC facendogli eseguire un opportuno software. Innanzitutto si ricorda che è necessario passare all IP Core la chiave espansa, quindi il PowerPC dovra provvedere a generarla. Per visualizzare i dati contenuti nei vari registri interni dell IP Core si è utilizzata l interfaccia seriale RS232 presente sulla scheda che è stata collegata ad un PC. Inoltre, per avere un riscontro visivo del corretto funzionamento del PowerPC e di una corretta programmazione dell FPGA, si sono pilotati dei led in modalità scorrimento attraverso l opb gpio. Per verificare che l IP Core cifrasse correttamente i 512 bit in ingresso si sono utilizzati i valori di test che sono consultabili nell appendice della specifica originale dell AES [1]. In particolare sono stati utilizzati i seguenti dati rappresentati in esadecimale: Caso 1: Cipher Key = 2b 7e ae d2 a6 ab f cf 4f 3c Plain Text = f6 a8 88 5a 30 8d a2 e Cipher Text = dc dc 11 6a b 1d fb Caso 2: Cipher Key = a 0b 0c 0d 0e 0f Plain Text = aa bb cc dd ee ff Cipher Text = 69 c4 e0 d8 6a 7b d8 cd b b4 c5 5a Descrizione dei test Il software di test dell IP Core eseguito dal PowerPC ha una fase di inizializzazione in cui si impostano i vari registri del gestore esterno di interrupt e si 86

99 CAPITOLO 5. Risultati Sperimentali inizializza la gestione degli interrupt a livello di microprocessore registrando i vettori di interrupt. La parte successiva del test si può sostanzialmente suddividere in due parti: nella prima si testa che l IP Core cifri correttamente i 512 bit di dati mantenendo disabilitato l interrupt, mentre nella seconda si verifica il corretto funzionamento della gestione degli interrupt effettuando una sequenza di cifrature in cascata. Nella prima parte viene chiamata la funzione del driver XAes512 int disable() per disabilitare gli interrupt. Quindi viene generata via software tramite PowerPC la chiave espansa a partire da una delle due chiavi indicate al paragrafo precedente. Il plain text è memorizzato in un vettore a cui si assegnano i 128 bit del primo e del terzo blocco da cifrare pari al plain text del primo esempio riportato al paragrafo 5.3, mentre i 128 bit del secondo e del quarto blocco sono posti uguali a quelli del secondo esempio. A questo punto si chiama la funzione del driver XAes512 write expanded key (XPAR AES512 1 BASEADDR, w) con i parametri indicati, dove w è il vettore che contiene l expanded key e XPAR AES512 1 BASE- ADDR è l indirizzo base dell IP Core del cifratore. Ora l IP Core è pronto per accettare dei dati ed il PowerPC chiama la routine del driver XAes512 write data (XPAR AES512 1 BASEADDR, plain) per scrivere i 512 bit del plain data nei registri interni dell IP Core. Poiché non si conosce a priori quanto dovrà a- spettare il microprocessore affinchè possa leggere il risultato dalla periferica, si è deciso di farlo attendere in loop per un secondo. Il risultato cifrato viene letto con l istruzione XAes512 read data (XPAR AES512 1 BASEADDR, ciph) e viene stampato su seriale tramite l istruzione xil printf analoga al C, ma specifica per sistemi embedded. Visualizzando il log dei dati inviati al computer a cui è collegata tramite seriale la scheda, sapendo la chiave ed i dati in ingresso e sapendo il risultato atteso, è possibile verificare che l operazione di cifratura è andata a buon fine. In particolare si esegue una volta il test con la prima chiave e poi con la seconda, in modo tale da verificare tutti i 512 bit del risultato. Nella seconda parte del test, invece, si provvede ad abilitare la gestione degli interrupt dell AES512 con l istruzione opportuna del driver. Quindi si caricano, tramite il software di test (il main), i primi 512 bit da cifrare per avviare le cifrature 87

100 CAPITOLO 5. Risultati Sperimentali successive. A questo punto il main entra in un ciclo infinito in cui accende i led in sequenza in modo tale da realizzare un effetto di scorrimento. Quando viene sollevato l interrupt al termine di una cifratura di un blocco da 512 bit, il PowerPC sospende il ciclo e passa ad eseguire la routine di interrupt del driver dell IP Core, che è già stata descritta al capitolo Il numero di cifrature successive, uguale al numero di volte che viene eseguita la routine di interrupt, è settabile attraverso il contatore. In Figura 5.4 è riportato un estratto del log della comunicazione seriale tra la scheda Avnet e il calcolatore collegato. Nella prima parte è effettuato il test senza utilizzare gli interrupt, mentre nella seconda parte si è impostato il numero di iterazioni della routine di interrupt pari a 10 e si è stampato il risultato al termine dell ultima cifratura. In particolare, per la prima parte si è verificato che i risultati coincidessero con quelli attesi riportati nella specifica dell AES, mentre per la seconda parte si è confrontato il risultato prodotto dalla FPGA con quello prodotto da un implementazione puramente software dell AES. Si è osservato che in entrambi i casi i risultati erano concordi con quelli teorici. 5.4 Valutazione delle Prestazioni Dalle prove sperimentali effettuate in laboratorio è stato possibile ricavare un misura delle prestazioni reali dell IP Core. In particolare si è sfruttata la seconda parte del test che fa uso di interrupt. L idea di base è quella di cronometrare il tempo impiegato dall IP Core a effettuare un numero noto di operazioni di cifratura. Si è impostato per comodità il valore massimo del contatore del numero di iterazioni della funzione di interrupt al valore di In questo modo vengono eseguite in successione un milione di cifrature di blocchi da 512 bit. Per avere i riferimenti temporali in cui rilevare l inizio e la fine del test si è sfruttata ancora una volta l interfaccia seriale. Si riportano di seguito i dati ottenuti: Numero Iterazioni:

101 CAPITOLO 5. Risultati Sperimentali Figura 5.4: Estratto log di test. 89

102 CAPITOLO 5. Risultati Sperimentali Tempo Misurato: 35 secondi. Si può quindi ricavare la velocità in bit al secondo: = 14,6 Megabit s Il valore che è stato calcolato è comunque un valore indicativo che non fornisce informazioni sulle prestazioni dell IP Core in senso assoluto. Si ricorda, infatti, che il tempo misurato non è quello in cui l IP Core esegue realmente le operazioni di cifratura, ma comprende anche il tempo necessario ad eseguire la funzione di interrupt da parte del microprocessore. In questa funzione vengono letti i sedici registri dell IP Core che contengono il risultato e si devono scrivere i sedici registri in ingresso con i nuovi dati da cifrare in modo tale da avviare una nuova operazione. Si deve inoltre considerare il tempo necessario ad incrementare il contatore e ad eseguire il confronto per determinare se si tratta dell ultima iterazione. Ricordando che il microprocessore lavora alla frequenza di 100 Mhz e che per eseguire un istruzione o una transazione sul bus PLB servono più cicli di clock, si capisce che si tratta di tempi non proprio trascurabili ma comunque difficili da valutare. La misura del tempo è stata effettuata manualmente e pertanto si può ritenere che la sua approssimazione sia di circa 1 secondo e quindi pari a circa il 3% dell intervallo misurato. Comunque l imprecisione non è tale da alterare sensibilmente il valore calcolato. La modalità con cui è stata realizzata la misura delle prestazioni dell IP Core, pur trascurando molti dettagli, fornisce comunque un ottima idea della velocità a cui può effettivamente lavorare l IP Core all interno di un architettura reale. Tipicamente, infatti, il microprocessore è dedicato ad eseguire un programma opportuno e utilizza l AES512 come se fosse una sorta di coprocessore crittografico. Quindi le operazioni relative alla scrittura e lettura dei registri vengono necessariamente eseguite. 5.5 Confronto con un implementazione software Per valutare la bontà delle prestazioni offerte dall IP Core realizzato in hardware su FPGA si è deciso di sviluppare un software in C dedicato alla cifratura 90

103 CAPITOLO 5. Risultati Sperimentali Figura 5.5: Risultato implementazione software. AES. Il software è stato scritto in modo tale da implementare esattamente lo stesso algoritmo che viene implementato in hardware dall IP Core. Il software è stato utilizzato anche in fase di testing in laboratorio per verificare la correttezza dei dati restituiti dalla scheda. Il programma realizzato è stato testato su di un computer dotato di Pentium GHz 512 MB di RAM e sistema operativo Windows Xp. In Figura 5.5 è riportata la schermata che contiene i risultati del software di test. Si può osservare che il tempo impiegato per cifrare blocchi da 512 bit è di secondi a cui corrisponde una velocità di 878 Kbit/s. Il valore ottenuto dipende però fortemente dalla piattaforma di test: microprocessore, sistema operativo, memoria disponibile, processi attivi, ottimizzazioni del compilatore. E quindi un valore puramente indicativo delle prestazioni ottenibili su un calcolatore moderno. Come ci si poteva attendere, l implementazione in hardware dell algoritmo di crittografia AES è molto più veloce rispetto a quella realizzata completamente in software. Nel caso in esame si passa dai 14,6 Mbit/s dell implementazione su 91

! La crittoanalisi è invece la scienza che cerca di aggirare o superare le protezioni crittografiche, accedendo alle informazioni protette

! La crittoanalisi è invece la scienza che cerca di aggirare o superare le protezioni crittografiche, accedendo alle informazioni protette Crittografia Cenni Damiano Carra Università degli Studi di Verona Dipartimento di Informatica La crittografia! Scienza che si occupa di proteggere l informazione rendendola sicura, in modo che un utente

Dettagli

Sommario. Introduzione alla Sicurezza Web

Sommario. Introduzione alla Sicurezza Web Sommario Introduzione alla Sicurezza Web Considerazioni generali IPSec Secure Socket Layer (SSL) e Transport Layer Security (TLS) Secure Electronic Transaction (SET) Introduzione alla crittografia Introduzione

Dettagli

Università degli Studi di Parma Facoltà di Ingegneria

Università degli Studi di Parma Facoltà di Ingegneria Università degli Studi di Parma Facoltà di Ingegneria Corso di Dispositivi Programmabili A - A.A. 2008_2009 Docente: Guido Matrella - guido.matrella@unipr.it Gruppo: Cozzani Federico - 185896 - fede.a.d.v.lerici@hotmail.it

Dettagli

RETI DI CALCOLATORI. Crittografia. La crittografia

RETI DI CALCOLATORI. Crittografia. La crittografia RETI DI CALCOLATORI Crittografia La crittografia La crittografia è la scienza che studia la scrittura e la lettura di messaggi in codice ed è il fondamento su cui si basano i meccanismi di autenticazione,

Dettagli

Capitolo 8 La sicurezza nelle reti

Capitolo 8 La sicurezza nelle reti Capitolo 8 La sicurezza nelle reti Reti di calcolatori e Internet: Un approccio top-down 4 a edizione Jim Kurose, Keith Ross Pearson Paravia Bruno Mondadori Spa 2008 Capitolo 8: La sicurezza nelle reti

Dettagli

La Sicurezza delle Reti. La Sicurezza delle Reti. Il software delle reti. Sistemi e tecnologie per la multimedialità e telematica.

La Sicurezza delle Reti. La Sicurezza delle Reti. Il software delle reti. Sistemi e tecnologie per la multimedialità e telematica. Sistemi e tecnologie per la multimedialità e telematica Fabio Burroni Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena burronif@unisi unisi.itit La Sicurezza delle Reti La presentazione

Dettagli

TUTORIAL 1. Gestione di periferiche di I/O su scheda XSA50. A cura di De Pin Alessandro

TUTORIAL 1. Gestione di periferiche di I/O su scheda XSA50. A cura di De Pin Alessandro TUTORIAL 1 Gestione di periferiche di I/O su scheda XSA50 A cura di De Pin Alessandro 1 Introduzione L intento di questo tutorial è quello di illustrare un primo semplice esempio di creazione di un progetto

Dettagli

Principi di crittografia Integrità dei messaggi Protocolli di autenticazione Sicurezza nella pila di protocolli di Internet: PGP, SSL, IPSec

Principi di crittografia Integrità dei messaggi Protocolli di autenticazione Sicurezza nella pila di protocolli di Internet: PGP, SSL, IPSec Crittografia Principi di crittografia Integrità dei messaggi Protocolli di autenticazione Sicurezza nella pila di protocolli di Internet: PGP, SSL, IPSec Elementi di crittografia Crittografia: procedimento

Dettagli

Sicurezza nelle applicazioni multimediali: lezione 8, sicurezza ai livelli di rete e data-link. Sicurezza ai livelli di rete e data link

Sicurezza nelle applicazioni multimediali: lezione 8, sicurezza ai livelli di rete e data-link. Sicurezza ai livelli di rete e data link Sicurezza ai livelli di rete e data link Sicurezza a livello applicativo Ma l utilizzo di meccanismi di cifratura e autenticazione può essere introdotto anche ai livelli inferiori dello stack 2 Sicurezza

Dettagli

Sicurezza nelle applicazioni multimediali: lezione 4, crittografia asimmetrica. Crittografia asimmetrica (a chiave pubblica)

Sicurezza nelle applicazioni multimediali: lezione 4, crittografia asimmetrica. Crittografia asimmetrica (a chiave pubblica) Crittografia asimmetrica (a chiave pubblica) Problemi legati alla crittografia simmetrica Il principale problema della crittografia simmetrica sta nella necessità di disporre di un canale sicuro per la

Dettagli

Crittografia. Appunti a cura del prof. Ing. Mario Catalano

Crittografia. Appunti a cura del prof. Ing. Mario Catalano Crittografia Appunti a cura del prof. Ing. Mario Catalano La crittografia La crittografia è la scienza che studia la scrittura e la lettura di messaggi in codice. Solitamente, i meccanismi crittografici

Dettagli

Crittografia. Crittografia Definizione. Sicurezza e qualità dei servizi su internet. 2009 Università degli Studi di Pavia, C.

Crittografia. Crittografia Definizione. Sicurezza e qualità dei servizi su internet. 2009 Università degli Studi di Pavia, C. Definizione La crittografia è la scienza che utilizza algoritmi matematici per cifrare e decifrare i dati. La criptoanalisi è la scienza che analizza e decifra i dati crittografati senza conoscerne a priori

Dettagli

RC4 RC4. Davide Cerri. Davide Cerri CEFRIEL - Politecnico di Milano cerri@cefriel.it http://www.cefriel.it/~cerri/

RC4 RC4. Davide Cerri. Davide Cerri CEFRIEL - Politecnico di Milano cerri@cefriel.it http://www.cefriel.it/~cerri/ POLITECNICO DI MILANO CEFRIEL - Politecnico di Milano cerri@cefriel.it http://www.cefriel.it/~cerri/ è un cifrario a flusso progettato da Ron Rivest (la R di RSA) nel 1987. Era un segreto commerciale della

Dettagli

Xilinx ISE Tutorial File -> New Project...

Xilinx ISE Tutorial File -> New Project... Xilinx ISE Tutorial L obiettivo di questo tutorial è il mappaggio di una semplice porta logica AND su una particolare FPGA, la Xilinx Spartan 3E, integrata nella board Digilent Nexys 2 500K, che utilizzeremo

Dettagli

Protezione dei Dati Digitali: Scenari ed Applicazioni

Protezione dei Dati Digitali: Scenari ed Applicazioni Protezione dei Dati Digitali: Scenari ed Applicazioni 1 Sommario Parte I : Scenari Parte II : La Teoria Parte III: La Pratica 2 Parte I: Scenari 3 Applicazioni quotidiane (1/2) Transazioni finanziarie

Dettagli

Implicazioni sociali dell informatica

Implicazioni sociali dell informatica Fluency Implicazioni sociali dell informatica Capitolo 10 Privacy I nostri corpi I nostri luoghi Le informazioni Le comunicazioni personali La privacy Con i moderni dispositivi è possibile violare la privacy

Dettagli

Esercitazione sul programma XILINX ISE 4.2i.

Esercitazione sul programma XILINX ISE 4.2i. Esercitazione sul programma XILINX ISE 4.2i. Obbiettivo di questa esercitazione è fornire una panoramica del pacchetto di sviluppo ISE 4.2i della Xilinx. Nel prosieguo saranno descritti i passi base di

Dettagli

I browser più comuni sono Explorer, Mozilla Firefox, Chrome, Safari

I browser più comuni sono Explorer, Mozilla Firefox, Chrome, Safari INTERNET Internet, cioè la rete di interconnessione tra calcolatori, è uno dei pochi prodotti positivi della guerra fredda. A metà degli anni sessanta il Dipartimento della difesa USA finanziò lo studio

Dettagli

FPGA: Introduzione. Dispositivi Programmabili. FPGA - Flessibilità e prestazioni. FPGA - Caratteristiche

FPGA: Introduzione. Dispositivi Programmabili. FPGA - Flessibilità e prestazioni. FPGA - Caratteristiche FPGA: Introduzione Dispositivi Programmabili FPGA (Field( Programmable Gate Arrays) Introduzione Famiglie di FPGA: architetture e tipi di blocchi I blocchi logici di base Flusso di progetto e technology

Dettagli

SISTEMI E RETI. Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB.

SISTEMI E RETI. Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB. SISTEMI E RETI Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB. CRITTOGRAFIA La crittografia è una tecnica che si occupa della scrittura segreta in codice o cifrata

Dettagli

Sicurezza nelle reti

Sicurezza nelle reti Sicurezza nelle reti A.A. 2005/2006 Walter Cerroni Sicurezza delle informazioni: definizione Garantire la sicurezza di un sistema informativo significa impedire a potenziali soggetti attaccanti l accesso

Dettagli

Microprocessori, Microcontrollori e DSP (Digital Signal Processors)

Microprocessori, Microcontrollori e DSP (Digital Signal Processors) Microprocessori, Microcontrollori e DSP (Digital Signal Processors) Il microprocessore è un dispositivo integrato digitale che può essere programmato con una serie di istruzioni per effettuare una specifica

Dettagli

Introduzione ai certificati S/MIME e alla posta elettronica certificata...2 Procedura di installazione del certificato personale S/MIME rilasciato

Introduzione ai certificati S/MIME e alla posta elettronica certificata...2 Procedura di installazione del certificato personale S/MIME rilasciato Guida all installazione e all utilizzo di un certificato personale S/MIME (GPSE) Introduzione ai certificati S/MIME e alla posta elettronica certificata...2 Procedura di installazione del certificato personale

Dettagli

Elettronica dei Sistemi Digitali Dispositivi logici programmabili

Elettronica dei Sistemi Digitali Dispositivi logici programmabili Elettronica dei Sistemi Digitali Dispositivi logici programmabili Valentino Liberali Dipartimento di Tecnologie dell Informazione Università di Milano, 6013 Crema e-mail: liberali@dti.unimi.it http://www.dti.unimi.it/

Dettagli

La sicurezza nelle comunicazioni fra PC. Prof. Mauro Giacomini A.A. 2008-2009

La sicurezza nelle comunicazioni fra PC. Prof. Mauro Giacomini A.A. 2008-2009 La sicurezza nelle comunicazioni fra PC Prof. Mauro Giacomini A.A. 2008-2009 Sommario Cosa significa sicurezza? Crittografia Integrità dei messaggi e firma digitale Autenticazione Distribuzione delle chiavi

Dettagli

Robustezza crittografica della PEC

Robustezza crittografica della PEC Robustezza crittografica della PEC Prof. Massimiliano Sala Università degli Studi di Trento, Lab di Matematica Industriale e Crittografia Trento, 21 Novembre 2011 M. Sala (Università degli Studi di Trento)

Dettagli

Facoltà di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica

Facoltà di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica UNIVERSITA DEGLI STUDI DI CATANIA Facoltà di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica GIUSEPPE CATAUDELLA Proposta e valutazione di procedure di sicurezza ed autenticazione compatibili

Dettagli

idaq TM Manuale Utente

idaq TM Manuale Utente idaq TM Manuale Utente Settembre 2010 TOOLS for SMART MINDS Manuale Utente idaq 2 Sommario Introduzione... 5 Organizzazione di questo manuale... 5 Convenzioni... Errore. Il segnalibro non è definito. Installazione...

Dettagli

metodi crittografici 2006-2007 maurizio pizzonia sicurezza dei sistemi informatici e delle reti

metodi crittografici 2006-2007 maurizio pizzonia sicurezza dei sistemi informatici e delle reti metodi crittografici 1 sommario richiami di crittografia e applicazioni hash crittografici crittografia simmetrica crittografia asimmetrica attacchi e contromisure attacchi tipici key rollover generatori

Dettagli

Reti di Calcolatori. Lezione 2

Reti di Calcolatori. Lezione 2 Reti di Calcolatori Lezione 2 Una definizione di Rete Una moderna rete di calcolatori può essere definita come: UN INSIEME INTERCONNESSO DI CALCOLATORI AUTONOMI Tipi di Rete Le reti vengono classificate

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Reti di Calcolatori Claudio Marrocco Componenti delle reti Una qualunque forma di comunicazione avviene: a livello hardware tramite un mezzo fisico che

Dettagli

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi:

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi: Modulo 8 Elettronica Digitale Contenuti: Introduzione Sistemi di numerazione posizionali Sistema binario Porte logiche fondamentali Porte logiche universali Metodo della forma canonica della somma per

Dettagli

Crittografia e sicurezza delle reti. WEP: Wired Equivalent Privacy

Crittografia e sicurezza delle reti. WEP: Wired Equivalent Privacy Crittografia e sicurezza delle reti WEP: Wired Equivalent Privacy Stream Ciphers Inizia con una chiave segreta ( seed ) Genera uno stream di byte (Keystream): byte i dello stream è funzione della chiave

Dettagli

Crittografia e Protocolli di Sicurezza

Crittografia e Protocolli di Sicurezza Crittografia e Protocolli di Sicurezza Ing. Emilio Spinicci 07/04/2004 1 Argomenti della lezione Introduzione Principi di Crittografia Protocolli di Sicurezza Attacchi ai Protocolli di Sicurezza 07/04/2004

Dettagli

L organizzazione interna della memoria e del banco di registri prevedono generalmente che le uscite di 2 o più componenti

L organizzazione interna della memoria e del banco di registri prevedono generalmente che le uscite di 2 o più componenti Banco di registri e memoria Corso ACSO prof. Cristina SILVANO Politecnico di Milano Componenti di memoria e circuiti di pilotaggio L organizzazione interna della memoria e del banco di registri prevedono

Dettagli

Metodologie Informatiche Applicate al Turismo 7. Aspetti di sicurezza nell reti

Metodologie Informatiche Applicate al Turismo 7. Aspetti di sicurezza nell reti Metodologie Informatiche Applicate al Turismo 7. Aspetti di sicurezza nell reti Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/~milazzo/ milazzo di.unipi.it Corso

Dettagli

Reti di computer. Agostino Lorenzi - Reti di computer - 2008

Reti di computer. Agostino Lorenzi - Reti di computer - 2008 Reti di computer Telematica : termine che evidenzia l integrazione tra tecnologie informatiche e tecnologie delle comunicazioni. Rete (network) : insieme di sistemi per l elaborazione delle informazioni

Dettagli

Capitolo 6. Wireless LAN: via i fili!

Capitolo 6. Wireless LAN: via i fili! Capitolo 6 Wireless LAN: via i fili! Spesso la realizzazione di una rete impone maggiori problemi nella realizzazione fisica che in quella progettuale: il passaggio dei cavi all interno di apposite guide

Dettagli

Reti di Calcolatori. Il software

Reti di Calcolatori. Il software Reti di Calcolatori Il software Lo Stack Protocollare Application: supporta le applicazioni che usano la rete; Transport: trasferimento dati tra host; Network: instradamento (routing) di datagram dalla

Dettagli

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi : di base e applicativo L HardWare (monitor, tastiera, circuiti, stampante, ) è il nucleo fondamentale del calcolatore ma da solo non serve a nulla. Bisogna utilizzare il software per poterlo fare funzionare.

Dettagli

ALGORITMI CRITTOGRAFICI E FIRMA DIGITALE

ALGORITMI CRITTOGRAFICI E FIRMA DIGITALE ALGORITMI CRITTOGRAFICI E FIRMA DIGITALE LA SICUREZZA INFORMATICA...2 Classificazione dei meccanismi di sicurezza...3 TECNICHE DI SICUREZZA DEI DATI...4 LA CRITTOGRAFIA...4 Che cos è la Crittografia? E

Dettagli

Architettura dei Calcolatori

Architettura dei Calcolatori Architettura dei Calcolatori Sistema di memoria parte prima Ing. dell Automazione A.A. 2011/12 Gabriele Cecchetti Sistema di memoria parte prima Sommario: Banco di registri Generalità sulla memoria Tecnologie

Dettagli

PRINCIPI DI COMPUTER SECURITY. Andrea Paoloni

PRINCIPI DI COMPUTER SECURITY. Andrea Paoloni PRINCIPI DI COMPUTER SECURITY Andrea Paoloni 2 Cade il segreto dei codici cifrati Corriere della Sera 26 febbraio 2008 3 Gli hacker sono utili? 4 Safety vs Security SAFETY (salvezza): protezione, sicurezza

Dettagli

Sistemi informatici in ambito radiologico

Sistemi informatici in ambito radiologico Sistemi informatici in ambito radiologico Dott. Ing. Andrea Badaloni A.A. 2015 2016 Reti di elaboratori, il modello a strati e i protocolli di comunicazione e di servizio Reti di elaboratori Definizioni

Dettagli

SICUREZZA. Sistemi Operativi. Sicurezza

SICUREZZA. Sistemi Operativi. Sicurezza SICUREZZA 14.1 Sicurezza Il Problema della Sicurezza Convalida Pericoli per i Programmi Pericoli per il Sistema Difendere i Sistemi Scoperta di Intrusioni Cifratura Esempio: Windows NT 14.2 Il Problema

Dettagli

Sistemi Operativi SICUREZZA. Sistemi Operativi. D. Talia - UNICAL 14.1

Sistemi Operativi SICUREZZA. Sistemi Operativi. D. Talia - UNICAL 14.1 SICUREZZA 14.1 Sicurezza Il Problema della Sicurezza Convalida Pericoli per i Programmi Pericoli per il Sistema Difendere i Sistemi Scoperta di Intrusioni Cifratura Esempio: Windows NT 14.2 Il Problema

Dettagli

Strumenti per lo sviluppo del software

Strumenti per lo sviluppo del software Lo sviluppo del software Strumenti per lo sviluppo del software Lo sviluppo del software è l attività centrale del progetto e ha lo scopo di produrre il codice sorgente che, una volta compilato e messo

Dettagli

1.1 - Crittografia sulla infrastruttura trasmissiva tra le stazioni remote Rilheva il centro di telecontrollo

1.1 - Crittografia sulla infrastruttura trasmissiva tra le stazioni remote Rilheva il centro di telecontrollo SISTEMA DI TELECONTROLLO RILHEVA GPRS (CARATTERISTICHE DEL VETTORE GPRS E SICUREZZE ADOTTATE) Abstract: Sicurezza del Sistema di Telecontrollo Rilheva Xeo4 ha progettato e sviluppato il sistema di telecontrollo

Dettagli

La tecnica proporzionale

La tecnica proporzionale La tecnica proporzionale Regolatori di pressione La tecnica proporzionale Regolatori di pressione La tecnica proporzionale La tecnica proporzionale Controllo direzione e flusso La tecnica proporzionale

Dettagli

IT Security 3 LA SICUREZZA IN RETE

IT Security 3 LA SICUREZZA IN RETE 1 IT Security 3 LA SICUREZZA IN RETE Una RETE INFORMATICA è costituita da un insieme di computer collegati tra di loro e in grado di condividere sia le risorse hardware (stampanti, Hard Disk,..), che le

Dettagli

PROFIBUS E PROFINET. NI compactrio. ACQUISIZIONE DATI e controllo su reti. con

PROFIBUS E PROFINET. NI compactrio. ACQUISIZIONE DATI e controllo su reti. con ACQUISIZIONE DATI e controllo su reti PROFIBUS E PROFINET con NI compactrio Come realizzare un semplice sistema di I/O distribuito interconnesso tramite rete Profibus, costituito da una architettura Master-Slave

Dettagli

Architettura del computer (C.Busso)

Architettura del computer (C.Busso) Architettura del computer (C.Busso) Il computer nacque quando fu possibile costruire circuiti abbastanza complessi in logica programmata da una parte e, dall altra, pensare, ( questo è dovuto a Von Neumann)

Dettagli

Crittografia. Una Panoramica

Crittografia. Una Panoramica Crittografia Una Panoramica 1 Aspetti della Sicurezza Confidenzialità I dati ed iservizi non devono fornire informazioni sensibili a persone non autorizzate Integrità Deve essere evidente l eventuale manomissione

Dettagli

Elementi di Informatica

Elementi di Informatica Reti di calcolatori Febbraio 2007 1 Contenuti Accesso al World Wide Web Reti di calcolatori scambio di dati tra calcolatori connessione in rete di calcolatori reti di reti di calcolatori architettura a

Dettagli

Le componenti fisiche di un computer: l hardware

Le componenti fisiche di un computer: l hardware Le componenti fisiche di un computer: l hardware In questa sezione ci occuperemo di come è strutturato e come funziona l hardware di un computer. In particolare, nella Sezione ci occuperemo del punto di

Dettagli

Interfaccia KNX/IP Wireless GW 90839. Manuale Tecnico

Interfaccia KNX/IP Wireless GW 90839. Manuale Tecnico Interfaccia KNX/IP Wireless GW 90839 Manuale Tecnico Sommario 1 Introduzione... 3 2 Applicazione... 4 3 Menù Impostazioni generali... 5 3.1 Parametri... 5 4 Menù Protezione WLAN... 6 4.1 Parametri... 6

Dettagli

L ambiente mobile. Ing. Gianfranco Pontevolpe. Centro Nazionale per l Informatica nella Pubblica Amministrazione. Programma

L ambiente mobile. Ing. Gianfranco Pontevolpe. Centro Nazionale per l Informatica nella Pubblica Amministrazione. Programma L ambiente mobile Ing. Gianfranco Pontevolpe Centro Nazionale per l Informatica nella Pubblica Amministrazione Programma I sistemi cellulari Lo standard GSM I problemi di sicurezza del GSM Lo standard

Dettagli

Approfondimento di Marco Mulas

Approfondimento di Marco Mulas Approfondimento di Marco Mulas Affidabilità: TCP o UDP Throughput: banda a disposizione Temporizzazione: realtime o piccoli ritardi Sicurezza Riservatezza dei dati Integrità dei dati Autenticazione di

Dettagli

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

Dettagli

SSL: applicazioni telematiche SSL SSL SSL. E-commerce Trading on-line Internet banking... Secure Socket Layer

SSL: applicazioni telematiche SSL SSL SSL. E-commerce Trading on-line Internet banking... Secure Socket Layer : applicazioni telematiche Secure Socket Layer E-commerce Trading on-line Internet banking... Protocollo proposto dalla Netscape Communications Corporation Garantisce confidenzialità e affidabilità delle

Dettagli

ANNO SCOLASTICO 2012-2013 QUADERNO DI INFORMATICA

ANNO SCOLASTICO 2012-2013 QUADERNO DI INFORMATICA ANNO SCOLASTICO 2012-2013 QUADERNO DI INFORMATICA L INFORMAZIONE L informazione è un concetto (legato, ma indipendente dal codice usato). Non riguarda solo interazioni umane. L informazione analizza il

Dettagli

Reti di calcolatori: Introduzione

Reti di calcolatori: Introduzione Reti di calcolatori: Introduzione Vittorio Maniezzo Università di Bologna Reti di computer e Internet Rete: sistema di collegamento di più computer mediante una singola tecnologia di trasmissione Internet:

Dettagli

Rappresentazione e Memorizzazione dei Dati

Rappresentazione e Memorizzazione dei Dati Rappresentazione e Memorizzazione dei Dati Giuseppe Nicosia CdL in Matematica (Laurea Triennale) Facoltà di Scienze MM.FF.NN. Università di Catania Bit e loro Memorizzazione Definizioni Algoritmo: una

Dettagli

LABORATORIO DI SISTEMI

LABORATORIO DI SISTEMI ALUNNO: Fratto Claudio CLASSE: IV B Informatico ESERCITAZIONE N : 1 LABORATORIO DI SISTEMI OGGETTO: Progettare e collaudare un circuito digitale capace di copiare le informazioni di una memoria PROM in

Dettagli

Sistemi Di Elaborazione Dell informazione

Sistemi Di Elaborazione Dell informazione Sistemi Di Elaborazione Dell informazione Dott. Antonio Calanducci Lezione III: Reti di calcolatori Corso di Laurea in Scienze della Comunicazione Anno accademico 2009/2010 Reti di calcolatori Una rete

Dettagli

Glossario ADSL Asymmetric Digital Subscriber Line ADSL2+ Asymmetric Digital Subscriber Line ADSL ADSL2+ Browser Un browser Client Un client

Glossario ADSL Asymmetric Digital Subscriber Line ADSL2+ Asymmetric Digital Subscriber Line ADSL ADSL2+ Browser Un browser Client Un client Glossario ADSL Asymmetric Digital Subscriber Line ADSL2+ Asymmetric Digital Subscriber Line ADSL è una tecnica di trasmissione dati che permette l accesso a Internet fino a 8 Mbps in downstream ed 1 Mbps

Dettagli

Appl. di emissione PKCS#11. API (Metacomandi) Resource Manager Windows. Drivers PC/SC dei lettori

Appl. di emissione PKCS#11. API (Metacomandi) Resource Manager Windows. Drivers PC/SC dei lettori Roma, 30 gennaio 2003 La realtà della carta di identità elettronica (nel seguito CIE) e della carta nazionale dei servizi (nel seguito CNS) rende ineluttabile l individuazione di servizi da erogare in

Dettagli

Conoscere la terminologia di base attraverso la presentazione delle principali componenti hardware di un computer.

Conoscere la terminologia di base attraverso la presentazione delle principali componenti hardware di un computer. Classe 3^ Istituto Istruzione Superiore di Baronissi ind. tecnico PROGRAMMAZIONE DIDATTICA DI Sistemi e Reti Articolazione: Informatica Anno scolastico 2012-2013 MODULI CONTENUTI OBIETTIVI METODOLOGIE

Dettagli

CONCETTI DI NAVIGAZIONE IN RETE

CONCETTI DI NAVIGAZIONE IN RETE CONCETTI DI NAVIGAZIONE IN RETE Internet (La rete delle reti) è l insieme dei canali (linee in rame, fibre ottiche, canali radio, reti satellitari, ecc.) attraverso cui passano le informazioni quando vengono

Dettagli

Corso di Sicurezza Informatica. Sicurezza Web. Ing. Gianluca Caminiti

Corso di Sicurezza Informatica. Sicurezza Web. Ing. Gianluca Caminiti Corso di Sicurezza Informatica Sicurezza Web Ing. Gianluca Caminiti SSL Sommario Considerazioni sulla Sicurezza del Web Secure Socket Layer (SSL) 3 Brevi Considerazioni sulla Sicurezza del Web Web come

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Crittografia con OpenSSL crittografia asimmetrica

Crittografia con OpenSSL crittografia asimmetrica Crittografia con OpenSSL crittografia asimmetrica Laboratorio del corso Sicurezza dei sistemi informatici (03GSD) Politecnico di Torino AA 2014/15 Prof. Antonio Lioy preparata da: Cataldo Basile (cataldo.basile@polito.it)

Dettagli

Architettura dei calcolatori

Architettura dei calcolatori Architettura dei calcolatori Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/

Dettagli

Informatica. Ing. Pierpaolo Vittorini pierpaolo.vittorini@cc.univaq.it. Università degli Studi dell Aquila Facoltà di Medicina e Chirurgia

Informatica. Ing. Pierpaolo Vittorini pierpaolo.vittorini@cc.univaq.it. Università degli Studi dell Aquila Facoltà di Medicina e Chirurgia pierpaolo.vittorini@cc.univaq.it Università degli Studi dell Aquila Facoltà di Medicina e Chirurgia 2 ottobre 2007 L architettura del calcolatore Concetti iniziali L architettura del calcolatore Con il

Dettagli

Reti basate sulla stack di protocolli TCP/IP

Reti basate sulla stack di protocolli TCP/IP Reti basate sulla stack di protocolli TCP/IP Classe V sez. E ITC Pacioli Catanzaro lido 1 Stack TCP/IP Modello TCP/IP e modello OSI Il livello internet corrisponde al livello rete del modello OSI, il suo

Dettagli

Sicurezza delle email, del livello di trasporto e delle wireless LAN

Sicurezza delle email, del livello di trasporto e delle wireless LAN Sicurezza delle email, del livello di trasporto e delle wireless LAN Damiano Carra Università degli Studi di Verona Dipartimento di Informatica La sicurezza nello stack protocollare TCP/IP Livello di rete

Dettagli

INFORMATICA. INFORmazione automatica

INFORMATICA. INFORmazione automatica INFORMATICA INFORmazione automatica Insieme di discipline e tecniche per rappresentare, elaborare e trasmettere automaticamente delle informazioni. Computer - Elaboratore elettronico: e macchina concepita

Dettagli

Sicurezza dei sistemi e delle reti 1. Lezione VI: IPsec. IPsec. La suite TCP/IP. Mattia Monga. a.a. 2014/15

Sicurezza dei sistemi e delle reti 1. Lezione VI: IPsec. IPsec. La suite TCP/IP. Mattia Monga. a.a. 2014/15 Sicurezza dei sistemi e delle 1 Mattia Lezione VI: Dip. di Informatica Università degli Studi di Milano, Italia mattia.monga@unimi.it a.a. 2014/15 1 cba 2011 15 M.. Creative Commons Attribuzione Condividi

Dettagli

Comunicazioni sicure su Internet: https e SSL. Fisica dell Informazione

Comunicazioni sicure su Internet: https e SSL. Fisica dell Informazione Comunicazioni sicure su Internet: https e SSL Fisica dell Informazione Il servizio World Wide Web (WWW) Come funziona nel dettaglio il Web? tre insiemi di regole: Uniform Resource Locator (URL) Hyper Text

Dettagli

Automi. Sono così esempi di automi una lavatrice, un distributore automatico di bibite, un interruttore, una calcolatrice tascabile,...

Automi. Sono così esempi di automi una lavatrice, un distributore automatico di bibite, un interruttore, una calcolatrice tascabile,... Automi Con il termine automa 1 s intende un qualunque dispositivo o un suo modello, un qualunque oggetto, che esegue da se stesso un particolare compito, sulla base degli stimoli od ordini ricevuti detti

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Parte II Lezione 1

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Parte II Lezione 1 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II Lezione 1 Martedì 4-03-2014 1 TESTO DI RIFERIMENTO RETI DI CALCOLATORI

Dettagli

Modulo 1 Le memorie. Si possono raggruppare i sistemi di elaborazione nelle seguenti categorie in base alle possibilità di utilizzazione:

Modulo 1 Le memorie. Si possono raggruppare i sistemi di elaborazione nelle seguenti categorie in base alle possibilità di utilizzazione: Modulo 1 Le memorie Le Memorie 4 ETA Capitolo 1 Struttura di un elaboratore Un elaboratore elettronico è un sistema capace di elaborare dei dati in ingresso seguendo opportune istruzioni e li elabora fornendo

Dettagli

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre Hardware, software e periferiche Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre Riepilogo - Concetti di base dell informatica L'informatica è quel settore scientifico disciplinare

Dettagli

INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO

INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO PROGRAMMA algoritmi, linguaggi di programmazione, traduttori, sistemi operativi e reti. Sistemi operativi

Dettagli

Protezione dei dati INTRODUZIONE

Protezione dei dati INTRODUZIONE Protezione dei dati INTRODUZIONE Le reti LAN senza filo sono in una fase di rapida crescita. Un ambiente aziendale in continua trasformazione richiede una maggiore flessibilità sia alle persone che alle

Dettagli

Laboratorio di Informatica. Alfonso Miola. Reti di calcolatori. Dispensa C-01 Settembre 2005. Laboratorio di Informatica. C-01- Reti di Calcolatori

Laboratorio di Informatica. Alfonso Miola. Reti di calcolatori. Dispensa C-01 Settembre 2005. Laboratorio di Informatica. C-01- Reti di Calcolatori Alfonso Miola Reti di calcolatori Dispensa C-01 Settembre 2005 1 Nota bene Il presente materiale didattico è derivato dalla dispensa prodotta da Luca Cabibbo Dip. Informatica e Automazione Università degli

Dettagli

La Firma Digitale La sperimentazione nel Comune di Cuneo. Pier Angelo Mariani Settore Elaborazione Dati Comune di Cuneo

La Firma Digitale La sperimentazione nel Comune di Cuneo. Pier Angelo Mariani Settore Elaborazione Dati Comune di Cuneo La Firma Digitale La sperimentazione nel Comune di Cuneo Pier Angelo Mariani Settore Elaborazione Dati Comune di Cuneo Perchè questa presentazione Il Comune di Cuneo, aderente alla RUPAR, ha ricevuto due

Dettagli

Sicurezza della comunicazione. Proprietà desiderabili. Segretezza. Autenticazione

Sicurezza della comunicazione. Proprietà desiderabili. Segretezza. Autenticazione Sicurezza della comunicazione Proprietà desiderabili Segretezza Autenticazione 09CDUdc Reti di Calcolatori Sicurezza nelle Reti Integrità del messaggio Segretezza Il contenuto del messaggio può essere

Dettagli

Obiettivo: realizzazione di reti sicure TIPI DI ATTACCO. Politica di sicurezza: a) scelte tecnologiche b) strategie organizzative

Obiettivo: realizzazione di reti sicure TIPI DI ATTACCO. Politica di sicurezza: a) scelte tecnologiche b) strategie organizzative Obiettivo: realizzazione di reti sicure Politica di sicurezza: a) scelte tecnologiche b) strategie organizzative Per quanto riguarda le scelte tecnologiche vi sono due categorie di tecniche: a) modifica

Dettagli

Corso Specialista Sistemi Ambiente Web. Test finale conoscenze acquisite - 15.12.2003. Windows 2000 Server

Corso Specialista Sistemi Ambiente Web. Test finale conoscenze acquisite - 15.12.2003. Windows 2000 Server Windows 2000 Server 1 A cosa serve il task manager? A A monitorare quali utenti stanno utilizzando una applicazione B A restringere l'accesso a task determinati da parte degli utenti C Ad interrompere

Dettagli

Introduzione. File System Distribuiti. Nominazione e Trasparenza. Struttura dei DFS. Strutture di Nominazione

Introduzione. File System Distribuiti. Nominazione e Trasparenza. Struttura dei DFS. Strutture di Nominazione File System Distribuiti Introduzione Nominazione e Trasparenza Accesso ai File Remoti Servizio Con/Senza Informazione di Stato Replica dei File Un esempio di sistema Introduzione File System Distribuito

Dettagli

Modello OSI e architettura TCP/IP

Modello OSI e architettura TCP/IP Modello OSI e architettura TCP/IP Differenza tra modello e architettura - Modello: è puramente teorico, definisce relazioni e caratteristiche dei livelli ma non i protocolli effettivi - Architettura: è

Dettagli

File System Distribuiti

File System Distribuiti File System Distribuiti Introduzione Nominazione e Trasparenza Accesso ai File Remoti Servizio Con/Senza Informazione di Stato Replica dei File Un esempio di sistema 20.1 Introduzione File System Distribuito

Dettagli

Lezione 7 Sicurezza delle informazioni

Lezione 7 Sicurezza delle informazioni Lezione 7 Sicurezza delle informazioni Sommario Concetti generali Meccanismi per la sicurezza IT: Crittografia Hash Firma digitale Autenticazione 1 Concetti generali Availability Confidentiality Integrity

Dettagli

Internet e protocollo TCP/IP

Internet e protocollo TCP/IP Internet e protocollo TCP/IP Internet Nata dalla fusione di reti di agenzie governative americane (ARPANET) e reti di università E una rete di reti, di scala planetaria, pubblica, a commutazione di pacchetto

Dettagli

Dispensa di Fondamenti di Informatica. Architettura di un calcolatore

Dispensa di Fondamenti di Informatica. Architettura di un calcolatore Dispensa di Fondamenti di Informatica Architettura di un calcolatore Hardware e software La prima decomposizione di un calcolatore è relativa ai seguenti macro-componenti hardware la struttura fisica del

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Controllo remoto di SPEEDY

Controllo remoto di SPEEDY UNIVERSITÀ DI BRESCIA FACOLTÀ DI INGEGNERIA Dipartimento di Elettronica per l Automazione Laboratorio di Robotica Avanzata Advanced Robotics Laboratory Corso di Robotica (Prof. Riccardo Cassinis) Controllo

Dettagli

Le reti Sicurezza in rete

Le reti Sicurezza in rete Le reti Sicurezza in rete Tipi di reti Con il termine rete si intende un insieme di componenti, sistemi o entità interconnessi tra loro. Nell ambito dell informatica, una rete è un complesso sistema di

Dettagli

Firma digitale INTRODUZIONE

Firma digitale INTRODUZIONE Firma digitale INTRODUZIONE La firma digitale costituisce uno dei dieci obiettivi del Piano per l e-government. Per quanto riguarda la PA, l obiettivo, abilitante allo sviluppo dei servizi on line, si

Dettagli