<< Torna agli Approfondimenti Tematici


Antonio Fringuelli
Introduzione ai Servizi Crittografici


Cisco Certified System Instructor con vari anni di esperienza sia in campo didattico che di progettazione di reti IP in ambito Routing, Switching, Sicurezza, Wireless e Data Center.
Istruttore Ufficiale Cisco presso Fast Lane - GKI (Certificato CCSI #99604).


Per comprendere i servizi crittografici, in primo luogo è necessario comprendere la scienza della crittologia, che in sostanza è la creazione e la “rottura” dei codici segreti. La crittologia può essere suddivisa in due aree distinte: crittografia e criptoanalisi. La crittografia è lo sviluppo e l’uso di codici. La crittoanalisi si pone come obbiettivo di scoprire i codici. Esploriamo ora queste due discipline per darvi una migliore comprensione dei servizi crittografici nel loro insieme


Capire la Crittologia

Poiché la crittografia è costituito da due metà - la creazione di codici e il tentativo della “rottura” di tali codici – tutto si traduce in una sfida tra le parti. Pertanto, è naturale che a volte, ci possa essere un vantaggio di una parte rispetto all’altra. La storia offre un eccellente esempio di questo durante la Guerra dei Cent'anni tra Francia e l'Inghilterra. A quel tempo, i criptoanalisti erano più avanti dei crittografi. La Francia riteneva che la cifratura Vigenère era indistruttibile. Gli inglesi, tuttavia, violarono il codice di sicurezza.

Viene da chiedersi chi avrà la meglio in questo gioco delle parti. Per il momento, nella comunità della crittologia è sensato ritenere che i crittografi attualmente hanno la meglio. Naturalmente, questo può probabilmente cambiare un giorno.

Quindi, come facciamo a dare giudizi su chi è più avanti o qual è il codice sicuro? Infatti, nella crittografia, è veramente impossibile dimostrare che qualsiasi algoritmo è completamente "sicuro". Il massimo che si può dire è che l'algoritmo non è vulnerabile coni conosciuti attacchi di crittoanalisi. In una certa misura questo limita la nostra certezza, perché potrebbero esiste dei metodi già sviluppati ma che sono ancora sconosciuti e che potrebbero violare l'algoritmo. L'unica eccezione a questa regola è un attacco a forza bruta che consiste nel verificare tutte le soluzioni teoricamente possibili fino a che si trova quella effettivamente corretta.

Tutti gli algoritmi sono vulnerabili alla forza bruta. In pratica, se provo con tutte le chiavi possibili, una di esse certamente funzionerà. L’unico deterrente è il tempo necessario per provarle tutte.


Progettare una soluzione con crittografia

A seconda della complessità dell'algoritmo, un attacco a forza bruta potrebbe richiedere un tempo talmente eccessivo da rendere irraggiungibile l’obbiettivo. Ma nessun algoritmo è veramente indistruttibile.


La Crittografia attraverso i secoli

La crittografia ha una lunga storia, se ne faceva uso per inviare messaggi prima nel periodo romano poi in quello dei re. Anche a quei tempi gli intrighi erano tali per cui, entrare in possesso di informazioni riservate diventava di fondamentale importanza. Dai tempi romani alle corti dei re la crittografia era adottata come mezzo di protezione delle comunicazioni. La crittografia era vista come un strumento indispensabile perché molto spesso per impossessarsi dei messaggi segreti i messaggeri venivano uccisi ma le informazioni essendo criptate rimanevano segrete.

Ai tempi di Giulio Cesare, la crittografia veniva utilizzata per proteggere le comunicazioni sul campo di battaglia. Veniva utilizzato un semplice cifrario a sostituzione come metodo rapido per inviare messaggi per i generali.

Uno dei grandi progressi nella crittografia è avvenuto con una macchina inventata da Arthur Scherbius nel 1918. Scherbius aveva chiamato la sua macchina Enigma e l’aveva venduta ai tedeschi. Parlando della sicurezza della sua macchina, si stimava che se 1000 criptoanalisti avessero testato quattro chiavi al minuto, tutto il giorno, per tutti i giorni, ci sarebbero voluti 1.800 milioni anni per provare tutte le chiavi possibili.

Nel corso della Seconda Guerra Mondiale, sia i tedeschi e che gli alleati costruirono una macchina sul modello della macchina di Scherbius. Probabilmente, questi sono stati i dispositivi di crittografia più sofisticati mai sviluppati. Per difendersi da questo livello di crittografia, gli inglesi crearono quello che fu chiamato il primo computer al mondo, Colossus. Il Colossus è stato poi utilizzato per violare la crittografia usata dai tedeschi con Enigma.


Il processo di crittografia

Nelle operazioni che svolgiamo quotidianamente è molto comune l’uso della crittografia, per esempio quando facciamo acquisti online i nostri dati vengono garantiti da una connessione VPN cifrata. Quando si utilizza la crittografia, il messaggio in chiaro viene convertito in un messaggio cifrato. Questo messaggio cifrato sarà incomprensibile a tutti tranne al destinatario che con un sistema di decrittografia invertirà il processo. L'obiettivo della crittografia è quello di garantire la riservatezza dei dati in modo che solo chi è autorizzato può leggere il messaggio originale.

La forza della crittografia nei vecchi sistemi stava nell’uso di un algoritmo segreto. Oggi, con il reverse engineering la segretezza degli algoritmi viene meno. Pertanto, si utilizzano algoritmi di pubblico dominio e la decrittografia risulta praticamente impossibile se non si conosce la chiave con cui si è cifrato il messaggio. In altre parole, è meno importante nascondere come un algoritmo di cifratura funziona ma è vitale mantenere la segretezza delle chiavi.

La crittografia viene utilizzata per fornire riservatezza in ambito OSI (Open Systems Interconnection) a questi livelli:

  • A livello di applicazione, la crittografia dei dati viene utilizzata per la sicurezza in e-mail, database (Oracle SQL * Net) e di messaggistica (Lotus Notes).
  • A livello di sessione, i dati vengono crittografati utilizzando un protocollo come il Secure Socket Layer (SSL) o Transport Layer Security (TLS).
  • A livello di rete, i dati vengono crittografati utilizzando protocolli come IPsec.


Crittoanalisi

Il tentativo di “rompere” dei dati codificati si chiama crittoanalisi. Un utente malintenzionato può tentare di rompere un algoritmo o testo cifrato usando una varietà di attacchi:

Attacco chosen-plaintext: in questo caso il crittoanalista è in possesso del solo testo cifrato ottenibile facilmente analizzando i pacchetti in transito sulla rete. La possibilità di successo di questo tipo di attacco è molto remota e necessita di un’enorme quantità di dati cifrati.

Attacco known-plaintext: il crittoanalista è in possesso del testo cifrato e del corrispondente testo in chiaro. Grazie a questo tipo di informazione è possibile risalire alla chiave segreta. Sebbene possa non servire in questo specifico caso, l’acquisizione della chiave segreta equivale a carpire il “modus operandi” di un determinata persona o azienda che usa crittografare i propri dati. Dal momento che di solito una stessa chiave viene utilizzata per diversi documenti e per un certo periodo di tempo, l’acquisizione della chiave equivale quindi a rendere vulnerabile anche altri testi cifrati.

Attacco chosen-plaintext: partendo dalla scelta di un eventuale testo in chiaro, il crittoanalista calcola il testo cifrato con l’intenzione di ottenere la stessa sequenza di dati cifrati in suo possesso. In questo caso, il crittoanalista conosce per sommi capi quelli che potrebbero essere i contenuti del testo in chiaro. Tenta allora di crittografare questo probabile testo effettuando tanti tentativi fino a che non risulta simile al testo cifrato in suo possesso, modificando di volta in volta sia l’eventuale testo in chiaro sia la chiave di cifratura (non l’algoritmo in quanto si suppone sempre noto).

Attacco adaptive-chosen-plaintext: è una variante dell’attacco di tipo chosen-plaintext che modifica la scelta del testo in chiaro sulla base del risultato dell’analisi effettuata in precedenza.

Attacco chosen-ciphertext: al contrario dell’attacco chosen-plaintext, in questo caso il crittoanalista sceglie il testo cifrato con l’intenzione di decriptarlo ottenendo il testo in chiaro in suo possesso. Questo tipo di attacco è generalmente applicato in sistemi a chiave pubblica.

Attacco adaptive-chosen-ciphertext: partendo sempre dal testo cifrato, la scelta di quest’ultimo viene modificata in base ai risultati dell’analisi precedente.

Attacco a forza bruta: Tutti gli algoritmi di crittografia sono vulnerabili a un attacco a forza bruta. Con questo attacco il crittoanalista tenta ogni chiave possibile per decriptare il testo cifrato. Generalmente un attacco a forza bruta riuscirà a raggiungere il suo scopo dopo aver provato il 50% di tutte le chiavi possibili. Per difendersi da questo forma di attacco i crittografi moderni hanno implementato soluzioni di sicurezza tali per cui la quantità di chiavi possibili è talmente grande da richiedere troppo tempo e denaro per provarle tutte.


Comprendere le caratteristiche degli Algoritmi di crittografia

Un Algoritmo di crittografia si può considerare affidabile quando:

  • E’ resistente agli attacchi crittografici sopra descritti
  • Permette chiavi variabili, ampie e scalabili.
  • Crea un effetto valanga, al variare di un singolo carattere del testo da cifrare il risultato criptato deve essere completamente diverso dal precedente testo criptato
  • Non ha limiti sia all’esportazione che all’importazione dagli stati.


Crittografia Simmetrica e Asimmetrica

La protezione degli algoritmi non è quindi la strada seguita dalla moderna crittografia, che si affida piuttosto alla robustezza delle chiavi. Riguardo ad esse, ne esistono due tipi:

  • le chiavi simmetriche sono quelle usate sia dal mittente che dal destinatario (devono essere pre-condivise e sono più brevi di quelle asimmetriche.

       

  • le chiavi asimmetriche (pubblica e privata) sono quelle che vanno a coppie, una per cifrare e l’altra per decifrare. Non richiedono la pre-condivisione delle chiavi, ma sono molto più lunghe di quelle simmetriche, e di conseguenza gli algoritmi relativi sono 100 o 1000 volte più lenti e complessi degli altri. Per cifrare il traffico di solito viene usata la chiave pubblica e usata quella privata per decifrare. Cifrare invece con la chiave privata (generalmente non tutto il messaggio, ma solo una sua parte) serve ad autenticare il vero mittente, dato che solo la sua chiave pubblica abbinata è in grado di validare quella parte del messaggio usata per l’autenticazione.

       

Una comunicazione può considerarsi veramente sicura quando vengono raggiunti i seguenti obbiettivi:

Confidenzialità: protezione da letture non autorizzate.

Integrità: protezione da modifiche non autorizzate.

Autenticità: certezza della sorgente, della destinazione e del contenuto dell’informazione.

Non ripudio: certezza che chi trasmette e chi riceve non possano negare di avere rispettivamente inviato e ricevuto il messaggio


Formazione Consigliata

Di seguito i corsi di formazione ufficiali Cisco suggeriti per approfondire queste tematiche:

Contattaci

Contattaci per qualsiasi ulteriore informazione, saremo lieti di rispondere alle tue domande e di supportarti nella definizione dei tuoi piani formativi! Puoi raggiungerci telefonicamente al numero +39 02 255081 oppure compilando il modulo di contatto.