LM hash
# LM hash

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

L'LM hash funziona nel seguente modo

* La password dell'utente viene convertita da stringa OEM a tutto maiuscolo.
* La password viene anche troncata dopo 14 byte.
* La password viene a sua volta divisa in due metà da 7 byte.
* 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.
* Ognuna di queste di chiavi è usata per cifrare con il DES la stringa costante in ASCII “KGS!@#$%”, trasformandola in due valori da 8 byte.
* Questi due valori sono concatenati per formare un valore da 16 byte, il quale è l'LM hash.

## Sicurezza

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, Ophcrack

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.

