Crypto 1
Crypto 1
Monica Bianchini
[email protected]
Crittografia 1
La crittografia (dal greco kryptos, nascosto, e graphein,
scrivere) è la scrittura segreta, ovvero l’arte di scrivere
messaggi che possano essere letti e compresi solo dal
legittimo destinatario
Le sue origini risalgono alla più remota antichità, se già
la Bibbia parla di un codice segreto per scrivere il nome,
innominabile e sacrilego, di Babele il codice Atbash
Nel libro di Geremia, infatti, viene usato un semplicissimo
codice monoalfabetico per cifrare la parola Babele; la
prima lettera dell’alfabeto ebraico (א, Aleph) viene cifrata
con l’ultima (ת, Taw), la seconda (ב, Beth) viene cifrata
con la penultima (ש, Shin) e così via; da queste quattro
lettere è derivato il nome di Atbash (A con T, B con SH)
per questo codice
Crittografia 2
La scitala lacedemonica è un antico esempio di
un sistema per cifrare messaggi tramite
l’utilizzo di un bastone cilindrico, che opera
come un cifrario a trasposizione (secondo gli
scritti di Plutarco, in uso dai tempi di Licurgo,
IX sec a.C.)
Una sottile striscia di carta veniva avvolta su
un bastone di diametro ben definito, misura di
cui era a conoscenza anche il destinatario;
sulle spire di papiro affiancate veniva scritto il
messaggio da criptare
Terminata la scrittura, il papiro veniva svolto e inviato al
destinatario
Il destinatario poteva ricomporre il messaggio, avvolgendo la
striscia di papiro sul suo bastone di diametro identico a quello
usato per crittografare il testo
Crittografia 3
Per secoli la crittografia è stata appannaggio quasi
esclusivo dei militari e dei diplomatici, e i metodi
crittografici erano specifici per l’invio di messaggi affidati
a corrieri
Nel XX secolo però, prima l’invenzione della radio, poi
quella del computer hanno cambiato in modo radicale lo
scenario
Il periodo d’oro della crittografia coincide con la seconda
guerra mondiale, quando Alan Turing, il padre
dell’informatica teorica, insieme al gruppo di ricerca di
Bletchley Park, formalizzò la teoria necessaria per uno
studio sistematico dei cifrari
Nel 1918, infatti, Arthur Scherbius aveva inventato la
macchina Enigma, una macchina cifrante che i tedeschi
impiegarono per le loro comunicazioni segrete durante la
seconda guerra mondiale
Crittografia 4
La macchina Enigma consentiva di cifrare un testo
scegliendo tra 1757661003917915001016, 10 milioni
di miliardi, di combinazioni distinte
Crittografia 5
Dal gruppo di Bletchley Park,
nel 1943, nasce il primo
calcolatore elettronico, il
computer Colossus, utilizzato
per decifrare le comunicazioni
“segrete” dei tedeschi, e che
permise la violazione del codice
Enigma e la vittoria anglo
americana sull’Atlantico
Nel 1949, Claude Shannon, l’ideatore della moderna
teoria dell’informazione, pubblicò un articolo rimasto
nella storia della crittografia “Communication theory of
secrecy systems”
Crittografia 6
Con l’avvento del computer, che ha di colpo resi
inaffidabili e superati quasi tutti i metodi classici,
nascono i metodi specifici per l’uso informatico come il
DES (Data Encryption Standard, 1975) della IBM, e il
rivoluzionario RSA (Rivest, Shamir, Adelman, 1977),
capostipite dei cifrari a chiave pubblica
I cifrari a chiave pubblica sono intrinsecamente sicuri
poiché si basano sulla soluzione di problemi matematici
“difficili”, derivati dalla teoria dei numeri, dalla teoria
delle curve ellittiche, etc.
Crittografia 7
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 decriptarlo
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
Terminologia 2
Il modello delineato è schematizzato in figura:
x y x
Alice Codifica Decodifica Bob
k Canale sicuro
Chiave
Note
1. Le funzioni di codifica sono iniettive: se esistessero x1x2
tali che y=ek(x1)=ek(x2), Bob non potrebbe decodificare
univocamente il messaggio
2. Se P=C, il testo cifrato viene composto utilizzando
caratteri tratti dallo stesso alfabeto del plaintext x,
organizzati diversamente a formare la stringa y
I gruppi 1
Un gruppo è un insieme G munito di un’operazione
binaria che ad ogni coppia di elementi a,b di G associa
un elemento ab, e che gode delle seguenti proprietà:
• proprietà associativa: dati a,b,cG, vale
(ab)c = a(bc)
• esistenza dell’elemento neutro: esiste in G un (unico)
elemento neutro rispetto a , cioè tale che
ae = ea = a
per ogni a G
• esistenza dell’inverso: ad ogni elemento a di G è associato
un elemento b, detto inverso di a, tale che
ab = ba = e
I gruppi 2
Esempi:
• I numeri interi sono un gruppo rispetto all’addizione
• Le potenze di un qualsiasi numero costituiscono un gruppo
rispetto alla moltiplicazione (l’elemento neutro è 1)
o 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
Shift cipher 3
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
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 di risalire alla
chiave k né al plaintext x dall’osservazione del testo cifrato y
La seconda proprietà esprime l’idea di “sicurezza”
Shift cipher 4
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
o Esempio 5
abcdefghijklmnopqrstuvwxyz
xnyahpogzqwbtsflrcvmuekjdi
Substitution cipher 2
Una chiave per SUBSTITUTION cipher è una delle
possibili permutazioni dei 26 caratteri dell’alfabeto
Il numero di tali permutazioni è 26! > 4.01026
la ricerca esaustiva nello spazio delle chiavi è
computazionalmente troppo onerosa anche per un
computer
Tuttavia, Substitution cipher può essere facilmente
crittoanalizzato utilizzando metodi statistici (basati sulla
frequenza delle lettere, dei digrammi, etc.)
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)=axb (mod 26)
a,bZ26
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
axb y (mod 26)
ammetta un’unica soluzione
o Teorema 2
La congruenza axb (mod m) ha un’unica soluzione in
Zm, per ogni bZm, se e solo se MCD(a,m)=1
Affine cipher 2
Infatti, in Z26…
1. Supponiamo che MCD(a,26)=d>1, allora la congruenza
ax0 (mod 26) ammette almeno due soluzioni distinte in
Z26, cioè x=0 e x=26/d la funzione di codifica
e(x)=axb (mod 26) non è iniettiva
Esempio 6: Se a=4, MCD(4,26)=2 e, per e(x)=4x7,
e(3)=19, e(16)=71=19, ovvero x, x e x13 producono
lo stesso valore per e(x)
2. Viceversa, sia MCD(a,26)=1 e siano x1x2, tali che
ax1ax2 (mod 26); allora a(x1x2)0 (mod 26); in base alle
proprietà della divisione, se il MCD(a,26)=1 e a(x1x2) è
divisibile per 26, (x1x2) è divisibile per 26, cioè x1x2
(mod 26)
Poiché 26=213, possibili valori per aZ26 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
Affine cipher 3
o Definizione 4
Siano a ed m interi tali che a1 e m2; 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)
o Teorema 3
n
e
Sia m = pi con pi fattori primi distinti di m ed ei>0.
i
i=1
Allora n
e e 1
(m)= i=1 (pi pi )
i i
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 in base ad 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
o 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=11x13x2
y2= 8x17x2
o, in notazione matriciale…
(y1,y2)T=(x1,x2) ( )
11 8
3 7
Hill cipher 2
In generale, si considera una matrice K, mm, quale
chiave per Hill cipher, e la funzione ek(x) viene calcolata
come
( ) ( )
1
11 8 7 18
=
3 7 23 11
Hill cipher 3
o Esempio 13
Supponiamo di voler codificare il plaintext july, cui
corrisponde la sequenza di numeri (9,20,11,24)
(9,20)
( )11 8
3 7
=(9960,72140)=(3,4)
(11,24)
( )11 8
3 7
=(12172,88168)=(11,22)
det ( )
11 8
3 7
=11783 (mod 26)=7724 (mod 26)
=53 (mod 26)=1
Inoltre 11 (mod 26)=1 e quindi
( ) ( )
1
11 8 7 18
=
3 7 23 11
Hill cipher 6
Sia m un intero positivo fissato
Siano P=C=(Z26)m
Sia K={matrici invertibili mm in Z26}
Per ogni AK
eK(x) = xTA
dK(y) = yA1
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. B. Porta ne evidenziò le differenze
rispetto ai cifrari per sostituzione
( ) ( )
001000 001000
000001 000010
100000 -1 100000
K = 000010 K = 000001
010000 000100
000100 010000
Stream cipher 1
Nei crittosistemi visti finora, i caratteri (o le stringhe)
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=z1,z2… viene
progressivamente generato ed utilizzato per codificare il
plaintext
Fissata una chiave kK, Stream cipher genera la
successione di chiavi
zi=fi (k,x1,…,xi1)
che vengono impiegate per ottenere il testo cifrato
y=y1y2…=ez1 (x1)ez 2(x2)…
Stream cipher 2
Formalmente...
o Definizione 6
Un cifrario di flusso è rappresentato da una
tupla (P,C,K,L,F,E,D) per cui valgono le seguenti
condizioni
1. P è un insieme finito di plaintext
2. C è un insieme finito di testi cifrati
3. K, lo spazio delle chiavi, è un insieme finito di
possibili chiavi
4. L è l’alfabeto finito del flusso di chiavi
5. F=(f1, f2,…) è il generatore del flusso di chiavi
fi: KPi1 L
6. Per ogni zL, esiste una regola di codifica ezE ed
una corrispondente regola di decodifica dzD; per
ogni funzione ez: PC e dz: CP, dz(ez(x))=x, per
Stream cipher 3
Un cifrario a blocchi è un caso particolare di Stream
cipher in cui il flusso di chiavi è costante, zi=k, i1
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
Stream cipher è periodico, con periodo d, se zid=zi, i1
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)