PROGRAMMIAMO
File - Algoritmi e chiavi
Algoritmi e chiavi

Come abbiamo ormai visto in numerosi esempi, un sistema di cifratura si basa su:

La sicurezza del sistema si basa ovviamente sulla sicurezza di entrambi gli elementi, cioè sul fatto di disporre di un buon algoritmo di cifratura e di una buona chiave.

La netta separazione concettuale di chiave e algoritmo è uno dei più saldi principi della crittografia, e fu formulata in modo definitivo nel 1883 dal linguista olandese Auguste Kerckhoffs von Nieuwenhof, nel trattato dal titolo La Cryptographie militaire: «Legge di Kerckhoffs: la sicurezza di un crittosistema non deve dipendere dal tener celato il critto-algoritmo. La sicurezza dipenderà solo dal tener celata la chiave».

Detto in parole ancora più semplici: qualsiasi algoritmo di cifratura prima o poi diviene di pubblico dominio (perché viene pubblicato in articoli di ricerca, perché viene trafugato dai servizi di intelligence o perché viene decrittato) e dunque tenere segreto un algoritmo di cifratura non è mai una strategia vincente. Conviene piuttosto affidare la sicurezza alla bontà delle chiavi usate.

Come abbiamo già detto, un algoritmo si dice sicuro se l'attacco più efficace contro di esso è un attacco a forza bruta, cioè che consiste nel provare tutte le possibili chiavi. In un algoritmo con queste caratteristiche dunque la sicurezza dipende essenzialmente dalla lunghezza delle chiavi utilizzate.

Qual è dunque la lunghezza ottimale di una chiave? Purtroppo non è possibile dare una risposta precisa e definitiva a questa domanda, poiché l'aumentare della potenza di calcolo dei moderni computer rende via via possibile portare attacchi a forza bruta contro algoritmi che fino a pochi anni prima erano considerati sicuri.

Per rendere un'idea di questa "escalation" nella lunghezza delle chiavi, DES (il primo algoritmo di cifratura moderno, pubblicato nel 1975) usava una chiave a 64 bit, mentre nell'AES (l'evoluzione attuale di DES) le chiavi possono raggiungere una lunghezza di 256 bit. Negli algoritmi asimmetrici poi (come RSA) attualmente sono considerate potenzialmente insicure chiavi con lunghezza inferiore a 1024 bit.

 

Algoritmi di cifratura (simmetrici) moderni

Non abbiamo qui la possibilità di spiegare nel dettaglio come funzionano i moderni sistemi di cifratura, perché sono troppo complicati.

Gli algoritmi moderni sfruttano sia la confusione che la diffusione e si basano generalmente sulla cifratura a blocchi. A differenza degli algoritmi visti finora (detti a flusso), i quali cifrano un singolo elemento (per es. un carattere), gli algoritmi a blocchi operano su blocchi di bit di lunghezza determinata.

Inoltre questi algoritmi cifrano il testo mediante successive applicazioni (round) di una data regola. In pratica la cifratura avviene attraverso una serie di passaggi ripetuti più volte in modo da aumentare la robustezza della cifratura. Ad ogni round una diversa chiave viene ricavata a partire dalla chiave originale, attraverso permutazioni e spostamenti.

Di capitale importanza per la sicurezza di questi algoritmi è la lunghezza della chiave usata. Il primo algoritmo di questa famiglia, il DES (Data Encryption Standard), pubblicato alla fine degli anni ’70 aveva una chiave lunga 56 bit (arrotondati a 64 bit). All’epoca sembravano più che sufficienti. Infatti con 56 bit si possono scrivere 256 valori diversi (più di un milione di miliardi di valori!) e dunque un attacco a forza bruta con i computer dell’epoca era impossibile. Tuttavia l’evoluzione della potenza di calcolo dei moderni calcolatori ha reso questo algoritmo insicuro in quanto la chiave è troppo breve (!). L’evoluzione del DES ha quindi portato all’AES (Advanced Encryption Standard), il quale usa chiavi fino a 256 bit, valore considerato attualmente sicuro anche con i computer più potenti.

 

precedente - successiva

Sito realizzato in base al emplate offerto da

http://www.graphixmania.it