Crittografia Il termine “crittografia” deriva dal greco “krypt´o-s” che significa “nascosto” e “graph`ıa” che significa “scrittura.
Crittografia antica Dagli scritti di Plutarco si `e venuti a conoscenza dell’uso della scitala lacedemonica intorno al 400 a.C., un rudimentale sistema rittografico che veniva sfruttato dagli spartani, in particolare in tempo di guerra. La scitala era un piccolo bastone di legno, il messaggio veniva scritto su una striciolina di pelle arrotolata intorno a essa. Una volta srotolata la striscia di pelle dalla scitala era impossibile decifrare il messaggio. La chiave del sistema consisteva nel diametro della scitala, la decifrazione era possibile solo se si era in possesso di una bacchetta identica a quella del mittente.
Crittografia antica Anche nei testi sacri si possono ritrovare numerosi esempi di scritture segrete. Nell’Antico Testamento sono stati trovati diversi tipi di codici cifranti tra i quali il Codice Atbash utilizzato nel libro di Geremia per cifrare il nome della città di Babilonia. Il Cifrario Atbash è un esempio di codice monoalfabetico molto semplice e consiste nel sostituire la prima lettera dell’alfabeto ebraico (aleph) con l’ultima (taw), la seconda (beth) con la penultima (shin) e così via. Applicandolo al nostro alfabeto si ottiene: Testo in chiaro A B C D ... W X Y Z crittogramma Z Y X W ... D C B A
Crittografia antica Svetonio nella “Vita dei dodici Cesari” racconta che Giulio Cesare usava per le sue corrispondenze riservate una cifra monoalfabetica molto semplice, nella quale la lettera chiara viene sostituita dalla lettera che la segue di tre posti nell'alfabeto: la lettera A è sostituita dalla D, la B dalla E e così via fino alle ultime lettere. Svetonio non dice nulla su come cifrare le ultime lettere dell'alfabeto; di solito si intende che si proceda circolarmente ricominciando dalla A come nella lista seguente Chiaro ABCDEFGHIJKLMNOPQRSTUVWXYZ Cifrato DEFGHIJKLMNOPQRSTUVWXYZABC
Cifrario di Cesare Più in generale si dice cifrario di Cesare una cifra nella quale la lettera del messaggio chiaro viene spostata di un numero fisso posti, non necessariamente tre. Il numero da sommare (es: +3) diviene la chiave cifrante, il suo opposto (es: -3) quella di decifrazione. La sua “debolezza” è evidente dal fatto che esisotono solo poche chiavi possibili (nell’alfabeto internazionale 26)
Versione “moderna” di Cesare Dal momento che oggi i messaggi sono costiuiti da numeri binari (byte) oggi, a volte, si preferisce alla somma l’operazione di “or esclusivo” tra i bit. A B A XOR B 1 La chiave di crittazione e decifrazione coincide ed è un numero da 0 a 255
Cifrari monoalfabetici I cifrari monoalfabetici sono cifrari di sostituzione: del testo chiaro si sostituisce ogni carattere con un altro carattere (o numero) secondo una tabella prestabilita, ottenendo il testo cifrato. Questo tipo di cifratura è “sicura” solo per messaggi molto corti; una semplice crittanalisi statistica basata sulle caratteristiche statistiche delle lingue è in genere sufficiente per forzare il testo. La chiave di cifratura cifra è la lista delle cifre in ordine alfabetico; se si cifra con lettere dello stesso alfabeto sarà un alfabeto disordinato
Cifrari monoalfabetici Il caso più generale di codice monoalfabetico è quello che prevede di usare come tabella di cifratura una arbitraria permutazione dell'alfabeto; come nell'esempio che segue: ABCDEFGHIJKLMNOPQRSTUVWXYZ DXUTNAVWKZFQGSIOYJBPLHCERM Il messaggio Arrivano rinforzi si cifra allora sostituendo una per una le lettere del chiaro con le lettere della tabella: ARRIVANORINFORZI DJJKHDSIJKSAIJMK
Cifrari monoalfabetici La decifratura richiede di cercare via via le lettere del cifrato nella tabella, recuperando le lettere del chiaro; ovvero di costruire preventivamente una tabella inversa, detta lista decifrante, che nel nostro esempio sarebbe: ABCDEFGHIJKLMNOPQRSTUVWXYZ FSWAXKMVORIUZEPTLYNDCGHBQJ così che dal cifrato si recupera il chiaro con lo stesso metodo; DJJKHDSIJKSAIJMK ARRIVANORINFORZI La chiave è molto piu lunga e possono esserci ben 26! (4X1026) chiavi diverse.
Crittanalisi statistica La crittanalisi dei sistemi mono alfabetici si fonda infatti su metodi statistici tanto più efficienti quanto più lunghi e numerosi sono i testi cifrati che si hanno a disposizione. Il fatto è che ogni lingua ha una distribuzione delle frequenze dei caratteri molto caratteristica. In italiano p.es. le lettere più frequenti sono le vocali E, A, I… Ancor più caratteristica è la frequenza dei bigrammi e dei trigrammi.
Crittanalisi statistica
Crittanalisi statistica Per forzare un testo cifrato monoalfabetico, si esegue una statistica della frequenza delle lettere presenti e si costruisce un grafico disponendo i caratteri in ordine decrescente. È molto utile rilevare anche i bigrammi e trigrammi più frequenti. I caratteri più frequenti nel crittogramma, saranno le lettere più frequenti nella lingua; e così i bigrammi e i trigrammi ... In genere è sufficiente qualche tentativo per riconoscere qualche parola e a questo punto il lavoro è ... in discesa.
Cifrari monoalfabetici Riassumiamo alcuni punti di debolezza dei cifrari monoalfabetici: Non “posizionali”: a lettere uguali corrispondono lettere uguali ovunque nel messaggio, quindi una deduzione su una parola, indebolisce tutto il messaggio.. La Crittanalisi statistica da la possibilità di ottenere facilmente le informazione di cui sopra…
Il codice di Augusto (?) Lo studioso di storia romana Robert Graves, sostiene che Augusto usava accanto al semplice codice di Cesare citato da Svetonio, un cifrario riservato più sicuro per le comunicazioni più delicate. Il metodo usa come chiave i primi cento versi del I libro dell'Iliade; il testo chiaro e il brano dell'Iliade vengono scritti in parallelo; ogni lettera del chiaro viene confrontata con la corrispondente dell'Iliade, si calcola la differenza tra i due caratteri e la sequenza dei numeri così calcolati costituisce il messaggio cifrato. Per decifrare il testo basterà compiere il processo inverso (sommare invece di sottrarre).
Il codice di Augusto (?) Non è chiaro come si distinguessero le differenze positive da quelle negative (gli antichi romani non avevano i numeri negativi), né che numero si usasse nel caso le cifre fossero uguali (il risultato sarebbe zero, altro numero ignoto ai romani).
Il codice di Augusto (?) Anche se è perlomeno “dubbia” l’attendibilità di questo codice, è interessante perché sarebbe il primo cifrario polialfabetico della storia.
Il Disco di Alberti Intorno al 1467 Leon Battista Alberti descrive nel suo trattato“De cifris” un nuovo metodo di cifratura polialfabetica. Esso consiste in un dispositivo meccanico, chiamato disco cifrante. Quest’ultimo `e costituito da due dischi concentrici in rame.
Il Disco di Alberti Il disco maggiore viene suddiviso in 24 parti uguali, dette anche Case. Su queste vengono poi riportate le lettere dell’alfabeto in chiaro: 20 lettere in ordine alfabetico, escludendo le lettere “inutili”(H,K,Y,W) e considerando J=I e V=U e i numeri da 1 a 4. Sulle case del cerchio interno (disco mobile) sono invece riportate tutte le 24 lettere dell’alfabeto (solo considerando I=J e U=V) ma in ordine sparso. Mittente e destinatario devono essere in possesso dello stesso disco e aver concordato una chiave cifrante, costituita da una coppia di lettere che determinano la corrispondenza iniziale fra i caratteri dei due dischi.
Il Disco di Alberti Per cifrare il messaggio, il mittente scrive il messaggio in chiaro senza spazi e inserendo a caso numeri da 1 a 4 all’interno del testo. Quindi, ad ogni lettera del messaggio in chiaro, lettera che va letta sul disco più grande, associa la lettera corrispondente nel disco più piccolo. Questo avviene fino a che non si incontra uno dei numeri: a quel punto la lettera corrispondente al numero determina una nuova disposizione: alla lettera A (la prima lettera della chiave) si fa corrispondere quella dedotta dal numero.
Il cifrario di Vigenére Il cifrario di Vigenère è il più semplice dei cifrari polialfabetici (associano ad ogni lettera dell’alfabeto caratteri diversi in modo da far cadere la decrittazione basata sulla frequenza delle lettere). Si basa sull'uso di una parola o per controllare l'alternanza degli alfabeti di sostituzione. Il metodo si può considerare una generalizzazione del cifrario di Cesare; invece di spostare sempre dello stesso numero di posti la lettera da cifrare, questa viene spostata di un numero di posti variabile ma ripetuto, determinato in base ad una parola chiave, da concordarsi tra mittente e destinatario, e da scrivere ripetutamente sotto il messaggio, carattere per carattere.
Il cifrario di Vigenére La chiave era detta anche verme, per il motivo che, essendo in genere molto più corta del messaggio, deve essere ripetuta molte volte sotto questo, come nel seguente esempio: Testo chiaro - RAPPORTOIMMEDIATO Verme - VERMEVERMEVERMEVE Testo cifrato - MEGBSMXFUQHIUUEOS
Cifrari polialfabetici Il vantaggio rispetto ai cifrari monoalfabetici (come il cifrario di Cesare o quelli per sostituzione delle lettere con simboli/altre lettere) è evidente: il testo è cifrato con n alfabeti cifranti. In questo modo, la stessa lettera viene cifrata (se ripetuta consecutivamente) n volte; ciò rende quindi più complessa la crittoanalisi del testo cifrato. Il cifrario di Vigenere fu violato nel 1863 da Kasiski.
Crittanalisi per Vigenere (e cifrari polialfabetici) Obiettivo: determinare la lunghezza n della parola chiave; In seguito si tratta solo di decifrare n cifrari di Cesare (o comunque monoalfabetici)
Principio base dell’ attacco di Kasiski L'attacco alla Kasiski si basa sull'osservazione che in un testo cifrato con il Vigenère si ossservano spesso sequenze identiche di caratteri a una certa distanza l'una dall'altra; questo avviene perché se due lettere sono poste ad una distanza pari alla lunghezza della chiave (od un suo multiplo) vengano cifrate nello stesso modo. Se p.es. usando la chiave VERME si scrive due volte la preposizione DEL a 30 caratteri di distanza questa sarà cifrata in modo identico essendo 30 un multiplo della lunghezza del verme che è 5.
Principio base dell’ attacco di Kasiski Si individuano le sequenze ripetute (e in un testo lungo o in più testi se ne troveranno molte) e si cerca il massimo comun divisore tra le distanze tra sequenze identiche; se trovato è la lunghezza della chiave, o tutt'al più un suo multiplo. La cosa però non è sempre così semplice perché molti digrammi ripetuti sono affatto casuali.
Crittanalisi per Vigenere (e cifrari polialfabetici) Nel 1925 Friedman trovò un nuovo metodo più efficiente per risalire alla lunghezza della chiave n. Si basa sulla numero delle coppie uguali e sulla probabilità che prese due lettere nel testo cifrato queste siano uguali.
Crittanalisi per Vigenere (e cifrari polialfabetici) Un altro metodo è basato sul test del χ2 (Chi quadro). Si provano diverse ipotesi per n da 1 a un massimo prestabilito dall'utente, per ogni valore il testo viene distribuito su n colonne che sono possibili testi cifrati con Cesare, si calcola lo scarto tra la distribuzione statistica delle presenze osservato e quello atteso per la data lingua e si sceglie come lunghezza del verme il valore che ha dato il χ2 minore.
Un codice inattacabile XRL HN OABS TBMW AX GCG TLF ENAZVXI HHZSO EJ XBH WZTFRNNNVE XLV NIVKUKX LW VWFXAHU UHNIQ E EAINZRSKAL In una caverna sotto terra viveva uno Hobbit. Non era una caverna brutta, sporca, umida, piena di resti di vermi Per un mago come me non può esserci nulla di più importante che aiutare le giovani menti a raffinarsi
Il cifrario di Vernam Il cifrario di Vigenere ha il suo tallone d'Achille nel fatto di essere un insieme di cifrari di Cesare intercalati a distanza fissa, cosa che ne rende possibile e anzi molto facile la crittanalisi, tanto più se la chiave è breve. Ben diversa sarebbe però la situazione se la chiave avesse lunghezza infinita o, che in fondo è lo stesso, fosse lunga come il testo chiaro (o meglio come la somma di tutti i testi chiari).
Il cifrario di Vernam È questa l'idea proposta da Gilbert S. Vernam nel 1917 e brevettata nel 1919, per il cifrario che porta il suo nome; viene generata una chiave del tutto casuale, e dunque imprevedibile, lunga come il testo; a questo punto il chiaro e la chiave vengono “operati" proprio come nel cifrario di Vigenere. L'unica differenza è che nel Vernam si operano con singoli bit che codificano la lettera nei codici usati nelle telecomunicazioni attraverso una disgiunzione esclusiva XOR. Infatti se la chiave è totalmente casuale e lunga come il testo allora il testo cifrato non contiene alcuna informazione sul testo chiaro, ed è del tutto al sicuro dagli attacchi della crittanalisi statistica.
Il cifrario di Vernam Per avere una sicurezza assoluta non si dovrebbe mai riutilizzare la stessa chiave; se si utilizza più volte la stessa chiave infatti questa torna ad essere più breve del messaggio, o meglio della somma di tutti i messaggi e il cifrario non è più perfetto. Per questo motivo questo tipo di cifrario viene detto a chiave non riutilizzabile (One time pad).
Il cifrario di Vernam Non semplice perché: – bisogna avere chiavi casuali e lunghe – difficoltà di trasmissione: chiave e testo cifrato possono essere letti con stessa probabilità se trasmessi sullo stesso canale – soluzione: scambiarsi in anticipo le chiavi Questa tecnica è tuttora usata dai servizi segreti per comunicazioni di estrema importanza
La sicurezza del codice è legata al rapporto tra la lunghezza del messaggio e della chiave. Il problema fondamentale diviene la trasmissione della chiave ! E se non c’è la possibilità di avere un canale sicuro per la chiave? Per esempio: carte di credito in internet.
Il codice Enigma Forse in nessun altra guerra come nella II guerra mondiale la Crittografia ha svolto un ruolo di primo piano. Il caso più noto è certo quello della macchina Enigma, usata dai tedeschi e considerata a torto inattaccabile; solo molti anni dopo la fine della guerra si seppe che in effetti già nel 1932, prima ancora che Hitler arrivasse al potere, l'ufficio cifra polacco aveva trovato il modo di forzare l'Enigma.
Il codice Enigma La macchina ha al suo interno un certo numero di rotori intercambiabili con 26 posizioni a scatto prefissate, indicate con le 26 lettere dell'alfabeto su alcuni modelli, su altri invece con 26 numeri da 01 a 26; le 26 posizioni anteriori sono collegate elettricamente in modo disordinato con quelle posteriori.
Il codice Enigma Quando l'operatore preme un tasto p.es. la A un segnale elettrico passa da rotore a rotore fino al rotore finale detto il riflettore e quindi torna indietro fino a mostrare una lettera illuminata che è il carattere cifrato. Se i rotori fossero fissi si tratterebbe di una cifra monoalfabetica, ma poiché ad ogni pressione di tasto i rotori avanzano di un passo, cambiando di fatto la tabella di sostituzione letterale; si tratta di una cifra polialfabetica.
Il codice Enigma I primi modelli avevano in dotazione tre rotori che potevano essere posizionati in tre posizioni all'interno della macchina; in seguito l'esercito tedesco aumentò a cinque il numero di rotori disponibili portando a 60 (5*4*3) le disposizioni possibili dei rotori. L'Enigma è una macchina simmetrica, nel senso che se la lettera A è cifrata con la G in una certa posizione del testo allora nella stessa posizione la G sarà cifrata con la A. La stessa macchina serve quindi per cifrare e decifrare; una grossa comodità operativa che è però anche una debolezza crittografica.
Il codice Enigma Non esiste possibilità di stampa, dunque l'operatore deve copiare a mano, carattere per carattere il messaggio cifrato da trasmettere. La chiave dell'Enigma è quindi la disposizione iniziale dei rotori oltre a quella dei cavi sul pannelo anteriore; questa chiave veniva cambiata dalla marina tedesca ogni 24 ore secondo una regola o una tabella prefissata; in definitiva la vera chiave segreta era questa tabella. Anche i collegamenti interni dei rotori sono segreti.
Il DES Il DES (Data Encryption Standard) è un metodo di cifratura che si è imposto come standar nelle telecomunicazioni. In pratica il messaggio alfanumerico è convertito in codice binario (di solito con il codice ASCII) in una sequenza di 0 e 1, e quindi suddiviso in blocchi B di 64 bit. A questo punto ogni blocco viene cifrato in tre passi:
Il DES - Il blocco B è sottoposto a una trasposizione iniziale Ti producendo il blocco B1; - B1 è cifrato con 16 cicli di Feistel producendo alla fine il blocco B2; (procedura ideata dal crittologo Horst Feistel nel 1973; si tratta di un cifrario che mescola trasposizioni e sostituzioni a livello di bit, attraverso una chiave segreta K di N bit (64, 128, 256 bit o altro) - B2 è sottoposto alla trasposizione finale Tf inversa della Ti.
Il DES Sin dalla sua presentazione la sicurezza del DES è stata messa in discussione; inizalmente si usava una chiave di 56 bit, ma nel 1998 un gruppo di tre aziende comunicò di aver realizzato DES Cracker una macchina per la ricerca delle chiavi dal costo di 250000$ in grado di forzare la chiave del DES in 56 ore. Comunicazione che mostrò definitivamente che la chiave di 56 bit era troppo corta. Si passò quindi al DES a 64 bit poi a un DES a 128 bit e al triplo DES. Nel 2001 è stato presentato il nuovo protocollo AES destinato a sostituire progessivamente il DES.
L’AES Il 2 gennaio 1997 l’ente l'americano NIST (National Institute of Standards and Technology) lanciò un concorso per un nuovo cifrario denominato Advanced Encryption System. Dopo aver esaminato molti cifrari proposti da crittologi di tutto il mondo il 2 ottobre 2000 il NIST annunciò di aver scelto il cifrario Rijndael che fu certificato nel 2001 come nuovo standard di cifratura. AES è disponibile con chiavi da 128, 192, 256 bit. Come il DES prevede la ripetizione di numerosi cicli identici, di traposizione e sostituzione.
Chiave simmetrica o asimmetrica? Tutti i metodi finora presentati, combinano sostituzioni (mono o polialfabetiche) e trasposizioni e sono detti a chiave simmetrica. Ciò significa che le due chiavi di cifratura e di decriptazione o sono identiche, o sono ricavabili facilmente l’una dall’altra. Conoscere una di esse quindi implica la (quasi) immediata conoscenza dell’altra.
Chiave simmetrica o asimmetrica? Da “qualche anno” il mondo della crittografia è però stato rivoluzionato dall’introduzione di una nuova tipologia di metodo di criptazione, detta “a chiave asimmetrica”. Con questa tipologia di codice, è possibile rendere nota una delle due chiavi senza, in sostanza, rendere nota la seconda! Ciò permette di risolvere il problema della trasmissione delle chiavi! Come questo sia possibile è argomento delle prosime giornate.
http://www.crittologia.eu