6.1 Creazione della password: Salting Password

Ogni sistema operativo conserva un database di password di qualche tipo, utilizzato per verificare l'autenticità dei login degli utenti. UNIX conserva il proprio database di password nel file /etc/passwd. Una classica voce di un file di password è di questo tipo:

MEDVIN:EH5./mj7NB3dx:181:100:MEDURI_VINCENZO:/U/MEDVIN:/BIN/KSH 

I campi sono delimitati dai due punti, e sono [6]:

In UNIX, le password vengono cifrate utilizzando una funzione F(X,S), dove X è la password digitata dall'utente e S il salt (in totale i bit di salt sono 12); il motivo per cui vengono usati i bit di salt è di rendere difficili gli attacchi di tipo dizionario. Questa difficoltà è dovuta al fatto che avendo 12 bit di salt per ogni possibile valore del dizionario, si dovrebbero specificare 212 = 4096 possibili password. I 12 bit sono random e vengono generati tramite il clock del sistema. UNIX utilizza come funzione F una versione del DES modificata, applicando la tecnica di rallentamento del mapping delle password ed iterando per t=25 volte. Per la precisione, la password di un utente è troncata dei suoi primi 8 caratteri ASCII, ognuno dei quali è codificato con 7 bit. Otteniamo cosi i 56 bit della chiave che useremo nell'algoritmo DES modificato. Ai 64 bit forniti come output dal DES, vengono aggiunti i 12 bit di salt, cosi da avere un totale di 76 bit, che divisi a loro volta in gruppi di 7 ci daranno 11 caratteri ASCII che vengono scritti nel file delle password. Gli 11 caratteri ottenuti rappresentano la password. 

Figura 6.1: Schema di codifica delle salting password.

In particolare, i 12 bit di salt vengono usati per modificare l'output della funzione di espansione del DES, la quale, ricordiamo, prende in input una stringa di 32 bit, e restituisce una stringa di 48 bit. Ai 48 bit cosi ottenuti si applica una permutazione basata sui valori dei bit di salt (praticamente scambia i bit di posizione i e 24+i se l'i-esimo bit di salt è pari a 1,li lascia invariati se vale 0.Gli altri bit restano invariati in ogni caso. Ricordiamo che i varia tra 1 e 12 estremi compresi). Questo procedimento è chiamato Password Salting [6].