Newsgroup: it.comp.sicurezza.crittografia
Titolo: info su chiavi crittografiche

Cari Utenti della lista,
sono un giurista appassionato di informatica e vorrei meglio comprendere il tema delle chiavi crittografiche.
 
Ho fatto qualche ricerca per conto mio e sono arrivato alle seguenti conclusioni: (i) la chiave è sostanzialmente un numero; (ii) tale numero viene utilizzato in una funzione matematica/algoritmo.
 
Per evitare che la chiave (o il numero) possa essere facilmente scoperta con un attacco a forza bruta è necessario che questa venga scelta tra un insieme numeroso di possibili chiavi.
Più alto è il numero delle possibili chiavi minore sarà la possibilità di individuare la specifica chiave utilizzata.
 
Visto che i calcolatori esprimono i numeri in bit e a ogni bit può assumere solamente due valori: 0 o 1, per calcolare le possibili combinazioni di una chiave espressa in bit è necessario elevare il numero dei possibili valori assumibili per il numero di bit utilizzati [2^(numero di bit utilizzati)].  
 
A ogni sequenza di bit potrà poi essere associato un numero diverso, ad esempio alla sequenza "0000 0001" potrà essere abbinato il numero decimale 1, alla sequenza "0000 0010" potrà essere abbinato il numero decimale 2 e così di seguito.
 
Quindi, se non ho capito male, la chiave è una serie di bit a cui corrisponde un numero.
 
Ciò che non ho ben compreso è come si passi da una password espressa in lettere, numeri e simboli a un numero (ossia alla chiave) da utilizzare all’interno della funzione crittografica.
 
Qualcuno può spiegarmi come funziona tale passaggio oppure segnalarmi delle letture sull’argomento ?
 
Ciao
 
Matteo


beh, è semplicemente una convenzione di codifica, ce n'è più d'una, il
più comune e usato è l'ascii 
http://it.wikipedia.org/wiki/ASCII
 


Grazie per la risposta, avevo pensato che fosse qualcosa di simile, tuttavia non mi tornavano i conti. Nel senso che se uso la codifica ASCII, che se non ho capito male è a 7 bit, vuole dire che per una chiave a 128 bit dovrei usare 18,28 simboli, il che (a parte il problema della virgola che forse può essere risolto usando codifiche a 8 bit) imporrebbe di usare chiavi composte da 18 (16 nel caso di codifica a 8 bit) caratteri.
Mi pare invece che normalmente sia rimessa all'utente la scelta della lunghezza della password. Non capisco quindi come si coordinano lunghezza della password variabile e utilizzo di chiavi con un numero di bit definito.
 
Ciao

 Ciao
 
beh se leggi bene, lo standard de facto è in realtà (
http://it.wikipedia.org/wiki/ASCII_esteso
 ) a 8 bit (1 byte preciso),
dando la possibilità di codificare 256 simboli diversi permettendo
così di suddividere una stringa di 128 bit in 16 byte
[b0,b1,b2,b3,..,b17]. il tipo char nel C ad esempio ha proprio un byte
di allocazione


Grazie per il chiarimento. Mi resta comunque un dubbio.
Se si usa una chiave a 128 bit (o 16 Byte) e questa è ricavata da una stringa di testo allora significa che dovranno essere utilizzati 16 caratteri ASCII con codifica a 8 bit.
Tuttavia capita spesso che la lunghezza della stringa utilizzata come password (ossia la base da cui ricavare la chiave) sia lasciate alla libera discrezione dell'utente.
Mi viene da pensare allora che il sistema integri automaticamente un eventuale deficit di lunghezza della password con dei caratteri arbitrari. Ad esempio se la chiave usata è a 128 bit e l'utente usa solo 8 caratteri per la password, i restanti 8 caratteri per completare la chiave vengono automaticamente inseriti dal sistema (magari riempendo gli spazi vuoti con degli zero).
Hai capito qual è il mio dubbio ?
 
Ciao
 

 Ciao
 
In tali casi in genere si utilizzano tecniche di padding (
http://en.wikipedia.org/wiki/Padding_%28cryptography%29
 ), oppure di
key derivation ( 
http://en.wikipedia.org/wiki/Key_derivation_function
 
) ma questo, di base è un compito lasciato a chi sviluppa
l'interfaccia utente che sfrutta un determinato algoritmo
crittografico, non a chi sviluppa l'algoritmo, per quest'ultimo è
importante solo la correttezza del processo di codifica e decodifica,
poi ci sono anche algoritmi con chiavi in input a lunghezza variabile,
ma la variabilità è molto limitata

 Hai capito qual ï¿½ il mio dubbio ?
 
Non credo sia banale da spiegare, serve un minimo
di conoscenza di teoria dell'informazione.
 
Una spiegazione e` che la password dell'utente serve
per crittografare una chiave a 128 bit.
 
La chiave a 128 e` poi usata per crittografare i dati.
 
Questa chiave e` scelta a caso, in modo tale che abbia
effettivamente 128 bit di informazione.
 
bye,
 
-- 
 
piergiorgio