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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

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

2

3 Alla mia famiglia Davide Alla mia famiglia Roberto

4

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

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

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

8

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

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

11 5.5 Risultato implementazione software

12

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

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

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

16

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

42

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

74

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

94

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

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

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

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

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

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

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

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

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

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

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

Dettagli

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

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

Dettagli

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC.

Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC. Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC. Avviso di mancata consegna L avviso, emesso dal sistema, per indicare l anomalia

Dettagli

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software di sistema e software applicativo I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software soft ware soffice componente è la parte logica

Dettagli

LABORATORIO DI SISTEMI

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

Dettagli

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0 Prodotto Inaz Download Manager Release 1.3.0 Tipo release COMPLETA RIEPILOGO ARGOMENTI 1. Introduzione... 2 2. Architettura... 3 3. Configurazione... 4 3.1 Parametri di connessione a Internet... 4 3.2

Dettagli

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica Consiglio regionale della Toscana Regole per il corretto funzionamento della posta elettronica A cura dell Ufficio Informatica Maggio 2006 Indice 1. Regole di utilizzo della posta elettronica... 3 2. Controllo

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura

Dettagli

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. *+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti

Dettagli

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro, EXCEL PER WINDOWS95 1.Introduzione ai fogli elettronici I fogli elettronici sono delle applicazioni che permettono di sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area

Dettagli

RETI DI CALCOLATORI. Crittografia. La crittografia

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

Dettagli

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

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

Dettagli

Mac Application Manager 1.3 (SOLO PER TIGER)

Mac Application Manager 1.3 (SOLO PER TIGER) Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 4 La CPU e l esecuzione dei programmi 1 Nelle lezioni precedenti abbiamo detto che Un computer è costituito da 3 principali componenti:

Dettagli

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

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

Dettagli

NOZIONI ELEMENTARI DI HARDWARE E SOFTWARE

NOZIONI ELEMENTARI DI HARDWARE E SOFTWARE CORSO INTRODUTTIVO DI INFORMATICA NOZIONI ELEMENTARI DI HARDWARE E SOFTWARE Dott. Paolo Righetto 1 CORSO INTRODUTTIVO DI INFORMATICA Percorso dell incontro: 1) Alcuni elementi della configurazione hardware

Dettagli

Reti di Telecomunicazione Lezione 8

Reti di Telecomunicazione Lezione 8 Reti di Telecomunicazione Lezione 8 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Livello di trasporto Programma della lezione relazione tra lo strato di trasporto e lo strato

Dettagli

Il calendario di Windows Vista

Il calendario di Windows Vista Il calendario di Windows Vista Una delle novità introdotte in Windows Vista è il Calendario di Windows, un programma utilissimo per la gestione degli appuntamenti, delle ricorrenze e delle attività lavorative

Dettagli

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE Relatore: prof. Michele Moro Laureando: Marco Beggio Corso di laurea in Ingegneria Informatica Anno Accademico 2006-2007

Dettagli

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6 Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 4 - parte II La memoria 1 La memoriaparametri di caratterizzazione Un dato dispositivo di memoria è caratterizzato da : velocità di accesso,

Dettagli

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

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

Dettagli

Reti di Calcolatori. Il software

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

Dettagli

Invio SMS. DM Board ICS Invio SMS

Invio SMS. DM Board ICS Invio SMS Invio SMS In questo programma proveremo ad inviare un SMS ad ogni pressione di uno dei 2 tasti della DM Board ICS. Per prima cosa creiamo un nuovo progetto premendo sul pulsante (Create new project): dove

Dettagli

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA) Il software Software Il software Il software è la sequenza di istruzioni che permettono ai computer di svolgere i loro compiti ed è quindi necessario per il funzionamento del calcolatore. Il software può

Dettagli

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Manuale Utente Albo Pretorio GA

Manuale Utente Albo Pretorio GA Manuale Utente Albo Pretorio GA IDENTIFICATIVO DOCUMENTO MU_ALBOPRETORIO-GA_1.4 Versione 1.4 Data edizione 04.04.2013 1 TABELLA DELLE VERSIONI Versione Data Paragrafo Descrizione delle modifiche apportate

Dettagli

Word processor funzione Stampa Unione

Word processor funzione Stampa Unione Word processor funzione Stampa Unione La funzione Stampa unione permette di collegare un documento che deve essere inviato ad una serie di indirizzi ad un file che contenga i nominativi dei destinatari.

Dettagli

Client - Server. Client Web: il BROWSER

Client - Server. Client Web: il BROWSER Client - Server Client Web: il BROWSER Il client Web è un applicazione software che svolge il ruolo di interfaccia fra l utente ed il WWW, mascherando la complessità di Internet. Funzioni principali Inviare

Dettagli

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC BMSO1001 Virtual Configurator Istruzioni d uso 02/10-01 PC 2 Virtual Configurator Istruzioni d uso Indice 1. Requisiti Hardware e Software 4 1.1 Requisiti Hardware 4 1.2 Requisiti Software 4 2. Concetti

Dettagli

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Capittol lo 2 Visualizzazione 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Nel primo capitolo sono state analizzate le diverse componenti della finestra di Word 2000: barra del titolo, barra dei menu,

Dettagli

IRSplit. Istruzioni d uso 07/10-01 PC

IRSplit. Istruzioni d uso 07/10-01 PC 3456 IRSplit Istruzioni d uso 07/10-01 PC 2 IRSplit Istruzioni d uso Indice 1. Requisiti Hardware e Software 4 1.1 Requisiti Hardware 4 1.2 Requisiti Software 4 2. Installazione 4 3. Concetti fondamentali

Dettagli

Guida alla registrazione on-line di un DataLogger

Guida alla registrazione on-line di un DataLogger NovaProject s.r.l. Guida alla registrazione on-line di un DataLogger Revisione 3.0 3/08/2010 Partita IVA / Codice Fiscale: 03034090542 pag. 1 di 17 Contenuti Il presente documento è una guida all accesso

Dettagli

Informatica per la comunicazione" - lezione 13 -

Informatica per la comunicazione - lezione 13 - Informatica per la comunicazione" - lezione 13 - Funzionamento di una password" 1: l utente tramite il suo browser richiede l accesso a una pagina del server; 2: il server richiede il nome utente e la

Dettagli

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia L informatica È la disciplina scientifica che studia INTRODUZIONE I calcolatori, nati in risposta all esigenza di eseguire meccanicamente operazioni ripetitive Gli algoritmi, nati in risposta all esigenza

Dettagli

Avvio di Internet ed esplorazione di pagine Web.

Avvio di Internet ed esplorazione di pagine Web. Incontro 1: Corso di aggiornamento sull uso di internet Avvio di Internet ed esplorazione di pagine Web. Istituto Alberghiero De Filippi Via Brambilla 15, 21100 Varese www.istitutodefilippi.it Tel: 0332-286367

Dettagli

Manuale Terminal Manager 2.0

Manuale Terminal Manager 2.0 Manuale Terminal Manager 2.0 CREAZIONE / MODIFICA / CANCELLAZIONE TERMINALI Tramite il pulsante NUOVO possiamo aggiungere un terminale alla lista del nostro impianto. Comparirà una finestra che permette

Dettagli

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014) Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014) Il software per gli esami ICON può essere eseguito su qualunque computer dotato di Java Virtual Machine aggiornata.

Dettagli

Architettura di un calcolatore

Architettura di un calcolatore 2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) 7 Architettura di un calcolatore Lez. 7 1 Modello di Von Neumann Il termine modello di Von Neumann (o macchina di Von

Dettagli

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento I protocolli del livello di applicazione Porte Nelle reti di calcolatori, le porte (traduzione impropria del termine port inglese, che in realtà significa porto) sono lo strumento utilizzato per permettere

Dettagli

GESGOLF SMS ONLINE. Manuale per l utente

GESGOLF SMS ONLINE. Manuale per l utente GESGOLF SMS ONLINE Manuale per l utente Procedura di registrazione 1 Accesso al servizio 3 Personalizzazione della propria base dati 4 Gestione dei contatti 6 Ricerca dei contatti 6 Modifica di un nominativo

Dettagli

Approfondimento di Marco Mulas

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

Dettagli

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3

Dettagli

Istruzioni operative instal azione FirmaVerifica3.0 Pag.1 di 27

Istruzioni operative instal azione FirmaVerifica3.0 Pag.1 di 27 Istruzioni operative installazione FirmaVerifica3.0 Pag.1 di 27 Generalità... 3 Operazioni preliminari... 4 Requisiti tecnici... 5 Installazione applicazione...6 Visualizzazione fornitura... 14 Gestione

Dettagli

ALGEBRA DELLE PROPOSIZIONI

ALGEBRA DELLE PROPOSIZIONI Università di Salerno Fondamenti di Informatica Corso di Laurea Ingegneria Corso B Docente: Ing. Giovanni Secondulfo Anno Accademico 2010-2011 ALGEBRA DELLE PROPOSIZIONI Fondamenti di Informatica Algebra

Dettagli

Architetture Applicative

Architetture Applicative Alessandro Martinelli alessandro.martinelli@unipv.it 6 Marzo 2012 Architetture Architetture Applicative Introduzione Alcuni esempi di Architetture Applicative Architetture con più Applicazioni Architetture

Dettagli

Wi-Fi, la libertà di navigare in rete senza fili. Introduzione.

Wi-Fi, la libertà di navigare in rete senza fili. Introduzione. Wi-Fi, la libertà di navigare in rete senza fili. Introduzione. L evoluzione delle tecnologie informatiche negli ultimi decenni ha contribuito in maniera decisiva allo sviluppo del mondo aziendale, facendo

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

Interfaccia KNX/IP Wireless GW 90839. Manuale Tecnico

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

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

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

Dettagli

Cosa è un foglio elettronico

Cosa è un foglio elettronico Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

Dettagli

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10 Il Software e Il Sistema Operativo Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10 Cosa Impareremo Programmi e Processi Struttura del Sistema Operativo Sviluppo di Programmi I files e la loro

Dettagli

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Funzioni di Esportazione Importazione 1 Indice AIRONE GESTIONE RIFIUTI... 1 FUNZIONI DI ESPORTAZIONE E IMPORTAZIONE... 1 INDICE...

Dettagli

Gui Gu d i a d ra r p a i p d i a V d o a d f a one Int fone In e t r e net rnet Box Key Mini

Gui Gu d i a d ra r p a i p d i a V d o a d f a one Int fone In e t r e net rnet Box Key Mini Guida rapida Vodafone Internet Key Box Mini Ideato per Vodafone QSG_VMCLite_v31_10-2007_e172_IT.1 1 10/10/07 14:39:10 QSG_VMCLite_v31_10-2007_e172_IT.2 2 10/10/07 14:39:11 Benvenuti nel mondo della connessione

Dettagli

Procedure per l upgrade del firmware dell Agility

Procedure per l upgrade del firmware dell Agility Procedure per l upgrade del firmware dell Agility L aggiornamento firmware, qualsiasi sia il metodo usato, normalmente non comporta il ripristino dei valori di fabbrica della Centrale tranne quando l aggiornamento

Dettagli

GUIDA DI INSTALLAZIONE E PRIMA CONFIGURAZIONE DI EDILCONNECT PER I CONSULENTI

GUIDA DI INSTALLAZIONE E PRIMA CONFIGURAZIONE DI EDILCONNECT PER I CONSULENTI 1 GUIDA DI INSTALLAZIONE E PRIMA CONFIGURAZIONE DI EDILCONNECT PER I CONSULENTI Introduzione Dal 24 ottobre è possibile per i consulenti effettuare l installazione e la configurazione del nuovo applicativo

Dettagli

Gestione Risorse Umane Web

Gestione Risorse Umane Web La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...

Dettagli

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti. SH.MedicalStudio Presentazione SH.MedicalStudio è un software per la gestione degli studi medici. Consente di gestire un archivio Pazienti, con tutti i documenti necessari ad avere un quadro clinico completo

Dettagli

Elettronica dei Sistemi Programmabili

Elettronica dei Sistemi Programmabili Elettronica dei Sistemi Programmabili Introduzione Stefano Salvatori Università degli Studi Roma Tre (stefano.salvatori@uniroma3.it) Università degli Studi Roma Tre Elettronica dei Sistemi Programmabili

Dettagli

Sommario. Introduzione alla Sicurezza Web

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

Dettagli

Come creare il test di Yasso tramite l applicazione Training Center

Come creare il test di Yasso tramite l applicazione Training Center Come creare il test di Yasso tramite l applicazione Training Center A differenza degli altri test pubblicati da Garmin, il test di Yasso necessita di un approfondimento. Il test di Yasso è un test molto

Dettagli

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro Introduzione alle tecnologie informatiche Strumenti mentali per il futuro Panoramica Affronteremo i seguenti argomenti. I vari tipi di computer e il loro uso Il funzionamento dei computer Il futuro delle

Dettagli

Guida di Pro PC Secure

Guida di Pro PC Secure 1) SOMMARIO 2) ISTRUZIONI DI BASE 3) CONFIGURAZIONE 4) INFORMAZIONI AGGIUNTIVE 1) SOMMARIO Guida di Pro PC Secure Pro PC Secure è un programma che si occupa della protezione dagli attacchi provenienti

Dettagli

MANUALE PARCELLA FACILE PLUS INDICE

MANUALE PARCELLA FACILE PLUS INDICE MANUALE PARCELLA FACILE PLUS INDICE Gestione Archivi 2 Configurazioni iniziali 3 Anagrafiche 4 Creazione prestazioni e distinta base 7 Documenti 9 Agenda lavori 12 Statistiche 13 GESTIONE ARCHIVI Nella

Dettagli

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE 1/6 MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE Per prima cosa si ringrazia per aver scelto ImmobiPhone e per aver dato fiducia al suo autore. Il presente documento istruisce l'utilizzatore sull'uso del programma

Dettagli

Ing. Paolo Domenici PREFAZIONE

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

Dettagli

Software Servizi Web UOGA

Software Servizi Web UOGA Manuale Operativo Utente Software Servizi Web UOGA S.p.A. Informatica e Servizi Interbancari Sammarinesi Strada Caiese, 3 47891 Dogana Tel. 0549 979611 Fax 0549 979699 e-mail: info@isis.sm Identificatore

Dettagli

Xilinx ISE Tutorial File -> New Project...

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

Dettagli

A T I C _W E B G U I D A AL L A N A V I G A Z I O N E S U L S I T O D E L G R U P P O. Rev. 2.1

A T I C _W E B G U I D A AL L A N A V I G A Z I O N E S U L S I T O D E L G R U P P O. Rev. 2.1 G U I D A AL L A N A V I G A Z I O N E S U L S I T O D E L G R U P P O A T I C _W E B Rev. 2.1 1 1. ISCRIZIONE Le modalità di iscrizione sono due: Iscrizione volontaria Iscrizione su invito del Moderatore

Dettagli

Software di interfacciamento sistemi gestionali Manuale di installazione, configurazione ed utilizzo

Software di interfacciamento sistemi gestionali Manuale di installazione, configurazione ed utilizzo 01595 Software di interfacciamento sistemi gestionali Manuale di installazione, configurazione ed utilizzo INDICE DESCRIZIONE DEL SOFTWARE DI INTERFACCIAMENTO CON I SISTEMI GESTIONALI (ART. 01595) 2 Le

Dettagli

DINAMIC: gestione assistenza tecnica

DINAMIC: gestione assistenza tecnica DINAMIC: gestione assistenza tecnica INSTALLAZIONE SU SINGOLA POSTAZIONE DI LAVORO PER SISTEMI WINDOWS 1. Installazione del software Il file per l installazione del programma è: WEBDIN32.EXE e può essere

Dettagli

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste versione 2.1 24/09/2015 aggiornamenti: 23-set-2015; 24-set-2015 Autore: Francesco Brunetta (http://www.francescobrunetta.it/)

Dettagli

ISTRUZIONI PER LA GESTIONE BUDGET

ISTRUZIONI PER LA GESTIONE BUDGET ISTRUZIONI PER LA GESTIONE BUDGET 1) OPERAZIONI PRELIMINARI PER LA GESTIONE BUDGET...1 2) INSERIMENTO E GESTIONE BUDGET PER LA PREVISIONE...4 3) STAMPA DIFFERENZE CAPITOLI/BUDGET.10 4) ANNULLAMENTO BUDGET

Dettagli

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete IP Analizziamo con sufficiente dettaglio il sistema denominato IP, usato per consentire a due computer mobili di spostarsi liberamente in altre reti pur mantenendo lo stesso indirizzo IP. In particolare,

Dettagli

1) GESTIONE DELLE POSTAZIONI REMOTE

1) GESTIONE DELLE POSTAZIONI REMOTE IMPORTAZIONE ESPORTAZIONE DATI VIA FTP Per FTP ( FILE TRANSFER PROTOCOL) si intende il protocollo di internet che permette di trasferire documenti di qualsiasi tipo tra siti differenti. Per l utilizzo

Dettagli

ARCHITETTURA DI RETE FOLEGNANI ANDREA

ARCHITETTURA DI RETE FOLEGNANI ANDREA ARCHITETTURA DI RETE FOLEGNANI ANDREA INTRODUZIONE È denominata Architettura di rete un insieme di livelli e protocolli. Le reti sono organizzate gerarchicamente in livelli, ciascuno dei quali interagisce

Dettagli

Guida rapida Vodafone Internet Box

Guida rapida Vodafone Internet Box Guida rapida Vodafone Internet Box Benvenuti nel mondo della connessione dati in mobilità di Vodafone Internet Box. In questa guida spieghiamo come installare e cominciare a utilizzare Vodafone Internet

Dettagli

PROGETTO PER LA TRASMISSIONE DOCUMENTI RELATIVI ALL APPROVAZIONE DELLE MANIFESTAZIONI IN FORMA DIGITALE

PROGETTO PER LA TRASMISSIONE DOCUMENTI RELATIVI ALL APPROVAZIONE DELLE MANIFESTAZIONI IN FORMA DIGITALE PROGETTO PER LA TRASMISSIONE DOCUMENTI RELATIVI ALL APPROVAZIONE DELLE MANIFESTAZIONI IN FORMA DIGITALE L approvazione di una manifestazione nazionale od internazionale comporta spesso la trasmissione

Dettagli

Architettura del calcolatore

Architettura del calcolatore Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software Architettura del calcolatore L architettura dell hardware di un calcolatore reale

Dettagli

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass 0_Iniziare con GRASS Avvio di Grass e creazione della cartella del Database di GRASS Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Dettagli

Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo

Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo Prerequisiti Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo L opzione Conto lavoro è disponibile per le versioni Azienda Light e Azienda Pro. Introduzione L opzione Conto lavoro permette

Dettagli

PowerPoint 2007 Le funzioni

PowerPoint 2007 Le funzioni PowerPoint 2007 Le funzioni Introduzione Cos è un ipertesto L' ipertesto è un testo organizzato in link, o collegamenti ad altre parti del testo e/o altri testi, in modo da consentire all utente di scegliere

Dettagli

TERM TALK. software per la raccolta dati

TERM TALK. software per la raccolta dati software per la raccolta dati DESCRIZIONE Nell ambiente Start, Term Talk si caratterizza come strumento per la configurazione e la gestione di una rete di terminali per la raccolta dati. È inoltre di supporto

Dettagli

LCMobile Restaurant. Guida su come usare il software per palmare LCMobile Restaurant.

LCMobile Restaurant. Guida su come usare il software per palmare LCMobile Restaurant. LCMobile Restaurant Guida su come usare il software per palmare LCMobile Restaurant. Per prima cosa bisogna installare il file LCMobile-Restaurant.exe sul proprio PC dove e collegata la base del palmare.

Dettagli

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA BOZZA 23/07/2008 INDICE 1. PERCHÉ UNA NUOVA VERSIONE DEI MODULI DI RACCOLTA DATI... 3 2. INDICAZIONI GENERALI... 4 2.1. Non modificare la struttura dei fogli di lavoro... 4 2.2. Cosa significano

Dettagli

Esame di INFORMATICA

Esame di INFORMATICA Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 4 MACCHINA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono essere codificati nello

Dettagli

TECNICHE DI SIMULAZIONE

TECNICHE DI SIMULAZIONE TECNICHE DI SIMULAZIONE INTRODUZIONE Francesca Mazzia Dipartimento di Matematica Università di Bari a.a. 2004/2005 TECNICHE DI SIMULAZIONE p. 1 Introduzione alla simulazione Una simulazione è l imitazione

Dettagli

ENTRATEL: Servizio telematico Agenzia delle Entrate

ENTRATEL: Servizio telematico Agenzia delle Entrate ENTRATEL: Servizio telematico Agenzia delle Entrate Visualizzazione delle ricevute relative ai file inviati. Per controllare lo stato di elaborazione dei file inviati e per entrare in possesso delle ricevute

Dettagli

Il web server Apache Lezione n. 3. Introduzione

Il web server Apache Lezione n. 3. Introduzione Procurarsi ed installare il web server Apache Introduzione In questa lezione cominciamo a fare un po di pratica facendo una serie di operazioni preliminari, necessarie per iniziare a lavorare. In particolar

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

Trasmissione di dati al di fuori di un area locale avviene tramite la commutazione

Trasmissione di dati al di fuori di un area locale avviene tramite la commutazione Commutazione 05.2 Trasmissione di dati al di fuori di un area locale avviene tramite la Autunno 2002 Prof. Roberto De Prisco -05: Reti a di circuito Università degli studi di Salerno Laurea e Diploma in

Dettagli