Crittografia Appunti a cura del prof. Ing. Mario Catalano La crittografia La crittografia è la scienza che studia la scrittura e la lettura di messaggi in codice. Solitamente, i meccanismi crittografici utilizzano sia un algoritmo sia un valore segreto, detto chiave. In genere, la struttura degli algoritmi è pubblica; le chiavi, invece, vengono mantenute segrete per ottenere la sicurezza richiesta. Attacchi alla sicurezza Tipi di attacco: Analisi Crittografica: Tramite l’utilizzo di tecniche statistiche sulla frequenze dei caratteri o sottostringhe del testo cifrato si ottengono informazioni utili sul testo in chiaro. Attacco a forza bruta: tenta ogni possibile chiave su un frammento di testo cifrato fino a che non si riesce ad ottenere una traduzione corretta. In media, per avere successo, bisogna provare meta tra tutte le possibili chiavi. Attacchi alla sicurezza La crittografia In generale, si tendono a utilizzare chiavi più lunghe possibile, per ridurre le probabilità di forzatura. È comunque necessario tener presente che più lunga è la chiave, maggiori sono i costi in termini di potenza di calcolo dei processi di crittografia e decifrazione. Le funzioni crittografiche per dati sono due: • chiavi simmetriche; • chiavi asimmetriche. Crittografia a chiave simmetrica La crittografia simmetrica, altrimenti detta crittografia a chiave segreta, utilizza una chiave comune e il medesimo algoritmo crittografico per la codifica e la decodifica dei messaggi. In sostanza, due utenti che desiderano comunicare devono accordarsi su di un algoritmo e su di una chiave comuni. Crittografia a chiave simmetrica A B Chiave Segreta Codifica Msg Chiave Segreta Internet Decodifica Msg Crittografia a chiave simmetrica I punti critici dei sistemi a chiave segreta sono i seguenti: • necessità di cambiare frequentemente le chiavi segrete per evitare il rischio che vengano scoperte; • sicurezza nella generazione delle chiavi segrete; • sicurezza nella distribuzione delle chiavi segrete. I metodi storici di Cesare Per comunicare con i sui generali, Giulio Cesare sostituiva ad ogni lettera del messaggio un'altra lettera un certo numero di posizioni più avanti nell'alfabeto. Per l'esattezza utilizzava la chiave "3", tutte le lettere venivano scalate di tre cifre: la A diventava D, la B diventava E, la C diventava F e così via. Un metodo semplicissimo ma per quell'epoca più che rivoluzionario. Il codice di Vigènere Il codice di Vigenère si basa un'operazione che viene chiamata sostituzione polialfabetica, molto più sicura di una semplice sostituzione monoalfabetica. Il Vigenère propose l'uso della tavola quadrata, composta da alfabeti ordinati spostati di una lettera. Il metodo Vigenère ebbe una fortuna immediata, era così efficace che per molti anni fu chiamato "il cifrario indecifrabile" e fu molto usato nell'ambito militare anche dopo che gli analisti ne scoprirono il metodo di decrittazione. Dato il messaggio in chiaro, lo si allinea con la chiave. PROVADICIFRATURA HTMLHTMLHTMLHTML La chiave essendo in genere molto più corta del messaggio, deve essere ripetuta molte volte. Ogni lettera del messaggio viene sostituita con la lettera della tabella che è all’incrocio tra la riga che inizia con la lettera della chiave (allineata con quella del messaggio) e la colonna che inizia con la lettera del messaggio (lettera individuata sulla prima riga) P W R K Cifrario a trasposizione per colonne Nel cifrario a trasposizione per colonne è una parola o una frase che non contiene alcuna lettera ripetuta. Lo scopo della chiave è numerare le colonne di una tabella che contiene il testo in chiaro scritto orizzontalmente per righe della lunghezza della chiave. Il testo cifrato deve invece essere letto per colonne, seguendo l'ordine alfabetico proposto dalla chiave. Crittografia moderna (a chiave simmetrica) Gli algoritmi di uso comune più difficili da decifrare utilizzano uno sei seguenti sistemi: • DES (Data Encryption Standard); • 3DES (Triple DES); • RC-4 (Rivest Cipher 4); • IDEA (International Data Encryption Algorithm). DES E’ uno schema crittografico operante su blocchi di 64 bit e utilizza una serie di fasi per trasformare 64 bit di input in 64 bit di output. Nella sua forma standard, l’algoritmo utilizza chiavi a 64 bit, 56 dei quali scelti a caso. Gli altri 8 bit sono bit di parità. 3DES E’ una versione alternativa di DES. Tale sistema, che può utilizzare una, due o tre chiavi diverse, prende un blocco di 64 bit e vi applica operazioni di codifica, decodifica e ricodifica. Criptaggi multipli Notate che mentre un file si può comprimere una sola volta, si può criptare più di una volta (proprio come un testo può essere tradotto da una lingua all'altra). Per motivi matematici, più la chiave è lunga, maggiore è la sicurezza del messaggio (problema delle restrizioni internazionali) Il problema della trasmissione della chiave Problema : se non c'e` un modo sicuro di trasmettere la chiave, chi si impossessa della chiave può leggere il messaggio. E se c'era un modo sicuro per trasmettere la chiave, perché non si e` usato per trasmettere il messaggio stesso? Cifratura a chiave pubblica Soluzione: Sistema cifrato a chiave doppia Una chiave (pubblica, nota a tutti) chiude, un'altra chiave (privata e segreta) apre. La mia chiave può aprire solo ciò che e` stato chiuso con la mia altra chiave. E` impossibile dedurre una chiave conoscendo l'altra. Il protocollo del doppio lucchetto A mette il suo messaggio per B in una scatola, che chiude con un lucchetto e invia a B. B mette il suo lucchetto alla scatola e la rispedisce ad A. A toglie il suo lucchetto e rispedisce la scatola a B. B toglie il suo lucchetto e legge il messaggio. La scatola non viaggia mai senza lucchetto Ne A ne B ha dovuto inviare all’altro la chiave del proprio lucchetto. E’ possibile comunicare con sicurezza senza dover effettuare un preventivo scambio delle chiavi ! ! ! Crittografia asimmetrica La crittografia asimmetrica viene spesso definita come crittografia a chiave pubblica e può utilizzare lo stesso algoritmo, oppure algoritmi diversi ma complementari, per codificare e decodificare i dati. Sono necessari due valori diversi, ma correlati, per la chiave: una chiave pubblica e una privata. Crittografia asimmetrica Per comunicare utilizzando la crittografia a chiave pubblica, A e B necessitano di una coppia chiave pubblica – chiave privata. Ognuno dei due deve creare la propria coppia di chiavi. Nelle comunicazioni fra loro, A e B utilizzano chiavi diverse per codificare e decodificare i dati. Crittografia asimmetrica Pub Pub Pri Pri 1 1 Pub A B 2 Pub 1 Crea una coppia chiave privata - chiave pubblica 2 Scambia solo chiavi pubbliche Crittografia asimmetrica Perché avvenga uno scambio di dati segreto, debbono verificarsi le seguenti condizioni: 2. A e B creano le proprie coppie di chiavi pubbliche e private; 3. A e B si scambiano le chiavi pubbliche; 4. A scrive a B e codifica il messaggio utilizzando la chiave pubblica di B prima di trasmetterlo via Internet; Crittografia asimmetrica 1. 2. 3. B utilizza la propria chiave privata per decifrare il messaggio; B risponde, codifica il messaggio utilizzando la chiave pubblica di A e lo trasmette via Internet; A utilizza la propria chiave privata per decifrare il messaggio. Come si usa? Per mandare un messaggio sicuro : Il mittente si procura la chiave pubblica del destinatario. Il mittente usa la chiave pubblica del destinatario per `chiudere' (criptare) il proprio messaggio e lo spedisce. Il destinatario riceve il messaggio ed usa la propria chiave privata per aprirlo (decriptarlo). Crittografia asimmetrica La segretezza è garantita nel momento che A trasmette il messaggio originale, in quanto solo B può decodificarlo con la propria chiave privata. Allo stesso tempo, viene assicurata anche l’integrità dei dati, perché il messaggio non può essere modificato se non con la chiave privata di B. Lo stesso vale per la risposta, in quanto solo A ha accesso alla propria chiave privata. Crittografia asimmetrica Il punto debole di questo meccanismo sta nel fatto che chiunque può far finta di essere A e trasmettere a B un messaggio in codice, utilizzando la chiave pubblica di B, la quale, in effetti, è pubblicamente disponibile. Crittografia asimmetrica Per i loro limiti di prestazioni, gli algoritmi crittografici a chiave pubblica non sono solitamente utilizzati per garantire la segretezza, ma si rivelano particolarmente utili per le applicazioni che richiedono una forma di autenticazione attraverso firme digitali e gestione delle chiavi. Crittografia combinata I due sistemi si possono combinare insieme, criptando un messaggio 2 volte. Così si garantisce sia la vera origine del messaggio che il suo contenuto. E` probabile che in un prossimo futuro la propria chiave privata diventerà l'equivalente legale della firma per transazioni elettroniche. Fine www.itimedi.it