Sei sulla pagina 1di 106

Introduzione alla Crittografia

Luca Grilli

Introduzione alla Crittografia

CHE COS LA CRITTOGRAFIA

Che cos la crittografia?


La parola crittografia deriva dalle parole greche
(kripts): nascosto o segreto, e (grapha): scrivere

Quindi, la crittografia larte e la scienza dello scrivere in modo segreto


larte di offuscare delle informazioni in modo apparentemente del tutto incomprensibile, prevedendo una tecnica segreta per ricostruirle in modo esatto

Applicazioni della crittografia


Unapplicazione immediata (servizio base) la
trasmissione di messaggi tra soggetti che desiderano comunicare, rendendo il contenuto incomprensibile ad un ascoltatore non autorizzato

Le moderne tecniche crittografiche


nella quali linformazione viene rappresentata in forma binaria (o numerica)

forniscono ulteriori servizi


Controllo di Integrit Autenticazione

Applicazioni della crittografia


Controllo di Integrit (Integrity Checking)
assicura il destinatario (recipient) di un messaggio che il messaggio non stato alterato dal momento in cui stato generato da una fonte attendibile

Autenticazione (Authentication)
verifica dellidentit di qualcuno (o qualcosa)

Terminologia e definizioni preliminari


Testo in chiaro (plaintext o cleartext): messaggio nella sua forma originale Testo cifrato (ciphertext): messaggio cifrato Cifratura o crittazione o criptazione (encryption): processo che produce il testo cifrato a partire dal testo in chiaro Decifratura o decrittazione o decriptazione (decryption): processo inverso della cifratura
ENCRYPTION PLAINTEXT CIPHERTEXT DECRYPTION PLAINTEXT

Terminologia e definizioni preliminari


Crittografo (cryptographer): esperto di crittografia Crittoanalisi o crittanalisi (cryptanalysis): larte o la scienza di violare testi cifrati
ricostruire il testo in chiaro senza conoscere linformazione segreta utilizzata in fase di decifratura

Crittoanalista o crittanalista (cryptanalyst): esperto di crittoanalisi

Terminologia e definizioni preliminari


[Wiki-it] Crittologia (cryptology): larte o la scienza delle scritture nascoste, nel suo duplice significato:
da un lato comprende l'ideazione di metodi sempre pi sicuri per occultare il reale significato di determinati segni (crittografia), dall'altro riguarda la decifrazione di testi occultati senza conoscerne a priori il metodo usato (crittanalisi).

Crittografi vs Crittoanalisti
Crittografi e crittoanalisti sono in continua sfida
i primi sviluppano codici segreti sempre pi raffinati i secondi tentano costantemente di migliorare le tecniche di crittoanalisi

Il vantaggio/successo dei crittografi si fonda sul seguente principio


Principio fondamentale della crittografia: If lots of smart people have failed to solve a problem, then it probably won't be solved (soon)

Sistemi crittografici
I sistemi crittografici generalmente prevedono lutilizzo combinato di
un algoritmo, e un valore segreto detto chiave

La chiave segreta stata introdotta essenzialmente perch


difficile concepire ogni volta nuovi algoritmi di cifratura, difficile spiegare rapidamente il funzionamento di un nuovo algoritmo ad un soggetto con il quale si desidera comunicare in modo sicuro

Complessit computazionale
Uno schema di crittografia
non impossibile da violare se non si conosce la chiave
un avversario pu seguire un approccio esaustivo (brute force) che esamina tutte le possibili chiavi finch non trova quella corretta

tanto pi sicuro quanto maggiore il costo computazionale necessario a violarlo deve permettere di cifrare e decifrare messaggi in modo efficiente quando si conosce la chiave
le fasi di cifratura e decifratura devono richiedere un tempo ragionevolmente ridotto quando si conosce la chiave

Lunghezza della chiave


Alcuni schemi di crittografia prevedono una chiave avente lunghezza variabile
aumentando la lunghezza della chiave si aumenta il livello di sicurezza, ma diminuisce lefficienza: aumenta il tempo di cifratura/decifratura del messaggio (per chi conosce la chiave)

Altri schemi non consentono la modifica della lunghezza della chiave


in tal caso necessario sviluppare algoritmi simili che utilizzano chiavi di lunghezza diversa

Algoritmo pubblico o segreto?


Qualcuno sostiene che mantenere segreto un algoritmo di crittografia aumenti la sua sicurezza
un crittoanalista deve prima individuare lalgoritmo e poi tentare di forzarlo

Altri sostengono invece che pubblicando lalgoritmo, rendendolo noto a tutti, la sicurezza aumenti
scoprire un algoritmo segreto potrebbe non essere cos difficile, e se lalgoritmo segreto ha delle debolezze queste potrebbero essere individuate da un crittoanalista

Algoritmo pubblico o segreto?


se lalgoritmo invece pubblico eventuali debolezze possono essere segnalate dalla comunit scientifica se molti esperti confermano la bont dellalgoritmo molto probabile che sia realmente sicuro

difficile mantenere segreto un algoritmo molto diffuso


tecniche di reverse engineering possono permettere di risalire al codice, essendo molto diffuso pu venirne in possesso un crittoanalista abile

Algoritmo pubblico o segreto?


In passato, la segretezza era richiesta perch gli algoritmi sicuri erano estremamente costosi
gli algoritmi a basso costo erano insicuri! gli attuali algoritmi non richiedo questa extra protezione essendo di per se molto sicuri

La tendenza attuale che


gli algoritmi commerciali/civili sono pubblici, mentre gli algoritmi militari sono tenuti segreti

Algoritmo pubblico o segreto?


Lesigenza della segretezza pu dipendere da altre cause (e non dallaumento di sicurezza)
lautore dellalgoritmo potrebbe tenerlo segreto per ragioni commerciali (segreto industriale) nel caso militare, possibile che si ricorra alla segretezza per evitare che il nemico usi uno schema di crittografia ritenuto sicuro
costringendolo ad utilizzare tecniche note o a svilupparne di proprie

Codici segreti (cifrari)


Con il termine codice segreto o cifrario si intende un qualunque metodo di cifratura
il pi antico cifrario attribuito a Giulio Cesare
consiste nella sostituzione di ogni lettera di un messaggio con la lettera che la segue di 3 posizioni nellalfabeto si considera lordinamento circolare dellalfabeto (la A segue la Z) ad esempio: INFORMATICA diventa LQIRUPDWLFD

unovvia variante del cifrario di Cesare consiste nel considerare un numero segreto n compreso tra 1 e 25, invece di usare sempre il 3

Codici segreti (cifrari)


Ovviamente, decifrare dei messaggi risulta molto semplice
se si certi che usato questo cifrario, e se si in grado di riconoscere il testo decifrato

basta fare pochi tentativi (al pi 25) per individuare il numero segreto n ed ottenere il messaggio originale successivamente fu introdotto il cifrario monoalfabetico che consiste nellapplicare un mapping arbitrario di una lettera in unaltra
si basa sulla scelta di una biiezione segreta sullinsieme delle lettere alfabetiche

Codici segreti (cifrari)


Teoricamente, per decifrare un messaggio sono necessari, nel caso peggiore, 26! 4 1026 tentativi
Assumendo 1 S per tentativo sono necessari 10 trilioni di anni (1013 anni)

Tuttavia, applicando tecniche statistiche di analisi dei linguaggi (alcune lettere e combinazioni di lettere sono pi probabili di altre) risulta abbastanza facile decifrare i messaggi cifrati

Codici segreti (cifrari)


Con lavvento dei computer, lintroduzione di schemi di cifratura pi sofisticati
da un lato stata resa necessaria
un computer permette di automatizzare gli approcci brute force dei crittoanalisti

dallaltro stata resa possibile


un computer pu eseguire un algoritmo di cifratura complesso in tempi veloci e senza errori

Introduzione alla Crittografia

VIOLARE UNO SCHEMA DI CRITTOGRAFIA

Tipologie di attacchi
Si possono distinguere tre tipi di attacchi base per violare uno schema di crittografia
solo testo cifrato (ciphertext only) testo in chiaro conosciuto (known plaintext) testo in chiaro selezionato (chosen plaintext)

Altri due tipi di attacco meno frequenti sono


testo cifrato selezionato (chosen ciphertext) testo selezionato (chosen text)

Solo testo cifrato (ciphertext only)


Scenario
Fred, il cattivo ragazzo, ha ottenuto il testo cifrato di un messaggio che Alice ha inviato a Bob nellambito di una comunicazione cifrata con una chiave segreta
Fred pu analizzare con comodo il testo cifrato

in genere, non difficile ottenere il testo cifrato


se fosse impossibile non si avrebbe la necessit di cifrare i messaggi!

Domanda
come pu Fred risalire al testo in chiaro se dispone soltanto del testo cifrato?

Solo testo cifrato (ciphertext only)


Risposta 1
Fred pu seguire un approccio di tipo brute force:
considera tutte le chiavi, per ogni chiave decripta il testo cifrato, e verifica se il testo decifrato un messaggio verosimile

tale approccio pu funzionare solo se Fred in grado di riconoscere il testo in chiaro originale,
cio una volta decriptato il testo cifrato deve poter dire, con elevata probabilit, se quanto ottenuto il messaggio di Alice tale attacco anche noto come testo in chiaro riconoscibile (recognizable plaintext)

Solo testo cifrato (ciphertext only)


Riguardo la riconoscibilit del testo in chiaro valgono le seguenti osservazioni
molto improbabile che una chiave di decifratura errata permetta di ottenere un messaggio verosimile essenziale avere abbastanza testo cifrato
si consideri ad esempio il cifrario monoalfabetico, se lunico testo cifrato di cui si dispone XYZ non c abbastanza informazione, il testo in chiaro corrispondente potrebbe essere THE, CAT, HAT, etc.

Solo testo cifrato (ciphertext only)


Risposta 2
in alcuni casi, si potrebbe tentare un approccio a forza bruta computazionalmente meno costoso
se la chiave viene generata con tecniche note a partire da un input segreto, conviene applicare un approccio esaustivo su tale input non di rado la chiave di cifratura viene generata a partire dalla password dutente applicando un algoritmo noto; cos avviene nello schema di autenticazione Kerberos che usa una cifratura DES

Solo testo cifrato (ciphertext only)


se la password viene scelta in modo avventato (una parola del dizionario) anzich scandire uno spazio di 256 chiavi sufficiente scandire uno spazio di circa 10000 parole

Un algoritmo di crittografia deve SEMPRE essere sicuro contro attacchi di tipo ciphertext only
il testo cifrato sempre facilmente intercettabile e ottenibile
in molti casi i crittoanalisti possono disporre di informazioni aggiuntive e sferrare degli attacchi pi forti, come illustrato nelle prossime slide

Testo in chiaro conosciuto (known plaintext)


Scenario
Fred ha in qualche modo ottenuto alcune coppie plaintext, ciphertext relative ad una o pi comunicazioni cifrata tra Alice e Bob (con stesso schema e chiave)
dati segreti non rimangono segreti in eterno (se un messaggio conteneva la prossima citt da attaccare una volta avvenuto lattacco )

nel caso di cifrario monoalfabetico, una piccola quantit di testo in chiaro conosciuto vale una fortuna
si dedurrebbe in modo immediato il mapping segreto di tutte le lettere del testo in chiaro

Testo in chiaro conosciuto (known plaintext)


Alcuni schemi di crittografia potrebbero essere
molto resistenti ad attacchi di tipo ciphertext only, ma rivelarsi vulnerabili ad attacchi di tipo known plaintext
un sistema che impiega un algoritmo di crittografia vulnerabile ad attacchi di tipo known plaintext, deve essere progettato in modo tale da prevenire il pi possibile lottenimento di coppie plaintext, ciphertext

Testo in chiaro selezionato (chosen plaintext)


Scenario
Fred pu scegliere a piacimento il testo in chiaro ed ottenere il corrispondente testo cifrato
con lo stesso schema e chiave usati nella comunicazione cifrata tra Alice e Bob

Come possibile ottenere coppie plaintext, ciphertext con testo in chiaro scelto dal crittoanalista?
un servizio di comunicazione potrebbe sbadatamente usare la stessa chiave per ogni messaggio inviato (per ogni coppia mittente destinatario)

Testo in chiaro selezionato (chosen plaintext)


se Alice usa tale servizio, pure Fred potrebbe usarlo decidendo di inviare un messaggio (cifrato) a se stesso se il servizio usa un cifrario monoalfabetico, Fred potrebbe inviarsi il seguente messaggio: The quick brown fox jumps over the lazy dog ottenendo la biiezione segreta in modo immediato se il servizio di comunicazione usa uno schema di crittografia pi evoluto, potrebbe essere ancora vulnerabile se Fred ha unelevata conoscenza a priori del contenuto del messaggio di Alice, ad esempio Fred potrebbe aspettarsi o il messaggio Surrender o il messaggio Fight on, pu quindi inviarsi entrambi i messaggi e confrontare le loro versioni cifrate con quelle del messaggio cifrato di Alice

Testo in chiaro selezionato (chosen plaintext)


possibile che un sistema crittografico sia sicuro contro attacchi di tipo ciphertext only e known plaintext, ma sia vulnerabile ad attacchi di tipo chosen plaintext un sistema crittografico dovrebbe resistere a tutti e tre i tipi di attacco
in questo caso si avrebbe la massima protezione, non sempre cos, solitamente un algoritmo di cifratura progettato per resistere ad attacchi di tipo ciphertext only

Tipologie di attacchi (tabella riassuntiva)


Tipologia di attacco Solo testo cifrato Informazioni in possesso del crittoanalista Algoritmo di cifratura Testo cifrato da decifrare Algoritmo di cifratura Testo cifrato da decifrare Uno o pi testi in chiaro e corrispondenti testi cifrati Algoritmo di cifratura Testo cifrato da decifrare Testo in chiaro scelto dal crittoanalista e corrispondente testo cifrato Algoritmo di cifratura Testo cifrato da decifrare Testo cifrato, con significato, scelto dal crittoanalista e corrispondente testo in chiaro Algoritmo di cifratura Testo cifrato da decifrare Testo in chiaro scelto dal crittoanalista e corrispondente testo cifrato Testo cifrato, con significato, scelto dal crittoanalista e corrispondente testo in chiaro

Testo in chiaro conosciuto

Testo in chiaro selezionato

Testo cifrato selezionato

Testo selezionato

Sistema computazionalmente sicuro


Un sistema di cifratura computazionalmente sicuro se il testo cifrato generato soddisfa uno dei seguenti requisiti:
il costo per rendere inefficace il cifrario supera il valore dellinformazione cifrata; il tempo richiesto per rendere inefficace il cifrario supera larco temporale in cui linformazione ha una qualche utilit

Si noti che
stimare lo sforzo computazionale richiesto per effettuare con successo la crittoanalisi del testo cifrato molto difficile

Sistema computazionalmente sicuro


il tempo richiesto per un approccio a forza bruta
fornisce soltanto un limite superiore, ed realistico solo se lalgoritmo non presenta delle debolezze intrinseche di tipo matematico; in questo caso si possono effettuare stime ragionevoli su tempi e costi

in un approccio a forza bruta mediamente si devono provare met di tutte le possibili chiavi
si consulti la tabella della slide successiva

Tempo medio per una ricerca esaustiva


Key Size (bits) 32 56 128 Number of Alternative Keys 232 = 4.3 109 256 = 7.2 1016 2128 = 3.4 1038 Time required at 1 decryption/s 231 s = 35.8 minutes 255 s = 1142 years 2127 s = 5.4 1024 years Time required at 106 decryptions/s 2.15 milliseconds 10.01 hours 5.4 1018 years

168
26 characters (permutation)

2168 = 3.7 1050


26! = 4 1026

2167 s = 5.9 1036 years


2 1026 s = 6.4 1012 years

5.9 1030 years


6.4 106 years

Introduzione alla Crittografia

TIPI DI FUNZIONI CRITTOGRAFICHE

Tipi di funzioni crittografiche


Ci sono tre tipi di funzioni crittografiche
funzioni a chiave pubblica (public key functions)
richiedono luso di due chiavi

funzioni a chiave segreta (secret key functions)


richiedono luso di una sola chiave

funzioni hash (hash functions)


non usano alcuna chiave a cosa pu servire un algoritmo di cifratura noto a tutti e che non usa chiavi?

Introduzione alla Crittografia

CRITTOGRAFIA A CHIAVE SEGRETA (SECRET KEY CRYPTOGARPHY)

Crittografia a chiave segreta


La crittografia a chiave segreta richiede luso di una sola chiave
dato un messaggio (il testo in chiaro) e la chiave, la cifratura produce dati non intellegibili (il testo cifrato) il testo cifrato ha circa la stessa lunghezza di quello in chiaro la decifratura linverso della cifratura, ed usa la stessa chiave

Crittografia a chiave segreta


La crittografia a chiave segreta talvolta chiamata crittografia convenzionale o crittografia simmetrica
il cifrario monoalfabetico un esempio di algoritmo a chiave simmetrica, sebbene sia facile da violare
KEY

ENCRYPTION PLAINTEXT CIPHERTEXT

DECRYPTION PLAINTEXT

Crittografia a chiave segreta Impieghi


Gli impieghi della crittografia a chiave segreta sono
comunicazioni su un canale insicuro (uso classico) memorizzazione sicura su un supporto insicuro autenticazione controllo di integrit

Comunicazioni su un canale insicuro


Spesso impossibile evitare che due entit comunicanti possano essere ascoltate da una terza parte,
la crittografia a chiave segreta permette a due entit che condividono un segreto (la chiave), di comunicare su un mezzo insicuro
non garantita lassenza di intercettazioni/ascoltatori

senza preoccuparsi di eventuali ascoltatori

Memorizzazione sicura
Si supponga di disporre di un supporto di memorizzazione non protetto
se si desidera salvare dei dati in forma sicura
che non consente ad una terza parte di ottenerli

si pu inventare una chiave segreta e salvare i dati in forma crittata


chiaramente, se si dimentica la chiave i dati sono irrevocabilmente persi

Autenticazione
Nei film di spionaggio, quando due agenti che non si conoscono devono incontrarsi, usano una parola o frase segreta per riconoscersi
ci ha il seguente svantaggio: se qualcuno ascolta la loro conversazione o tenta di iniziarne una falsa, pu ottenere informazioni utili per impersonare successivamente uno degli agenti

Autenticazione forte
Il termine autenticazione forte (strong authentication) significa che si in grado di provare la conoscenza di un segreto senza rivelarlo
lautenticazione forte possibile con la crittografia particolarmente utile quando due computer devono comunicare su una rete insicura

Si supponga che Alice e Bob condividano una chiave segreta KAB e che vogliano autenticarsi
cio ciascuno vuole accertarsi dellidentit dellaltro

Autenticazione
Bob e Alice scelgono ciascuno un numero random, noto come sfida (challenge),
Alice sceglie il numero random rA Bob sceglie il numero random rB

il valore x cifrato con la chiave KAB noto come la risposta alla sfida x; cio E(KAB, x) la risposta ad x la slide seguente mostra come Alice e Bob usano sfide e risposte per autenticarsi

Possibile schema di autenticazione


Alice Bob

rA E(KAB, rA)

rB E(KAB, rB)

Possibile schema di autenticazione


Assunzione
Alice e Bob sono le uniche persone (o macchine) che condividono la chiave segreta KAB

Procedura di autenticazione
Alice genera un numero random rA (la sfida) e la invia al presunto Bob il presunto Bob critta la sfida con la sua chiave segreta K? e restituisce ad Alice la risposta E(K?, rA) Alice riceve la risposta del presunto Bob e la decritta con la chiave KAB cio calcola D(KAB, E(K?, rA))
se ottiene rA, cio se D(KAB, E(K?, rA)) = rA, allora il presunto Bob realmente Bob poich K? = KAB altrimenti il presunto Bob un impostore

Possibile schema di autenticazione


In modo analogo Bob verifica lidentit di Alice
Bob genera un numero random rB (la sfida) e lo invia alla presunta Alice la presunta Alice critta la sfida con la sua chiave segreta K? e restituisce a Bob la risposta E(K?, rB) Bob riceve la risposta della presunta Alice e la decritta con la chiave KAB cio calcola D(KAB, E(K?, rB))
se ottiene rB, cio se D(KAB, E(K?, rB)) = rB, allora la presunta Alice realmente Alice poich K? = KAB altrimenti la presunta Alice un impostore

Test di sicurezza
Proviamo a testare la sicurezza dello schema di autenticazione appena proposto
In particolare, un impostore, diciamo Fred, potrebbe seguire una strategia a due fasi:
1. impersonando Alice potrebbe ottenere alcune informazioni nellautenticarsi con Bob 2. impersonando Bob e utilizzando le informazioni di cui sopra, potrebbe riuscire ad autenticarsi con Alice

Test di sicurezza
Pi precisamente, se Fred stesse impersonando Alice, potrebbe ottenere dal presunto Bob la risposta E(K?, rA*) ad una sua sfida rA*,
Fred non pu essere certo che il presunto Bob sia realmente Bob, se cos fosse allora K? = KAB

ma conoscere E(K?, rA*) non aiuterebbe Fred ad impersonare Bob nellautenticazione con Alice reale
anche se fosse K? = KAB, la conoscenza di E(KAB, rA*) non sufficiente; la sfida rA che genera Alice con elevata probabilit diversa da rA*

Osservazioni
Possiamo concludere che
se Alice e Bob completano con successo lo scambio di informazioni, ciascuno ha provato allaltro la conoscenza della chiave segreta KAB
senza rivelarla ad un impostore e/o ascoltatore

Osservazioni
Tuttavia, risulta anche che
possibile per Fred ottenere delle coppie chosen plaintext, ciphertext
Fred pu affermare di essere Bob (Alice) e chiedere ad Alice (Bob) di cifrare una sfida

quindi essenziale che le sfide siano scelte da uno spazio sufficientemente grande, ad esempio 264 valori
in questo modo risulta estremamente improbabile che venga generata la stessa sfida

Domanda
Il precedente test di sicurezza completo?
esiste un metodo computazionalmente semplice per violare lo schema di autenticazione?

Controllo di integrit
La crittografia a chiave segreta pu servire a generare codici (somme) di controllo cifrati a lunghezza fissa
fixed-length cryptographic checksum
uso poco intuitivo della tecnologia a chiave segreta!

Un checksum ordinario (non cifrato) serve a proteggere i messaggi da eventuali corruzioni; cio a verificarne lintegrit
la parola checksum deriva dal procedimento seguito per ottenere il codice di controllo
1. 2. scomposizione di un messaggio in blocchi di lunghezza fissa (ad esempio parole da 32 bit) somma bit a bit dei blocchi (OR oppure XOR )

Confronto di checksum
La sorgente del messaggio ms rende pubblico/invia il corrispondente checksum c(ms)
Chi riceve il messaggio mr calcola il checksum e confronta se vale luguaglianza c(ms) = c(mr)
se c(ms) = c(mr) conclude che ms = mr
anche se potrebbero esserci degli errori che si compensano, cio potrebbe darsi che ms mr e che risulti comunque c(ms) = c(mr)

Checksum non segreti


I codici di controllo servono per proteggere lhardware da difetti e da inevitabili errori/guasti
esistono dei codici di controllo molto pi sofisticati (codici CRC Controllo a Ridondanza Ciclica) tali che
se ms mr allora quasi certo che c(ms) c(mr), cio estremamente improbabile che sia c(ms) = c(mr)

ma non sono utilizzabili per la protezione contro attacchi intelligenti


essendo pubblici un avversario che vuole cambiare un messaggio potrebbe modificare anche il codice di controllo

Checksum segreto
Per la protezione contro modifiche maliziose ad un messaggio, richiesto un codice di controllo (checksum) segreto
se lalgoritmo non noto nessuno pu calcolare il checksum corretto per il messaggio modificato chiaramente, come nel caso degli algoritmi di cifratura, anzich un algoritmo segreto conviene avere
un algoritmo per il calcolo del checksum noto a tutti, che sfrutta una chiave segreta per calcolare il checksum di un messaggio

in ci consiste appunto un checksum cifrato

MIC Message Integrity Code


Data una chiave K e un messaggio m,
lalgoritmo produce un codice di autenticazione di lunghezza fissa c(K, m)
fixed-length MAC Message Authentication Code, o fixed-length MIC Message Integrity Code

il codice MIC c(K, m) viene trasmesso insieme al messaggio m stesso

MIC Message Integrity Code


Se un avversario volesse modificare il messaggio m in m
dovrebbe anche calcolare il codice MIC c(K, m)
generalmente un codice MIC ha una lunghezza di almeno 48 bit la possibilit di ottenere il MIC corretto una su 280 trilioni (1 trilione = 1012)

Introduzione alla Crittografia

CRITTOGRAFIA A CHIAVE PUBBLICA (PUBLIC KEY CRYPTOGARPHY)

Crittografia a chiave pubblica


La crittografia a chiave pubblica (public key cryptogarphy); talvolta detta anche crittografia asimmetrica (asymmetric cryptography)
fu pubblicamente introdotta nel 1975
alcune voci sostengono che lNSA gi la utilizzasse

diversamente dalla crittografia a chiave segreta NON PREVEDE la condivisione delle chiavi, ma ogni individuo ha due chiavi
una chiave privata da NON RIVELARE a nessuno una chiave pubblica da rivelare preferibilmente a tutto il mondo

Terminologia e notazione
Per convenzione non si user il termine chiave segreta in luogo di chiave privata
in base allaggettivo della chiave sar immediato risalire allo schema di crittografia usato
chiave segreta denota linformazione segreta condivisa in uno schema di crittografia a chiave segreta chiave privata denota la chiave che non deve essere resa pubblica in uno schema di crittografia a chiave pubblica chiave pubblica denota la chiave da divulgare in uno schema di crittografia a chiave pubblica

Terminologia e notazione
Si user la seguente notazione
PU rappresenta la chiave PUbblica
ad esempio PUB indica la chiave pubblica di Bob

PR rappresenta la chiave PRivata


ad esempio PRB indica la chiave privata di Bob
PU PUBLIC KEY PR PRIVATE KEY

ENCRYPTION
PLAINTEXT CIPHERTEXT

DECRYPTION
PLAINTEXT

Schema di cifratura a chiave pubblica


La figura sotto mostra uno schema di cifratura a chiave pubblica
cifratura e decifratura sono due funzioni matematiche che sono luna linverso dellaltra m = D(PR, E(PU, m))
PU PUBLIC KEY PR PRIVATE KEY

m
ENCRYPTION
PLAINTEXT

E(PU, m)

D(PR, E(PU, m))


DECRYPTION

CIPHERTEXT

PLAINTEXT

Firma digitale (a chiave pubblica)


La tecnologia a chiave pubblica consente anche di generare una firma digitale su un messaggio
basta invertire il ruolo delle chiavi m = D(PU, E(PR, m))
PR PRIVATE KEY PU PUBLIC KEY

m
ENCRYPTION
PLAINTEXT SIGNING

S(PR, m) E(PR, m)

V(PU, E(PR, m)) D(PU, E(PR, m))

DECRYPTION
SIGNED MESSAGE VERIFICATION PLAINTEXT

Firma digitale (a chiave pubblica)


Una firma digitale (digital signature) un numero associato ad un messaggio
una sorta di checksum o MAC, ma diversamente da un checksum, che pu essere generato da tutti, una firma digitale pu essere generata soltanto da chi conosce la chiave privata PR una firma a chiave pubblica differisce da un MAC a chiave segreta
la verifica di un MAC richiede la conoscenza dello stesso segreto (chiave segreta) usato per crearlo quindi chi pu verificare un MAC pu anche generarlo e sostituirsi alla sorgente iniziale

Firma digitale (a chiave pubblica)


invece, nel caso della firma a chiave pubblica, la verifica della firma richiede soltanto la conoscenza della chiave pubblica PU
Alice pu firmare un messaggio generando una firma che solo lei pu generare, in quanto usa la sua chiave privata PRA chiunque altro pu verificare se quella generata realmente la firma di Alice (basta usare la chiave pubblica di Alice PUA), ma non pu falsificarla

si parla di firma digitale perch condivide con la tradizionale firma manuale la propriet di poter essere riconosciuta autentica senza poter essere falsificata

Uso della crittografia a chiave pubblica


La crittografia a chiave pubblica
pu fare tutto ci che la crittografia a chiave segreta pu fare
comunicazioni su un canale insicuro (uso classico) memorizzazione sicura su un supporto insicuro autenticazione controllo di integrit

ma gli attuali algoritmi crittografici a chiave pubblica sono di alcuni ordini di grandezza pi lenti dei migliori algoritmi a chiave segreta, viene pertanto utilizzata in congiunzione alla crittografia a chiave privata

Uso della crittografia a chiave pubblica


agevola la configurazione/gestione della sicurezza di una rete
potrebbe usarsi allinizio di una comunicazione in fase di autenticazione, e per stabilire una chiave segreta temporanea, che a sua volta (per motivi di efficienza) pu essere usata per cifrare il resto della comunicazione ad esempio, si supponga che Alice voglia parlare con Bob, Alice pu usare la chiave pubblica di Bob PUB per cifrare una chiave segreta (che genera) KAB poi pu usare la chiave segreta KAB per cifrare qualunque messaggio voglia inviare a lui

Uso della crittografia a chiave pubblica


dato che la chiave segreta KAB molto pi corta di un generico messaggio, la sua cifratura a chiave pubblica non impatta sulle prestazioni la chiave KAB generata da Alice pu essere decifrata soltanto da Bob, che pu continuare la comunicazione utilizzando questultima (in uno schema di cifratura a chiave segreta) con chiunque abbia inviato il messaggio si osservi che usando questo protocollo Bob non pu essere certo che sia stata Alice ad inviare il messaggio una soluzione potrebbe essere che Alice invia la chiave segreta KAB crittata con la chiave pubblica di Bob PUB dopo averla firmata digitalmente con la sua chiave privata PRA

Uso della crittografia a chiave pubblica


Alice
gen. KAB E(PUB, KAB)

Bob

mA E(KAB, mA)

KAB = D(PRB, E(PUB, KAB))


KAB E(KAB, mA)

mA = D(KAB, E(KAB, mA))

Bob non pu essere certo di comunicare con Alice

mA

Uso della crittografia a chiave pubblica


Alice
gen. KAB E(PUB, KAB) Firma digitale S(PRA, E(PUB, KAB)) = E(PRA, E(PUB, KAB))

Bob pu essere certo di comunicare con Alice

Bob

V(PUA, S(PRA, E(PUB, KAB))) = = D(PUA, D(PRB, E(PUB, KAB))) =

E(PUB, KAB) KAB KAB

mA E(KAB, mA)
E(KAB, mA)

D(PRB, E(PUB, KAB)) =

mA = D(KAB, E(KAB, mA))


mA

Comunicazioni su un canale insicuro


Si supponga che
PUA, PRA sia la coppia public key, private key di Alice PUB, PRB sia la coppia public key, private key di Bob Alice conosce la chiave pubblica di Bob PUB Bob conosce la chiave pubblica di Alice PUA
si osservi che procurarsi le chiavi pubbliche di altre persone una delle principali sfide poste dalla crittografia a chiave pubblica per il momento non ce ne preoccupiamo

la slide che segue illustra come avviene la comunicazione su un canale insicuro

Comunicazioni su un canale insicuro


Alice
E(PUB, mA) E(PUB, mA)
D(PRB, E(PUB, mA)) = mA

Bob

E(PUA, mB)

E(PUA, mB)

mB =

D(PRA, E(PUA, mB))

Memorizzazione sicura
Esattamente come avviene nel caso di crittografia a chiave segreta
si possono crittare i dati con la chiave pubblica PUX nessuno pu decrittare i dati tranne chi conosce la chiave privata PRX
tuttavia, per ragioni di efficienza, non conviene cifrare i dati direttamente con la chiave pubblica, ma piuttosto conviene generare randomicamente una chiave segreta KX, e crittare i dati con la chiave segreta KX, e crittare la chiave segreta con la chiave pubblica E(PUX, KX)

Memorizzazione sicura
Come nel caso di tecnologia a chiave segreta
perdere la chiave privata implica perdere irrimediabilmente i dati per evitare questo rischio, si pu crittare una copia della chiave di cifratura segreta KX con la chiave pubblica di una persona fidata PUFidata o memorizzare copie della chiave privata PRX presso una persona fidata

Si noti che la tecnologia a chiave pubblica offre un chiaro vantaggio rispetto quella a chiave segreta
Alice pu cifrare un messaggio per Bob senza conoscere la sua chiave di decifratura

Autenticazione
La tecnologia a chiave segreta presenta i seguenti svantaggi:
Alice e Bob per poter autenticarsi devono condividere un segreto se Bob deve provare la sua identit a molte entit, allora deve mantenere molte chiavi segrete
una chiave segreta per ogni entit alla quale deve provare la sua identit potrebbe anche usare la stessa chiave segreta con Alice e Carol, ma ci comporterebbe che Alice e Carol potrebbero impersonare Bob in una comunicazione tra loro due

Autenticazione
La tecnologia a chiave pubblica semplifica notevolmente la gestione dei segreti
Bob deve soltanto ricordare un singolo segreto: la sua chiave privata chiaramente, deve anche mantenere/ottenere tutte le chiavi pubbliche delle entit di cui desidera verificare lidentit
potrebbero essere anche migliaia di chiavi pubbliche la gestione delle chiavi pubbliche sar discussa in seguito

Schema di autenticazione
Assunzione
Alice conosce la chiave pubblica di Bob PUB la chiave privata di Bob PRB conosciuta soltanto da Bob Bob conosce la chiave pubblica di Alice PUA la chiave privata di Alice PRA conosciuta soltanto da Alice

Procedura di autenticazione
Alice verifica lidentit di Bob Bob verifica lidentit di Alice

Alice verifica lidentit di Bob


Alice
gen. rA E(PUB, rA)

Bob

rA

D(PRB, E(PUB, rA)) =

rA

Alice verifica lidentit di Bob


Usando la tecnologia a chiave pubblica Alice pu verificare lidentit di Bob come segue:
Alice estrae un numero random rA (la sfida) Alice critta rA con la chiave pubblica di Bob e invia il risultato E(PUB, rA) a Bob Bob dimostra la sua identit mostrando che conosce la sua chiave privata PRB, ovvero decritta E(PUB, rA) riottenendo rA = D(PRB, E(PUB, rA)) Bob rispedisce indietro ad Alice la sfida rA Alice ha la prova che il suo interlocutore realmente Bob

Altro vantaggio
Un altro vantaggio dellautenticazione a chiave pubblica che Alice non deve mantenere alcuna informazione segreta per verificare Bob
Alice potrebbe essere un computer i cui backup sono in chiaro e incustoditi nellautenticazione a chiave segreta se Carol ruba un backup e legge una chiave segreta condivisa tra Alice e Bob pu fingersi Alice in una comunicazione con Bob
o viceversa

Invece, nel caso di autenticazione a chiave pubblica


i backup di Alice contengono soltanto chiavi pubbliche (quella privata va custodita in modo diverso) non possono consentire di impersonare Bob

Firma digitale
Spesso utile provare che un messaggio stato generato da un particolare individuo
ci semplice con la tecnologia a chiave pubblica la firma di Bob per un messaggio m pu essere generata soltanto da chi conosce la chiave privata di Bob PRB, e la firma dipende anche dal contenuto di m se il messaggio viene modificato in qualche modo, la corrispondenza con la firma viene persa

Firma digitale
Pertanto, le firme digitali hanno una duplice funzione
provano CHI ha generato linformazione, provano che linformazione non stata modificata in alcun modo dal momento in cui il messaggio e la corrispondente firma furono generati

Inoltre, le firme digitali offrono un vantaggio importante rispetto ai checksum crittografici a chiave segreta (cio i MAC/MIC):
garantiscono il requisito del non-ripudio (non-repudiation)

Non-ripudio
Obiettivo del non-ripudio impedire che il mittente o il destinatario neghino che sia stato trasmesso un messaggio
il destinatario pu provare che il messaggio stato inviato dal presunto mittente (non ripudio della sorgente o del mittente) il mittente pu provare che il messaggio stato effettivamente ricevuto dal presunto destinatario (non ripudio del destinatario)

Non ripudio esempio


Si supponga che Bob venda articoli che Alice solitamente compra
la procedura di vendita prevede che Alice deve prima inviare a Bob, via servizio postale, un ordine di acquisto da lei firmato per snellire la procedura Alice e Bob decidono di usare lemail per la spedizione degli ordini di acquisto per evitare falsificazioni Alice include in ogni email un MIC (Message Integrity Code)
per evitare che qualcuno ordini degli articoli dichiarandosi Alice

il MIC potrebbe essere


o un MAC che sfrutta una chiave segreta MIC = c(KAB, ordine) o una firma digitale a chiave pubblica MIC = S(PRA, ordine)

Non ripudio esempio


si supponga che Alice richieda un articolo di grande valore, ma subito dopo cambi idea
per un qualunque motivo

visto che la cancellazione dellordine prevede una penale considerevole, Alice anzich cancellare lordine preferisce negare di averlo piazzato Bob le fa causa
se il MIC era stato ottenuto con una chiave segreta KAB Bob certo che Alice sta truffando (oltre a lui solo lei conosce KAB), ma non pu provarlo in tribunale Alice potrebbe sostenere che stato lui stesso ad ordinarsi larticolo di valore!

Non ripudio esempio


invece, se il MIC era stato ottenuto con una tecnologia a chiave pubblica MIC = S(PRA, ordine) Bob pu mostrare lordine firmato al giudice e il giudice pu verificare che la firma quella di Alice Alice potrebbe sostenere che qualcuno ha rubato la sua chiave privata tuttavia il contratto stipulato tra Alice e Bob potrebbe prevedere che eventuali danni che Bob subisce causa lo smarrimento della chiave privata PRA siano a carico di Alice

il vantaggio della tecnologia a chiave pubblica che Alice pu cifrare un messaggio per Bob senza conoscere la sua chiave di decifratura

Introduzione alla Crittografia

ALGORITMI DI HASH (CRITTOGRAFICI)

Algoritmi di hash (crittografici)


Noti anche come algoritmi di digest o one-way transformation

Una funzione di hash crittografica una trasformazione matematica che


prende in input un messaggio m di lunghezza arbitraria (codificato in una stringa di bit), e calcola un numero h(m), loutput, avente una lunghezza fissa prestabilita h(m) dipende dal messaggio la lunghezza (numero di bit) del numero h(m) fissa h : {0, 1}* {0, 1}b b: numero di bit delloutput

Funzioni di hash crittografiche Propriet


1) Per ogni messaggio m, relativamente facile calcolare h(m)
non si tratta di unoperazione computazionalmente dispendiosa

2) Noto h(m), non c modo di calcolare un messaggio il cui hash sia h(m)
lunico approccio noto quella di tipo brute force

3) Sebbene sia ovvio che molti valori distinti di m ammettano lo stesso hash h(m)
poich lo spazio {0, 1}* molto pi grande di {0, 1}b

computazionalmente impraticabile trovare due valori aventi il medesimo hash

Idea base per una funzione hash


Un possibile approccio per il calcolo di una funzione hash il seguente
dato un messaggio m, interpretare la codifica binaria di m come un numero intero, sommare ad m alcune grandi costanti intere, elevare al quadrato il tutto, lhash h(m) il numero ottenuto considerando le n cifre centrali

Idea base per una funzione hash


Si osservi che
h(m) calcolabile efficientemente a partire da m non chiaro come sia possibile
trovare un messaggio avente uno specifico hash trovare due messaggi aventi lo stesso hash

tuttavia si pu dimostrare che quello appena descritto non un buon algoritmo di digest
lidea base di una buona funzione di digest comunque la stessa: linput strapazzato cos tanto da rendere proibitiva linversione

Funzioni hash e password


Spesso un sistema deve verificare le password dei suoi utenti
se tutte le password sono memorizzate in chiaro, tutti coloro che hanno accesso al sistema (amministratori, tecnici, etc.) possono rubare le password fortunatamente, non necessario conoscere una password per verificarla!
A proper password is like pornography. You can't tell what it is, but you know it when you see it.

invece delle password in chiaro un sistema potrebbe memorizzare lhash delle password

Funzioni hash e password


per verificare una password dutente p, il sistema
calcola prima lhash della password h(p) e verifica se h(p) coincide con lhash memorizzato per quellutente, se coincidono la password considerata corretta

se un avversario ottiene il file (relazione db) con lelenco delle password dutente, non pu usarlo in modo immediato perch la funzione di hash non invertibile
addirittura in passato lelenco contenente lhash delle password stato in alcuni casi reso pubblico; era un modo per ostentare sicurezza da NON IMITARE

Funzioni hash e password


infatti, anche se la funzione di hash non presenta difetti crittografici intrinseci che possono essere sfruttati, sempre possibile scegliere delle password a caso, calcolarne lhash e verificare la corrispondenza, se un utente U sceglie superficialmente la propria password pU (situazione frequente), ad esempio una parola di un dizionario, una ricerca esaustiva su una repository di password probabili consentirebbe di risalire a pU per tale ragione molti sistemi nascondono lelenco contenete lhash delle password

Funzioni hash Integrit di messaggi


Le funzioni di hash vengono spesso impiegate per verificare lintegrit di un messaggio
permettono cio di generare dei MAC/MIC

Come possibile generare MAC/MIC?

data una coppia m, h(m), se il messaggio viene accidentalmente corrotto, diciamo diventa m, risulta h(m) h(m) tuttavia, se un avversario modifica deliberatamente il messaggio pu calcolare anche il suo nuovo hash

di per s le funzioni di hash non sono utilizzabili per verificare lintegrit dei messaggi contro attacchi maliziosi

gli algoritmi di hash sono pubblici

Funzioni hash Integrit di messaggi


Tuttavia, se Alice e Bob condividono un segreto KAB e Alice vuole inviare un messaggio m a Bob
Alice pu concatenare il messaggio m con il segreto KAB
ottenendo un nuovo messaggio m = (m||KAB)

calcolare lhash del nuovo messaggio h(m) = h(m||KAB)

lhash h(m||KAB) detto keyed hash e pu considerarsi un MAC (anche se presenta delle sottili debolezze)

ed inviare la coppia m, h(m||KAB) a Bob Bob concatena il messaggio ricevuto con il segreto e calcola lhash
se lhash ottenuto coincide con lhash ricevuto allora Bob pu, con un elevato grado di confidenza, ritenere che il messaggio stato inviato da qualcuno che conosceva il segreto

Funzioni hash Integrit di messaggi


KAB

Alice
mIIKAB

Bob

II

h()
HASH
CONCATENATION

=?
HASH

CONCATENATION

II

h()

KAB

Impronta digitale di dati


Si supponga di disporre di un grande repository di dati di sola lettura e di voler periodicamente verificare che non vi siano modifiche
si potrebbe mantenere una copia di backup del repository in un luogo a prova di manomissione, e periodicamente confrontarla con la repository attiva

usando una funzione di hash si ha un notevole risparmio di memoria e tempo


basta salvare lhash del repository in un luogo protetto, e confrontare lhash del repository con lhash precedentemente salvato

Impronta digitale di dati


nota: il programma che calcola lhash va protetto in modo indipendente dallhash stesso
altrimenti, un avversario pu modificare il repository, e modificare il programma per il calcolo dellhash in modo tale che lhash finale sia quello salvato

Lhash del repository funge pertanto da impronta digitale utilizzabile nei test di integrit
garantendo un notevole risparmio di memoria, e di tempo necessario al confronto

Downline load security


Spesso molti dispositivi di rete (router, stampanti, etc.)
anzich memorizzare in una memoria non-volatile i programmi che generalmente eseguono
perch non hanno una memoria non-volatile o ne hanno una di ridotte dimensioni

li richiedono in fase di bootstrap via rete ad un server preposto a svolgere tale servizio tale schema viene detto downline load

in questi casi lhash viene usato per verificare che il programma scaricato sia quello corretto cio non vi siano state modifiche accidentali o intenzionali
basta memorizzare soltanto lhash del programma corretto e, ad ogni download, calcolare lhash del programma scaricato verificando che coincida con quello in memoria

Firma digitale efficiente


I migliori algoritmi di cifratura a chiave pubblica (conosciuti) sono computazionalmente dispendiosi, conviene pertanto
(anzich firmare lintero messaggio) calcolare prima un digest del messaggio con una funzione di hash, e firmare il digest ottenuto,

Si osservi che
gli algoritmi per il calcolo del digest sono computazionalmente molto pi efficienti, e il digest molto pi corto dellintero messaggio

Bibliografia
[KPS02] C. Kaufman, R. Perlman, M. Speciner. Network Security Private Communication in a Public World. Prentice Hall. [PFL08] C. P. Pfleeger, S. L. Pfleeger. Sicurezza in Informatica. Pearson, Prentice Hall. [STA07] W. Stallings. Sicurezza delle reti. Pearson, Prentice Hall. [Wiki-it] http://it.wikipedia.org/wiki/ [Wiki-en] http://en.wikipedia.org/wiki/ [ISECOM] Institute for Security and Open Methodologies