LM hash

Da Wikipedia, l'enciclopedia libera.

L'LM hash o LAN Manager hash è uno dei formati che Microsoft LAN Manager e Microsoft Windows usano per memorizzare password che sono lunghe non più di 14 caratteri. Questo tipo di hash è l'unico metodo per criptare password usato in LAN Manager (da cui il nome dell'hash) e da versioni di Windows fino a Windows Me. È anche supportato da versioni più recenti di Windows per assicurare la retrocompatibilità, anche se in Windows Vista deve essere attivato manualmente.

Algoritmo[modifica | modifica wikitesto]

L'LM hash funziona nel seguente modo[1]

  1. La password dell'utente viene convertita da stringa OEM a tutto maiuscolo.
  2. La password viene anche troncata dopo 14 byte.
  3. La password viene a sua volta divisa in due metà da 7 byte.
  4. Questi valori sono usati per creare due chiavi DES, una per ogni blocco da 7 byte, convertendo i sette byte a un flusso di bit e aggiungendo un bit zero alla fine di ogni sette bit. Questo genera i 64 bit necessari per ogni chiave DES.
  5. Ognuna di queste di chiavi è usata per cifrare con il DES la stringa costante in ASCII “KGS!@#$%”, trasformandola in due valori da 8 byte.
  6. Questi due valori sono concatenati per formare un valore da 16 byte, il quale è l'LM hash.

Sicurezza[modifica | modifica wikitesto]

Sebbene sia basato sul DES, un cifrario a blocchi ben noto e studiato, l'LM hash può essere violato molto facilmente a causa di due debolezze nella sua implementazione. La prima è che le password più lunghe di 7 caratteri sono divise in due ed ogni metà è trattata separatamente. La seconda è che tutte le lettere minuscole della password sono convertite in maiuscolo prima del calcolo dell'hash.

La prima debolezza permette di attaccare separatamente le due metà della password: mentre ci sono 95^{14} \approx 2^{92} differenti password ottenibili da 14 caratteri ASCII stampabili, questi scendono a 95^{7} \approx 2^{46} con i soli 7 caratteri di una metà della password. Riducendo, inoltre, il campo dei caratteri a causa della conversione da minuscolo a maiuscolo, si riducono anche il numero delle possibili combinazioni per ogni metà a 69^{7} \approx 2^{43}. Con un attacco a forza bruta condotto sulle due singole metà, un moderno computer può violare un LM hash in poche ore.

Dato che l'LM hash non include un nonce, vale a dire non include un valore univoco ma utilizza l'hash puro, un attacco di tipo a Rainbow tables porta alla scoperta delle password in pochi secondi. Questo tipo di attacco sfrutta il cosiddetto compromesso tempo-memoria: per accelerare il calcolo della password vengono caricati in memoria milioni di hash precalcolati che vengono confrontati con quello da violare. Un confronto è molto più veloce di un calcolo puro dell'hash. Esistono molti software che integrano la possibilità di sferrare un simile attacco: tra questi abbiamo RainbowCrack, L0phtCrack, Cain & Abel[2], Ophcrack[3]

Per ovviare alle debolezze dell'LM Hash, Microsoft introdusse in Windows NT 3.1 un nuovo algoritmo denominato NTLM, poi aggiornato alla versione 2 con Windows NT 4.0.

Voci correlate[modifica | modifica wikitesto]

Note[modifica | modifica wikitesto]

  1. ^ Il protocollo LM
  2. ^ Cain & Abel
  3. ^ Ophcrack, il cracker del compromesso tempo-memoria

Collegamenti esterni[modifica | modifica wikitesto]