La crittografia come soluzione per la protezione dei dati
di Michele Nasi · 8 marzo 2008La storia della crittografia si perde nella notte dei tempi.
Il primo utilizzo documentato della crittografia, ossia di metodologie aventi come obiettivo quello di rendere un messaggio incomprensibile da parte delle persone non autorizzate a leggerlo, risale al 1900 a.C. quando uno scriba egizio fece uso, per preparare una iscrizione, di geroglifici “non-standard”.
Alcuni esperti sono però convinti che la crittografia sia nata spontaneamente dopo l’invenzione della scrittura per essere impiegata nelle applicazioni più disparate: dalla consegna di missive diplomatiche ai piani di battaglia.
Esempi “storici” dell’uso della crittografia sono il “codice di Cesare” o “cifrario di Cesare”, un algoritmo che operava per sostituzione monoalfabetica (ogni lettera del testo di partenza veniva sostituita, nel testo cifrato, con la lettera che si trova, nell’alfabeto, un certo numero di posizioni dopo; provate a decifrare il messaggio FKLHGLDPRULQIRUCL) ed il “codice Enigma”, usato dai nazisti durante la Seconda Guerra Mondiale.
La crittografia è divenuta oggi assolutamente essenziale nelle telecomunicazioni ed in molte applicazioni che necessitano la garanzia di un’elevata protezione dei dati. Su Internet, poi, sono davvero notevoli i rischi che si corrono veicolando informazioni importanti “in chiaro”, senza impiegare una qualche forma di cifratura.
La possibilità di accedere ad Internet da parte di chiunque implica notevoli problematiche di sicurezza dal momento che la Rete è ovviamente utilizzabile anche da parte di malintenzionati e le applicazioni sono divenute sempre più delicate (si pensi, per esempio, ad applicazioni commerciali, bancarie e fiscali).
Nelle moderne comunicazioni, soprattutto quelle afferenti ad applicazioni “delicate”, è quindi necessario che siano sempre rispettati i seguenti requisiti:
- Autenticazione. Il processo che permette di attestare l’identità di ciascun partecipante ad una comunicazione. Le prime forme di autenticazione che si sono usate in Rete erano basate su verifiche operate su nomi o su indirizzi. Entrambi questi controlli non possono essere considerati affidabili.
- Segretezza. E’ indispensabile fare in modo che nessuno possa leggere un messaggio, fatta eccezione per il destinatario desiderato.
- Integrità. La protezione da modifiche non autorizzate operate sul messaggio trasmesso. Il materiale inviato al destinatario non deve poter essere alternato in alcun modo prima di essere consegnato.
- Non ripudio. Un meccanismo atto a fornire la certezza che chi trasmette un messaggio non possa negare di averlo inviato.
Facciamo un paio di esempi di attacchi alla sicurezza.
Un malintenzionato può mettere in atto il cosiddetto “sniffing di pacchetti” ossia può cercare di “spiare” il contenuto dei pacchetti dati in transito alla ricerca di informazioni utili. Questa tipologia di attacco è molto semplice da mettere in atto su reti LAN dato che le schede di rete Ethernet in modalità promiscua leggono tutti i pacchetti dati in transito.
Il “packet sniffing” non è necessariamente un’attività illecita. Un amministratore di rete può servirsene, ad esempio, per monitorare quali protocolli e quindi quali applicazioni vengono impiegate all’interno della LAN e per “smascherare” eventuali operazioni sospette.
Uno tra i migliori “packet sniffer” è l’opensource WireShark: gli abbiamo dedicato un intero articolo.
Un’altra modalità di attacco è lo “spoofing di indirizzi IP” che si concretizza nella generazione di pacchetti IP contenenti, come indirizzo IP del mittente, un indirizzo falso che non corrisponde a quello realmente usato dall’aggressore. Il ricevente non può sapere se l’indirizzo è stato falsificato.
La crittografia non solo protegge i dati trasmessi in Rete evitando che possano essere alterati o sottratti da parte di aggressori, ma può essere adottata anche per autenticare un utente.
Quando si parla di crittografia, sono essenzialmente tre gli schemi ai quali ci si riferisce: crittografia a chiave simmetrica, crittografia a chiave pubblica (o asimmetrica) ed utilizzo di funzioni hash.
In tutti i casi il messaggio di partenza viene definito testo in chiaro o “plaintext“. Tale messaggio viene quindi crittografato (”ciphertext“) in modo tale da risultare incomprensibile alle persone non autorizzate infine può essere decifrato e riportato a “plaintext”.
- Piacere, siamo Alice e Bob.
Nella letteratura, quando si parla di crittografia, troverete spessissimo i due amici Alice e Bob. Si tratta di nomi convenzionali che vengono solitamente utilizzati per riferirsi a due interlocutori.
Quando altre due persone si aggiungono alla comunicazione, vengono generalmente usati i nomi di Carol e Dave.
Non può mancare “il cattivo”, di solito identificato con il nome di Mallory.
Eve è invece “uno spione” mentre Trent è una terza persona “fidata”.
- Gli algoritmi di codifica
L’algoritmo di codifica usato per cifrare un testo è pubblico. Ciò significa che è noto a tutti e quindi, potenzialmente, anche ad un malintenzionato. La “chiave” ossia il “segreto” che permette di decifrare un messaggio e risalire al testo in chiaro non deve essere invece conosciuta da parte dell’aggressore.
Negli algoritmi a chiave simmetrica, le chiavi sono identiche e segrete mentre nel caso degli algoritmi a chiave pubblica, le due chiavi impiegate sono differenti: una è pubblica e nota a chiunque, l’altra è privata e nota soltanto al legittimo proprietario.
Le funzioni hash, invece, applicano - sul messaggio originale - una trasformazione matematica non reversibile con l’obiettivo di “cifrare” il testo.
Una chiave è una sequenza di caratteri e/o cifre di lunghezza finita.
Esiste quindi il pericolo che possa essere “indovinata” per tentativi da parte di un malintenzionato (attacchi “Brute-force“).
La chiave deve essere pertanto così lunga e complessa da renderne praticamente impossibile l’individuazione. Questo requisito è divenuto oggi ancor più “stringente” dal momento che i moderni calcolatori possono effettuare milioni di tentativi al minuto essendo in grado di risalire alle chiavi di minore complessità.
Torniamo al cifrario di Giulio Cesare. E’ immediato osservare come la chiave che consente di decifrare il messaggio possa essere soltanto un numero da 1 a 25. Sono quindi sufficienti al massimo 25 tentativi per risalire alla chiave con un attacco di tipo “Brute-force”.
In un cifrario monoalfabetico, ogni lettera del testo in chiaro viene sostituita con un’altra lettera dell’alfabeto, scelta in modo arbitrario. In questo caso un attacco “Brute-force” non funziona (le possibili chiavi sono 403.291.461.126.605.635.584.000.000) ma è comunque possibile risalire al “plaintext” con una semplice analisi statistica basata sulle caratteristiche statistiche proprie delle varie lingue.
Un ulteriore passo avanti è rappresentato dal “cifrario di Vigénère“. La base di partenza è il “cifrario di Cesare” purtuttavia, invece di spostare dello stesso numero di posti la lettera da cifrare, questa viene spostata di un numero di posti variabile determinato sulla base di una parola chiave che mittente e destinatario del messaggio hanno precedentemente concordato.
Ad esempio, supponiamo che mittente e destinatario si siano accordati per l’utilizzo della chiave ROMA. Il messaggio in chiaro “ATTACCARE” diventà, cifrato, “RHFATQMRV“. In questo modo, anche un attacco basato sull’analisi statistica diviene complicato:
ATTACCARE <- testo in chiaro
ROMAROMAR <- chiave
RHFATQMRV <- testo cifrato
La lettera “R” della chiave “ROMA” indica una sostituzione della lettera del messaggio con quella posta 17 posti dopo (R è la diciassettesima lettera dell’alfabeto); nel caso di “O” la sostituzione va effettuata con la lettera al 14° posto dopo la lettera presa in esame; M = 12 avanzamenti; A = 0 spostamenti essendo la prima lettera dell’alfabeto).
Ecco allora che nel semplice esempio abbiamo usato 4 cifrari di Cesare, uno per ciascuna lettera della parola “ROMA” mentre la stessa chiave “ROMA” suggerisce in che seguenza debbono essere usati i vari cifrari.
Nei prossimi post inizieremo ad analizzare la crittografia a chiave simmetrica in ottica moderna.
Tags: cifratura, Crittografia