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

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

Altri cifrari a blocchi

Altri cifrari a blocchi Altri cifrari a blocchi Barbara Masucci Dipartimento di Informatica ed Applicazioni Università di Salerno masucci@dia.unisa.it http://www.dia.unisa.it/professori/masucci RC2 [1989] IDEA (International

Dettagli

Guida rapida all uso di ECM Titanium

Guida rapida all uso di ECM Titanium Guida rapida all uso di ECM Titanium Introduzione Questa guida contiene una spiegazione semplificata del funzionamento del software per Chiputilizzare al meglio il Tuning ECM Titanium ed include tutte

Dettagli

CARATTERISTICHE DELLE CRYPTO BOX

CARATTERISTICHE DELLE CRYPTO BOX Secure Stream PANORAMICA Il sistema Secure Stream è costituito da due appliance (Crypto BOX) in grado di stabilire tra loro un collegamento sicuro. Le Crypto BOX sono dei veri e propri router in grado

Dettagli

UNIVERSITÀ DEGLI STUDI DI TRENTO DOCUMENTO ELETTRONICO, FIRMA DIGITALE E SICUREZZA IN RETE.

UNIVERSITÀ DEGLI STUDI DI TRENTO DOCUMENTO ELETTRONICO, FIRMA DIGITALE E SICUREZZA IN RETE. UNIVERSITÀ DEGLI STUDI DI TRENTO DOCUMENTO ELETTRONICO, FIRMA DIGITALE E SICUREZZA IN RETE. INTRODUZIONE ALL ARGOMENTO. A cura di: Eleonora Brioni, Direzione Informatica e Telecomunicazioni ATI NETWORK.

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

Cos è un protocollo? Ciao. Ciao 2:00. tempo. Un protocollo umano e un protocollo di reti di computer:

Cos è un protocollo? Ciao. Ciao 2:00. <file> tempo. Un protocollo umano e un protocollo di reti di computer: Cos è un protocollo? Un protocollo umano e un protocollo di reti di computer: Ciao Ciao Hai l ora? 2:00 tempo TCP connection request TCP connection reply. Get http://www.di.unito.it/index.htm Domanda:

Dettagli

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO CLSMS SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO Sommario e introduzione CLSMS SOMMARIO INSTALLAZIONE E CONFIGURAZIONE... 3 Parametri di configurazione... 4 Attivazione Software...

Dettagli

SMARTCARD Studente: Elvis Ciotti Prof: Luciano Margara 1

SMARTCARD Studente: Elvis Ciotti Prof: Luciano Margara 1 SMARTCARD Studente: Elvis Ciotti Prof: Luciano Margara 1 Introduzione SmartCard: Carta intelligente Evoluzione della carta magnetica Simile a piccolo computer : contiene memoria (a contatti elettrici)

Dettagli

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine 1999 Pier Luca Montessoro (si veda la nota a pagina 2) 1 Nota di Copyright

Dettagli

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software.

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software. Generalità Definizione Un firewall è un sistema che protegge i computer connessi in rete da attacchi intenzionali mirati a compromettere il funzionamento del sistema, alterare i dati ivi memorizzati, accedere

Dettagli

Bus di sistema. Bus di sistema

Bus di sistema. Bus di sistema Bus di sistema Permette la comunicazione (scambio di dati) tra i diversi dispositivi che costituiscono il calcolatore E costituito da un insieme di fili metallici che danno luogo ad un collegamento aperto

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Le Reti di Calcolatori (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela

Dettagli

12.5 UDP (User Datagram Protocol)

12.5 UDP (User Datagram Protocol) CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 88 12.5 UDP (User Datagram Protocol) L UDP (User Datagram Protocol) é uno dei due protocolli del livello di trasporto. Come l IP, é un protocollo inaffidabile, che

Dettagli

EUROPEAN COMPUTER DRIVING LICENCE. IT Security. Syllabus

EUROPEAN COMPUTER DRIVING LICENCE. IT Security. Syllabus EUROPEAN COMPUTER DRIVING LICENCE IT Security Syllabus Scopo Questo documento presenta il syllabus di ECDL Standard IT Security. Il syllabus descrive, attraverso i risultati del processo di apprendimento,

Dettagli

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. Generate debugging information FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera

Dettagli

Trasmissione Seriale e Parallela. Interfacce di Comunicazione. Esempio di Decodifica del Segnale. Ricezione e Decodifica. Prof.

Trasmissione Seriale e Parallela. Interfacce di Comunicazione. Esempio di Decodifica del Segnale. Ricezione e Decodifica. Prof. Interfacce di Comunicazione Università degli studi di Salerno Laurea in Informatica I semestre 03/04 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ 2 Trasmissione

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Integrated Development Environment (IDE) DevC++ 4.9.9.2

Integrated Development Environment (IDE) DevC++ 4.9.9.2 Integrated Development Environment (IDE) DevC++ 4.9.9.2 Manuale utente Data ultima revisione: 22/10/2008 Fondamenti di informatica Università Facoltà Corso di laurea Politecnico di Bari 1 a Facoltà di

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello della Web Application 5 3 Struttura della web Application 6 4 Casi di utilizzo della Web

Dettagli

Procedura corretta per mappare con ECM Titanium

Procedura corretta per mappare con ECM Titanium Procedura corretta per mappare con ECM Titanium Introduzione: In questo documento troverete tutte le informazioni utili per mappare correttamente con il software ECM Titanium, partendo dalla lettura del

Dettagli

Lezione n.19 Processori RISC e CISC

Lezione n.19 Processori RISC e CISC Lezione n.19 Processori RISC e CISC 1 Processori RISC e Superscalari Motivazioni che hanno portato alla realizzazione di queste architetture Sommario: Confronto tra le architetture CISC e RISC Prestazioni

Dettagli

Guida alla scansione su FTP

Guida alla scansione su FTP Guida alla scansione su FTP Per ottenere informazioni di base sulla rete e sulle funzionalità di rete avanzate della macchina Brother, consultare la uu Guida dell'utente in rete. Per ottenere informazioni

Dettagli

Informatica per la comunicazione" - lezione 9 -

Informatica per la comunicazione - lezione 9 - Informatica per la comunicazione" - lezione 9 - Protocolli di livello intermedio:" TCP/IP" IP: Internet Protocol" E il protocollo che viene seguito per trasmettere un pacchetto da un host a un altro, in

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

Energy Studio Manager Manuale Utente USO DEL SOFTWARE

Energy Studio Manager Manuale Utente USO DEL SOFTWARE Energy Studio Manager Manuale Utente USO DEL SOFTWARE 1 ANALYSIS.EXE IL PROGRAMMA: Una volta aperto il programma e visualizzato uno strumento il programma apparirà come nell esempio seguente: Il programma

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

Dispositivi di comunicazione

Dispositivi di comunicazione Dispositivi di comunicazione Dati, messaggi, informazioni su vettori multipli: Telefono, GSM, Rete, Stampante. Le comunicazioni Axitel-X I dispositivi di comunicazione servono alla centrale per inviare

Dettagli

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30 Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30 NB: alcune domande hanno risposta multipla: si richiede di identificare TUTTE le risposte corrette.

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

CHIAVETTA INTERNET ONDA MT503HSA

CHIAVETTA INTERNET ONDA MT503HSA CHIAVETTA INTERNET ONDA MT503HSA Manuale Utente Linux Debian, Fedora, Ubuntu www.ondacommunication.com Chiavet ta Internet MT503HSA Guida rapida sistema operativo LINUX V 1.1 33080, Roveredo in Piano (PN)

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

COPERTURA WI-FI (aree chiamate HOT SPOT)

COPERTURA WI-FI (aree chiamate HOT SPOT) Wi-Fi Amantea Il Comune di Amantea offre a cittadini e turisti la connessione gratuita tramite tecnologia wi-fi. Il progetto inserisce Amantea nella rete wi-fi Guglielmo ( www.guglielmo.biz), già attivo

Dettagli

Di seguito sono descritti i prerequisiti Hardware e Software che deve possedere la postazione a cui viene collegata l Aruba Key.

Di seguito sono descritti i prerequisiti Hardware e Software che deve possedere la postazione a cui viene collegata l Aruba Key. 1 Indice 1 Indice... 2 2 Informazioni sul documento... 3 2.1 Scopo del documento... 3 3 Caratteristiche del dispositivo... 3 3.1 Prerequisiti... 3 4 Installazione della smart card... 4 5 Avvio di Aruba

Dettagli

Sistemi di supporto alle decisioni Ing. Valerio Lacagnina

Sistemi di supporto alle decisioni Ing. Valerio Lacagnina Cosa è il DSS L elevato sviluppo dei personal computer, delle reti di calcolatori, dei sistemi database di grandi dimensioni, e la forte espansione di modelli basati sui calcolatori rappresentano gli sviluppi

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

Informatica. Scopo della lezione

Informatica. Scopo della lezione 1 Informatica per laurea diarea non informatica LEZIONE 1 - Cos è l informatica 2 Scopo della lezione Introdurre le nozioni base della materia Definire le differenze tra hardware e software Individuare

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni

Dettagli

IL SAMPLE AND HOLD UNIVERSITÀ DEGLI STUDI DI MILANO. Progetto di Fondamenti di Automatica. PROF.: M. Lazzaroni

IL SAMPLE AND HOLD UNIVERSITÀ DEGLI STUDI DI MILANO. Progetto di Fondamenti di Automatica. PROF.: M. Lazzaroni UNIVERSITÀ DEGLI STUDI DI MILANO FACOLTÀ DI SCIENZE MATEMATICHE, FISICHE E NATURALI Corso di Laurea in Informatica IL SAMPLE AND HOLD Progetto di Fondamenti di Automatica PROF.: M. Lazzaroni Anno Accademico

Dettagli

Accordo su chiavi. (key agreement) Alfredo De Santis. Marzo 2015. Dipartimento di Informatica Università di Salerno

Accordo su chiavi. (key agreement) Alfredo De Santis. Marzo 2015. Dipartimento di Informatica Università di Salerno Accordo su chiavi (key agreement) Alfredo De Santis Dipartimento di Informatica Università di Salerno ads@dia.unisa.it http://www.dia.unisa.it/professori/ads Marzo 2015 Accordo su una chiave Alice Bob??

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

Esercizi per il recupero del debito formativo:

Esercizi per il recupero del debito formativo: ANNO SCOLASTICO 2005/2006 CLASSE 3 ISC Esercizi per il recupero del debito formativo: Disegnare il diagramma e scrivere la matrice delle transizioni di stato degli automi a stati finiti che rappresentano

Dettagli

Sicurezza delle reti wireless. Alberto Gianoli alberto.gianoli@fe.infn.it

Sicurezza delle reti wireless. Alberto Gianoli alberto.gianoli@fe.infn.it Sicurezza delle reti wireless Alberto Gianoli alberto.gianoli@fe.infn.it Concetti di base IEEE 802.11: famiglia di standard tra cui: 802.11a, b, g: physical e max data rate spec. 802.11e: QoS (traffic

Dettagli

INSTALLAZIONE E UTILIZZO DEL COMPILATORE Code::Blocks 8.02

INSTALLAZIONE E UTILIZZO DEL COMPILATORE Code::Blocks 8.02 INSTALLAZIONE E UTILIZZO DEL COMPILATORE Code::Blocks 8.02 Download Si può scaricare gratuitamente la versione per il proprio sistema operativo (Windows, MacOS, Linux) dal sito: http://www.codeblocks.org

Dettagli

MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO

MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO Precisione del riconoscimento Velocità di riconoscimento Configurazione del sistema Correzione Regolazione della

Dettagli

> MULTI TASKING > MULTI PROCESS > MULTI CORE

> MULTI TASKING > MULTI PROCESS > MULTI CORE > MULTI TASKING > MULTI PROCESS > MULTI CORE WorkNC V21 multicore 64 bits : Benefici di WorkNC Aumento generale della produttività, grazie alle nuove tecnologie multi-core, 64 bit e Windows 7 Calcolo di

Dettagli

Architetture CISC e RISC

Architetture CISC e RISC FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Architetture CISC e RISC 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n.

Dettagli

Progettare network AirPort con Utility AirPort. Mac OS X v10.5 + Windows

Progettare network AirPort con Utility AirPort. Mac OS X v10.5 + Windows Progettare network AirPort con Utility AirPort Mac OS X v10.5 + Windows 1 Indice Capitolo 1 3 Introduzione a AirPort 5 Configurare un dispositivo wireless Apple per l accesso a Internet tramite Utility

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata

AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata Giampiero Carboni Davide Travaglia David Board Rev 5058-CO900C Interfaccia operatore a livello di sito FactoryTalk

Dettagli

Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP

Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP Protocolli di rete Sommario Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP Configurazione statica e dinamica

Dettagli

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+... Setup delle ConnessioniTCP Una connessione TCP viene instaurata con le seguenti fasi, che formano il Three-Way Handshake (perchè formato da almeno 3 pacchetti trasmessi): 1) il server si predispone ad

Dettagli

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione Utility & Configurazioni Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 4 Impostare i dati della propria azienda... 5 Aggiornare il programma... 6 Controllare l integrità

Dettagli

Introduzione al VHDL. Alcuni concetti introduttivi

Introduzione al VHDL. Alcuni concetti introduttivi Introduzione al VHDL Alcuni concetti introduttivi Riferimenti The VHDL Cookbook, Peter J. Ashenden, Reperibile nel sito: http://vlsilab.polito.it/documents.html The VHDL Made Easy, David Pellerin, Douglas

Dettagli

TorrentLocker Enti Italiani sotto riscatto

TorrentLocker Enti Italiani sotto riscatto Digital Forensics Bureau www.difob.it TorrentLocker Enti Italiani sotto riscatto Paolo DAL CHECCO, Giuseppe DEZZANI Studio DIgital Forensics Bureau di Torino 20 ottobre 2014 Da mercoledì 15 ottobre stiamo

Dettagli

Così come le macchine meccaniche trasformano

Così come le macchine meccaniche trasformano DENTRO LA SCATOLA Rubrica a cura di Fabio A. Schreiber Il Consiglio Scientifico della rivista ha pensato di attuare un iniziativa culturalmente utile presentando in ogni numero di Mondo Digitale un argomento

Dettagli

iphone in azienda Guida alla configurazione per gli utenti

iphone in azienda Guida alla configurazione per gli utenti iphone in azienda Guida alla configurazione per gli utenti iphone è pronto per le aziende. Supporta Microsoft Exchange ActiveSync, così come servizi basati su standard, invio e ricezione di e-mail, calendari

Dettagli

Configurazioni Mobile Connect

Configurazioni Mobile Connect Mailconnect Mail.2 L EVOLUZIONE DELLA POSTA ELETTRONICA Configurazioni Mobile Connect iphone MOBILE CONNECT CONFIGURAZIONE MOBILE CONNECT PER IPHONE CONFIGURAZIONE IMAP PER IPHONE RUBRICA CONTATTI E IPHONE

Dettagli

Codifica dei numeri negativi

Codifica dei numeri negativi E. Calabrese: Fondamenti di Informatica Rappresentazione numerica-1 Rappresentazione in complemento a 2 Codifica dei numeri negativi Per rappresentare numeri interi negativi si usa la cosiddetta rappresentazione

Dettagli

Mod. 4: L architettura TCP/ IP Classe 5 I ITIS G. Ferraris a.s. 2011 / 2012 Marcianise (CE) Prof. M. Simone

Mod. 4: L architettura TCP/ IP Classe 5 I ITIS G. Ferraris a.s. 2011 / 2012 Marcianise (CE) Prof. M. Simone Paragrafo 1 Prerequisiti Definizione di applicazione server Essa è un servizio che è in esecuzione su un server 1 al fine di essere disponibile per tutti gli host che lo richiedono. Esempi sono: il servizio

Dettagli

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 1.1 Che cos è un algoritmo CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 Gli algoritmi sono metodi per la soluzione di problemi. Possiamo caratterizzare un problema mediante i dati di cui si dispone all inizio

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

HORIZON SQL CONFIGURAZIONE DI RETE

HORIZON SQL CONFIGURAZIONE DI RETE 1-1/9 HORIZON SQL CONFIGURAZIONE DI RETE 1 CARATTERISTICHE DI UN DATABASE SQL...1-2 Considerazioni generali... 1-2 Concetto di Server... 1-2 Concetto di Client... 1-2 Concetto di database SQL... 1-2 Vantaggi...

Dettagli

MailStore Proxy è disponibile gratuitamente per tutti i clienti di MailStore Server all indirizzo http://www.mailstore.com/en/downloads.

MailStore Proxy è disponibile gratuitamente per tutti i clienti di MailStore Server all indirizzo http://www.mailstore.com/en/downloads. MailStore Proxy Con MailStore Proxy, il server proxy di MailStore, è possibile archiviare i messaggi in modo automatico al momento dell invio/ricezione. I pro e i contro di questa procedura vengono esaminati

Dettagli

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

Manuale Software. www.smsend.it

Manuale Software. www.smsend.it Manuale Software www.smsend.it 1 INTRODUZIONE 3 Multilanguage 4 PANNELLO DI CONTROLLO 5 Start page 6 Profilo 7 Ordini 8 Acquista Ricarica 9 Coupon AdWords 10 Pec e Domini 11 MESSAGGI 12 Invio singolo sms

Dettagli

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma Dev C++ Note di utilizzo 1 Prerequisiti Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma 2 1 Introduzione Lo scopo di queste note è quello di diffondere la conoscenza

Dettagli

Documentazione Servizio SMS WEB. Versione 1.0

Documentazione Servizio SMS WEB. Versione 1.0 Documentazione Servizio SMS WEB Versione 1.0 1 Contenuti 1 INTRODUZIONE...5 1.1 MULTILANGUAGE...5 2 MESSAGGI...7 2.1 MESSAGGI...7 2.1.1 INVIO SINGOLO SMS...7 2.1.2 INVIO MULTIPLO SMS...9 2.1.3 INVIO MMS

Dettagli

Guida all'installazione di WiFi Booster WN1000RP per dispositivi mobili

Guida all'installazione di WiFi Booster WN1000RP per dispositivi mobili Guida all'installazione di WiFi Booster WN1000RP per dispositivi mobili 2012 NETGEAR, Inc. Tutti i diritti riservati. Nessuna parte della presente pubblicazione può essere riprodotta, trasmessa, trascritta,

Dettagli

Il World Wide Web: nozioni introduttive

Il World Wide Web: nozioni introduttive Il World Wide Web: nozioni introduttive Dott. Nicole NOVIELLI novielli@di.uniba.it http://www.di.uniba.it/intint/people/nicole.html Cos è Internet! Acronimo di "interconnected networks" ("reti interconnesse")!

Dettagli

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a:

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a: Lab 4.1 Utilizzare FTP (File Tranfer Protocol) LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) In questa lezione imparerete a: Utilizzare altri servizi Internet, Collegarsi al servizio Telnet, Accedere

Dettagli

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP Università degli Studi di Pisa Facoltà di Scienze Matematiche,Fisiche e Naturali Corso di Laurea in Informatica Michela Chiucini MIB PER IL CONTROLLO DELLO STATO DI UN SERVER

Dettagli

Ambienti supportati. Configurazione della stampante di rete. Stampa. Gestione della carta. Manutenzione. Risoluzione dei problemi.

Ambienti supportati. Configurazione della stampante di rete. Stampa. Gestione della carta. Manutenzione. Risoluzione dei problemi. I server di stampa vengono utilizzati per collegare le stampanti alle reti. In tal modo, più utenti possono accedere alle stampanti dalle proprie workstation, condividendo sofisticate e costose risorse.

Dettagli

SubnetMask: come funzionano e come si calcolano le sottoreti (SpySystem.it)

SubnetMask: come funzionano e come si calcolano le sottoreti (SpySystem.it) SubnetMask: come funzionano e come si calcolano le sottoreti (SpySystem.it) In una rete TCP/IP, se un computer (A) deve inoltrare una richiesta ad un altro computer (B) attraverso la rete locale, lo dovrà

Dettagli

Guida Titolo firma con certificato remoto DiKe 5.4.0. Sottotitolo

Guida Titolo firma con certificato remoto DiKe 5.4.0. Sottotitolo Guida Titolo firma con certificato remoto DiKe 5.4.0 Sottotitolo Pagina 2 di 14 Un doppio clic sull icona per avviare il programma. DiKe Pagina 3 di 14 Questa è la pagina principale del programma DiKe,

Dettagli

Caratteristiche principali

Caratteristiche principali Il regolatore semaforico Hydra nasce nel 1998 per iniziativa di CTS Engineering. Ottenute le necessarie certificazioni, già dalla prima installazione Hydra mostra sicurezza ed affidabilità, dando avvio

Dettagli

minilector/usb Risoluzione dei problemi più comuni di malfunzionamento

minilector/usb Risoluzione dei problemi più comuni di malfunzionamento minilector/usb minilector/usb...1 Risoluzione dei problemi più comuni di malfunzionamento...1 1. La segnalazione luminosa (led) su minilector lampeggia?... 1 2. Inserendo una smartcard il led si accende

Dettagli

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t.

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t. Il programma MATLAB In queste pagine si introduce in maniera molto breve il programma di simulazione MAT- LAB (una abbreviazione di MATrix LABoratory). Introduzione MATLAB è un programma interattivo di

Dettagli

MEGA Process. Manuale introduttivo

MEGA Process. Manuale introduttivo MEGA Process Manuale introduttivo MEGA 2009 SP4 1ª edizione (giugno 2010) Le informazioni contenute nel presente documento possono essere modificate senza preavviso e non costituiscono in alcun modo un

Dettagli

Istruzioni per l uso Guida software

Istruzioni per l uso Guida software Istruzioni per l uso Guida software Leggere subito Manuali per questa stampante...8 Preparazione per la stampa Installazione rapida...9 Conferma del metodo di connessione...11 Connessione di rete...11

Dettagli

Determinare la grandezza della sottorete

Determinare la grandezza della sottorete Determinare la grandezza della sottorete Ogni rete IP possiede due indirizzi non assegnabili direttamente agli host l indirizzo della rete a cui appartiene e l'indirizzo di broadcast. Quando si creano

Dettagli

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org.

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Nuovo documento Anteprima di stampa Annulla Galleria Apri Controllo ortografico Ripristina Sorgente dati Salva Controllo

Dettagli

Rapida Introduzione all uso del Matlab Ottobre 2002

Rapida Introduzione all uso del Matlab Ottobre 2002 Rapida Introduzione all uso del Matlab Ottobre 2002 Tutti i tipi di dato utilizzati dal Matlab sono in forma di array. I vettori sono array monodimensionali, e così possono essere viste le serie temporali,

Dettagli

Le funzioni di una rete (parte 1)

Le funzioni di una rete (parte 1) Marco Listanti Le funzioni di una rete (parte 1) Copertura cellulare e funzioni i di base di una rete mobile Strategia cellulare Lo sviluppo delle comunicazioni mobili è stato per lungo tempo frenato da

Dettagli

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16 Un ripasso di aritmetica: Conversione dalla base 1 alla base 16 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base sedici sarà del tipo: c m c m-1... c 1 c (le c i sono cifre

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

Dettagli

DIFENDERSI DAI MODERNI ATTACCHI DI PHISHING MIRATI

DIFENDERSI DAI MODERNI ATTACCHI DI PHISHING MIRATI DIFENDERSI DAI MODERNI ATTACCHI DI PHISHING MIRATI DIFENDERSI DAI MODERNI ATTACCHI DI PHISHING MIRATI 2 Introduzione Questa email è una truffa o è legittima? È ciò che si chiedono con sempre maggiore frequenza

Dettagli

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci Manuale di Remote Desktop Connection Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci 2 Indice 1 Introduzione 5 2 Il protocollo Remote Frame Buffer 6 3 Uso di Remote Desktop

Dettagli

INFORMAZIONI GENERALI...2 INSTALLAZIONE...5 CONFIGURAZIONE...6 ACQUISTO E REGISTRAZIONE...11 DOMANDE FREQUENTI:...13 CONTATTI:...

INFORMAZIONI GENERALI...2 INSTALLAZIONE...5 CONFIGURAZIONE...6 ACQUISTO E REGISTRAZIONE...11 DOMANDE FREQUENTI:...13 CONTATTI:... INFORMAZIONI GENERALI...2 INSTALLAZIONE...5 CONFIGURAZIONE...6 ACQUISTO E REGISTRAZIONE...11 DOMANDE FREQUENTI:...13 CONTATTI:...14 Ultimo Aggiornamento del Documento: 23 / Marzo / 2012 1 INFORMAZIONI

Dettagli

Il portafoglio VidyoConferencing. Tutto ciò di cui avete bisogno per realizzare videoconferenze HD di qualità, accessibili e a costi vantaggiosi

Il portafoglio VidyoConferencing. Tutto ciò di cui avete bisogno per realizzare videoconferenze HD di qualità, accessibili e a costi vantaggiosi Il portafoglio VidyoConferencing Tutto ciò di cui avete bisogno per realizzare videoconferenze HD di qualità, accessibili e a costi vantaggiosi La qualità HD di Vidyo mi permette di vedere e ascoltare

Dettagli

Progettazione di sistemi Embedded

Progettazione di sistemi Embedded Progettazione di sistemi Embedded Corso introduttivo di progettazione di sistemi embedded A.S. 2013/2014 proff. Nicola Masarone e Stefano Salvatori Eccetto dove diversamente specificato, i contenuti di

Dettagli

LA CRITTOGRAFIA Le applicazioni della crittografia e della firma digitale a cura di Sommaruga Andrea Guido

LA CRITTOGRAFIA Le applicazioni della crittografia e della firma digitale a cura di Sommaruga Andrea Guido INDICE LA FIRMA DIGITALE O ELETTRONICA...2 LA LEGISLAZIONE IN MATERIA...5 NOTA SUI FORMATI DI FILE...6 COME FUNZIONA IL MECCANISMO DELLE FIRME ELETTRONICHE...7 FIRMA DI PIÙ PERSONE... 7 DOCUMENTO SEGRETO...

Dettagli

Il Concetto di Processo

Il Concetto di Processo Processi e Thread Il Concetto di Processo Il processo è un programma in esecuzione. È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono

Dettagli

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN per Expert NANO 2ZN Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie Expert NANO 2ZN Nome documento: MODBUS-RTU_NANO_2ZN_01-12_ITA Software installato: NANO_2ZN.hex

Dettagli

I componenti di un Sistema di elaborazione. CPU (central process unit)

I componenti di un Sistema di elaborazione. CPU (central process unit) I componenti di un Sistema di elaborazione. CPU (central process unit) I componenti di un Sistema di elaborazione. CPU (central process unit) La C.P.U. è il dispositivo che esegue materialmente gli ALGORITMI.

Dettagli

Dati importati/esportati

Dati importati/esportati Dati importati/esportati Dati importati Al workspace MATLAB script Dati esportati file 1 File di testo (.txt) Spreadsheet Database Altro Elaborazione dati Grafici File di testo Relazioni Codice Database

Dettagli

Guida Dell di base all'acquisto dei server

Guida Dell di base all'acquisto dei server Guida Dell di base all'acquisto dei server Per le piccole aziende che dispongono di più computer è opportuno investire in un server che aiuti a garantire la sicurezza e l'organizzazione dei dati, consentendo

Dettagli

How to Develop Accessible Linux Applications

How to Develop Accessible Linux Applications How to Develop Accessible Linux Applications Sharon Snider Copyright 2002 IBM Corporation v1.1, 2002-05-03 Diario delle Revisioni Revisione v1.1 2002-05-03 Revisionato da: sds Convertito in DocBook XML

Dettagli