Dipartimento di Ingegneria dell’Informazione

Slides:



Advertisements
Presentazioni simili
I numeri interi relativi
Advertisements

Le frazioni Vogliamo ampliare l’insieme numerico N con un insieme numerico nel quale sia sempre possibile eseguire la divisione . Per fare ciò dobbiamo.
ERREsoft1 Basi matematiche del sistema RSA Pierluigi Ridolfi Università di Roma La Sapienza marzo 2000.
Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?
I numeri naturali ….. Definizione e caratteristiche
Informatica Generale Susanna Pelagatti
Sistemi di numerazione
Seminario per il corso di Sistemi Operativi mod
Capitolo 8 Sistemi lineari.
COORDINATE POLARI Sia P ha coordinate cartesiane
LE MATRICI.
Sistemi di numerazione e codici
1 2. Introduzione alla probabilità Definizioni preliminari: Prova: è un esperimento il cui esito è aleatorio Spazio degli eventi elementari : è linsieme.
Introduzione alle curve ellittiche
esponente del radicando
2ab2 2b4 4x − 2y a 3b2y3 3b2y3b Definizione e caratteristiche
Definizione e caratteristiche
I cifrari a chiave pubblica: Introduzione alle curve ellittiche
Dipartimento di Ingegneria dell’Informazione
RSA Monica Bianchini Dipartimento di Ingegneria dellInformazione Università di Siena.
Dependability — I mezzi per la garanzia di funzionamento
Crittografia  I cifrari storici
Hash Tables Indirizzamento diretto Tabelle Hash Risoluzioni di collisioni Indirizzamento aperto.
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.
6. Catene di Markov a tempo continuo (CMTC)
Sistemi e Tecnologie della Comunicazione
Per crittografia si intende la protezione
Sistemi di elaborazione delle informazioni
CRITTOGRAFIA La crittografia, ovvero la scienza dei messaggi segreti sicuri, nasce come raccolta di tecniche e sistemi per nascondere messaggi tra regnanti,
Algoritmi e Strutture Dati
1 Sistemi Digitali. 2 Definizione Analog Waveform Time Voltage (V) 0 5 Digital Waveform Time Voltage (V)
Testo consigliato Crittografia, P. Ferragina e F. Luccio, Ed. Bollati Boringhieri, € 16.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati.
Processi Aleatori : Introduzione – Parte I
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 Informatica (Programmazione)
Algoritmi e strutture dati
Corso di Informatica per Giurisprudenza
Modelli simulativi per le Scienze Cognitive Paolo Bouquet (Università di Trento) Marco Casarotti (Università di Padova)
Modelli simulativi per le Scienze Cognitive
1 Esempio : Utile per considerare limportanza delle ALTE FREQUENZE nella ricostruzione del segnale, in particolare dei FRONTI di SALITA e di DISCESA (trailing.
Le matrici e I Sistemi lineari.
Corso di Matematica Discreta cont. 2
Lezione 13 Equazione di Klein-Gordon Equazione di Dirac (prima parte)
Scritture Segrete Lezione n. 2
MATRICI classe 3 A inf (a.s ).
Le operazioni con i numeri
CORSO DI CRITTOGRAFIA Terzo incontro PROGETTO LAUREE SCIENTIFICHE
Definizione di determinante
LA CRITTOGRAFIA QUANTISTICA
Metodo della moltiplicazione
Elementi di Informatica di base
Reti di CalcolatoriAndrea Frosini1 Reti di Calcolatori a.a. 2005/06 Lezione 7.
Radix-Sort(A,d) // A[i] = cd...c2c1
Trasformazioni Daniele Marini.
Corso di Matematica (6 CFU) (4 CFU Lezioni +2 CFU Esercitazioni)
Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri.
Calcolo letterale.
DALLA CRITTOGRAFIA CLASSICA ALLA CRITTOGRAFIA MODERNA
La codifica dei numeri.
Le quattro operazioni.
Crittografia/ Steganografia
Informatica Lezione 10 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
La firma digitale. Che cosa é la firma digitale? La firma digitale è una informazione aggiunta ad un documento informatico al fine di garantirne integrità.
Crittografia. Introduzione  La rete può essere utilizzata per diversi scopi: informazione, scambio dati, scambio messaggi, trasferimento denaro.  Nel.
Sistemi di equazioni lineari. Sistemi di primo grado di due equazioni a due incognite Risolvere un sistema significa trovare la coppia di valori x e y.
Cenni di Crittografia Luigi Vetrano TechnoLabs S.p.A. L’Aquila, Aprile 2011.
Un sistema di sicurezza dei dati.  La crittografia, il cui termine indica "nascosto", è la branca della crittologia che tratta delle "scritture nascoste",
Le frazioni A partire da N vogliamo costruire un nuovo insieme numerico nel quale sia sempre possibile eseguire la divisione. Per fare ciò dobbiamo introdurre.
Transcript della presentazione:

Dipartimento di Ingegneria dell’Informazione Crittografia Monica Bianchini monica@ing.unisi.it Dipartimento di Ingegneria dell’Informazione Università di Siena

Crittografia Negli attuali sistemi informativi distribuiti, e più in generale nel settore delle telecomunicazioni, la crittografia ha assunto un rilievo ed un interesse crescenti nelle infrastrutture di sicurezza La ragione è evidente: un numero considerevole di messaggi viaggia sui canali più disparati, dalla posta al telefono, alle comunicazioni via etere, al telex, fino alle linee di trasmissione dati Altrettanto enorme è l’informazione immagazzinata nelle memorie di massa dei calcolatori e nelle banche dati Se da un lato il progresso tecnologico agevola la manipolazione (e l'intercettazione) dei dati, dall'altro facilita anche l'applicazione della crittografia per proteggere l'informazione stessa

Terminologia  1 In un sistema crittografico, il testo in chiaro viene trasformato, secondo regole, nel testo in cifra o crittogramma; tale operazione si chiama cifratura Il testo cifrato viene quindi trasmesso al destinatario attraverso un opportuno canale di comunicazione. Il canale non sarà completamente affidabile: lungo il percorso può trovarsi una spia che può intercettare il crittogramma e tentare di decrittarlo Il destinatario legittimo decifra il crittogramma e riottiene il testo in chiaro: se il sistema di cifra, o cifrario, è ben congegnato, l'operazione di decifrazione o  decifratura deve risultare semplice al destinatario legittimo, ma di complessità proibitiva alla spia  possibile in quanto gli interlocutori legittimi possiedono un'informazione che deve rimanere inaccessibile alla spia, la chiave del cifrario

Cifratura (C), decifrazione (D1) e decrittazione (D2) Terminologia  2 Il modello delineato è schematizzato in figura: Occorre notare la distinzione tra decifrazione e decrittazione: quest'ultima è l'operazione illegittima in cui non ci si può avvalere della chiave Cifratura (C), decifrazione (D1) e decrittazione (D2)

Terminologia  3 Il problema della distribuzione delle chiavi è un punto di importanza cruciale in qualsiasi cifrario: si dice che la chiave è comunicata al destinatario tramite un corriere Per rendere nota la chiave segreta ci si può affidare ad un canale speciale assolutamente fidato, ma se così è, esso potrebbe essere usato per trasmettere il crittogramma o il messaggio in chiaro     In realtà, l'uso di un canale speciale è costoso inoltre esso potrebbe essere disponibile solo per brevi intervalli di tempo e/o in determinati momenti I metodi di costruzione di un cifrario non possono essere disgiunti dallo studio degli eventuali metodi per demolirlo, ovvero non ci si può occupare di crittografia (la parte costruttiva) senza occuparsi di crittoanalisi (la parte distruttiva): insieme esse costituiscono una disciplina unitaria detta crittologia Nell'uso corrente si usa "crittografia" là dove si dovrebbe dire "crittologia"

Terminologia  4 Alcuni sistemi crittografici si affidano esclusivamente alla segretezza degli algoritmi utilizzati  solo di interesse storico, inadeguati per le applicazioni reali Tutti i moderni algoritmi utilizzano una chiave per controllare sia cifratura che decifratura; un messaggio può cioè essere letto solo se la chiave di decifrazione corrisponde in qualche modo a quella di cifratura Esistono due classi di algoritmi: simmetrici (o a chiave segreta): utilizzano la stessa chiave per cifrare e decifrare (o la chiave di decifrazione è facilmente ottenibile a partire da quella di cifratura) asimmetrici (o a chiave pubblica): utilizzano due chiavi diverse e la chiave di decifrazione non può essere ricavata a partire dalle informazioni contenute nella chiave di cifratura    

Terminologia  5 Gli algoritmi simmetrici possono essere suddivisi in cifrari di flusso e cifrari di blocco. I cifrari di flusso possono crittare un singolo bit del messaggio in chiaro alla volta, mentre i cifrari di blocco trasformano l'informazione a blocchi di bit (tipicamente 64 bit ) I cifrari asimmetrici permettono che la chiave di cifratura sia resa pubblica, consentendo a chiunque di cifrare messaggi con tale chiave, mentre solo il legittimo destinatario (colui che conosce la chiave di decifrazione) può decifrare il messaggio. La chiave di cifratura è anche detta chiave pubblica e la chiave di decifrazione chiave privata

Crittografia classica  1 Scopo della crittografia è permettere a due persone, Alice e Bob, di comunicare attraverso un canale insicuro, in modo tale che una spia, Oscar, non possa comprendere il contenuto del messaggio Il canale può essere una normale linea telefonica, la rete, etc. L’informazione che Alice invia a Bob, il plaintext, o testo in chiaro, può essere testuale, numerica, etc. Alice critta il plaintext, utilizzando una chiave predefinita, ed invia il testo cifrato sul canale Oscar non può determinare il contenuto del messaggio, ma Bob, che conosce la chiave, può decifrare il testo cifrato e ricostruire il plaintext

Crittografia classica  2 Formalmente… Definizione 1 Un crittosistema è una quintupla (P,C,K,E,D) per cui valgono le seguenti condizioni P è un insieme finito di plaintext C è un insieme finito di testi cifrati K, lo spazio delle chiavi, è un insieme finito di possibili chiavi Per ogni kK, esiste una regola di codifica ekE ed una corrispondente regola di decodifica dkD. Per ogni funzione ek: PC e dk: CP, dk(ek(x))=x, per ogni xP

Crittografia classica  3 Alice e Bob impiegheranno il seguente protocollo per realizzare uno specifico crittosistema Scelta di una chiave k: deve avvenire quando Alice e Bob sono nello stesso posto e non osservati da Oscar, ovvero quando possono utilizzare un canale sicuro Se Alice vuole comunicare a Bob il messaggio, rappresentato dalla stringa x=x1x2…xn, n  1, ciascun xi viene codificato per mezzo della regola ek, cioè yi=ek(xi), ed il testo cifrato trasmesso è rappresentato dalla stringa y=y1y2…yn Quando Bob riceve y, la decifra usando la funzione di decodifica dk, ricostruendo il plaintext x

Crittografia classica  4 Canale sicuro Bob Chiave Oscar k Codifica y Decodifica x Alice Note Le funzioni di codifica sono iniettive: se esistessero x1x2 tali che y=ek(x1)=ek(x2), Bob non potrebbe decodificare univocamente il messaggio Se P =C ogni funzione di codifica è una permutazione, cioè il testo cifrato viene composto utilizzando gli stessi caratteri del plaintext x, organizzati diversamente a formare la stringa y

Aritmetica modulare  1 Definizione 2 Siano a e b interi ed m intero positivo; a b (mod m), se m divide b-a, cioè a è congruente a b modulo m; l’intero m è il modulo Definizione 3 L’aritmetica modulo m è costituita dall’insieme Zm degli interi {0,1,…,m-1} dotato delle operazioni di somma e moltiplicazione. Le operazioni producono risultati ridotti modulo m Esempio 1 In Z16, l’operazione 1113 produce come risultato il numero 143 mod 16=15

Aritmetica modulare  2 Proprietà delle operazioni modulari L’insieme Zm è chiuso rispetto all’addizione ed alla moltiplicazione, cioè per ogni a,b  Zm, a +b, a b  Zm L’addizione e la moltiplicazione godono delle proprietà commutativa e associativa 0 è l’elemento neutro per l’operazione di addizione, 1 è l’elemento neutro per la moltiplicazione Per ogni a  Zm, m-a è l’opposto di a, cioè vale la relazione a+(m-a )=(m-a )+a = 0 La moltiplicazione gode della proprietà distributiva rispetto all’addizione, cioè per ogni a,b,c  Zm, (a +b)  c=a c + b c, a (b +c )=a b + a c Zm è un gruppo abeliano rispetto all’operazione di somma e, grazie alla presenza della moltiplicazione, con le proprietà sopra descritte, è un anello

Aritmetica modulare  3 Dato che Zm contiene l’opposto, rispetto alla somma, di ogni elemento dell’insieme, è ivi definita anche l’operazione di sottrazione a –b = a +m-b (mod m ) Esempio 2 Per calcolare 11-18 in Z31, si esegue l’operazione di somma 11+13 modulo 31, ottenendo 24 Il primo crittosistema che esamineremo, SHIFT cipher, è definito in Z26, poiché 26 sono le lettere che compongono l’alfabeto inglese Shift cipher costituisce un crittosistema tale che dk(ek(x))=x, per ogni x Z26 Per k=3, il crittosistema a shift è il Cifrario di Cesare, che lo utilizzava per comunicare con i generali delle sue legioni

Shift cipher  1 Siano P = C = K = Z26. Per 0  k  25, ek(x) = x + k (mod 26) dk(y) = y – k (mod 26) x,y  Z26 Per utilizzare Shift cipher per codificare testo, occorre stabilire una corrispondenza biunivoca fra lettere dell’alfabeto e relativo numero d’ordine; quindi è necessario scegliere la chiave k

“we will meet at midnight” “hphtwwxppelextoytrse” Shift cipher  2 Esempio 3 Sia k= 11; la stringa plaintext “we will meet at midnight” può essere convertita nella sequenza di numeri 22 4 22 8 11 11 12 4 4 19 0 19 12 8 3 13 8 6 7 19 cui deve essere sommato il numero 11 (mod 26) 7 15 7 19 22 22 23 15 15 4 11 4 23 19 14 24 19 17 18 4 La sequenza di numeri ottenuta, nuovamente tradotta in caratteri, fornisce “hphtwwxppelextoytrse” Per decodificare il testo cifrato, Bob deve prima convertirlo nella corrispondente sequenza di interi, quindi sottrarre 11 (mod 26) da ognuno di essi, ed infine convertire gli interi così ottenuti nelle lettere corrispondenti

Shift cipher  3 Perché un crittosistema sia operativo, deve soddisfare certe proprietà: Le funzioni di codifica, ek, e di decodifica, dk, devono essere computazionalmente poco onerose Una eventuale spia non deve essere in grado, dall’osservazione del testo cifrato y, di risalire alla chiave k né al plaintext x La seconda proprietà esprime l’idea di “sicurezza” Il tentativo di determinare la chiave k, dato il testo cifrato y, costituisce la crittoanalisi: se Oscar può risalire a k, può anche decrittare y, come Bob, utilizzando dk  Il problema di determinare k deve essere almeno difficile quanto quello di decifrare x a partire da y

Shift cipher  4 Shift cipher è un crittosistema che non garantisce la sicurezza, poiché può essere crittoanalizzato attraverso il metodo ovvio di ricerca esaustiva della chiave (su solo 26 possibili…) Esempio 4 Dato il testo cifrato “jbcrclqrwcrvnbjenbwrwn”, provando in successione le chiavi k=1,2,… si ottiene iabqbkpqvbqumaidmavqvm hzapajopuaptlzhclzupul gyzozinotzoskygbkytotk fxynyhmnsynrjxfajxsnsj ewxmxglmrxmqiweziwrmri dvwlwfklqwlphvdyhvqlqh cuvkvejpkvkogucxgupkpg btujudijoujnftbwftojof a stitch in time saves nine  il plaintext è decifrato e k=9 In media, occorrono 26/2=13 tentativi per violare il crittosistema Un punto a tempo ne risparmia cento

Sicurezza Una condizione necessaria affinché il crittosistema sia sicuro è costituita dall’impossibilità di eseguire una ricerca esaustiva nello spazio delle chiavi Tuttavia, anche per |K | molto grande, la sicurezza non è garantita

Substitution cipher  1 Siano P = C = Z26 Sia K insieme delle permutazioni di {0,1,…,25} Per ogni K e(x) = (x) d(y) = -1 (y) x,y  Z26 e -1 permutazione inversa di  Esempio 5 a b c d e f g h i j k l m n o p q r s t u v w x y z e(a)=x, e(b)=n, etc. d(a)=d, d(b)=l, etc. x n y a h p o g z q w b t s f l r c v m u e k j d i

Substitution cipher  2 Una chiave per il SUBSTITUTION cipher è una delle possibili permutazioni dei 26 caratteri dell’alfabeto Il numero di tali permutazioni è 26! > 4.01026  la ricerca esaustiva nello spazio delle chiavi è computazionalmente troppo onerosa anche per un computer Tuttavia, Substitution cipher può essere facilmente crittoanalizzato utilizzando metodi diversi Nota Shift cipher è un caso speciale di Substitution cipher in cui vengono selezionate soltanto 26 delle 26! possibili permutazioni

Affine cipher  1 Per AFFINE cipher, l’insieme delle funzioni di codifica è ristretto alla classe delle trasformazioni affini (in aritmetica modulare) e(x)=ax+b (mod 26) a,b Z26 Per a=1, Affine cipher coincide con Shift cipher Per poter decifrare un testo cifrato mediante Affine cipher è necessario che la funzione e sia iniettiva, cioè che la congruenza ax+b  y (mod 26) ammetta un’unica soluzione Teorema 1 La congruenza axb (mod m ) ha un’unica soluzione in Zm, per ogni b Zm, se e solo se MCD(a,m )=1

Affine cipher  2 Infatti, in Z26… Supponiamo che MCD(a,26)=d>1, allora la congruenza ax0 (mod 26) ammette almeno due soluzioni distinte in Z26, cioè x=0 e x=26/d  la funzione di codifica e(x)=ax+b (mod 26) non è iniettiva Esempio 6: Se a=4, MCD(4,26)=2 e, per e(x)=4x+7, e(3)=19, e(16)=71=19, ovvero x, x e x+13 producono lo stesso valore per e(x) Viceversa, sia MCD(a,26)=1 e siano x1x2, tali che ax1ax2 (mod 26); allora a(x1-x2)0 (mod 26); in base alle proprietà della divisione, se il MCD(a,b )=1 e bc è divisibile per a, c è divisibile per a, cioè x1x2 modulo 26 Poiché 26=213, possibili valori per a Z26 sono 1,3,5,7, 9,11,15,17,19,21,23,25, mentre b può assumere qualsiasi valore in Z26  Affine cipher dispone di 1226=312 chiavi possibili (…è sicuramente insicuro!)

Affine cipher  3 Definizione 4 Siano a ed m interi tali che a 1 e m 2. Se MCD(a,m )=1 allora a ed m sono relativamente primi fra loro. Il numero degli interi in Zm che sono primi rispetto ad m è rappresentato dalla funzione di Eulero (m) Teorema 2 Sia m = pi con pi fattori primi distinti di m ed ei>0. Allora (m )= (pi - pi ) Il numero di chiavi per Affine cipher in Zm è m (m ) Esempio 7 Per m=60=2235, (m )=224=16 e |K |=960 n ei i=1 n ei ei-1 i=1

Affine cipher  4 Per decifrare il testo codificato tramite Affine cipher occorre risolvere la congruenza yax+b (mod 26) rispetto ad x, che ha soluzione unica quando MCD(a,26)=1 Definizione 5 Sia a Zm. L’inverso di a, a-1 Zm, è tale che aa-1 a-1a  1 a ha un inverso modulo m se e solo MCD(a,m)=1 e, se un inverso esiste, è unico Se p è un numero primo, allora ogni elemento 0 di Zp ammette un inverso. Un anello con questa proprietà è un campo Esistono algoritmi efficienti per il calcolo dell’inverso. Tuttavia, in Z26, l’inverso può essere calcolato,per tentativi Ad esempio, 7-1=15, 11-1=19, 25-1=25; infatti 715=1051 (mod 26), 1119=2091, 2525=6251

a-1(ax)a-1(y-b) (mod 26)  xa-1(y-b) (mod 26) Affine cipher  5 Sia yax+b (mod 26), da cui axy-b (mod 26). Poiché MCD(a,26)=1, a ammette un inverso modulo 26. Pertanto moltiplicando entrambi i membri della congruenza per a-1… a-1(ax)a-1(y-b) (mod 26)  xa-1(y-b) (mod 26) Siano P = C = Z26,K ={(a,b) Z26  Z26: MCD(a,26)=1} Per k=(a,b)K, siano ek(x) = ax+b (mod 26) dk(y) = a -1 (y-b) (mod 26) x,y  Z26

dk(ek(x))=dk(7x+3)=15(7x+3)-19=x+45-19=x Affine cipher  6 Esempio 8 Sia k=(7,3). Come già notato 7-1 (mod 26)=15. La funzione di codifica è ek(x)=7x+3 mentre la corrispondente funzione di decodifica risulta dk(y)=15(y-3)=15y-19 Si può verificare che dk(ek(x))=x, xZ26, infatti… dk(ek(x))=dk(7x+3)=15(7x+3)-19=x+45-19=x Esempio 9 Supponiamo di dover convertire il plaintext “hot”, che corrisponde alla sequenza di cifre 7 14 19. La funzione di codifica restituisce 77+3 (mod 26)=52 (mod 26)=0 714+3 (mod 26)=101 (mod 26)=23 719+3 (mod 26)=136 (mod 26)=6 da cui il testo cifrato “axg”

Vigenere cipher  1 Sia m un intero fissato e siano P =C =K =(Z26)m Sia Shift che Substitution cipher, una volta selezionata la chiave, mappano in modo univoco ciascuna lettera dell’alfabeto  sono crittosistemi monoalfabetici VIGENERE cipher, da Blaise de Vigenere (vissuto nel XVI sec.), è invece un crittosistema polialfabetico Sia m un intero fissato e siano P =C =K =(Z26)m Per k=(k1,k2,…,km)K, definiamo ek(x1,x2,…xm) = (x1+k1,x2+k2,…xm+km) dk(y1,y2,…,ym) = (y1-k1,y2-k2,…ym-km) dove tutte le operazioni sono eseguite modulo 26

“vpxzgiaxivwpubttmjpwizitwzt” Vigenere cipher  2 Esempio 10 Sia m=6 e sia k=CIPHER o, in maniera equivalente, k=(2,8,15,7,4,17). Supponiamo che il plaintext sia costituito dalla stringa “this cryptosystem is not secure”, corrispondente a… 19 7 8 18 2 17 24 15 19 14 18 24 18 19 4 12 8 18 13 14 19 18 4 2 20 17 4 19 7 8 18 2 17 24 15 19 14 18 24 18 19 4 12 8 18 13 14 19 18 4 2 20 17 4 + 2 8 15 7 4 17 2 8 15 7 4 17 2 8 15 7 4 17 2 8 15 7 4 17 2 8 15 = _______________________________________________________________________ 21 15 23 25 6 8 0 23 8 21 22 15 20 1 19 19 12 9 15 22 8 25 8 19 22 25 19 “vpxzgiaxivwpubttmjpwizitwzt”

Vigenere cipher  3 Il numero complessivo di chiavi di lunghezza m è 26m  anche per m piccolo la ricerca esaustiva è computazionalmente onerosa Ad esempio, per m=5, |K |>107: la ricerca a mano è preclusa, ma il computer può ragionevolmente realizzarla In Vigenere cipher, con chiave di m caratteri, ciascuna lettera dell’alfabeto può essere mappata su uno qualsiasi degli m caratteri possibili (se la chiave è costituita da tutti caratteri distinti) La crittoanalisi di sistemi polialfabetici è generalmente molto più difficile

Hill cipher  1 HILL cipher fu inventato nel 1929 da Lester S. Hill ed è un crittosistema polialfabetico Sia m un intero e siano P =C =(Z26)m. L’operazione di codifica avviene considerando m combinazioni lineari di m caratteri consecutivi nel plaintext, e producendo gli m caratteri corrispondenti del testo cifrato Esempio 11 Sia m=2. Una sezione elementare del plaintext può essere rappresentata da (x1,x2), ed il corrispondente testo cifrato da (y1,y2), dove y1=11x1+3x2 Y2=8x1+7x2 o, in notazione matriciale… (y1,y2)=(x1,x2) ( ) 11 8 3 7

Hill cipher  2 In generale, si considera una matrice K, m m, quale chiave per Hill cipher, e la funzione ek(x) viene calcolata come ek(x)= (y1,y2,…,ym)=(x1,x2,…xm) In altre parole y=xK. Il testo cifrato è ottenuto dal plaintext attraverso una trasformazione lineare Se l’inversa della matrice K esiste in Z26, per decifrare il testo cifrato e ricostruire il plaintext, si applica la trasformazione x=yK-1 Esempio 12 = ( ) k11 k12 … k1m k21 k22 … k2m … … km1 km2 … kmm ( ) ( ) -1 11 8 3 7 7 18 23 11

( ) ( ) Hill cipher  3 Esempio 13 Supponiamo di voler codificare il plaintext “july”, cui corrisponde la sequenza di numeri (9,20,11,24) (9,20) =(99+60,72+140)=(3,4) (11,24) =(121+72,88+168)=(11,22)  Il testo cifrato è “delw” ( ) 11 8 3 7 ( ) 11 8 3 7

Hill cipher  4 Una matrice reale K possiede l’inversa se e solo se det(K)0 In Z26, K ammette un’inversa sse MCD(det(K),26)=1. Infatti… Sia MCD(det(K),26)=1. Per 1  i  m, 1  j  m, sia Kij la matrice ottenuta da K eliminando la riga i-esima e la colonna j-esima. Sia K* tale K*ij=(-1)i+j det(Kji)  K* è l’aggiunta di K. Si può dimostrare che K-1=(det(K))-1 K*  K è invertibile Viceversa, se K ammette l’inversa K-1, si ha 1=det(I)=det(KK-1)=det(K) det(K-1)  det(K) è invertibile in Z26  MCD(det(K),26)=1

( ) ( ) ( ) ( ) Hill cipher  5 Esempio 14 Nel caso particolare m=2, A-1=(det(A))-1 Considerando la matrice degli esempi precedenti… det =117-83 (mod 26)=77-24 (mod 26) =53 (mod 26)=1 Inoltre 1-1 (mod 26)=1 e quindi = ( ) a22 -a12 -a21 a11 ( ) 11 8 3 7 ( ) ( ) 11 8 3 7 -1 7 18 23 11

Hill cipher  6 Sia m un intero positivo fissato Siano P = C = (Z26)m Sia K ={matrici invertibili m m in Z26} Per ogni KK eK(x) = xK dK(y) = yK-1 dove tutte le operazioni sono eseguite modulo 26

Permutation cipher  1 Tutti i crittosistemi descritti finora presuppongono la sostituzione dei caratteri del plaintext con caratteri differenti che costituiscono il testo cifrato L’idea sottesa a PERMUTATION cipher è quella di mantenere i caratteri del plaintext inalterati, cambiandoli di posizione Permutation (o Transposition) cipher è stato usato per oltre 400 anni: già nel 1536, G. Porta ne evidenziò le differenze rispetto al cifrario per sostituzione Sia m un intero positivo fissato. Siano P = C = (Z26)m K insieme delle permutazioni di {0,1,…,m }. Per ogni K e(x1,x2,…,xm) = (x(1),x(2),…x(m)) d(y1,y2,…,ym) = (y (1), y (2),… y (m)) -1 permutazione inversa di  -1 -1 -1

shesel lsseas hellsb ythese ashore eeslsh salses lshble hsyeet hraeos Permutation cipher  2 Esempio 15 Sia m=6 e sia k= la permutazione  -1: Se dunque il plaintext è rappresentato dalla stringa “she sells sea shells by the sea shore“ … shesel lsseas hellsb ythese ashore  eeslsh salses lshble hsyeet hraeos cioè “eeslshsalseslshblehsyeethraeos” Il testo cifrato può essere decifrato applicando la permutazione inversa 1 3 2 4 5 6 1 3 4 2 6 5 1 3 4 2 6 5

Permutation cipher  3 Permutation cipher è, di fatto, un caso particolare di Hill cipher. Infatti, ad ogni permutazione , può essere associata una matrice di permutazione K definita come Kij = Una matrice di permutazione è ottenuta permutando  per righe o per colonne  la matrice identità I Hill cipher realizzato attraverso una matrice di permutazione K produce esattamente Permutation cipher con permutazione . Inoltre (K )-1=K , cioè l’inversa della matrice K è la matrice di permutazione definita da -1  {  1 se i=(j) 0 altrimenti    -1 

( ) ( ) Permutation cipher  4 Esempio 16 Alla permutazione : ed alla sua inversa -1: corrispondono, rispettivamente, le matrici K = K = 1 3 2 4 5 6 1 3 4 2 6 5 ( ) ( ) 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0   -1

Stream cipher  1 Nei crittosistemi visti finora, i caratteri successivi che costituiscono il plaintext vengono codificati utilizzando la stessa chiave k, cioè il testo cifrato viene ottenuto come y=y1y2…=ek(x1)ek(x2)… Crittosistemi di questo tipo sono detti cifrari a blocchi Un approccio alternativo presuppone l’utilizzo di STREAM cipher, in cui un flusso di chiavi z=z1z2… viene progressivamente generato ed utilizzato per codificare il plaintext Fissata una chiave k K, Stream cipher genera la successione di chiavi zi=f i (k,x1,…xi-1) che vengono impiegate per ottenere il testo cifrato y=y1y2…=ez (x1)ez (x2)… 1 2

Stream cipher  2 Formalmente... Definizione 6 Un cifrario a flusso è rappresentato da una tupla (P,C,K,L,F,E,D) per cui valgono le seguenti condizioni P è un insieme finito di plaintext C è un insieme finito di testi cifrati K, lo spazio delle chiavi, è un insieme finito di possibili chiavi L è l’alfabeto finito del flusso di chiavi F=(f 1,f 2,…) è il generatore del flusso di chiavi f i: K P i-1  L Per ogni z L, esiste una regola di codifica ezE ed una corrispondente regola di decodifica dzD. Per ogni funzione ez: PC e dz: CP, dz(ez(x))=x, per ogni xP

Stream cipher  3 Un cifrario a blocchi è un caso particolare di Stream cipher in cui il flusso di chiavi è costante, zi=k, i 1 Uno Stream cipher è sincrono se il flusso di chiavi è indipendente dal plaintext, cioè la funzione f dipende solo da k; k è il “seme” che viene espanso in un flusso di chiavi Uno Stream cipher è periodico, con periodo d, se zi+d=zi, i 1 Vigenere cipher, con chiave di lunghezza m, è uno Stream cipher periodico con periodo m e con z=(z1,z2,…zm). In quest’ottica, le funzioni di codifica e di decodifica di Vigenere cipher corrispondono con quelle di Shift cipher ez(x) = x + z dz(y) = y – z

Stream cipher  4 Gli Stream cipher sono spesso descritti per mezzo dell’alfabeto binario, cioè P =C =L =Z2, con funzioni di codifica/decodifica date da ez(x) = x + z (mod 2) dz(y) = y + z (mod 2) L’addizione modulo 2 realizza l’operazione di XOR, quindi le funzioni di codifica/decodifica possono essere implementate in hardware in modo molto efficiente

Stream cipher  5 Un altro metodo per generare il flusso di chiavi consiste, a partire dal seme (k1,k2,…km), nell’utilizzare una relazione di ricorrenza lineare zi+m=  cjzi+j (mod 2) con c0,c1,…cm-1  Z2 costanti predefinite; senza perdita di generalità, c0=1 La chiave k consiste dei 2m valori (k1,k2,…,km,c0,c1,…cm-1) Se (k1,k2,…,km)=(0,0,…,0) il flusso di chiavi è completamente costituito da 0: situazione da evitare! Viceversa, mediante un’opportuna scelta delle costanti c0,c1,…cm-1, per qualsiasi altro valore del vettore di inizializzazione (k1,k2,…,km), si ottiene un flusso periodico, con periodo 2m-1  Un “seme breve” produce uno Stream cipher con periodo lungo… difficile da violare m-1 j=0

Stream cipher  6 Esempio 17 Sia m=4 e (k1,k2,k3,k4)=(1,0,0,0). Utilizzando la regola di ricorsione lineare zi+4=zi+zi+1 (mod 2) con (c0,c1,c2,c3)=(1,1,0,0), si ottiene il flusso di chiavi, di periodo 15, 1,0,0,0,1,0,0,1,1,0,1,0,1,1,1,… Qualsiasi altro vettore di inizializzazione diverso da 0,a parità di ci, i=0,…,3, produrrà una permutazione ciclica dello stesso flusso di chiavi

Stream cipher  7 La generazione del flusso di chiavi può essere realizzata in maniera efficiente, in hardware, per mezzo di un linear feedback shift register (LSFR) a m stadi; il vettore (k1,k2,…,km) viene utilizzato per inizializzare il registro In ogni istante di tempo, vengono eseguite, in concorrenza, le seguenti operazioni: k1 viene utilizzato come prossimo bit da elaborare k2,…,km vengono “shiftati” di una posizione a sinistra Il nuovo valore di km viene calcolato come  cj kj+1 m-1 j=0

Stream cipher  8 Il feedback lineare viene realizzato utilizzando quegli stadi del registro corrispondenti ai cj=1 e calcolando la somma modulo 2 (XOR) Ad esempio, per m=4 e (c0,c1,c2,c3)=(1,1,0,0), si ottiene un LFSR del tipo… che genera il flusso 1,0,0,0,1,0,0,1,1,0,1,0,1,1,1,… k4 k1 k2 k3 +

Autokey cipher  1 Siano P = C = K =L =Z26. Sia z1=k e zi=xi-1 (i 1) Un esempio di Stream cipher aciclico, noto come AUTOKEY cipher, è dovuto ancora a Blaise de Vigenere La particolare denominazione del metodo di cifratura è dovuta al fatto che il plaintext viene utilizzato come chiave (dopo la fase di inizializzazione in cui si usa la “chiave primaria” k) Siano P = C = K =L =Z26. Sia z1=k e zi=xi-1 (i 1) Per 0  z  25 ez(x) = x + z (mod 26) dz(y) = y – z (mod 26) x,y  Z26

Autokey cipher  2 Esempio 18 Sia k=8 e sia “rendezvous” il plaintext da codificare, corrispondente alla sequenza di interi 17 4 13 3 4 25 21 14 20 18  il flusso di chiavi da utilizzare per la cifratura è 8 17 4 13 3 4 25 21 14 20 che, sommato al plaintext (mod 26), fornisce la stringa 25 21 17 16 7 3 20 9 8 12 ovvero “zvrqhdujim”

Autokey cipher  3 Vediamo ora come Bob decifra il codice cifrato. Dovrà convertire la stringa alfabetica nella stringa di interi corrispondente… Esempio 19 A partire dalla stringa 25 21 17 16 7 3 20 9 8 12, x1=d8(25)=25-8 (mod 26)=17 Successivamente… x2=d17 (21)=21-17 (mod 26)=4 etc… ogni volta che Bob ottiene un carattere del plaintext, lo utilizza per decifrare il successivo Autokey cipher è non sicuro, poiché vi sono soltanto 26 possibili chiavi primarie