Crittografia: algoritmi di cifratura simmetrici e asimmetrici

Sicurezza delle reti

crittografia

crittografia

Il problema della sicurezza delle reti riveste una grande importanza dato che le reti per loro natura nonsonosicure: basta un analizzatore di rete come un semplice packet sniffer tipo wireshark per intercettare le informazioni che viaggiano su di essa. L’utilizzo della rete come strumento di transazioni commerciali e quindi come mezzo di trasferimento di denaro ha incontrato come ostacolo alla piena diffusione la non completa fiducia da parte degli utenti di internet verso gli strumenti telematici. Esistono diversi tipi di malintenzionati e diverse motivazioni per le quali questi cercano di intromettersi sulla rete.

Soggetto malintenzionato Scopo
Hacker Violare e danneggiare
Studente Curiosare nella posta altrui
Uomo d’affari Strategie di mercato
Progettista Appropriarsi di progetti altrui
Ex dipendente Danneggiare
Bancario Furto

 

Possiamo individuare diversi aspetti connessi al problema della sicurezza: la segretezza; l’autenticazione e l’affidabilità dei documenti. Con segretezza si intende l’aspetto più classico cioè: che le informazioni siano leggibili e comprensibili solo alle persone autorizzate e quindi che gli altri non le possano intercettare o comunque comprenderle. Con autenticazione si intende il processo di riconoscimento delle credenziali dell’utente in modo di assicurarsi l’identità di chi invia messaggi o esegue operazioni evitando che qualcuno si spacci per qualcun altro. Con l’affidabilità dei documenti si intende di avere la garanzia e la certezza che un documento sia originale cioè che il mittente sia certo (firma digitale).

Crittografia

Il desiderio di mantenere nascosti i contenuti di messaggi agli occhi di terzi risale già su geroglifici di 4500 anni fa dove sono state tolte le prime consonanti di alcune parole sostituendole con simboli pochi utilizzati, passando per il cifrario di Cesare ai tempi dell’impero romano fino ai giorni nostri con la crittografia simmetrica e asimmetrica. Naturalmente le regole di cirfratura devono essere note sia al mittente che al destinatario del messaggio in modo che quest’ultimo alla sua ricezione possa effettuarne il decriptaggio.  Quando la chiave di cifratura coincide con quella di decifratura lo schema crittografico si dice simmetrico e la chiave prende il nome di chiave comune. Quando la chiave di cifratura e diversa da quella di decifratura lo schema crittografico si dice asimmetrico e le due chiavi si chiamano chiave pubblica (utilizzata per la cifratura), e chiave privata quella utilizzata per la cifratura (chiave segreta e di conoscenza solo del destinatario del messaggio).

Crittoanalisi

Generalmente l’algoritmo di cifratura è noto e standardizzato e quindi soggetto a crittoanalisi (azione mirata a violare il critto-sistema). Si arrivati alla definizione di un cifrario assolutamente sicuro il cosiddetto one-time pad in esso le due parti in comunicazione condividono un blocco di chiavi di sostituzione alfabetica generate da un procedimento casuale e cambiano la chiave ad ogni lettera, quindi se il messaggio fosse intercettato l’intruso vede solamente una sequenza di caratteri casuali e non è in grado di decifrarne il messaggio. Da questo cifrario deriva il principio dei moderni sistemi che generano una password usa e getta, one time key usata principalmente dai sistemi bancari in quanto la chiave può essere utilizzata una sola volta dato che generalmente ha una validità temporale modesta (10-20 secondi) dopo che è stata generata da un dispositivo elettronico (key generator) che è sincronizzato con il sistema di controllo di accesso al servizio.

Crittografia simmetrica

L’avvento dei computer ha portato innovazioni rivoluzionare anche nella crittografia offrendo nuove possibilità e chive-simmpermettendo lo sviluppo di tecniche di crittografia profondamente diverse da quelle del passato. Anche la velocità dell’elaboratore più lento permette di violare tutti i metodi sicuri fin al 19esimo secolo in pochi secondi. Tutti i i cifrari tradizionali sono caratterizzati da una o più chiave segreta che il mittente e il destinatario dei messaggi segreti devono in qualche modo concordare e quindi scambiarsi prima di poter comunicare: questa esigenza è un grosso punto debole in quanto è praticamente impossibile avere un canale sicuro. I sistemi crittografici contemporanei vengono classificati proprio in base al numero di chiavi utilizzati: sistemi a chiave simmetrica (o privata), viene utilizzata una sola chiave. Sistemi a chiave asimmetrica (o pubblica): sistemi dove ogni utente dispone di due chiavi: una pubblica e una privata (le chiavi sono invertibili solo se si conosce la chiave privata). Un secondo livello di classificazione può essere fatto in base al tipo di dati su cui lavorano cioè se i sistemi elaborano i dati in blocchi di dimensione fissa oppure per singole unità di informazioni (bit o byte per volta): block ciphers : il messaggio viene diviso in blocchi e ogni blocco subisce la stessa trasformazione (a meno di una variazione di chiave); strim ciphers: cerca di riprodurre i vantaggi del one time pad dove ogni elemento del messaggio viene combinato con un elemento proveniente da una generazione casuale.

Il cifrario DES

Cifrario DES

Cifrario DES

Uno dei primi sistemi crittografici moderni a chiave simmetrica è sviluppato da horst Feistel per l’IBM nel 1976 ed è diventato uno standard negli USA per la protezione dei dati sensibili. La National security agency lo ritenne un sistema pubblico, efficiente, compatibile e quindi certificato. DES è un algoritmo simmetrico a chiave segreta di 64 bit ma dei quali 8 sono di controllo sono quindi 56 bit utili e tramite questa chiave prevede 16 trasformazioni successive (trasposizione, sostituzione che rendono DES un cifrario misto) applicate a ogni blocco del messaggio.

  1. Praticamente il testo in chiaro viene suddiviso in blocchi di 8 byte e scrivendo ASCII da ogni blocco si otterrà una stringa di 64 cifre binarie:
  2. a queste cifre viene applicata una trasposizione di 56 bit alla chiave e successivamente per 16 volte si applica una funzione cifrante di sostituzione dei bit, usando due porzioni della chiave di 28 bit ciascuna delle quali viene ruotata a sinistra di una certo numero di bit che dipende dal numero di iterazione;
  3. come ultimo passaggio viene effettuata una trasposizione inversa a quella iniziale. La decifrazione avviene utilizzando la medesima chiave adoperata per la cifratura, solo che i passi vengono effettuati nell’ordine inverso;

è quindi un sistema simmetrico dato che sia l’emittente del messaggio che il ricevente devono conoscere la stessa chiave segreta. Il DES viene anche utilizzato per cifrare file personali su un disco locale. Per circa 20 anni il DES è utilizzato come un cifrario assolutamente sicuro e alla sua presentazione fu comunicato che per violarlo sarebbe stato necessario costruire un elaboratore dal costo di un milione di dollari ma le prime critiche arrivarono verso la fine del secolo scorso per la lunghezza della chiave (2 alla 56 chiavi possibili) ritenuta insufficiente con l’evoluzione tecnologica dei moderni supercomputer. Il DES fu violato nel 1998. Nel 1999 fu istituito il triple DES basandosi sullo stesso algoritmo ma utilizzando chiavi più lunghi (168 bit invece di 54) e più passaggi di cifratura, successivamente nel 2001 venne pubblicato un nuovo standard di sostituzione l’AES (advanced encryption standard).

IDEA

Nel 1991 fu proposti il cifrario IDEA che si basa su concetti simili al DES con chiave di 128 bit dove i blocchi di 64 bit del messaggio vengono elaborati in 8 iterazioni usando le operazioni di XOR, di somma e moltiplicazione modulo 216. I 64 bit del messaggio vengono divisi in 4 gruppi di 16 e mescolati con 6 chiavi di 16 estratte dalla chiave di 128 bit.Le sottochiavi sono generate in questo modo:

  1. la chiave a 128 bit è divisa in 8 blocchi di 16 che costituiscono le prime 8 sottochiavi;
  2. le cifre della chiave a 128 sono spostate di 25 bit a sinistra in modo da generare una nuova combinazione, il cui raggruppamento a 8 bit fornisce le prossime 8 sottochiavi;
  3. il secondo passo è ripetuto finché le 52 sottochiavi sono generate.

Attualmente non si conoscono tecniche in grado di forzare IDEA che, grazie alla chiave a 128 bit, è immune ad attacchi “brutali” ed è il cifrario a chiave segreta più utilizzato per quanto riguarda i software commerciali di crittografia vista la sua velocità di codifica e decodifica e la sua elevata sicurezza.

AES

La valutazione degli algoritmi che parteciparono al concorso furono effettuati dal NIST secondo due diversi metri di giudizio. La prima valutazione si basò sulla verifica di requisiti fondamentali: sicurezza: dato che in AES la chiave ha dimensioni minime di 128 bit, gli attacchi a “forza bruta” con le tecnologie attuali e future non vennero neppure considerati; costo: dato che la richiesta del NIST fu quella di un algoritmo da poter esser impiegato per un’ampia gamma di applicazioni, doveva avere un’elevata efficienza computazionale e doveva poter essere utilizzato nei collegamenti a banda larga; caratteristiche dell’algoritmo e dell’implementazione: per questi requisiti si richiedevano vari aspetti progettuali dell’algoritmo, tra cui la leggibilità, la semplicità di codifica, la flessibità e versatilità per poter essere implementato in differenti piattaforme hardware e software. L’AES fu progettato dai due crittologi Joan Daemen e Vincent Rijmen sulla base di tre caratteristiche fondamentali: resistenza contro tutti gli attacchi; velocità e compattezza del codice su un’ampia gamma di piattaforme; semplicità progettuale. L’AES è un cifrario a blocchi con lunghezza del blocco da 128 bit, ma può avere chiavi indipendenti l’una dall’altra con lunghezza variabile di 128,192 o 256 bit.La prima operazione eseguita dall’algoritmo è quella di prendere i 128 bit del blocco e di disporli in una griglia 4×4 byte: si procede quindi con la codifica, che consiste fondamentalmente in un insieme di 10 fasi (rounds) ciascuna composta da 4 trasformazioni (nel caso di chiavi a 128 bit). Le quattro operazioni che costituiscono ogni round sono le seguenti:

  1. Substitute bytes: ogni byte viene trasformato mediante una permutazione non lineare di byte che vengono mappati tramite una tabella particolare definita AES stesso (tabella s-box).

    SubBytes

    Nel passaggio SubBytes, ogni byte della matrice è sostituito con i dati contenuti nella trasformazione S; bij = S(aij).

  2. Shift Rows: le righe della matrice subiscono un semplice scorrimento di bytes nell’array state, dove la prima riga rimane invariata, dalla seconda alla quarta viene sempre eseguito uno scorrimento circolare a sinistra di uno, due e tre bytes rispettivamente

    AES-ShiftRows

    Nel passaggio ShiftRows, i byte di ogni riga vengono spostati verso sinistra dell’ordine della riga. Vedi figura per i singoli spostamenti.

  3. Mix columns: ogni colonna viene trasformata mediante una operazione che può essere vista come una moltiplicazione matriciale con una particolare matrice generata da un polinomio prefissato.

    AES-MixColumns

    Nel passaggio MixColumns ogni colonna di byte viene moltiplicata per un polinomio fisso c(x).

  4. Add Round Key questa non è altro che la fase in cui viene inserita la chiave segreta che rende il cifrario sicuro: ogni bytes viene combinato in XOR con la chiave da 128 bit (16 bytes).

    AES-AddRoundKey

    Nel passaggio AddRoundKeys ogni byte della matrice viene combinato con la sua sottochiave tramite un’operazione di XOR.

AES è il primo standard approvato da NSA per comunicazioni top-secret.

Limiti degli algoritmi simmetrici

Gli algoritmi simmetrici presentano un limite comune ovvero che le persone che devono comunicare devono essere in possesso della stessa chiave e questo limita la loro diffusione.

Crittografia asimmetrica

crittografia_asimmetrica

Scambio di messaggi nella crittografia asimmetrica

L’idea alla base della crittografia asimmetrica è quella di avere due chiavi diverse una pubblica per la criptazione, e una privata per la decriptazione che deve essere mantenuta segreta. In questo caso non è necessario lo scambio delle chiavi, che per la maggior parte saranno pubbliche. Ad esempio: Bruno manda ad Anna il proprio lucchetto aperto (chiave privata) è questa lo conserva fino a che ha la necessità di spedire qualcosa a Bruno; quando Anna deve spedire un messaggio a bruno lo chiude con il suo lucchetto (lo cripta con la chiave pubblica) e glielo invia. La chiusura del lucchetto viene effettuata con una specifica chiave pubblica che ciascun utente mette a disposizione di tutti gli altri utenti che necessitano di trasmettergli messaggi mentre la chiave privata è segreta, e viene utilizzata per aprire il lucchetto e leggere il messaggio. Questo meccanismo è implementato anche nell’algoritmo di crittografia simmetrica dell’: RSA. Con la crittografia asimmetrica si risolve il problema della riservatezza criptando il messaggio con la chiave pubblica, solo il possessore della chiave privata è in grado di decriptarla, si risolve inoltre il problema dell’autenticità del mittente criptando il messaggio con la chiave privata solo con la corrispettiva chiave pubblica questo può essere decriptato e la chiave pubblica è conservata nei registri consultabili ma gestiti in modo sicuro dove ogni chiave pubblica è associata con l’identità certa del proprietario. Se il messaggio prima di essere cifrato viene anche elaborato generando un HASH che viene trasmesso con esso alla sua ricezione la verifica del HASH ci permette di scoprire se il messaggio e integro oppure se è stato modificato. Il principale svantaggio degli algoritmi di cifratura asimmetrica sta nella complessità dei calcoli che rendono poco efficiente la loro implementazione soprattutto con l’aumentare della lunghezza della chiave. Nel corso degli anni le raccomandazione dei singoli enti sulla lunghezza della chiave sono mutate con l’avanzare tecnologico degli elaboratori:

Anno Privato Azienda Governo
1995 768 1280 1536
2000 1024 1280 1536
2005 1280 1536 2048
2010 1280 1536 2048
2015 1536 2048 2048

 

RSA

L’algoritmo RSA è stato descritto nel 1977 da Ronald Rivest e un team di collaboratori al MIT e fu brevettato nel 1983 negli stati uniti. Abbiamo detto che il cuore della crittografia asimmetrica è una funzione facile da computare ma difficile da invertire, almeno che non si conosca la chiave: l’algoritmo RSA lavora sfruttando i numeri primi e come chiave utilizza un numero n ottenuto proprio dal prodotto di due numeri primi. Questo algoritmo è utilizzato per codificare un unico messaggio contenente una chiave segreta che verrà poi utilizzata per scambiarsi messaggi tramite un algoritmo a chiave segreta (AES), oltre ad essere uno degli algoritmi più usati per la cifratura delle firme digitali. Il funzionamento dell’algoritmo RSA è il seguente: Anna vuole spedire un messaggio segreto a Bruno; Bruno sceglie due numeri primi molti grandi e li moltiplica tra loro (generazioni delle chiavi); Bruno invia ad Anna in chiaro il numero che ha ottenuto quindi Anna usa questo numero per crittografare il messaggio, Anna manda il messaggio a Bruno che chiunque può vedere ma non leggere, infine Bruno riceve il messaggio e utilizzando i due fattori primi che solo lui conosce.

Firma Digitalefirma_digitale

Crittare un messaggio completo può essere troppo dispendioso e lento: spesso non serve la segretezza ma basta l’autenticazione e la certezza che il messaggio non venga modificato. In questi casi è sufficiente che il messaggio venga imbustato all’interno di un contenitore digitale che prende il nome di firma digitale che permette di riconoscere se il documento è stato modificato o meno dopo la firma, attestare la validità, la veridicità e la paternità di un documento elettronico quindi grazie ad essa è possibile risalire con certezza all’identità del firmatario. Operativamente l’utente possiede un dispositivo di firma sicuro (Smart card, token USB o business

SmartCard

Esempio di SmartCard

key) rilasciato da appositi enti certificatori il quale accertano l’identità del richiedente prima di consegnargli la carta: oltre al dispositivo l’utente viene dotato di codice segreto personale da utilizzarsi contemporaneamente

alla Smart card. La Smart card è il supporto più diffuso che risponde a tutti questi requisiti: è una tessera plastificata con dimensioni di una carta di credito su cui è integrato un microchip programmabile con una ROM che contiene il sistema operativo e i programmi fissi, una PROM che contiene il numero seriale della Smart card , e un’altra ROM  che contiene i dati del proprietario e i meccanismi di protezione che ne evitano la clonazione. Nella crittografia RSA la chiave pubblica e quella privata hanno una lunghezza minima di 1024 bit e vengono generate all’interno del dispositivo di firma (Smart card): la chiave privata non uscirà mai dal dispositivo mentre quella pubblica verrà resa nota e distribuita.

Lascia un commento

*