41
APPUNTI DI CRITTOGRAFIA: Dai cifrari storici ad RSA [email protected]

Appunti di Crittografia:dai cifrari storici ad RSA e Guide/Appunti di Crittografia_dai... · • CRITTOGRAFIA : studio e applicazione dei principi e delle tecniche per rendere l'informazione

  • Upload
    haduong

  • View
    218

  • Download
    1

Embed Size (px)

Citation preview

APPUNTI DI CRITTOGRAFIA: Dai cifrari storici ad RSA

[email protected]

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

1

APPUNTI DI CRITTOGRAFIA (Dai cifrari storici ad RSA )

CRITTOLOGIA: scienza che si occupa di comunicazioni in forma sicura e segreta • CRITTOGRAFIA: studio e applicazione dei principi e delle tecniche per rendere

l'informazione intellegibile a tutti tranne che al destinatario • CRITTOANALISI: si occupa di risolvere i crittosistemi per recuperare l'informazione

nascosta. CRITTOGRAFIA MODERNA: progetto e valutazione di metodi e tecniche per la protezione dell'informazione. E' basata sulla matematica. Il passaggio dall'informazione fisica a quella digitale richiede un insieme di tecniche che proteggono dati e contenuti. PHONE COIN CLIPPING: 2 interlocutori comunicano le loro scelte che restano ignote fino al calcolo di un XOR fra queste. Se le scelte sono uguali il risultato è abbinato al bit=0 altrimenti è abbinata al bit=1.

ES: A -------> N ---------> B

A <------- b <--------- B A -------> p,q ---------> B numericamente:

A -------> N =35 ---------> B A <------- b =0 <--------- B A -------> p=5,q=7 ---------> B dove : N è un prodotto fra numeri primi = pq e p<q b è il bit e le condizioni generali sono: se p=1 e q=3 in mod4 --> b=0 se p=3 e q=1 in mod4 --> b=1 Nell'esempio numerico, secondo la scelta di A che invia N=35 (prodotto di 7 e 5) e la scelta di B che manda un bit b=0 e secondo le condizioni generali si ha che: A aveva scelto a=0, dove a è il bit, perchè:

• p=1 in mod4 =5 • q=3 in mod4 =7

Siccome A e B hanno effettuato la stessa scelta : a=0 e b=0 ---> l'operazione aXORb =0 Notiamo che scegliendo un N molto grande faciliteremmo il nascondimento della scelta sia di A che di B. PROTOCOLLI CRITTOGRAFICI: un protocollo o SCHEMA definisce le interazioni fra le parti per ottenere le proprietà di sicurezza(segretezza, autenticità...)

Tab. XOR

X Y XOR

0 0 0

0 1 1

1 0 1

1 1 0

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

2

PRIMITIVE DI CIFRATURA • TECNICHE DI CIFRATURA

• uso di cifrari simmetrici o a chiave privata • uso di cifrari asimmetrici o a chiave pubblica

• TECNICHE PER AUTENTICAZIONE È INTEGRITÀ

• funzioni HASH • MAC • Firme digitali

SCENARIO SIMMETRICO A --------------> CANALE SICURO ----------------> B (chiave k) (chiave k) PRINCIPIO DI KERKOHFFS: La sicurezza di un cifrario deve dipendere solo dalla segretezza della chiave e non dalla segretezza dell'algoritmo usato. SCENARIO ASIMMETRICO A ---------> CANALE SICURO:msg cifrato con privK2

---------> B (chiave pub. k1) (chiave pub. k2) (chiave priv. k1) (chiave priv. k2) Non ci sono chiavi condivise fra A e B ed ogni utente ha una sola chiave privata e tutte le possibili chiavi pubbliche dei suoi possibili destinatari. FIRMA DIGITALE Equivale alla firma autografa convenzionale. Ha valore legale. Requisiti:

• deve poter essere facilmente prodotta dal legittimo firmatario • non deve essere riproducibile da altri • deve poter essere verificata da tutti facilmente

FUNZIONI HASH: Esse acquisiscono un blocco di bit arbitrario in inpout e tramite calcoli matematici riproducono un blocco di bit in output di larghezza prefissata. Vengono usate per:

2 parti comunicano su un canale sicuro.

Usano una chiave per cifrare il messaggio, spedirlo e usare la stessa chiave per decifrarlo. Chi si intromette nella comunicazione non può decifrare senza chiave.

Si usano 2 chiavi diverse fra loro. Una chiave pubblica è usata per cifrare il messaggio, la chiave privata viene usata per decifrarlo.

B aprirà il messaggio cifrato con pub.k2 usando la priv.k2, mentre A ha tutte le possibili pub.k dei destinatari.

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

3

• firme digitali • verificare l'integrità e scovare eventuali manomissioni e falsificazioni • certificare il tempo

CRITTOGRAFIA CLASSICA: L'obiettivo della crittografia classica è quello di proteggere le comunicazioni. Le tecniche utilizzate sono:

• STEGANOGRAFIA: occultamento della comunicazione • tramite la disposizione delle lettere/parole in un ingenuo msg • contrassegnando i caratteri • usando inchiostro invisibile • nascondendo nei bit l'informazione (watermarking) • vantaggi: si nasconde sia il messaggio che il fatto stesso di essere in comunicazione • svantaggi: se la comunicazione è studiata con attenzione il messaggio può essere

scoperto e la segretezza è persa • CRITTOGRAFIA

CRITTOGRAFIA E ANTICHI METODI DI CIFRATURA

• CIFRARIO DI POLIBIO: ogni lettera è abbinata aduna coppia di numeri • CIFRARIO DI CESARE: ogni lettera in chiaro viene sostituita con una corrispondente

lettera del cifrario ottenuto shiftando di un passo k la sequenza dell'alfabeto. CIFRARI SIMMETRICI – dettagli Se ho:

• un messaggio in chiaro: X=[x1,x2,...,xn] • una chiave: K=[k1,k2,....,kn] • il messaggio cifrato sarà: Y=Ek(X)=[y1,y2,....,yn], dove Ek è l'operazione di cifratura con

chiave K CLASSIFICAZIONE DEI CIFRARI SIMMETRICI:

• CIFRARI A BLOCCHI: il cifrario agisce su ogni blocco in chiaro in input e produce un blocco cifrato in output

• CIFRARI A FLUSSI: il messaggio è un flusso continuo che percorre il cifrario e da esso viene costantemente cifrato.

• CIFRARI SIMMETRICI/ASIMMETRICI: ibridi La proprietà fondamentale di un algoritmo di cifratura è: X=DK(EK(X)), ovvero: il destinatario del msg, tramite la stessa chiave deve poter effettuare la decrittografia del messaggio stesso. CLASSIFICAZIONE DELLE OPERAZIONI DI CIFRATURA:

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

4

• SOSTITUZIONE: ogni elemento del testo è mappato su un altro elemento(come in Cesare). Gli insiemi di elementi non sono obbligatoriamente gli stessi.

• TASPOSIZIONE: gli elementi del testo in chiaro vengono scambiati di posto (Anagramma) È fondamentale non perdere mai l'informazione nei processi di cifratura e decifratura e questo è garantito dalla reversibilità delle operazioni stesse. CIFRARI CON SHIFT (in termini più o meno matematici)

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

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Procedure:

• EK (X) = (x+K) mod26 con k in {1,...,25} • DK (Y) = (y-K) mod26 con k in {1,...,25}

Per il cifrario di Cesare, se k=3 --> A=EK (0+3)= 3 che nella sequenza cifrante corrisponde a D; quindi la A sarà cifrata con la D. Con questo metodo di cifratura sono possibili ben 25 chiavi diverse di cifratura. SICUREZZA DI UN CIFRARIO

• È fondamentale assicurare che dal testo cifrato non si risalga alla chiave di cifratura usata molto facilmente

• Bisogna evitare gli attacchi a forza bruta che consistono in ripetuti tentativi che mirano al ritrovamento della chiave

Un cifrario può essere:

• UNCONDITIONALLY SECURE: indipendentemente dal tempo e dalle risorse è impossibile decrittografare il testo cifrato

• COMPUTATIONALLY SECURE: il tempo richiesto per violare la cifratura è grande e superiore alla vita utile delle informazioni cifrate.

CIFRARIO MONOALFABETICO

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

d e f g h i j k l m n o p q r s t u v w x y z a b c Funzionamento: al posto di una lettera in chiaro dell'alfabeto si mette quella corrispondente nell'alfabeto cifrante. Con un alfabeto a 26 lettere avrei 26! possibiltà. CIFRARIO A SOSTITUZIONE Si usa come chiave qualche parola o frase di senso compiuto, ovviamente da ricordare bene.

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

5

Frase Chiave: JULIUS CAESAR

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

j u l i s c a e r t v w x y z b d f g h k m n o p q Notiamo come nell'alfabeto cifrante abbiamo evitato le ripetizioni e dopo l'immisione della frase chiave abbiamo trascritto il resto dell'alfabeto. In questo caso avremmo più di 26 ma meno di 26! possibilità. LA CRITTOANALISI : è lo studio basato sulla natura dell'algoritmo di cifratura e mira alla conoscenza dell'algoritmo o del testo in chiaro. Si può eseguire, a tal scopo, uno studio sulle FREQUENZE DELLE OCCORRENZE DELLE LETTERE nel messaggio da “rompere” confrontando:

• grafici delle occorrenze degli alfabeti stranieri • standard di scrittura nelle diverse lingue

Per evitare che tale lavoro diventi facile, un crittologo deve: • alzare la frequenza nel testo in chiaro delle lettere con bassa frequenza aggiungendone altre

(nulle) • abbassare la frequenza delle lettere più presenti cifrandole con più simboli scelti a caso

(omofoni) CIFRATURA POLIALFABETICA: vengono usati più alfabeti cifranti e più lettere cifranti per carattere del testo in chiaro. CIFRARIO DI LEON BATTISTA ALBERTI

A B C D E F G H I L M N O P Q R S T U V Z

e u f a v o d n p h s g t m i l b r z c q

c m u n b i p l o v a t g s d r h q f z e Con l'utilizzo dei due alfabeti cifranti la parola LEONE diventerebbe : HBTTV Infatti, per cifrare il testo vengono utilizzati alternativamente entrambi gli alfabeti. Ciò comporta la conseguente perdita di univoca corrispondenza per lettera con mappatura doppia. DISCO DI ALBERTI: una delle prime macchine cifranti. Essa era composta da due dischi con due alfabeti su ognuno di essi. I dischi erano concentrici e ruotavano secondo una combinazione data che corrispondeva alla chiave di cifratura. Ruotando i dischi le lettere assumevano una diversa corrispondenza.

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

6

CIFRARIO DI PORTA: In una tabella 26x26 vengono disposti 675 numeri, rappresentanti le coordinate di 26 caratteri sulle ascisse e 26 caratteri sulle ordinate:

x\y a b c . . z

a 0 1 2 . . 25

b . . . . . .

c . . . . . .

. . . . 92 . .

. . . . . . .

z . . . . . 675

Il metodo si basa, oltre che sulla tabella, anche suio bigrammi: le parole vengono decomposte in coppie di caratteri. TXT IN CHIARO: DO MA NI che in termini di cordinate sarebbe (XY XY XY ); da ciò deriva che il TXT CIFRATO sarà l'insieme dei punti ottenuti dalle coordinate: DO --> 92 MA--> 312 NI --> 346 CIFRARIO DI HILL Fino ad ora bbiamo considerato i bigrammi, ovvero gruppi di 2 lettere. Proviamo ora a considerare gruppi di m lettere. Funzionamento del cifrario:

• m lettere in chiaro vengono sostituite con m lettere cifrate secondo EQUAZIONI LINEARI ES: per m=2, (x1,x2) e (y1,y2) utilizzando una Matrice Chiavemxm= (11 8 ; 3 7) danno:

Y1=11x1+ 3x2 mod26 Y1=8x1+ 7x2 mod26

In generale : (y1, y2 ,...., ym ) = ( x1 , x2 , ...., xm) per la matrice chiave e per :

• cifrare : Y=EK(X) = XK • decifrare: X=DK(Y) = YK -1 dove K-1 è l'inversa della MATRICE CHIAVE (ovviamente i

calcoli vanno fatti tutti in mod26)

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

7

CRITTOANALISI DEL CIFRARIO DI HILL Un attacco probabile a questo cifrario può consistere nel cercare la chiave partendo dal presupposto di conoscere:

• la dimensione della matrice della chiave, m • il testo cifrato • il testo in chiaro

Infatti, se: • M= testo in chiaro • C= testo cifrato • m= dimensione chiave K • e se è vero che MK = C da cui si ha che K=M-1C

calcolando facilmente l'inversa della matrice del testo in chiaro e moltiplicandola per la matrice del testo cifrato otterremmo la chiave K. (ricordiamo che tutti i calcoli vanno fatti in mod26) CIFRARIO DI VIGENERE Vengono usati più alfabeti cifranti che variano nel corso della cifratura con una certa periodicità. Gli alfabeti cifranti sono racchiusi in un quadrato detto QUADRATO DI VIGENERE:

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 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 A C D E F G H I J K L M N O P Q R S T U V W X Y Z A B D E F G H I J K L M N O P Q R S T U V W X Y Z A B C E F G H I J K L M N O P Q R S T U V W X Y Z A B C D F G H I J K L M N O P Q R S T U V W X Y Z A B C D E G H I J K L M N O P Q R S T U V W X Y Z A B C D E F H I J K L M N O P Q R S T U V W X Y Z A B C D E F G I J K L M N O P Q R S T U V W X Y Z A B C D E F G H J K L M N O P Q R S T U V W X Y Z A B C D E F G H I K L M N O P Q R S T U V W X Y Z A B C D E F G H I J L M N O P Q R S T U V W X Y Z A B C D E F G H I J K M N O P Q R S T U V W X Y Z A B C D E F G H I J K L N O P Q R S T U V W X Y Z A B C D E F G H I J K L M O P Q R S T U V W X Y Z A B C D E F G H I J K L M N P Q R S T U V W X Y Z A B C D E F G H I J K L M N O Q R S T U V W X Y Z A B C D E F G H I J K L M N O P R S T U V W X Y Z A B C D E F G H I J K L M N O P Q S T U V W X Y Z A B C D E F G H I J K L M N O P Q R T U V W X Y Z A B C D E F G H I J K L M N O P Q R S U V W X Y Z A B C D E F G H I J K L M N O P Q R S T V W X Y Z A B C D E F G H I J K L M N O P Q R S T U W X Y Z A B C D E F G H I J K L M N O P Q R S T U V X Y Z A B C D E F G H I J K L M N O P Q R S T U V W Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Z 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

Esempio di Funzionamento:

• txt chiaro CODIC EMOLT OSICU RO (codice molto sicuro) • chiave REBUS REBUS REBUS RE (rebus)

(uso “rebus” e la applico periodicamente per tutto il testo in chiaro)

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

8

• txt cifrato TSECU VQPFL FWJWM IS (risultato cifratura) In termini matematici:

txt in chiaro --> Ci = Mi + Ki modt mod26 --> txt cifrato , dove t è la lunghezza della chiave. Quindi: C7 = M7 K(7mod5) = 2 ==> M + E che nel corrispondente alfabeto sarà Q Caratteristiche del cifrario di Vigenere:

• molto sicuro • resistenza all'analisi delle frequenze dato che una lettera cifrata corrisponde a più simboli in

chiaro ed esiste un numero grande di chiavi La CRITTOANALISI del Cifrario di Vigenere, concentra lo studio sulle ripetizioni che portano ad una stima della lunghezza della chiave. Si analizzano le frequenze delle lettere in ognuno degli alfabeti cifranti corrispondenti alle lettere della chiave. PRIMO ATTACCO: Kasiski fu il primo ad attaccare questo cifrario. --> TEST DI KASISKI Ipotizziamo di avere il testo cifrato: ...WPIXFGHDAFNVTV....KLXFGLO... Il test si basa sull'eventuale ripetizione di alcune sequenze di lettere nel testo cifrato; in base a queste ripetizioni ipotizziamo che esse siano cifrature dello stesso testo in chiaro. Studiamo, quindi, tutte le ripetizioni ed elenchiamo le distanze tra le diverse ripetizioni del testo cifrato. Fatto questo, cerchiamo un MCD(massimo comune divisore) delle distanze e determiniamo la lunghezza della chiave = MCD SECONDO ATTACCO, STUDIO DELL'INDICE DI COINCIDENZA: L'indice di coincidenza indica la probabilità per cui 2 caratteri casuali siano uguali e ci fornisce notizie sulla possibile lunghezza della chiave cercata. Ricordando che la formula generale della probabilità dice che

P(A)= nro casi favorevoli / nro casi possibili iniziamo col supporre di scegliere la I coppia di caratteri:

• avremo n modi possibili per scegliere il primo carattere • avremo n-1 modi possibili per scegliere il secondo carattere

Inoltre: • se moltiplichiamo le scelte possibili --> n ( n-1) • e dividiamo per 2 --> n ( n-1) / 2 dato che scegliere A e B è uguale a scegliere B e A

potremo dire che i casi possibili sono il frutto dell'operazione : casi possibili = n ( n-1) / 2

In più, la probabilità per cui 2 caratteri in una sequenza siano effettivamente uguali sarà data dal risultato di un'analisi delle frequenze dei caratteri stessi e avremo che:

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

9

l'INDICE DI COINCIDENZA IC (x 1,x2,...,xn) = ∑025 fi (fi – 1) / n ( n-1)

dove fi è il numero di occorrenze i nella stringa che si considera. ES: se la stringa è MONO avrò che:

• n = lunghezza stringa = 4 • casi possibili = n ( n-1) / 2 = 4 * 3 / 2 = 6 • la O si ripete 1 volta -> casi favorevoli = 1 • IC (MONO) = 1 / 6

ES: se la stringa è GAMMA avrò che: • n = lunghezza stringa = 5 • casi possibili = n ( n-1) / 2 = 5 * 4 / 2 = 10 • la A si ripete 1 volta -> casi favorevoli A = 1 + la M si ripete 1 volta

-> casi favorevoli M = 1, quindi TOT casi favorevoli = 2 • IC (GAMMA ) = 2 / 10= 1/5

Dobbiamo tener presente che per ogni dizionario linguistico usato è stata stilata una probabilità di occorrenza dei caratteri già pronta. Secondo le frequenze stimate il risultato dell'IC diventa:

• generale --> 0,038 • inglese --> 0,065 • italiano --> 0,075

Con tale strumento si può risalire alla lingua su cui orientare i nostri studi crittoanalistici. COME USARE L'IC PER TROVARE LA CHIAVE Se:

• t = lunghezza della chiave • t = 1 --> sto usando una cifratura monoalfabetica (a singolo carattere)

• IC sarà circa:

• se t=1 --> 0,075 (ita) oppure 0,065 (ing) • se t≠1 --> 0,038

Se: • t = lunghezza della chiave • t = 2 --> sto usando una cifratura polialfabetica (a doppio carattere)

• IC sarà circa:

• se t=2 --> 0,075 (ita) oppure 0,065 (ing) • se t≠2 --> 0,038

etc.... Se i valori che trovo non si avvicinano a 0,075 oppure a 0,065 dobbiamo continuare ad incrementare t.

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

10

TERZO ATTACCO, STUDIO DELL'INDICE DI MUTUA COINCIDENZA IMC: Per trovare i caratteri della chiave K0K1K2...Kt-1 si usa l' INDICE MUTUO DI COINCIDENZA (IMC) che ci dice qual'è la probabilità di estrarre da 2 stringhe 2 caratteri uguali. Siccome ora le stringhe di caratteri sono due o più, si ha che:

casi possibili = n n' e avremo, quindi:

l'INDICE DI MUTUA COINCIDENZA IMC (x 1,x2,...,xn; y1,y2,...,yn) = ∑025 fi fi' / n n'

dove: • f i è il numero di occorrenze i nella prima stringa che si considera • f i' è il numero di occorrenze i nella seconda stringa che si considera.

ES: se le stringhe sono CIA e CIAO avrò che:

• n = lunghezza stringa CIA = 3 • n' = lunghezza stringa CIAO = 4 • casi possibili = n n' = 3 * 4 = 12 • la C si ripete 1 volta + la I si ripete 1 volta + la A si ripete 1 volta --> casi favorevoli = 3 • IMC (CIA; CIAO) = 3 / 12 = 1 / 4

CIFRATURA CON TRASPOSIZIONE RAIL FENCE (staccionata)

U S G E O I T O R G O I R N E R T E L U P I I N E O

queste due righe rappresentano una staccionata che va percorsa, a partire dalla prima lettera della prima riga, proseguendo sulla prima lettera della seconda riga, continuando sulla seconda lettera della prima riga e proseguendo alternativamente, su e giù fino ad esaurimento dei caratteri. Se trascriviamo in questo ordine i caratteri potremo renderci conto che “dietro la staccionata” è nascosto il msg : “un segreto e il tuo prigioniero” Ovviamente in fase di crittografia, il msg va scritto su un'unica riga trascrivendo prima tutte le lettere della prima riga e poi tutte le lettere della seconda riga: il testo cifrato sarà:

U S G E O I T O R G O I R N E R T E L U P I I N E O

CIFRARIO A COLONNE : il testo in chiaro viene scritto secondo un numero X di righe rispettando l'incolonnamento e quindi il numero di colonne assegnato. La chiave mi indicherà in che modo combinare le colonne!

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

11

ES: Ordine delle colonne (CHIAVE) 4 3 1 2 5 6 7 Testo in chiaro a t t a c k p o s t p o n e d u n t i l t w o a m x y z Testo cifrato secondo l'ordine: t t n a a p t m t s u o a o d w c o i x k n l y p e t z Per decifrare il messaggio, sapendo la chiave, incomincio a incolonnare il testo partendo dalla terza colonna. CILINDRI CIFRANTI: dischi rotanti che, tramite diverse combinazioni, cifrano il testo. Con il passare del tempo si abbandonarono ingranaggi meccanici e si cominciò ad adottare i segnali elettrici. Ogni disco, o rotore, realizzava un input/output a seconda delle combinazioni. Esempio più palese di macchina a cilindri cifranti è stato ENIGMA, usato nella II Guerra Mondiale.

Il periodo di sostituzioni è talmente piccolo che, considerando almeno 50 lettere cifranti per sostituzione, incorreremmo in una mole enorme di testo. Quindi è da evitare la sola analisi delle frequenze. Anche la sola analisi delle chiavi è da sconsigliare dato il gran numero di chiavi esistenti. La crittoanalisi si concentra, a questo punto, sulla natura degli algoritmi basandosi sul testo in chiaro e gli algoritmi stessi. Per maggiore sicurezza, i crittologi, usavano una CHIAVE GIORNALIERA DI MESSAGGIO ulteriore per cifrare i messaggi. Essa veniva inviata ai rotori che si inizializzavano secondo la suddetta chiave giornaliera. La chiave giornaliera di messaggio, da una parte diventava un ulteriore problema che i crittoanalisti dovevano affrontare, dall'altra parte è stata la vera e propria debolezza della macchina Enigma. Tramite uno studio con tabelle di dipendenza, si riuscì a risalire a precise concatenazioni che definivano il numero di collegamenti nelle concatenazioni stesse. Tale numero dipendeva dalle posizioni iniziali degli scambatori. A questo punto fu necessario combinare le varie posizioni iniziali, raccolte in tabelle, con le concatenazioni studiate. Questo potè aiutare a risalire ai possibili

Ogni rotore ruota ogni volta che si digita un carattere. Con 2 rotori si può già avere una cifratura a 26x26 possibilità.

Per la CRITTOANALISI sarebbe fondamentale conoscere:

• quanti rotori ci sono

• la circuiteria di combinazione

• come erano disposti i rotori

• l'ordine di partenza

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

12

messaggi iniziali. IL CIFRARIO PERFETTO: One Time Pad

• Testo in chiaro composto da n lettere • La chiave deve essere lunga quanto il msg stesso e deve essere casuale • la cifratura è: Ci <-- Mi (XOR) Ki in mod26 dove,

• M i: testo in chiaro • K i: chiave

Questo tipo di cifratura non è rompibile in nessun modo dato che dallo stesso testo cifrato posso avere più testi in chiaro! Il problema è che questo tipo di cifrario richiede al crittologo di cambiare ogni volta la chiave, dato che essa si presenta monouso ed in più la lunghezza della chiave deve essere uguale al testo in chiaro. Ciò indurrebbe ad avere enormi repertori di chiavi. Ci sono più TIPI DI ATTACCHI e questo dipende da quanta informazione rendiamo disponibile all'attaccante:

1. KNOWN CIPHER TEXT ATTACK: l'attaccante conosce solo il testo cifrato 2. KNOWN PLAINTEXT ATTACK: l'attaccante conosce testo cifrato e testo in chiaro e cerca

la chiave 3. CHOSEN PLAINTEXT ATTACK: l'attaccante può ottenere la cifratura di un testo in chiaro

a scelta. Ciò servirebbe per recuperare la chiave. 4. CHOSEN CIPHERTEXT ATTACK: l'attaccante può ottenere la decifratura di un testo

cifratop a scelta 5. CHOSEN TEXT ATTACK: l'attaccante può ottenere la cifratura e la decifratura di coppie di

testi in chiaro/cifrato CRITTOANALISI DEL CIFRARIO DI VIGENERE: Il primo ad attacare il cifrario di Vigenere fu KASINSKI. Il suo metodo di attacco, denominato TEST DI KASINSKI, si basa sull’eventuale ripetizione di alcune sequenze di lettere nel testo cifrato. Se ad esempio il testo cifrato fosse: …WPIXFGHDAFNVTV…KLXFGLO…. Allora, consodereremmo la sequenza XFG che si ripete, ipotizzando che questa sia la cifratura dello stesso testo in chiaro. Studiando tutte le ripetizioni ed elencando le distanze tra le diverse ripetizioni del testo cifrato, si può cercare di risalire al MCD delle distanze determinando così la lunghezza della chiave. Altri 2 metodi usati per effettuare la crittoanalisi del cifrario di Vigenere sono:

1. L’uso dell’INDICE DI COINCIDENZA, per individuare la lunghezza della chiave 2. L’usa dell’INDICE DI MUTUA COINCIDENZA, per individuare i caratteri della chiave

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

13

1. INDICE DI COINCIDENZA Questo indice indica la probabilità per cui 2 caratteri casuali (in coppie indistinte) siano uguali. Ricordiamo che: P(A) = numero di casi favorevoli / numero di casi possibili Supponiamo di scegliere la I coppia di caratteri:

• Avremo n modi possibili per scegliere il primo carattere • Avremo n-1 modi possibili per scegliere il secondo

In virtù di quanto detto, dobbiamo mmoltiplicare le scelte possibili, n (n-1) e poi dividere tutto per 2 dato che la combinazione di 2 lettere, ad esempio A e B, può essere: A,B oppure B,A che resta però la stessa cosa. Quindi avremo che, la probabilità per cui 2 caratteri in una sequenza siano effettivamente uguali sarà il risultato di un’analisi delle frequenze dei caratteri e, l’indice di coincidenza sarà calcolato come:

IC(x1, x2, …, x3) = Σ025 [f i(f i – 1)] / n (n-1)

dove fi è il numero di occorrenze carattere i nella stringa x1, x2, …, x3. ES. Consideriamo la parola MONO e calcoliamo l’IC(MONO) n = lunghezza stringa = 4 casi possibili = n (n-1) / 2 = 6 casi favorevoli = nro di caratteri che si ripetono (in questo caso di O) = 1 quindi IC(MONO) = 1 / 6 Consideriamo anche che indagini statistiche hanno portato ad assumere che per ogni lingua l’indice di coincidenza ha un valore costante approssimativo:

IC(x1, x2, …, x3) ≈ Σ025 pi

2 che:

• Scegliendo i caratteri x1, x2, …, x3 a caso è circa uguale a 0,038 con pi = 1/26 • Per la lingua inglese è circa uguale a 0,065 • Per la lingua italiana 0,075

Vediamo ora come si applica l’IC per il calcolo della lunghezza (t) della chiave K:

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

14

• Se avessimo una chiave K con lunghezza t = 1 allora avremmo una cifratura monoalfabetica ed in questo caso :

o se IC(x1, x2, …, x3) ≈ 0,075 (per italiano) la lunghezza è stata indovinata o se IC(x1, x2, …, x3) ≈ 0,038 la lunghezza non è 1

• Se avessimo una chiave K con lunghezza t = 2 allora avremmo una cifratura polialfabetica ed in questo caso :

o se IC(x1, x2, …, x3) e IC(x3, x5, …, xn+2) ≈ 0,075 (per italiano) la lunghezza è stata indovinata

o se IC(x1, x2, …, x3) e IC(x3, x5, …, xn+2) ≈ 0,038 la lunghezza non è 2 Da ciò capiamo che se i valori di IC non si avvicinano a quelli standard usati per la lingua considerata, allora dovremo incrementare t. 2. INDICE MUTUO DI COINCIDENZA Questo indice ci dà informazioni sul valore della chiave K0K1…Kt. L’indice dice qual è la probabilità che si ha di prendere da 2 stringhe 2 caratteri uguali e si calcola come di seguito:

IMC(x1, x2, …, x3 ; y1, y2, …, y3 ) = Σ025 (fi fi’)/ n n’

dove: fi = nro di occorrenze carattere i in x1, x2, …, x3 fi’ = nro di occorrenze carattere i in y1, y2, …, y3 ES. Consideriamo le parole CIA e CIAO e calcoliamo l’IMC(CIA,CIAO) nx ny = prodotto delle lunghezze stringhe = 3 * 4 = 12 = casi possibili casi favorevoli = nro di caratteri che si ripetono (in questo caso di C,I e A) = 3 quindi IMC(CIA,CIAO) = 3 / 12 = 1 / 4 Se le due stringhe sono state cifrate con due o più chiavi K diverse è più opportuno considerare il VALOR MEDIO dell’IMC che sarà

IMC MEDIO(x1, x2, …, x3 ; y1, y2, …, y3 ) ≈ Σ025 pi-Ko pi-K1 = Σ0

25 ph ph+(Ko-K1)

E a seconda della lingua:

• in inglese : IMC MEDIO(x1, x2, …, x3 ; y1, y2, …, y3 ) o con K0-K1 = 0 ≈ 0,065 o con K0-K1 ≠ 0 ≤ 0,045

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

15

• in italiano : IMC MEDIO(x1, x2, …, x3 ; y1, y2, …, y3 ) o con K0-K1 = 0 ≈ 0,075 o con K0-K1 ≠ 0 ≤ 0,047

La formula generale dell’IMC Medio darebbe in realtà solo 14 valori possibili in aritmetica modulare in mod26. Per determinare la chiave dobbiamo operare tutti i 26 tentativi possibili partendo da 0 studiando il sistema di t equazioni in t-1 incognite del tipo K0-Kt ottenuto. CIFRATURA SIMMETRICA – IL DES CIFRARI A BLOCCHI Il testo in chiaro viene diviso in blocchi di lunghezza fissa ed ogni blocco viene cifrato uno alla volta. Un cifrario a blocchi opera su blocchi di n bit per produrre blocchi di n bit di output. Con blocchi di n bit in chiaro, ho:

• 2n possibili output univoci e • le chiavi saranno n * 2n grandi

Il sistema ideale di cifratura dovrebbe essere quello che usa blocchi grandi di bit, realizzato su una funzione qualsiasi che mappa blocchi di bit in chiaro su blocchi di bit cifrati. Il problema, però, è l’ingestibilità delle chiavi che sarebbero troppo grandi al crescere di n. Per avvicinarmi a questa proposta, posso usare cifrature in sequenza partendo da blocchi relativamente piccoli e compiendo più cifrature una dopo l’altra. CIFRATURA DI FEISTEL Essa alterna permutazioni a sostituzioni applicando i principi di Shannon contrastando analisi statistiche:

• Principio di DIFFUSIONE : ogni carattere del testo cifrato è prtodotto da più parti del testo in chiaro

• Principio di CONFUSIONE : nascondo la relazione fra testo in uscita e il valore della chiave. Ciò si ottiene con un meccanismo di sostituzione complesso (non lineare)

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

16

Le STRUTTURE che realizzano ciò possono essere così rappresentate: LEFT RIGHT BLOCCO DI TESTO IN CHIARO IN 2 PARTI (L,R) SOTTOCHIAVE BLOCCO DI TESTO CIFRATO Gli indici rappresentano le ripetizioni delle sequenze e quello che rappresenta tale struttura è il normale funzionamento dell’algoritmo di cifratura DES. In generale i diversi cifrari si appoggiano su tale struttura e variano secondo tali parametri:

1) Dimensione del blocco input 2) Dimensioni della chiave usata 3) Da quante fasi la struttura è composta (numero di ripetizioni) 4) Come viene calcolata la chiave (quale algoritmo) e le sottochiavi di ogni fase 5) Come è composta la funzione f (funzione round)

Per effettuare la cifratura basterà solo implementare un round e lo stesso codice verrebbe usato per ogni round successivo. La decifratura usa lo stesso codice della cifratura e le sottochiavi vengono applicate in senso inverso. Esempi di cifrari di Feistel:

• DES • BLOWFISH

Li - 1 Ri - 1

f

Li Ri

K i

XOR

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

17

FUNZIONAMENTO DI DES - CIFRATURA testo in chiaro testo cifrato 64 bit 64 bit In realtà la chiave DES è lunga 64 bit solo che gli ultimi 8 byte sono usati per il bit di parità ed il controllo degli errori. STRUTTURA DEL DES Ho 16 fasi di iterazioni e prima di ogni fase c’è una Initial Permutation (IP). Dopo le 16 fasi, c’è uno scambio seguito dalla Permutation Inversa (IP-1). TESTO IN CHIARO CHIAVE 56 bit 48 bit …… …… 48 bit TESTO CIFRATO

DES

IP

Iteraz1

Iteraz16

Scambio

IP-1

Schedulazione

chiave

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

18

PERMUTAZIONE INIZIALE (IP) La permutazione iniziale (IP) è rappresentata da una tabella: all’input della permutazione, il I bit sarà il 58° dell’input; il II bit sarà il 50° dell’input. Bit iniziali 50° 58° Bit permutati 1° 2° 64° PERMUTAZIONE INVERSA (IP-1) La permutazione inversa (IP-1) esegue l’opposto di quello che fa la permutazione iniziale: Bit iniziali 1° 8° 40° Bit permutati 1° 2° 58°

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

19

LA FUNZIONE f DI ROUND : INPUT (A) 32 bit espansione E (A) J (sottochiave) 48 bit 48 bit 8 S-BOX

permutazione OUTPUT f(A,J) 32 bit ESPANSIONE: vengono duplicati 16 bit � si passa da 32 bit a 48 bit I 48 bit dopo l’espansione vengono considerati in blocchi da 6 bit l’uno nella S-BOX. Ogni blocco viene dato in INPUT alle 8 S-BOX. Ciascuna S-BOX, avrà in INPUT 6 bit e darà in OUTPUT solo 4 bit. All’uscita delle S-BOX avremo un OUTPUT di 32 bit che verrà permutato ancora prima di uscire dalla funzione di round f. come f(A,J) a 32 bit. E’ da precisare che ogni S-BOX è diversa dall’altra e i 6 bit in INPUT vengono usati come coordinate di un elemento in una tabella la cui conversione binaria dà i 4 bit di OUTPUT. Le S-BOX sono il cuore di DES. Cambiando un solo bit di INPUT variano almeno 2 bit di OUTPUT.

E

XOR

B1 B2 B3 B4 B5 B6 B7 B8 C1 C2 C3 C4 C5 C6 C7 C8

S1 S2 S3 S8 S7 S6 S5 S4

P

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

20

SCHEDULAZIONE DELLE CHIAVI INPUT CHIAVE K (64 bit) Permutaz. C0 D0 OUTPUT 48 bit 56 bit K1

Permutaz. 16 iterazioni 56 bit K16

Permutaz. PC1 : elimina i bit di parità e compie la I permutazione sui bit restanti della chiave a 56 bit PC2 . comprime i 56 bit in input con l’eliminazione di 8 bit dando in output 48 bit dopo aver effettuato un’altra permutazione. Nelle iterazioni vengono eseguiti degli SHIFT a sinistra : essi vengono effettuati sulle 2 metà considerate e per 16 iterazioni avvengono 28 shift.

PC1

LS1 LS1

C1 D1 PC2

C16 D16 PC2

LS16 LS16

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

21

FUNZIONAMENTO DI DES - DECIFRATURA TESTO CIFRATO CHIAVE 56 bit …… 48 bit (K16) …… 48 bit (K1) Le sottochiavi vengono invertite TESTO IN CHIARO SINGOLA ITERAZIONE DI DECIFRATURA Se consideriamo l’ultima operazione di decifratura prima di IP-1 : LEFT RIGHT BLOCCO DI TESTO CIFRATO IN 2 PARTI (L,R) SOTTOCHIAVE BLOCCO DI TESTO IN CHIARO

IP

Iteraz1

Iteraz16

Scambio

IP-1

Schedulazione

chiave

L15 R15

f

L16 R16

K16

XOR

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

22

Dopo la IP-1 avremo che il primo round di decifratura diventa:

LEFT RIGHT BLOCCO DI TESTO CIFRATO IN 2 PARTI (L,R) SOTTOCHIAVE BLOCCO DI TESTO IN CHIARO CARATTERISTICHE DEL DES Sicurezza di DES:

• EFFETTO VALANGA: proprietà desiderabile in cui una piccola variazione nel testo in chiaro o nella chiave dovrebbe produrre una variazione nel testo cifrato. DES ha un forte effetto valanga.

• DES è vulnerabile a causa della lunghezza di 56 bit delle chiavi: lo spazio delle chiavi è notevole ma usando più macchine funzionanti in parallelo per il loro ritrovameto, ci vorrebbero pochi giorni per trovare le 256 chiavi possibili.

• Inoltre, il fatto stesso che DES funzioni grazie a componenti come le S-Box, ha una vulnerabilità insita nel fatto che chi costruisce le S-BOX può sapere come decrittare un eventuale messaggio crittato in DES.

• I metodi usati per la crittoanalisi di DES sono basati su BRUTE FORCE ATTACK con un minimo di coscienza del testo in chiaro oppure su crittoanalisi DIFFERENZIALE o LINEARE.

o Crittoanalisi differenziale: si considerano 2 messaggi m e m’ con una differenza XOR nota ∆m e si considera la differenza fra le metà intermedie del messaggio ∆mi = mi XOR mi’. Allora si avrà che : ∆mi+1 = mi+1 XOR m’i+1= ∆mi-1 XOR [f(mi,Ki) XOR f(m’i,Ki)] Supponendo che più coppie di input di f con la stessa differenza generino la stessa differenza di output nel caso in cui venga usata la stessa sottochiave, se si conoscono ∆mi e ∆mi-1 con elevata probabilità allora si conosce ∆mi+1 con elevata probabilità.

R16 L16

f

R15 L15

K16

XOR

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

23

Inoltre se si determinano molte di queste differenze, sarà possibile determinare la sottochiave usata nella funzione f. Basta applicare tali presupposti ad ogni fase cominciando da due messaggi in chiaro m e m’ e individuando gli schemi di differenza dopo ogni fase in modo da ottenere una probabile differenza nel testo cifrato.

o Crittoanalisi lineare: questo attacco si basa sull’individuazione delle approssimazioni lineari per descrivere le trasformazioni eseguite in DES. Questo metodo può trovare una chiave DES da 247 testi in chiaro noti, rispetto ai 247 testi in chiaro scelti dell’analisi crittografica differenziale.

MODALITA’ OPERATIVE DEL DES ECB: il testo in chiaro viene gestito in 64 bit alla volta ed ogni blocco di testo in chiaro è crittografato usando la stessa chiave. E’ ideale per pochi dati. La vulnerabilità sta nel fatto che se in un messaggio compare lo stesso blocco di testo in chiaro, verrà prodotto sempre lo stesso testo cifrato, risultando troppo regolare e prevedibile. CBC: l’input dell’algoritmo di crittografia è il risultato di un XOR tra il blocco di testo in chiaro corrente e il blocco di testo cifrato precedente. Per ciascun blocco viene usata la stessa chiave. Così facendo, l’input della funzione di crittografia per ogni blocco di testo in chiaro non ha una relazione fissa con il blocco di testo in chiaro. CFB e OFB: Con queste modalità operative è possibile convertire DES in una cifratura a flussi. Nella CFB, le unità di testo in chiaro vengono concatenate in modo che il testo cifrato di qualsiasi unità risulti funzione di tutto il testo in chiaro precedente. Invece di unità di 64 bit si usano segmenti di lunghezza s di testo in chiaro. Il flusso di cifratura ha la stessa lunghezza del testo in chiaro e tale modalità opera in tempo reale. OFB, invece, ha una struttura simile a CFB ma l’input di ogni fase deriva dall’operazione di cifratura. Ciò agevola il non avere prpagazione di errori ma rende OFB più vulnerabile a modifiche del flusso. DES: CIFRATURA MULTIPLA A partire da DES si può costruire un cifrario più sicuro, senza modificare la struttura di base: cifrando più volte con chiavi diverse. DES DOPPIO : La forma più semplice di crittografia multipla prevede due stadi di crittografia con due chiavi. Dato un testo in chiaro P e due chiavi di crittografia K1 e K2, il testo cifrato viene generato nel seguente modo: C = Ek2 [ Ek1 (P)] . La decrittografia richiede l’applicazione delle chiavi in ordine inverso: P = Dk1 [Dk2(C)] Per DES questo schema prevede una chiave lunga 56X2 = 112 bit con innalzamento della potenza crittografica e notiamo cheil DES DOPPIO non produce un'unica crittografia DES somma delle due

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

24

crittografie con chiavi K1 e k2 da cui è composto. Vulnerabilità di DES DOPPIO - ATTACCO MEET-IN THE MIDDLE: Questo attacco non dipende da alcuna proprietà di DES ma può essere adottato contro qualsiasi cifratura a blocchi. L’algoritmo di attacco si basa sul fatto che, se : C = Ek2 [ Ek1 (P)] allora X = Ek1[P] = Dk2[C]. Data una coppia nota (P,C), l’attacco procede in questo modo: si esegue la crittografia di P per tutti i 256 valori di K1, si memorizzano i risultati in una tabella e la si ordina per i valori di X. Si esegue poi la decrittazione di C usando tutti i 256 valori di K2 e man mano che vengono prodotti i risultati si confrontano con la tabella cercando una corrispondenza. Quando questa viene trovata, si esegue il test delle due chiavi con una nuova coppia nota di C e P. Se le due chiavi producono il risultato corretto, allora si accettano le chiavi come corrette. Per il DES doppio, esistono 264 possibili valori cifrati che potrebbero essere prodotti da una doppia applicazione di Double DES. Questo algoritmo usa una chiave di 112 bit e dunque possono esistere 2112 possibili chiavi. Pertanto, in media, per un testo in chiaro P, le chiavi da 112 bit che potrebbero produrre un dato testo cifrato C sarebbero 2112/264, ovvero 248. Questi sarebbero anche i falsi allarmi prodotti sulla prima coppia di C e P. DES TRIPLO con 2 chiavi: Una contromisura ovvia al Meet in the Middle sarebbe il Triple DES, ovvero l’impiegare tre fasi di crittografia con tre diverse chiavi. Questo aumenta il costo dell’attacco con testo chiaro noto a 2112, oltre i limiti pratici oggi accettabili. Tuttavia si presenta il problema di gestire chiavi lunghe 56 X 3 = 168 bit. Una alternativa interessante sarebbe quella di usare una tripla crittografia ma con solo due chiavi in una sequenza : crittografia-decrittografia-crittografia: C = Ek1 [ Dk2 [ Ek1 (P)]] BLOWFISH: E’ una cifratura simmetrica a blocchi basata sulla struttura di Feistel con Input a 64 bit e 16 fasi e chiavi K dsa 1 a 14 word da 32 bit. Ha il vantaggio di essere veloce su microprocessori moderni, è molto compatto, è semplice da implementare e per questo è molto usato. Blowfish parte da una chiave di max 14 word eseguendo su essa un’espansione creando un array di sottochiavi a 32 bit detto P-array. Inoltre Blowfish, come DES fa uso di S-BOX, in questo caso 4 ognuna da 256 word. L’espansione avviene partendo dall’inizializzazione del P-Array e delle S-Box con valori della parte frazionaria del numero costante π. Le sottochiavi vengono sommate alla chiave data e ad ogni sottochiave viene sostituito l’output della somma XOR tra il P-array i K-Array. Anche i valori delle S-Box vengono reinizializzati:

• sia EP,S[Y] la cifratura di Y con il P-Array e le S-Box. • vengono calcolati :

o P-Array � P1,P2 = EP,S[0] � P3,P4 = EP,S[P1], [P2] � …

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

25

� P17,P18 = EP,S[P15], [P16] o S-Array

� S1,0,S1,1 = EP,S[P17], [P18] � … � S4,254,S4,255 = EP,S[S4,252], [S4,253]

P e S vengono precalcolati e memorizzati in 4 Kb di spazio e Blowfish viene eseguito 521 volte. Ecco perché Blowfish non è adatto per apllicazioni in cui la chiave cambia spesso. BLOWFISH – cifratura LEFT RIGHT BLOCCO DI TESTO IN CHIARO IN 2 PARTI (L,R) BLOCCO DI TESTO CIFRATO Quello che è rappresentato è solo una delle 16 fasi che si susseguono nella cifratura. Le operazioni saranno quindi:

• La SOMMA mod 232 (+) • L’XOR

La FUNZIONE DI ROUND f riceverà: • 32 bit in input • Divisi i seguito in 4 byte a,b,c,d che vengono usati come indici di ogni S-Box

Li - 1 Ri - 1

f

Li Ri

Pi XOR XOR

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

26

FUNZIONE f Out Blowfish è una cifratura simmetrica formidabile. A differenza di DES:

• Le S-BOX dipendono dalla chiave • Le S-BOX e le sottochiavi vengono prodotte applicando ripetutamente lo stesso algoritmo E

ciò complica la crittoanalisi • In ciascuna fase le operazioni vengono svolte su entrambe le metà dei dati per garantire

maggiore resistenza crittografica anchese viene effettuato un XOR che è pur sempre un’operazione lineare

• È formidabile contro attacchi a forza bruta con chiavi fino a 448 bit • È estremamente veloce

RC5 È un algoritmo di cifratura simmetrico ed è stato progettato per adattarsi ad implementazioni hd e sw, per essere veloce ed essere usato ache da processori con word di varia lunghezza. Inoltre ha un numero di fasi variabile e la lunghezza delle chiavi usate può variare. Ciò fa si che questo algoritmo si presenti semplice e con requisiti di memoria bassi. RC5 è in realtà una famiglia di algoritmi di crittografia caratterizata da 3 parametri:

• w : dimensioni della word in bit • r : numero delle fasi • b : numero in byte della chiave segreta

RC5 esegue la crittografia a blocchi di testo in chiaro lunghi 32, 64 o 128 bit in blocchi di testo

S-Box 1 S-Box 2

+

XOR

+

S-Box 3

S-Box 4

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

27

cifrato della stessa lunghezza. La chiave va da 0 a 2040 bit. Le operazioni usate sono: • La SOMMA mod 232 (+) • La SOTTRAZIONE mod 232 (-) • L’XOR • Lo SHIFT A SX di a di un numero di bit dato dai log w bit meno significativi di b • Lo SHIFT A DX di a di un numero di bit dato dai log w bit meno significativi di b

RC5 – CIFRATURA Se ho in input un testo in chiaro in 2 blocchi (A,B) e considero la prima delle sottochiavi contenute in S[0,…., 2r+1] allora la cifratura è:

testo in chiaro in 2 blocchi (A,B)

…… ……

…LE1… …RE1… LEr testo cifrato in 2 blocchi 2w bit REr

La decifratura sostituisce ai (+) i (-) con la schedulazione delle chiavi invertita.

A B

S[0]

XOR

shift

+ +

XOR

shift

+ +

XOR

S[1]

shift

+

XOR

shift

+

S[1]

S[3]

S[2r + 1] S[2r + 1]

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

28

AES Per migliorare l’implementazione di DES si è voluto costruire un cifrario a blocchi per uso commerciale, più efficiente e sicuro. Dopo più selezioni si è costruito un cifrario che lavora in parallelo sull’intero blocco di input e non è un cifrario di Feistel come DES. L’AES, infatti, si presenta come un cifrario a blocchi di 128 bit e chiavi lunghe 128, 192 e 256 bit, Esso garantisce resistenza contro tutti gli attacchi conosciuti e una discreta velocità e compattezza del codice su più piattaforme derivante da una particolare semplicità progettuale. AES – Funzionamento Um blocco di 128 bit, rappresentato da una matrice 4 x 4, entra in INPUT; viene copiato in un array detto STATE che viene modificato in ogni fase di cifratura e decifratura. Al termine della fase finale, viene copiato in una matrice di OUTPUT. La chiave, consideriamo quella a 128 bit, viene rappresentata come una matrice 4 x 4 di byte. Con 128 bit sono possibili 2128 chiavi diverse. L’algoritmo AES elabora l’intero blocco di dati in parallelo durante ogni fase usando sostituzioni e permutazioni. La chiave in INPUT viene espansa in un array di 44 word a 32 bit, w[i] e per ogni fase vengono usate come chiavi 4 word distinte. Vengono usate 4 diverse fasi:

• Una per la permutazione : SHIFT ROWS • Tre per la sostituzione :

o SUBSTITUTE BYTES che usa una S-BOX per svolgere una sostituzione del blocco byte per byte

o MIX COLUMNS che usa l’aritmetica dei campi finiti GF (28) o ADD ROUND KEY, una semplice operazione XOR bit a bit del blocco corrente con

una porzione della chiave espansa. Sia per la crittografia che per la decrittografia la cifratura inizia con la fase detta ADD ROUND KEY : essa usa la chiave e perciò inizia e finisce con essa. La cifratura presenta un’alternanza di crittografia XOR di un blocco, seguita da una dispersione del blocco stesso. Ogni trasformazione è reversibile e le trasformazioni shift rows, substitute bytes e mix columns fanno uso della funzione inversa dell’algoritmo di decrittografia. La funzione add round key, invece opera solo un XOR tra chiave e il blocco. L’algoritmo di decrittografia usa la chiave espansa in ordine inverso ma esso non risulta uguale a quello di crittografia. TRASFORMAZIONE SUBBYTES : realizza una semplice tabella definendo una matrice 16 x 16 di byte detta S-BOX che esegue una permutazione di 256 bytes secondo tale logica:

• i primi 4 bit del byte Si,j indicano la riga della S-BOX • gli altri 4 bit la colonna

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

29

I valori di riga e colonna fungono da indici delle S-BOX per selezionare univocamente un valore di uscita a 8 bit. COSTRUZIONE DELLA S-BOX

1. Si inizializza la S-BOX con il valore dei byte in sequenza ascendente riga per riga 2. si associa a ciascun byte della S-BOX il suo inverso moltiplicativo nel campo finito GF 3. ciascun byte della S-BOX è fatto da 8 bit.

TRASFORMAZIONE SHIFT-ROW , realizza una permutazione dei byte delle righe di STATE, disponendo 4 byte di una colonna di state su 4 diverse colonne. TRASFORMAZIONE MIX COLUMNS ogni byte di una colonna viene mappato in un nuovo valore della funzione di 4 byte nella colonna TRASFORMAZIONE ADD ROUND KEY esegue un XOR tra i 128 bit di STATE e i 128 bit della chiave della fase in cui ci si trova. Opera tra i 4 byte della colonna di STATE e una word della chiave espansa. ESPANSIONE DELLA CHIAVE , richiede in ingresso una chiave di 4 word dalla quale si genera un array di 44 word (176 byte) La chiave viene copiata nelle prime 4 word della chiave espansa e il resto è riempito di 4 word alla volta. Ogni word w[i] dipende dalla precedente w[i-1] e dalle word w[i-4] che è 4 posizioni indietro. CIFRARI A FLUSSI – RC4 Una tipica cifratura a flussi esegue la crittografia del testo in chiaro byte per byte. In esse vi è una chiave che funge da input di un generatore di bit pseudocasuali che produce un flusso di numeri di 8 bit apparentemente casuali. Il flusso pseudocasuale è imprevedibile se non si conosce la chiave in input. L’output del generatore è chiamato KEYSTREAM e viene combinato con il flusso di di testo un byte alla volta utilizzando un XOR. Cifratura a flussi vs. One time Pad La cifratura di flussi è simile a quella One time Pad, la differenza sta nel fatto che One time Pad utilizza un flusso di numeri veramente casuale mentre la cifratura a flussi usa un flusso di numeri pseudocasuali. Cifratura a flussi vs. Cifratura a blocchi La cifratura a flussi può essere sicura quanto una cifratura a blocchi con una chiave di lunghezza analoga. Il vantaggio sta nella velocità e nella semplicità in termini di codice. Mentre, la cifratura a blocchi, dal canto suo, ha cme vantaggio rispetto a quella a flussi il fatto che consente di riutilizzare le chiavi. Se due testi in chiaro vengono crittati con la stessa chiave utilizzando una cifratura di flussi, la crittoanalisi risulterà piuttosto semplice: se i due flussi venissero combinati insieme da un XOR il risultato sarebbe l’XOR dei testi in chiaro originali. Se questi fossero stringhe con proprietà note, la crittoanalisi avrebbe successo.

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

30

RC4 RC4 è una cifratura con chiave di dimensione variabile ed operazioni orientate ai byte. L’algoritmo si basa su una permutazione casuale. Per ogni byte sono necessarie da 8 a 16 operazioni macchina e la cifratura può essere eseguita molto velocemente anche in versione software. RC4 è la cifratura a flussi più diffusa. Funzionamento di RC4 Una chiave di lunghezza variabile (da 1 a 256 byte) inizializza un vettore di stato S[i] con 1<i<256 byte. Per la crittografia e decrittografia viene generato un byte K tratto da S selezionando una delle 255 voci. A ciascun valore generato di K le voci in S vengono permutate. Dopo di ciò, per la crittografia viene fatto l’XOR del valore K con il byte successivo di testo in chiaro. Per la decifratura si esegue l’XOR del valore di K con il byte successivo di testo cifrato. Dal vettore della chiave K[0,…,h-1] con 0<h<257 creo un vettore espanso T formato dai valori del vettore della chiave, ripetuti fino a completare la lunghezza di 255. T viene usato per compiere le permutazioni e l’aggiornamento dei valori su S. Dopo l’aggiornamento, la chiave non viene più usata. Con chiavi a 128 bit non si conoscono attacchi ma nel caso di WEP si è scoperto un attacco direttamente rivolto contro il protocollo che usava, nelle su prime versioni, password lunghe max 40 bit. CIFRATURA ASIMMETRICA – Cifratura a chiave pubblica Nella cifratura simmetrica ci si basa sul fatto che gli interlocutori debbano condividere una chiave comune. Essi dovranno assolutamente far uso di un canale privato destinato allo scambio della chive. Questo, però, è un problema perché il canale privato deve risultare assolutamente sicuro. Per aggirare il problema del canale privato si può affidare il messaggio con la relativa chiave ad un’entità fidata che stabilisce la chiave di sessione e la invia ad entrambi gli interlocutori. Ulteriore problema sarebbe rappresentato dal fatto che un certo numero n di interlocutori devono condividere la chiave: se n è troppo alto il numero delle chiavi segrete diverrebbe n2/2. Tutto questo ha portato allo sviluppo dello scenario dei CIFRARI ASIMMETRICI in cui ogni interlocutore ha 1 chiave privata e ha più chivi pubbliche diverse dalle chiavi private. - Funzionamento Con le Public Key dei destinatari corrispondenti si cifrano i messaggi. Una volta che essi giungono a destinazione, il destinatario può decifrare il messaggio con la sua chiave Privata. Le corrispondenze Utente � Public Key sono contenute in un file detto File Pubblico.

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

31

In termini matematici, se : - M è il messaggio in chiaro - C è quello cifrato - KU è la chiave pubblica - KR è la chiave privata

, allora l’utente A per cifrare un messaggio da inviare a B eseguirà tale operazione di cifratura E: C = EKu(B) (M)

e B, ricevuto il messaggio da A per decifrarlo eseguirà la decifratura D: M = DKr(B) (C)

Un banale attacco a questo sistema sarebbe quello di mirare al file pubblico cambiando le corrispondenze, tutto verrebbe falsato. Caratteristiche principali di questo sistema sono:

1. chiunque può cifrare un messaggio per l’utente A ma solo A deve poterlo decifrare 2. non esistono chiavi condivise 3. computazionalmente inammissibile trovare la chiave di decifratura dell’algoritmo e della

chiave di cifratura 4. le chiavi possono essere invertite: quelle della cifratura possono essere usate per decifrare e

lo stesso al contrario. Aplicazioni del sistema a chiave pubblica sono:

1. encryption/decryption 2. firme digitali 3. scambio di chiavi

Algoritmi usati: 1. RSA, per cifrare, decifrare, firmare e scambiare chiavi 2. CURVE ELLITTICHE, usate per gli stessi scopi di RSA 3. DSS, che è lo standard per la firma digitale

Differenze fra cifrari simmetrici e asimmetrici I cifrari simmetrici sono più veloci e sufficienti in diversi ambiti. Inoltre la stesso algoritmo che si usa per cifrare corrisponde alle stesse chiavi. In questo sistema, però mittente e destinatario sono obbligati a condividere le chiavi che dovranno restar segrete per garantire sicurezza. Senza la chiave segreta comune non si può decifrare un messaggio dato che senza di essa non è possibile risalire ad un testo in chiaro conoscendone il rispettivo cifrato e non sarebbe possibile neanche risalire alla chiave avendo a disposizione testo in chiaro e cifrato. I cifrari asimmetrici , rispetto a quelli simmetrici sono più lenti e ad un algoritmo fanno corrispondere 2 chiavi (e non una). In questo modo mittente e destinatario usano coppie di chiavi correlate ma ben distinte ed di queste solo una resterà segreta e mai condivisa. A questo punto

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

32

conoscere l’algoritmo di cifratura e una delle due chiavi non servirà in nessun modo per risalire all’altra chiave. Inoltre dobbiamo dire che gli algoritmi di cifratura asimmetrica si basano su funzioni matematiche e non su operazioni di sostituzioni e permutazioni come gli analoghi simmetrici. Crittoanalisi Come la crittografia simmetrica, anche la crittografia a chiave pubblica è vulnerabile ad un attacco a forza bruta. La contromisura resta sempre la scelta di chiavi di grandi dimensioni tali, però, da rendere possibile l’esecuzione pratica della cifratura e della decifratura. Le dimensioni delle chiavi che renderebbero impossibile attacchi di forza bruta generano velocità di cifratura/decifratura troppo lente per gli usi generali. Un altro tipo di attacco dal quale questo tipo di crittografia deve difendersi è quello che mira a calcolare la chiave privata dalla chiave pubblica. Matematicamente non è detto che ciò non possa avvenire. RSA Lo schema RSA è una cifratura a blocchi in cui il testo in chiaro e il testo cifrato sono interi compresi tra 0 ed n-1 per un dato valore di n. Il valore n, normalmente, è pari a 1024 bit ovvero 309 cifre decimali. RSA- funzionamento In fase di CIFRATURA il testo in chiaro M viene crittografato a blocchi, dove ciascun blocco è un valore binario minore o uguale a log2(n) ovvero deve avere dimensioni di k bit dove 2k < n < 2k+1. La cifratura sarà, matematicamente:

C = Me mod n (cifratura) M = Cdmod n (decifratura)

Il valore di n deve essere noto sia al mittente che al destinatario. Il mittente conosce il valore di e mentre solo il destinatario sa il valore di d. Questo è un algoritmo che fa uso, quindi, di :

- Una chiave pubblica KU = {e, n} - Una chiave privata KR = {d, n} - Il valore di n è trovato moltiplicando fra di loro 2 numeri primi p e, quindi n = pq - Inoltre sappiamo che Ф(n) = funzione toziente di Eulero = (p-1)(q-1)

Per il calcolo dei due esponenti (pubblico e privato) “e” e “d” vengono usati due teoremi fondamentali nell’algebra modulare: il Teorema di Euclide Esteso e quello del Resto Cinese.

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

33

Teorema di Euclide : dice che per calcolare il gcd (a, n), quindi il massimo comune divisore di a ed n che sono primi tra loro, si deve iterare finchè n=0 questa sostituzione: (a,n) (n, a mod(n) ). Il valore trovato di a, sarà anche il gcd (a,n). Teorema di Euclide Esteso : il teorema estende quello visto prima e permette di calcolare nello stesso tempo il massimo comune divisore di numeri che sono primi relativi tra di loro e pone gcd(a,n) = d calcolando anche d = gcd(a,n) = a x + n y. Nel caso in cui gcd(a,n) = 1 potremmo scrivere l’equazione dell’algebra modulare ax = d (mod n) come : ax = 1 (mod n). In questo caso per calcolare d = gcd (a,n) e x ed y devo

• iterare i passi normali: (a,n) (n, a mod(n)) per trovare d quando (a,n) (gcd=1, 0) • e costruire la tabella seguente: i

iterazione ai ni d xi yi

0 ai ni d yi+1 xi+1-[ai/ni * yi+1] 1 ai ni 1 yi+1 xi+1-[ai/ni * yi+1] 2 Gcd = 1 0 1 1= ai 0 = yi

PRIMO ESEMPIO NUMERICO : Calcolare gcd (7,5) tale che ax + yn = gcd(a,n) = d

i iterazione

ai ni d xi yi

0 7 5 1 -2 3 1 5 2 1 1 -2 2 2 1 1 0 1 3 1 = d 0 1 1 0

Quando trovo (a,n) (a,0) allora : (d,xi,yi) (1,a,0), dove i è il numero dell’iterazione corrispondente. Poi itero i passaggi salendo nella tabella dall’ultima iterazione alla prima:

• associo a (d,xi,yi) (d, yi+1, xi+1-[ai/ni * yi+1]) avendo cura di considerare solo la parte intera nella divisione ai/ni. [Vedere tabella per capire meglio come i risultati sono stati ottenuti.]

Nell’esempio, quindi, troviamo che

• gcd(7,5) = d = 1 • d = ax + yn 1 = (-2)* 7 + (3)*5 • e quindi possiamo dire che : 5-1 mod7= 3, che è l’inverso moltiplicativo che cercavamo. •

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

34

SECONDO ESEMPIO NUMERICO : Calcolare gcd (11,5) tale che ax + yn = gcd(a,n) = d

i iterazione

ai ni d xi yi

0 11 5 1 1 -2 1 5 1 1 0 1 2 Gcd = 1 0 1 1 0

Nell’esempio, quindi, troviamo che:

• gcd(11,5) = d = 1 • d = ax + yn 1 = (1)* 11 + (-2)*5

e quindi possiamo dire che : 5-1 mod11= -2 , che è l’inverso moltiplicativo che cercavamo. Inoltre dalle proprietà dell’aritmetica modulare possiamo dire che:

• 5-1 mod11= -2 = 9 mod11 Nel caso in cui n è composto da 2 numeri primi ( p e q) tra di loro (primi relativi) :

• n = p q • l’eqazione ax = d (mod n) ha come unica soluzione l’unica soluzione del seguente sistema :

ax = d (mod p)

ax = d (mod q)

come appunto avviene nell’RSA. Per poter risolvere il sistema precedente faccio uso del TEOREMA CINESE DEL RESTO (CRT) il quale ci dice che se ho:

• due primi relativi q e p, 5 e 13: o q = m1 = 5 o p = m2 = 13

• il numero n è dato da p * q = 5 * 13= 65 = M • i due resti di p e q :

o a1 = 2 o a2 = 3

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

35

la soluzione X del sistema: x = a1 mod m1 x = 2 mod 5 x = a2 mod m2 x = 3 mod 13 sarà : X = Σt

i=1 (ai * M i * yi) mod M X = [(a1 * M 1 * y1) + (a2 * M 2 * y2)] mod M X = (2 * 26 + 3 * 40 )mod 65 = 42 mod 65, dove: M1 = M / mi yi = Mi

-1 mod mi A questo punto siamo in grado di poter generare le chiavi KU e KR:

• KU = {p,n, e} • KR = {n, d}

dove devono vale le seguenti relazioni: • n = p*q • Ф(n) = Ф(p) * Ф(q) = (p-1) * (q-1) • gcd(Ф(n), e) = 1 , come da Teorema di Euclide , con 1 < e < Ф(n) ed e primo con Ф(n) • e Ф(n) = 1 mod (n) secondo il Teorema di Eulero • d = e-1 mod Ф(n), ovvero d*e = 1 mod Ф(n) , con 0 < d < n

Sicurezza nella generazione delle chiavi Se un eventuale attaccante volesse risalire ad una CHIAVE PRIVATA conoscendo già il file pubblico di un utente KU{n, e}, potrebbe:

• fattorizzare n � computando Ф(n) = Ф(p) * Ф(q) = (p-1) * (q-1) o potendo calcolare Ф(n) l’attaccante saprebbe fattorizzare n risolvendo il sistema:

n = p q Ф(n) = (p-1) * (q-1) Ottenendo come soluzione le radici di questa equaz. : p2 – (n - Ф(n) + 1 ) p + n = 0

• computare d � e-1 mod Ф(n) conoscendo n ed e. A questo punto, tutto questo giustifica il fatto che:

• se l’attaccante fattorizza n � computa d • se l’attaccante computa d � fattorizza n

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

36

Soluzione: A questo tipo di problema, RSA potrebbe rispondere attraverso l’uso di numeri primi p e q di lunghezza simile e di almeno 2048 bit. Sicurezza della cifratura RSA L’attaccante, se volesse calcolare un messaggio M in chiaro avendo a disposizione:

• chiave pubblica KU{ n, e } • testo cifrato C = Me mod n

fattorizzando n computerebbe M dato che: 1. fattorizzarebbe n 2. calcolerebbe Ф(n) = (p-1) * (q-1) 3. calcolerebbe d = e-1 mod Ф(n) 4. ricaverebbe M decifrando C � M= Cd mod n

A questo punto, tutto questo giustifica il fatto che:

• se l’attaccante fattorizza n � computa M • se l’attaccante computa M � non è possibile sapere si potrebbe fattorizzare n

Attaccare RSA

CHOSEN CIPHERTEXT ATTACK: basato sulla proprietà degli isomorfismi dell’operazione di esponenziazione. Supponiamo di avere 2 testi in chiaro da cifrare M1 e M2: M1 C1 = M1

e mod n ( M1 * M 2)

e = M1e * M 2

e = (C1 * C2) mod n M2 C2 = M2

e mod n In questo modo, l’avversario potrebbe:

1. scegliere un messaggio a caso 2. moltiplicarlo per un xe mod n a caso ottenendo un nuovo messaggio cifrato C’ 3. decifrare C’ ottenendo un messaggio M’ = (C’)d mod n

Sapendo che:

• M’ = (C’) d = ( C * xe)d M’ = Cd * x1 mod n • C = Md mod n • Cd = (Me)d mod n dove, (Me)d = M1 perché : ed = 1 modn e • M1 è proprio il messaggio originale

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

37

l’avversario potrebbe calcolare a partire dalla quantità x l’inversa x-1 mod (n) e moltiplicare tutto per M’ ottenendo M originale. COMMON MODULUS ATTACK: si basa sulle proprietà del modulo usato. Supponiamo che 2 utenti in comunicazione hanno chiavi con stesso modulo n :

• KA = {n, e1} • KB = {n, e2},

se lo stesso messaggio M viene inviato ad entrambi gli utenti, lo stesso M viene elevato ai 2 esponenti pubblici e1 ed e2 ma , tutto con lo stesso modulo n. Un avversario che intercetta i messaggi : M1

e1 mod n , potrebbe usare l’algoritmo esteso di Euclide M2

e2 mod n per trovare x e y tali che x * e1 + y * e2 = 1 mod n. Usando :

• x e y trovati dall’equazione • C1 = M1

e1 mod n • C2 = M2

e2 mod n è semplice risalire ad M in chiaro originale, dato che si sa che :

• C1x * C2

y mod n = (Me1)x * (M e2)y = Me1x + e2y = M LOW EXPONENT ATTACK: sfrutta un messaggio che fa uso di un esponente piccolo. L’esponente piccolo può creare problemi, infatti:

• Supponiamo che 3 utenti abbiano lo stesso esponente e o KA = {n1, 3} o KB = {n2, 3} con e = 3 ed il gcd = 1 o KC = {n3, 3},

• Supponiamo, inoltre, che viene mandato lo stesso M a tutti gli utenti

o CA = M13 mod n1

o CB = M23 mod n2

o CC = M33 mod n3

Sarebbe possibile risalire ad M risolvendo il semplice sistema di equazioni: x = C1 mod n x = C2 mod n tramite il Teorema del Resto Cinese, x = C3 mod n

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

38

ottenendo come risultato x = M3 mod (n1 * n2 * n3) da cui calcolare 3√x = M = x 1/3 che sarebbe il testo in chiaro originale. Altri cifrari a chiave pubblica La sicurezza di alcune crittografie si basa sulla intrattabilità del Logaritmo Discreto: in campi finiti, dal logaritmo non sempre si riesce a tornare indietro nei calcoli dato che vi è la mancanza di un algoritmo di calcolo efficiente, sicchè l’operazione di esponenziazione diviene un’operazione ONE WAY. Gli algoritmi che si basano sulla complessità del Logaritmo Discreto sono:

• Crittosistema di El-Gamal • Firme digitali di El-Gamal e DSS • Accordo di chiavi di Dieffie-Hellman

Crittosistema di El-Gamal Considerando che Zp = {0,…,p-1} e che Z*p = { a appartenente a Zp : gcd(a,p) =1}, allora diciamo che g è GENERATORE DI Z’p se, iterando l’operazione considerata per tutti gli elementi del campo, l’operazione genera il campo stesso. ESEMPIO PRATICO: Se considero Z*p con p = 11 (numero primo), allora 2 elevato a tutti gli elementi del campo (da 1 a p-1) mi genera tutti gli elementi del campo stesso: g=2 � generatore di Z*11 210 = 1024 = 1 mod11 21 = …… = 2 mod11 28 = 256 = 3 mod11 22 = …… = 4 mod11 24 = 16 = 5 mod11 29 = 512 = 6 mod11 27 = 128 = 7mod11 23 = …… = 8 mod11 26 = 64 = 9 mod11 25 = 32 = 10 mod11 # infatti gli elementi vanno da 1 a 10 ovvero da 1 a p-1.

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

39

Per creare la Chiave Pubblica abbiamo bisogno di : • p � numero primo considerato per il campo • g � generatore di Z*p comune a tutti gli elementi • α � elemento che appartiene a Zp-1 (parte privata) • β � elemento che appartiene a Zp-1 (parte pubblica) = gα mod p

Quindi, se A (utente) volesse creare per se stesso una chiave pubblica dovrebbe:

• scegliere un p primo grande • scegliere un g come generatore • scegliere un elemento α da tenere come chiave privata • calcolare β � parte pubblica = gα mod p

Il FILE PUBBLICO per A sarà dunque: A questo punto, se l’utente B deve cifrare un messaggio M indirizzandolo ad A dovrà compiere l’operazione di CIFRATURA che consiste in:

• B vede la chiave pubblica di A • Considera un elemento casuale k appartenente a Zp-1 • Calcola:

y1 = gk mod p o

y2 = M * βk mod p • Il messaggio cifrato C sarà composto da (y1, y2)

Una volta ricevuto il messaggio, A per poter DECIFRARE C:

• Calcolerà z = y1α mod p (ed α è conosciuta solo da A perché è la sua chiave privata

• Calcolerà M = z -1 * y2 mod p , ottenendo così il messaggio originale M ESEMPIO PRATICO Dati:

• p = 2579 • g = 2 • α = 765

UTENTE CHIAVE PUBBLICA A {p, g, β}

UTENTE CHIAVE PUBBLICA A {2579, 2, β=949}

APPUNTI DI CRITTOGRAFIA – Vittorio Prisco – [email protected]

40

Si ha che β = gα mod p = 2α mod 2579 = 949 [abbiamo generato la chiave pubblica di A] L’utente B, per spedire il messaggio M = 1299 ad A cifrandolo deve:

• calcolare le due quantità y1 e y2 come y1 = gk mod p = 2853 mod 2579

o y2 = M * βk mod p = 1299 * 949853 mod 2579

• Scegliendo un k appartenente a Zp-1 = Z2578 , in questo caso è k= 853 • Ricavando:

y1 = 435 o

y2 = 2396 che rappresentano il testo del messaggio cifrato denominato C (y1 , y2 ) = ( 435, 2396) L’utente A, ricevuto il messaggio,, per poterlo decifrare :

• Calcolerà z = y1α mod p = 435765 mod 2579

• Calcolerà M = z-1 * y2 mod p = (435-765 * 2396) mod 2579 Sicurezza nella generazione delle chiavi del crittosistema di El-Gamal Conoscendo {p, g, β}� chiave pubblica, e che β � parte pubblica = gα mod p, se l’attaccante potesse calcolare il logaritmo discreto di gα mod p, riuscirebbe ad avere la chiave privata α. Sicurezza della cifratura di El-Gamal

• Conoscendo {p, g, β}� chiave pubblica, e che β � parte pubblica = gα mod p, e conoscendo il messaggio cifrato C(y1, y2) dove

y1 = gk mod p y2 = M * βk mod p risolvendo il problema di DIEFFIE-HELLMAN sullo scambio di chiavi , un attaccante potrebbe risalire al testo del messaggio in chiaro.