# Chiave (crittografia)

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

## Descrizione

Una chiave crittografica non è una password né, tantomeno, un PIN: è una stringa alfanumerica che implementa l'algoritmo di codifica/decodifica dell'informazione protetta. 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à 2$^n$ 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 log$_2$(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. Alcune applicazioni di crittografia danno la possibilità di creare anche una chiave di ripristino (stringa alfanumerica) da utilizzare quando il procedimento di sblocco non dovesse funzionare (ovviamente la chiave di ripristino è associato all'ID della chiave crittografica).
Fisicamente, una chiave crittografica può essere generata, oltre che da applicazioni software, anche attraverso dispositivi hardware sia integrati che portatili come un dispositivo USB (chiavetta) dotato di certificato digitale.