Top Banner
1 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 Lo Standard AES (cenni preliminari)
40

0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

May 01, 2015

Download

Documents

Bianca Valeri
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

1

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

Lo Standard AES(cenni preliminari)

Page 2: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

2

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

Page 3: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

3

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.

Page 4: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

4

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

Page 5: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

5

Rijndael (chiave 128 bit)

Page 6: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

6

Parametri di AES

Page 7: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

7

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 44 .

La chiave sarà rappresentata da matrici 44 ,

46 o 48 (vengono mantenute 4 righe per consentire operazioni con il blocco in input) corrispondenti a lunghezze della chiave di 128, 192 e 256 bit rispettivamente

Page 8: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

8

State array

Input bytes State array Output bytes

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.

Page 9: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

9

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+1L’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)

Page 10: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

10

Advanced Encryption Standard

NotazioneNotazione

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.

Page 11: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

11

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

Page 12: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

12

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

Page 13: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

13

Caratteristiche generali dell’AES

Page 14: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

14

Funzioni implementate in ogni ciclo (round)Funzioni implementate in ogni ciclo (round)

•Sostituzione dei ByteSostituzione dei ByteComputa una sostituzione di byte utilizzando una tavola di sostituzione

nota come S-Box

•Scorrimento delle righeScorrimento delle righeRealizza uno spostamento ciclico delle righe dello State che contengono

i byte dei dati di input

•Mescolamento delle colonneMescolamento delle colonnemescolanza dei byte che utilizza l’aritmetica su GF(2 l’aritmetica su GF(288))

•Aggiunta della sottochiaveAggiunta della sottochiaveOperazione di XOR bit-a-bit del blocco corrente con la Chiave di

Round.

Page 15: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

15

Un round di Rijndael

Substitute bytes (sostituzione)

Shift rows (permutazione)

Mix columns (sostituzione)

INPUT: 128 bit in 4 blocchi da 32

Add Round Key (sostituzione)Ki

OUTPUT: 128 bit in 4 blocchi da 32

KEY:128 bit

da ripetere r volte(da 10 a 14)

Page 16: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

16

•Advanced Encryption Standard

Page 17: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

17

•Advanced Encryption Standard

Utilizza una struttura di sostituzione simile a quella di Utilizza una struttura di sostituzione simile a quella di

DES, sostituendo ogni byte di un blocco di 128 bit DES, sostituendo ogni byte di un blocco di 128 bit

secondo una tabella di sostituzione. secondo una tabella di sostituzione.

E’E’ invertibile e non lineare, caratteristica che costituisce

un punto di forza dell’AES.

Si tratta di un’operazione di confusione direttaSi tratta di un’operazione di confusione diretta

•Sostituzione dei Byte (substitute bytes transformation)•Scorrimento delle righe

•Mescolamento delle colonne

•Aggiunta della sottochiave

Page 18: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

18

•Advanced Encryption Standard

Page 19: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

19

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

( 4)mod8 ( 5)mod8 ( 6)mod8 ( 7)mod8'i i i i i i ib b b b b b c

Page 20: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

20

Costruzione S-box

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

Page 21: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

21

Costruzione S-box

La figura seguente illustra l' effetto della trasformazione SubBytes () sull'array State

Page 22: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

22

Costruzione S-boxLa 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 sarebbedunque il valore s'1,1 = { e d }.

Page 23: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

23

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).

Page 24: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

24

Costruzione S-box

Il risultato è quindi:

(b7b6 b5b4b3b2b1b0 ) = (11101101)2

In notazione esadecimale 01010011 è ED

Calcoliamo allora

0 0 4 5 5 7 0 mod 2 0 0 0 1 1 1mod 2 1b a a a a a c

1 1 5 6 7 0 1 mod 2 1 0 1 1 0 1mod 2 0b a a a a a c

……………………………………e così via

Page 25: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

25

Advanced Encryption Standard

E’ un passaggio di trasposizione.E’ un passaggio di trasposizione.

Per le dimensioni del blocco pari a 128 o 192 bit, la riga 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 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 blocchi di 256 bit, la riga 2 viene fatta scorrere di 1 byte

mentre le righe 3 e 4 sono scostate rispettivamente di 3mentre le righe 3 e 4 sono scostate rispettivamente di 3

e 4 byte.e 4 byte.

Si tratta di un’operazione di confusione diretta.Si tratta di un’operazione di confusione diretta.

•Sostituzione dei Byte

•Scorrimento delle righe ( Shift Rows transformation)•Mescolamento delle colonne

•Aggiunta della sottochiave

Page 26: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

26

Scorrimento delle righe

L’operazione è modulo 4, quindi i byte che muovendosi a sinistra “escono” dalla matrice, rientrano da destra.

Blocco di 128 bit

Page 27: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

27

Questo passaggio implica lo scorrimento verso sinistra eQuesto passaggio implica lo scorrimento verso sinistra e

l’esecuzione di un OR esclusivo dei bit con se stessi.l’esecuzione di un OR esclusivo dei bit con se stessi.

Queste operazioni consentono sia la confusione sia la Queste operazioni consentono sia la confusione sia la

diffusione.diffusione.

•Sostituzione dei Byte

•Scorrimento delle righe

•Mescolamento delle colonne (mix columns transformation)

•Aggiunta della sottochiave

Advanced Encryption Standard

Page 28: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

28

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.

Page 29: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

29

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)  s'0,c = ({02} · s0,c)  ({03} · s1,c)  ({03} · s1,c)  s2,c  s2,c  s3,c s3,c

s'1,c = s0,c  s'1,c = s0,c  ({02} · s1,c)  ({02} · s1,c)  ({03} · s2,c)  ({03} · s2,c)  s3,c s3,c

s'2,c = s0,c    s'2,c = s0,c    s1,c  s1,c  ({02} · s2,c) ({02} · s2,c) ({03} · s3,c ) ({03} · s3,c )

s'3,c = ({0b} · s0,c )  s'3,c = ({0b} · s0,c )  s1,c  s1,c  s2,c  s2,c  ({0e} · s3,c ) ({0e} · s3,c )

Page 30: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

30

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}.

Page 31: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

31

Advanced Encryption Standard

Una porzione della chiave per questo ciclo viene Una porzione della chiave per questo ciclo viene

sottoposta a OR esclusivo con il risultato del ciclo.sottoposta a OR esclusivo con il risultato del ciclo.

Questa operazione fornisce la confusione e incorpora laQuesta operazione fornisce la confusione e incorpora la

chiavechiave

•Sostituzione dei Byte

•Scorrimento delle righe

•Mescolamento delle colonne (mix columns transformation)

•Aggiunta della sottochiave (AddRoundKey Transformation)

Page 32: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

32

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

Page 33: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

33

Aggiunta della sottochiave

NotaNota•Si ha sia confusione che diffusione. I bit della chiave si Si ha sia confusione che diffusione. I bit della chiave si

combinano spesso con i bit del risultato intermediocombinano spesso con i bit del risultato intermedio

determinando la diffusione dei bit della chiave neldeterminando la diffusione dei bit della chiave nel

risultato finale.risultato finale.•I 4 passaggi sono rapidi I 4 passaggi sono rapidi

Page 34: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

34

Aggiunta della sottochiave

Page 35: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

35

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

Page 36: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

36

AES Key expansion

Page 37: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

37

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

Page 38: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

38

AES Key expansion

Page 39: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

39

AES Key expansion

NotaNota

Le prime Le prime NkNk word della chiave espansa sono ottenute direttamente word della chiave espansa sono ottenute direttamente

dalla chiave di cifratura, mentre ogni word successiva, w[ i ], dalla chiave di cifratura, mentre ogni word successiva, w[ i ],

è uguale allo XOR della word precedente, w[ i-1 ], con la wordè uguale allo XOR della word precedente, w[ i-1 ], con la word

di di NkNk posizioni più indietro. posizioni più indietro.

Page 40: 0 Nel 1997 il NIST emise una richiesta di proposte per un nuovo algoritmo detto AES, Advanced Encryption Standard, caratterizzato da una sicurezza almeno.

40

AES in dettaglio

•http://www.dia.unisa.it/~ads/corso-security/www/CORSO-9900/aes/index.htmhttp://www.dia.unisa.it/~ads/corso-security/www/CORSO-9900/aes/index.htm

Rijndael_ingles_2004.exe