Advanced Encryption Standard (cenni preliminari)

Slides:



Advertisements
Presentazioni simili
Informatica Generale Marzia Buscemi
Advertisements

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array, matrici Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
Sistema di riferimento sulla retta
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Politecnico di Milano Implementazione di un Architettura Sicura per lAES 27 Luglio 2006 Milano Motta Francesco Nazzari Davide Relatore: Luca.
Capitolo 8 Sistemi lineari.
Informatica Generale Marzia Buscemi
COORDINATE POLARI Sia P ha coordinate cartesiane
LE MATRICI.
Frontespizio Economia Monetaria Anno Accademico
Introduzione alle curve ellittiche
= 2x – 3 x Definizione e caratteristiche
2ab2 2b4 4x − 2y a 3b2y3 3b2y3b Definizione e caratteristiche
Definizione e caratteristiche
RB-alberi (Red-Black trees)
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Implementazione dell algortimo di Viterbi attraverso la soluzione del problema di cammino mi- nimo tramite software specifico. Università degli studi di.
Sistemi e Tecnologie della Comunicazione
Luglio 2002Complementi di algebra binaria1 Complememti di algebra binaria Luglio 2002.
Esercitazioni su circuiti combinatori
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Statistica per le decisioni aziendali ed analisi dei costi Modulo II - Statistica per le decisioni Aziendali Richiami di Algebra Matriciale.
Algoritmo di Ford-Fulkerson
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
8. Reti di Code Nella maggior parte dei processi produttivi risulta troppo restrittivo considerare una sola risorsa. Esempio: linea tandem arrivi 1 v.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Realizzazione e caratterizzazione di una semplice rete neurale per la separazione di due campioni di eventi Vincenzo Izzo.
eliana minicozzi linguaggi1a.a lezione2
Algoritmi e strutture dati
Prof. Antonello Tinti La corrente elettrica.
Corso di Informatica per Giurisprudenza
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Università di Trieste Calcolatori Elettronici a.a Omero TuzziL01, Basi 1 Sommario: 1. Concetto di bit. 2. Indirizzi di memoria. 3. Ordinamento.
Num / 36 Lezione 9 Numerosità del campione.
Lezione 4 Probabilità.
Codifica binaria Rappresentazione di numeri
Contatore: esempio di circuito sequenziale
Educare al multimediale 1 – Verso il digitale 2 Presentazione a cura di Gino Roncaglia Prima parte: Informazione in formato digitale.
MATRICI classe 3 A inf (a.s ).
Definizione di determinante
Elementi di Informatica di base
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Reti di CalcolatoriAndrea Frosini1 Reti di Calcolatori a.a. 2005/06 Lezione 7.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
Calcolo Parallelo e Distribuito
TRASFORMAZIONI GEOMETRICHE
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Classificazione (aka Cluster Analysis)
Corso di ELETTROTECNICA
Acceleratori e Reattori Nucleari
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
Crittografia MITTENTE DESTINATARIO messaggio messaggio chiave-1
1 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Informatica per laurea triennale.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Crittografia. Introduzione  La rete può essere utilizzata per diversi scopi: informazione, scambio dati, scambio messaggi, trasferimento denaro.  Nel.
Cenni di Crittografia Luigi Vetrano TechnoLabs S.p.A. L’Aquila, Aprile 2011.
Transcript della presentazione:

Lo Standard AES (cenni preliminari) Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno uguale a quella offerta da 3DES ma più efficiente rispetto ad esso. Il NIST impose che i vari candidati che intendevano partecipare alla selezione per diventare il nuovo algoritmo AES, realizzassero una cifratura simmetrica con blocchi di lunghezza pari a 128 bit e chiavi lunghe 128, 192 o 256 bit. I criteri su cui NIST basò la selezione tra i potenziali candidati appartenevano alle seguenti categorie: Sicurezza Costo Caratteristiche dell’algoritmo e dell’implementazione

Advanced Encryption Standard (cenni preliminari) 5 finalisti su 16 candidati: MARS, RC6, Rijndael, Serpent, Twofish, il vincitore della gara internazionale è Rijndael (si pronuncia come “rain doll”) Il NIST ha completato il processo di valutazione e pubblicato lo standard finale nel 2001. E’ stato selezionato l’algoritmo Rijndael proposto da due crittografi belga, Dr. Joan Daemen e Dr. Vincent Rijmen . AES è divenuto uno standard pubblico Nel 2003 la NSA ha approvato AES a 128 bit per i documenti classificati dalle amministrazioni USA come SECRET, e AES a 192 o 256 bit per i documenti classificati TOP-SECRET

Advanced Encryption Standard Valutazione di Rijndael eccellenti prestazioni su tutte le piattaforme (dai main frame alle smart card), buon margine di sicurezza a fronte di ogni attacco conosciuto, bassa richiesta di memoria, sia ROM che RAM, veloce procedura di key setup, buone caratteristiche per l'esecuzione parallela delle istruzioni, chiavi e blocchi di lunghezza variabile per multipli di 32 bit.

Rijndael Progettato in Belgio da V. Rijmen e J. Daemen Blocchi di dati da 128 bit e chiavi da 128/192/256 bit Cifrario non Feistel ma iterativo Elabora i dati come blocchi (State) di 4 words da 4 byte In ogni stadio opera sull’intero blocco di dati Obiettivi del progetto Resistenza a tutti gli attacchi conosciuti Velocità e compattezza di codice sulle CPU più diffuse Semplicità concettuale

Rijndael (chiave 128 bit)

Parametri di AES

State array L’unità di elaborazione dell’algoritmo non è il bit ma il byte. Per un blocco di 128 bit la matrice in input è costituita da 16 byte, ovvero da una matrice quadrata 44 . La chiave sarà rappresentata da matrici 44 , 46 o 48 (vengono mantenute 4 righe per consentire operazioni con il blocco in input) corrispondenti a lunghezze della chiave di 128, 192 e 256 bit rispettivamente

State array Le operazioni non vengono effettuate sull’input, ma su una matrice di appoggio detta State (o matrice di Stato), su cui l’input viene “copiato” e da cui verrà estratto l’output. La copiatura viene realizzata per colonne, ovvero i primi 4 byte dell’input formano la prima word di State, i secondi 4 byte la seconda e così via. Al termine, dopo l’ultima fase il risultato viene copiato nell’array di Output. Input bytes State array Output bytes

Advanced Encryption Standard Rijndal è definito nel campo di Galois GF(28), rispetto al polinomio irriducibile P=x8+x4+x3+x+1 I n questo sistema matematico, un numero è rappresentato da una serie di coefficienti a questo polinomio di grado 8. Per esempio, il numero 23 in binario 10111, corrisponde al polinomio 1x4+0x3+1x2+1x+1= x4+x2+1x+1 L’aggiunta dei coefficienti viene eseguita (mod 2), in modo che l’addizione corrisponda alla sottrazione, che equivale all’OR esclusivo: 0+0=0, 1+0=0, 1+1=0 La moltiplicazione è quella standard tra polinomi: (x3+1)*(x4+x)=(x7+x4+x4+x)

Advanced Encryption Standard Notazione word indica una singola colonna di un blocco (sia di quello in input che di quello della chiave); Nb indica il numero di word di un blocco in input; Nk indica il numero di word della chiave; Nr indica il numero di round in cui avverrà la codifica.

Advanced Encryption Standard Versione ufficiale dell’AES Nb 4 Nk 4,6,8 a seconda del tipo di chiave usata. Nr 10 round per una chiave a 128 bit Nr 12 round per una chiave a 192 bit Nr 14 round per una chiave a 256 bit

Caratteristiche generali dell’AES Funzioni principali: KeyExpansion e Chiper KeyExpansion è un generatore di chiavi. La chiave fornita come input viene espansa in un array di 44 words a 32 bit. Per ciscuna fase vengono utilizzate come chiavi quattro word distinte. Chiper è la funzione che codifica il messaggio, implementa gli Nr round, di cui Nr- 1 sono identici, mentre uno è diverso dagli altri; gli Nr-1 round identici codificano il messaggio attraverso l’applicazione di quattro funzioni in cascata il round rimanente è diverso dagli altri poiché sostituisce a MixColumns un’altra occorrenza di AddRoundKey, e necessita quindi di due chiavi; inoltre, le funzioni vengono applicate in ordine diverso

Caratteristiche generali dell’AES

Funzioni implementate in ogni ciclo (round) Sostituzione dei Byte Computa una sostituzione di byte utilizzando una tavola di sostituzione nota come S-Box Scorrimento delle righe Realizza uno spostamento ciclico delle righe dello State che contengono i byte dei dati di input Mescolamento delle colonne mescolanza dei byte che utilizza l’aritmetica su GF(28) Aggiunta della sottochiave Operazione di XOR bit-a-bit del blocco corrente con la Chiave di Round.

Un round di Rijndael INPUT: 128 bit in 4 blocchi da 32 KEY: 128 bit Substitute bytes (sostituzione) da ripetere r volte (da 10 a 14) Shift rows (permutazione) Mix columns (sostituzione) Add Round Key (sostituzione) Ki OUTPUT: 128 bit in 4 blocchi da 32

Advanced Encryption Standard

Advanced Encryption Standard Sostituzione dei Byte (substitute bytes transformation) Scorrimento delle righe Mescolamento delle colonne Aggiunta della sottochiave Utilizza una struttura di sostituzione simile a quella di DES, sostituendo ogni byte di un blocco di 128 bit secondo una tabella di sostituzione. E’ invertibile e non lineare, caratteristica che costituisce un punto di forza dell’AES. Si tratta di un’operazione di confusione diretta

Advanced Encryption Standard

Costruzione S-box 1) Inizializzazione dell’S-box con valori di byte ascendenti 00 01 02 03 04 . . . . 0F 10 11 12 13 14 . . . . 1F . . . . . . . . . . . . …………. F0 F1 F2 F3 F4 . . . . FF 2) Processo di mappatura di ciascun byte dell’S-box nel suo inverso moltiplicativo nel campo GF (28) 3) Si applica a ciascun bit di ogni byte la trasformazione affine su GF (2) ove ci è il bit i-esimo di un byte c = {63} in esadecimale oppure{ 0 1 1 0 0 0 0 1 1 } in binario

Costruzione S-box L' elemento della S-Box prodotto dalla trasformazione affine può essere espresso in forma matriciale come:

Costruzione S-box La figura seguente illustra l' effetto della trasformazione SubBytes () sull'array State

Costruzione S-box La S-Box usata nella trasformazione SubBytes () viene ora presentata in forma esadecimale: Ad esempio, se s1,1 = { 5 3 }, allora il valore della sostituzione dovrebbe essere determinato dall'intersezione della riga di indice ' 5 ' con la colonna di indice ' 3 '. Il risultato di tale sostituzione sarebbe dunque il valore s'1,1 = { e d }.

Costruzione S-box Esempio: supponiamo di avere il numero (53)16 che in binario è rappresentato dal byte 01010011: 16 10 (53) 516 3 (83) e, poiché rappresentato come elemento del campo diventa: x6 + x4 + x +1. L’inverso moltiplicativo (nel campo GF(28 ) ) è: x7+ x6 + x3 + x . Quindi in notazione binaria abbiamo: (a7a6a5a4a3a2a1a0)=(11001010).

Costruzione S-box ………………… Calcoliamo allora e così via Il risultato è quindi: (b7b6 b5b4b3b2b1b0 ) = (11101101)2 In notazione esadecimale 01010011 è ED

Advanced Encryption Standard Sostituzione dei Byte Scorrimento delle righe ( Shift Rows transformation) Mescolamento delle colonne Aggiunta della sottochiave E’ un passaggio di trasposizione. Per le dimensioni del blocco pari a 128 o 192 bit, la riga n viene fatta scorrere in modo circolare di n-1 byte; per i blocchi di 256 bit, la riga 2 viene fatta scorrere di 1 byte mentre le righe 3 e 4 sono scostate rispettivamente di 3 e 4 byte. Si tratta di un’operazione di confusione diretta.

Scorrimento delle righe Blocco di 128 bit L’operazione è modulo 4, quindi i byte che muovendosi a sinistra “escono” dalla matrice, rientrano da destra.

Advanced Encryption Standard Sostituzione dei Byte Scorrimento delle righe Mescolamento delle colonne (mix columns transformation) Aggiunta della sottochiave Questo passaggio implica lo scorrimento verso sinistra e l’esecuzione di un OR esclusivo dei bit con se stessi. Queste operazioni consentono sia la confusione sia la diffusione.

Mescolamento delle colonne La trasformazione MixColumns () opera sulle colonne dell'array State. Le colonne sono trattate come polinomi di 4 termini con coefficienti nel campo finito GF(28) e sono moltiplicate modulo x4+1 con un fissato polinomio. Ciò può essere scritto come una moltiplicazione matriciale.

Mescolamento delle colonne Come risultato di questa moltiplicazione, i 4 byte in una colonna sono sostituiti dai  byte seguenti: s'0,c = ({02} · s0,c)   ({03} · s1,c)   s2,c   s3,c s'1,c = s0,c   ({02} · s1,c)   ({03} · s2,c)   s3,c s'2,c = s0,c     s1,c   ({02} · s2,c)  ({03} · s3,c ) s'3,c = ({0b} · s0,c )   s1,c   s2,c   ({0e} · s3,c )

Mescolamento delle colonne La trasformazione MixColumns () è stata scelta secondo i seguenti criteri: 1. Invertibilità; 2. linearità in GF(28); 3. la velocità su microprocessori a 8-bit; 4. la simmetria; 5. la semplicità di descrizione. I criteri 2, 4 e 5  hanno condotto alla scelta del modulo della moltiplicazione polinomiale x4+1, i criteri 1, 3 impongono le condizioni sui coefficienti. Il criterio 3 impone che i coefficienti abbiano valori piccoli, in ordine di preferenza {00}, {01}, {02}, {03}.

Advanced Encryption Standard Sostituzione dei Byte Scorrimento delle righe Mescolamento delle colonne (mix columns transformation) Aggiunta della sottochiave (AddRoundKey Transformation) Una porzione della chiave per questo ciclo viene sottoposta a OR esclusivo con il risultato del ciclo. Questa operazione fornisce la confusione e incorpora la chiave

Aggiunta della sottochiave L’operazione AddRoundKey consiste in un bitwise XOR tra i 128 bits dello State e i 128 bits della round key AES usa una chiave di 128 bit (4 words da 4 bytes) Nel processo di encryption si usano 11 round key di 4 words In totale si usano 44 words da 4 bytes = 176 bytes = 1408 bits 1408 bits ottenuti tramite il processo di key expansion

Aggiunta della sottochiave Nota Si ha sia confusione che diffusione. I bit della chiave si combinano spesso con i bit del risultato intermedio determinando la diffusione dei bit della chiave nel risultato finale. I 4 passaggi sono rapidi

Aggiunta della sottochiave

AES Key expansion Consideriamo la versione di AES a 10 round, ossia la versione che usa una chiave a 128 bit. Ci servono un numero di chiavi adatto a 11 round, ognuna delle quali è costituita da 16 byte. L’algoritmo che genera le chiavi è word–oriented, dove una parola (word appunto) è formata da 4 byte o, equivalentemente, da 32 bit; quindi, ogni chiave di un round è costituita da 4 parole. L’insieme delle chiavi di tutti i round è detto chiave espansa (expanden key), è formato da 44 parole ed è denotato con w[0],...,w[43], dove ogni w[i] è una parola. La chiave espansa è costruita usando la funzione KeyExpansion

AES Key expansion

AES Key expansion L’input di questo algoritmo è la chiave di 128 bit, key, che è utilizzata come un vettore di byte, key[0],...key[15] ; l’output è il vettore delle parole w. La funzione KeyExpansion incorpora altre due funzioni, che sono chiamate RotWord e SubWord; la funzione RotWord esegue uno spostamento (shift) ciclico a sinistra dei quattro byte B0 , B1 , B2 , B3 , cioè: mentre la funzione SubWord (B0 , B1, B2, B3) applica la S-Box ad ognuno dei quattro byte B0 , B1, B2, B3 , cioè: Il risultato dei passi 1 e 2 è sottoposto a uno xor con una costante di fase

AES Key expansion

AES Key expansion Nota Le prime Nk word della chiave espansa sono ottenute direttamente dalla chiave di cifratura, mentre ogni word successiva, w[ i ], è uguale allo XOR della word precedente, w[ i-1 ], con la word di Nk posizioni più indietro.

AES in dettaglio http://www.dia.unisa.it/~ads/corso-security/www/CORSO-9900/aes/index.htm