Chiave (crittografia)

Da Wikipedia, l'enciclopedia libera.

In crittografia una chiave è un'informazione usata come parametro in un algoritmo crittografico. Le chiavi sono utilizzate in molte applicazioni crittografiche e, secondo il principio di Kerckhoffs, sono l'unico dato che è davvero necessario tenere segreto.

Descrizione[modifica | modifica wikitesto]

La dimensione della chiave, generalmente misurata in bit, dipende dal particolare algoritmo usato. Alcuni algoritmi possono utilizzare chiavi di lunghezze diverse e in questo caso più lunga è la chiave tanto più difficile sarà forzare il messaggio cifrato.

Esiste un metodo per stimare la lunghezza minima della chiave da utilizzare e si basa sulla simulazione di un attacco di forza bruta: una chiave di n bit avrà 2n chiavi distinte e non conoscendo quale chiave sia stata usata bisognerà provarle tutte fino ad individuare la chiave giusta. Imponendo per quanto tempo si è interessati a mantenere segreta un'informazione (pochi giorni o molti anni), conoscendo la potenza di calcolo a disposizione del "nemico" e la complessità dell'algoritmo di forzatura, si calcolano quante chiavi possano venir provate in quel periodo di tempo dal sistema. Indicato quel numero con m, la chiave dovrà quindi avere almeno log2(m) bit.

Poiché gli algoritmi possono utilizzare solo chiavi di lunghezze ben fissate si arrotonda la lunghezza trovata per eccesso fino alla dimensione utilizzabile dall'algoritmo.

Attualmente, per garantire la privacy personale, si stima siano necessarie chiavi di almeno 128 bit per cifrari simmetrici e di 1024 bit per cifrari asimmetrici; poiché la potenza di calcolo disponibile aumenta molto velocemente, grazie non solo a processori sempre più veloci, ma anche alla disponibilità di eseguire attacchi distribuiti con sempre più elaboratori collegati tra loro via Internet, questi valori sono destinati a crescere e già oggi sono raccomandabili chiavi asimmetriche di lunghezza 3072 bit.

Poiché la sicurezza del sistema si basa sulla segretezza della chiave, la scelta del numero usato riveste particolare importanza. Una delle caratteristiche fondamentali di una chiave è di essere un numero scelto totalmente a caso nel dominio. Questo significa che presi due elaboratori identici, accesi nello stesso istante e che compiono esattamente le stesse operazioni, devono scegliere numeri diversi.

Si parla di funzione random sicura quando una funzione è in grado di restituire un numero casuale con probabilità uniforme nel dominio, cioè con la massima entropia. Per poter garantire questa caratteristica, la funzione usa valori esterni al sistema crittografico come, ad esempio, la temperatura del processore, lo spazio libero sul disco di sistema, la posizione e i movimenti del puntatore del mouse e molte altre variabili aleatorie difficilmente riproducibili.

L'uso di una funzione random predicibile, invece, vanificherebbe la scelta di una chiave anche molto lunga, in quanto diventerebbe possibile calcolare la chiave usata dalla vittima.

Voci correlate[modifica | modifica wikitesto]