Altri cifrari a blocchi



Documenti analoghi
Converte una chiave di al più 14 word a 32 bit (K-array) in un array di 18 sottochiavi a 32 bit (P-array) Genera 4 S-box, ognuna con 256 word a 32 bit

RC4 RC4. Davide Cerri. Davide Cerri CEFRIEL - Politecnico di Milano cerri@cefriel.it

BLOWFISH. Introduzione Algoritmo. Prestazioni Cryptanalysis of Vaundenay. Egizio Raffaele

Informatica. Rappresentazione dei numeri Numerazione binaria

cifrario di Feistel cifrario di Feistel

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

Crittografia a chiave pubblica

Lezione 7 Sommatori e Moltiplicatori

10 - Programmare con gli Array

Testi di Esercizi e Quesiti 1

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione

2.12 Esercizi risolti

Truecrypt. Alfredo De Santis. Aprile Dipartimento di Informatica Università di Salerno.

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

Architettura di un calcolatore: introduzione

RETI DI CALCOLATORI. Crittografia. La crittografia

4 3 4 = 4 x x x 10 0 aaa

Aritmetica dei Calcolatori 1

Lezione 3. Sommario. Le operazioni aritmetiche binarie. L aritmetica binaria. La somma La sottrazione La moltiplicazione

Calcolatori Elettronici

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

Data Encryption Standard. Data Encryption Standard DES. Struttura del DES. Lunghezza della Chiave. Permutazione Iniziale IP

Complessità Computazionale

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

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

Aritmetica dei Calcolatori 2

Codifica dei numeri negativi

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico

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

Algoritmi di Ricerca. Esempi di programmi Java

Sistemi Operativi. 5 Gestione della memoria

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Elementi di informatica

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

Elementi di informatica

Esercitazione Informatica I AA Nicola Paoletti

Informatica Generale (Prof. Luca A. Ludovico) Presentazione 5.1 Operazioni aritmetiche nel sistema binario

Sommario. Introduzione alla Sicurezza Web

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari

Memoria Secondaria o di Massa

Sicurezza nei Sistemi Informativi

Corso di Laurea in Informatica Architetture degli Elaboratori

4. Operazioni aritmetiche con i numeri binari

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO

Sistemi di Numerazione

PAES. Laurea Specialistica in Informatica. Analisi e sviluppo di un implementazione parallela dell AES per. architetture eterogenee multi/many-core

Scuola Secondaria di Primo Grado Anna Frank Nome Cognome classe anno sc. 2008/09 INFORMATICA

Gli algoritmi: definizioni e proprietà

Le componenti fisiche di un computer: l hardware

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

LINGUAGGI DI PROGRAMMAZIONE

Le variabili di Visual Basic consentono di memorizzare temporaneamente valori durante

Protezione del Software

La Macchina Virtuale

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

CPU. Maurizio Palesi

Informazione analogica e digitale

Rappresentazione dei numeri in un calcolatore

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

Parte II.2 Elaboratore

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

Laboratorio di Architettura degli Elaboratori A.A. 2015/16 Circuiti Logici

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

I sistemi di numerazione

Sicurezza nei Sistemi Distribuiti

Sicurezza nei Sistemi Distribuiti

APPUNTI DI CRITTOGRAFIA: Dai cifrari storici ad RSA.

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

La programmazione. Sviluppo del software

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

PIANO DI LAVORO DEI DOCENTI

Corso di Calcolo Numerico

Dispensa di Informatica I.1

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

C. P. U. MEMORIA CENTRALE

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Corsi Speciali Abilitanti Indirizzo 2: Fisico-Matematico Modulo Didattico: Elementi di Informatica Classi: 48/A TEST D INGRESSO

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Transcript:

Altri cifrari a blocchi Barbara Masucci Dipartimento di Informatica ed Applicazioni Università di Salerno masucci@dia.unisa.it http://www.dia.unisa.it/professori/masucci RC2 [1989] IDEA (International Data Encryption Algorithm) [1990] Blowfish [1993] SAFER (Secure And Fast Encryption Routine) SAFER K-64 [1994], SAFER K-128 [1995] RC5 [1994], RC6 [1998] Madryga, NDS, FEAL, REDOC, LOKI, Khufu, Knafre, MMB, GOST, AES 1 Blowfish Ideato da Bruce Schneier nel 93 Cifrario di Feistel Dimensione dei blocchi: 64 bit Numero di round: 16 Dimensione della chiave: da 1 a 14 word a 32 bit (da 32 a 448 bit) Altre caratteristiche: Veloce (su microprocessori a 32 bit opera a 18 cicli di clock per byte) Compatto (bastano meno di 5Kb di memoria) Semplice da implementare e da analizzare Implementato in numerosi prodotti software Ritenuto più sicuro di DES 2 1

Espansione chiave Converte una chiave di al più 14 word a 32 bit (K-array) in un array di 18 sottochiavi a 32 bit (P-array) Genera 4 S-box 8x32, ognuna con 256 word a 32 bit P 1,,P 18 S 1,0,S 1,1,,S 1,255 S 2,0,S 2,1,,S 2,255 S 3,0,S 3,1,,S 3,255 K 1,,K j 1 j 14 S 4,0,S 4,1,,S 4,255 3 Espansione chiave: Inizializzazione Inizializza in sequenza il P-array e le S-box con i valori della parte frazionaria di π P 1 =243F6A88 P 2 =85A308D3 S 4,254 =578FDFE3 S 4,255 =3AC372E6 Esegue lo XOR tra il P-array e il K-array P 1 =P 1 K 1 P 14 =P 14 K 14 P 15 =P 15 K 1 P 18 =P 18 K 4 Le word della chiave sono utilizzate più volte 4 Espansione chiave: Inizializzazione Sia E P,S [Y] la cifratura del blocco Y con il P-array e le S-box. Calcola P 1,P 2 =E P,S [0] P 3,P 4 =E P,S [P 1 P 2 ] Blocco di 64 bit tutti zero P 17,P 18 =E P,S [P 15 P 16 ] S 1,0,S 1,1, =E P,S [P 17 P 18 ] S 4,254,S 4,255 =E P,S [S 4,252 S 4,253 ] Nuovi valori per P-array e S- box Sono necessarie 521 cifrature per generare gli array finali P e S 9 per il P-array e 512 per S-box Blowfish non adatto per applicazioni in cui la chiave cambia frequentemente 5 2

Cifratura Blowfish utilizza due operazioni: + per la somma di word (modulo 2 32 ) per lo XOR Testo in chiaro: L 0 R 0 (64 bit) Testo cifrato: L 17 R 17 (64 bit) i-esima sottochiave For i=1 to 16 do R i =L i-1 P i ; L i =F[R i ] R i-1 ; L 17 =R 16 P 18 ; R 17 =L 16 P 17 ; 6 Struttura del round 7 La funzione F L input a 32 bit di F viene diviso in 4 byte a,b,c,d: F[a,b,c,d]=(S 1,a +S 2,b ) S 3,c )+S 4,d Ciascuna fase include somme modulo 2 32, XOR e sostituzioni con la S-Box 8 3

Decifratura Stesso algoritmo, sottochiavi in ordine inverso Testo cifrato: L 0 R 0 Testo in chiaro: L 17 R 17 For i=1 to 16 do R i =L i-1 P 19-i ; L i =F[R i ] R i-1 ; L 17 =R 16 P 1 ; R 17 =L 16 P 2 ; 9 Caratteristiche di Blowfish Sia le sottochiavi che le S-box dipendono dalla chiave In DES le S-box sono fissate In ogni round le operazioni coinvolgono tutto il blocco In DES, solo la parte destra Invulnerabile ad attacchi di forza bruta (se la dimensione della chiave è 14 word): Per testare una sola chiave sono necessarie 522 esecuzioni dell algoritmo Nel 1995, 1000 dollari di premio per la crittoanalisi Vaudenay ha definito attacchi per versioni modificate 10 Confronto con altri sistemi Blowfish 9 16 18 RC5 12 16 23 DES 18 16 45 IDEA 50 8 50 Triple-DES 18 48 108 11 4

Blowfish Proviamolo insieme, collegandoci al link http://www.dia.unisa.it/professori/masucci/sicurezza0809/ blowfish Inserimento chiave Inserimento testo in chiaro Schedulazione chiave 12 Blowfish Chiavi di round Modalità passo-passo 13 Blowfish Input diviso in blocchi Indicatore di padding Indicatore numero di round Dettagli round Dettaglio funzione F 14 5

RC5 Ideato da Ron Rivest nel 1995 Parametri Dimensione dei blocchi: variabile (32, 64, 128 bit) Numero di round: variabile (da 0 a 255) Dimensione della chiave: variabile (da 0 a 255 byte) Altre caratteristiche: E word-oriented (operazioni eseguite su blocchi della lunghezza della parola macchina) Usa operazioni comuni dei processori e rotazioni datadependant Usa poca memoria (adatto per smart card e altre device) Semplice da implementare e da analizzare Implementato in numerosi prodotti della RSA Data Security Inc. (BSAFE, JSAFE, S/MAIL) 15 RC5-w/r/b 2 word di w bit 2 word di w bit Due sottochiavi in ogni round 16 RC5: operazioni Operazioni su parole di w bit: a+b somma modulo 2 w a-b sottrazione modulo 2 w a b XOR bit a bit a «b rotazione a sinistra della word a di b bit a» b rotazione a destra della word a di b bit 17 6

RC5: schedulazione chiave Chiave K [0,,b-1] di b byte Se 8b non è multiplo di w padding con 00 0 L [0,,c-1] è un array di c = 8b/w word di w bit Mixing function S [0,,2r+1] chiave schedulata di 2r+2 word di w bit 18 RC5 Due differenti architetture Little-endian (INTEL) il valore di a 1 a 2 a 3 a 4 è a 1 +a 2 2 8 +a 3 2 16 +a 4 2 24 Big-endian (SPARC) il valore di a 1 a 2 a 3 a 4 è a 4 +a 3 2 8 +a 2 2 16 +a 1 2 24 RC5 funziona su macchine con architettura little-endian 19 RC5: schedulazione chiave Inizializzazione array S (usa le costanti P w e Q w ) Mixing function (aggiornamento array S mediante array L) S[0] = P w for i = 1 to 2r+1 do S[i] S[i-1]+Q w X Y 0 i j 0 do 3 max(c,2r+2) times X S[i] (S[i]+X+Y) «3 Y L[j] (L[j]+X+Y) «(X+Y) i (i+1) mod (2r+2) j (j+1) mod c 20 7

Costanti magiche P w = espansione binaria a w bit del numero di Nepero e = 2.71828182459045 (decimale) P w = Odd[(e-2)2 w ] Q w = espansione binaria a w bit del rapporto aureo Q w = Odd[ (φ-1)2 w ] Odd[x]=intero dispari più vicino a x 21 RC5: cifratura Input: testo in chiaro (A,B) Chiave schedulata: S[0,,2r+1] A A + S[0] B B + S[1] for i = 1 to r do A ((A B) «B) + S[2i] B ((B A) «A) + S[2i+1] Entrambe le metà dei dati aggiornate in ogni round Output: testo cifrato (A,B) 22 RC5: decifratura A A + S[0] B B + S[1] for i = 1 to r do A ((A B) «B) + S[2i] B ((B A) «A) + S[2i+1] for i = r downto 1 do B ((B - S[2i+1])» A) A A ((A - S[2i])» B ) B B B - S[1] A A - S[0] 23 8

Caratteristiche di RC5 Le rotazioni data-dependent evitano attacchi di crittoanalisi differenziale e lineare In ogni round le operazioni coinvolgono tutto il blocco In DES, solo la parte destra RC5-32/16/16 è un buon compromesso tra sicurezza ed efficienza 24 RC6 E un evoluzione dell RC5, per andare incontro alle richieste del NIST riguardo le specifiche tecniche dell'aes Parametri Dimensione dei blocchi: 128 bit Numero di round: 20 Dimensione della chiave: variabile (16, 24 o 32 byte) Usa una ulteriore operazione: la moltiplicazione di interi 25 RC6-w/r/b 4 word di w bit 4 word di w bit Due sottochiavi in ogni round 26 9

RC6 Operazioni su parole di w bit: a+b somma modulo 2 w a-b sottrazione modulo 2 w a b XOR bit a bit a b moltiplicazione modulo 2 w a «b rotazione a sinistra della word a di b bit a» b rotazione a destra della word a di b bit 27 RC6: schedulazione chiave L [0,,c-1] è un array di c = 8b/w word di w bit L [0,,c-1] = chiave con padding di 0 se necessario S[0] = P w for i 1 to 2r+3 do S[i] S[i-1]+Q w A B 0 i j 0 do 3 max(c,2r+4) times A S[i] (S[i]+A+B) «3 B L[j] (L[j]+A+B) «(A+B) i (i+1) mod (2r+4) j (j+1) mod c 28 RC6: cifratura Input: testo in chiaro (A,B,C,D) Chiave schedulata: S[0,,2r+3] B B + S[0] D D + S[1] for i 1 to r do t (B (2B+1)) «log w u (D (2D+1)) «log w A ((A t) «u) + S[2i] C ((C u) «t) + S[2i+1] (A,B,C,D) (B,C,D,A) A A + S[2r+2] C C + S[2r+3] Output: testo cifrato (A,B,C,D) 29 10

Caratteristiche dei moderni cifrari a blocchi Lunghezza della chiave variabile Lunghezza del blocco variabile Numero di round variabile Uso di diversi operatori aritmetici e/o Booleani Uso di rotazioni data-dependant Uso di S-box key-dependant Operazioni sull intero blocco 30 Cryptography and Network Security by W. Stallings (2003) cap. 6 Tesine di Sicurezza su reti http://www.dia.unisa.it/professori/ads/corso-security/www/ CORSO-0001/AES/index.htm http://www.dia.unisa.it/professori/ads/corso-security/www/ CORSO-9900/aes/index.htm 31 11