http://www.vegpyramid.info    

mercoledì 29 agosto 2007

Sicurezza Parte 03 - Crittografia simmetrica

Tutti gli algoritmi di crittografia simmetrica a blocchi si basano su una struttura chiamata cifratura a blocchi di Feistel.
Vediamo dunque cosa significa cifratura a blocchi e che cosa è la cifratura di Feistel.

  • Cifratura di flussi -> effettua la crittografia su un flusso digitale di dati un bit o un byte alla volta. Per sempio la cifratura Vigenère (Vedi Sicurezza Parte 02).

  • Cifratura a blocchi -> Prevede che un blocco ditesto in chiaro venga trattato come un'entità e utilizzato per produrre un blocco di testo cifrato della stessa lunghezza.

  • Cifratura di Feistel -> Si tratta di passare da un ragionamento di cifratura a sostituzione ad un concetto di cifratura prodotto. Questo lo si ottiene eseguendo due o più cifrature di base in sequenza, in modo che il risultato finale, o prodotto, sia crittograficamente più resistente di qualsiasi cifratura componente.

In sostanza di tratta di alternare concetti di cifratura confusione e diffusione. Si tratta di ostacolare l'analisi crittografica su base statistica; per mezzo della diffusione la struttura statistica del testo in chiaro viene espansa in un ampio intervallo statistico del testo cifrato.

Nel caso di cifratura a blocchi binari questo effetto di diffusione di ottiene permutando ripetutamente i dati.


La confusione cerca di complicare ulteriormente il più possibile la relazione fra le statistiche del testo cifrato e il valore della chiave di crittografia. Questo si ottiene applicando algoritmi di sostituzione complessi.


Ulteriore informazioni sulla struttura della cifratura di Feistel


DES - Data Encryption Standard

Si tratta diuno schema di crittografia molto utilizzato. I dati vengono crittografati in blocchi di 64 bit utilizzando una chiave di 56 bit. Dopo una serie di passi l'algoritmo trasforma l'input di 64 bit in un output della stessa dimensione.

Presento qui solo uno schema generale di funzionamento, rimandando per ulteriori approfondimenti a questo link.


Vi sono due INPUT: il testo in chiaro da crittografare e la chiave. In questo caso il testo avrà lunghezza 64 bit e la chiave 56 bit.

Lato sinistro della figura

Il testo in chiaro di 64 bit viene sottoposto ad unapermutazione iniziale (IP). Poi vi sono 16 ripetizioni della stessa funzione di permutazione e sostituzione. L'ultima fase (la sedicesima) produce un OUTPUT di 64 bit che dipendono dal testo in chiaro e dalla chiave. La metà di sinistra e di destra vengono scambiate fra loro. Poi il tutto passa per una permutazione inversa della permutazione iniziale (IP^-1)..

Lato destro della figura

La chiave attraversa una funzione di permutazione, poi, per ognuna delle 16 fasi, viene prodotta una sottochiave Ki. Questo avviene trmite combinazione di scorrimento circolare a sinistra e di una permutazione. In ogni fase la funzione di permutazione è la stessa ma si ottengono sottochiavi differenti !

Vantaggi nell'utilizzo di DES

DES esibisce un buon effetto valanga; significa che una piccola varaizione nel testo in chiaro o nella chiave produce una variazine significativa nel testo cifrato.

Vale la pena sottolineare che nel 1998 la EFF (Electronic Frontier Foundation) annunciò di aver violato una crittografia DES utilizzando un'apposita macchina "DES-cracker" costruita con meno di 250000 $. Questo in meno di tre giorni. Teniamo inoltre presente che il prezzo dell'hardware è in continua diminuzione e che la velocità e dunque la potenza di calcolo è enormemente aumentata sino ad oggi.

Buoni suggerimenti per rafforzare l'efficacia di DES o di altri sistemi crittografici:

  • Compressione del messaggio prima della cifratura (diminuisce il rischio di analisi statistica)
  • File numerici, anch'essi compressi.

In ogni caso vi sono algoritmi alternativi molto migliori, quali ad esempio AES e triple DES.

Vale la pena accennare anche alle modalità di funzionamento della cifratura a blocchi.

Ne distinguiamo in particolare cinque tipi:

  1. ECB (Electronic Codebook) -> In cui ciascun blocco di testo in chiaro di 64 bit viene codificato in modo indipendente utilizzando la stessa chiave. Tipicamente questa modalità è utilizzata per la trasmissione sicura di singoli valori come ad esempio una chiave crittografica !
  2. CBC (Cipher Block Chaining) -> All'input dell'algoritmo di crittografia viene applicato uno XOR dei successivi 64 bit del testo in chiaro e dei precedenti 64 bit del testo cifrato. In genere utile nella trasmissione di carattere generale orientata ai blocchi, soprattutto conveniente nei casi di autenticazione. Per il primo blocco di testo cifrato viene utilizzato un vettore di inizializzazione (IV). E' sicuramente più adatto per la crittografia di messaggi con lunghezza maggiore di 64 bit.
  3. CFB (Cipher Feedback) -> L'input viene elaborati J bit alla volta. Come input dell'algoritmo di crittografia viene utilizzato il testo cifrato precedente in modo da produrre un output pseudocasuale al quale viene applicato uno XOR con il testo in chiaro per produrre la unità successiva di testo cifrato.
  4. OFB (Output Feedback) -> E' simile al CFB, tranne per il fatto che l'input dell'algoritmo di crittografia è l'output DES precedente. E' indicato per la trasmissione di flussi di dati su canali rumorosi (es. comunicazioni via satellite).
  5. Counter (CTR) -> A ciascun blocco di testo in chiaro viene applicato uno XOR con un contatore crittografato. Il contatore viene incrementato per ogni blocco successivo. E' utile per requisiti di alta velocità !


Nessun commento:

Posta un commento