7. Password di Windows NT
Come avviene per altri sistemi operativi multiutente, gli account sono la base della
sicurezza di Windows NT. Nessun
utente può accedere alle risorse del sistema senza avere un
account ed una password e nessun utente può accedere all'account
di altri utenti poiché vi sono dei controlli da parte del
sistema. L'autenticazione degli utenti funziona nel modo seguente:
l'utente effettua il login, che consiste nell'inserire la coppia
<userid, password>, Windows NT crea un token che
rappresenta quell'utente, utilizzando la password inserita dall'utente. A questo
punto calcola una funzione matematica sul valore inserito e confronta il valore
ottenuto con quello memorizzato nel database delle password.
La gestione delle password in Windows NT è simile a quella in Unix con le
seguenti differenze:
- il file di password è contenuto nel SAM (Security
Accounts Manager) del Registry e quindi non è normalmente accessibile agli
utenti. Il SAM è nella directory \WINNT\SYSTEM32\CONFIG. Inoltre
su alcuni sistemi non protetti si può trovare anche SAV, il backup
di SAM. Infine, durante l'installazione di Windows NT, una copia del SAM
viene posta in \WINNT\REPAIR
- il SAM contiene gli hash one-way delle password
(valore numerico calcolato in base alla password, dal quale non si
può risalire alla stringa originale), come un archivio delle password
shadow in Unix, ma nell'algoritmo di generazione non viene
utilizzato, a differenza di Unix, il salt, quindi due utenti con la
stessa password hanno anche la stessa voce nel SAM ed un attacco con il
dizionario è molto più efficace
- le password sono case-sensitive ed hanno una lunghezza
massima di 14 caratteri, quindi ciò significa che teoricamente è possibile
effettuare un attacco di forza bruta per scoprire la password.
Windows NT, adoperando il Des, immagazzina due hash della password
dell'utente: la One Way Function (OWF) LanMan compatibile e la OWF Windows NT
compatibile:
- la OWF LanMan compatibile è generata troncando la parola d'accesso
dell'utente a 14 caratteri (riempiendo con NULL se è più corta),
convertendo tutti i caratteri alfabetici in maiuscolo, spezzando i 14
caratteri in due blocchi di 7 byte, espandendo ogni blocco di 7 byte in una
chiave DES di 8 byte con un bit di parità. Ognuna delle chiavi Des viene
utilizzata per codificare un "numero magico" (0x4B47532140232425),
precedentemente codificato con una chiave di tutti uno. I risultati della
codifica del numero magico con le due chiavi, ottenute in precedenza,
vengono concatenate in modo da ottenere il valore LanMan a 16 byte.
- la OWF Windows NT compatibile, cioè la password locale, è generata
prendendo fino a 128 caratteri della parola d'accesso dell' utente,
convertendola in Unicode. Il risultato viene trasformato utilizzando MD4 per
ottenere il valore a 16 byte da memorizzare nel SAM. In pratica la parola
d'accesso di NT è limitata a 14 caratteri dall'interfaccia grafica, benché
possa essere definita per mezzo di un programma come una stringa di maggiore
lunghezza.