Microsoft NTLM

Windows Challenge/Response (NTLM) è il protocollo di autenticazione usato nelle reti che includono sistemi che eseguono il sistema operativo Windows e nei sistemi autonomi.

Il pacchetto di sicurezzaMicrosoft Kerberos aggiunge maggiore sicurezza rispetto a NTLM ai sistemi in una rete. Anche se Microsoft Kerberos è il protocollo preferito, NTLM è ancora supportato. NTLM deve essere usato anche per l'autenticazione di accesso nei sistemi autonomi. Per altre informazioni su Kerberos, vedere Microsoft Kerberos.

Le credenziali NTLM si basano sui dati ottenuti durante il processo di accesso interattivo e sono costituiti da un nome di dominio, un nome utente e un hash unidirezionale della password dell'utente. NTLM usa un protocollo di autenticazione In attesa/Risposta crittografato per autenticare un utente senza inviare la password dell'utente in rete. Il sistema che richiede l'autenticazione deve invece eseguire un calcolo che dimostra di avere accesso alle credenziali NTLM protette.

L'autenticazione NTLM interattiva su una rete prevede in genere due sistemi: un sistema client, in cui l'utente richiede l'autenticazione e un controller di dominio, in cui vengono mantenute le informazioni relative alla password dell'utente. L'autenticazione non interattiva, che può essere necessaria per consentire a un utente già connesso di accedere a una risorsa, ad esempio un'applicazione server, in genere prevede tre sistemi: un client, un server e un controller di dominio che esegue i calcoli di autenticazione per conto del server.

I passaggi seguenti presentano una struttura dell'autenticazione non interattiva NTLM. Il primo passaggio fornisce le credenziali NTLM dell'utente e si verifica solo come parte del processo di autenticazione interattiva (accesso).

  1. (solo autenticazione interattiva) Un utente accede a un computer client e fornisce un nome di dominio, un nome utente e una password. Il client calcola un hash crittografico della password e rimuove la password effettiva.

  2. Il client invia il nome utente al server (in testo non crittografato).

  3. Il server genera un numero casuale a 8 byte, denominato verifica o nonce, e lo invia al client.

  4. Il client crittografa questa richiesta con l'hash della password dell'utente e restituisce il risultato al server. Questa operazione è denominata risposta.

  5. Il server invia i tre elementi seguenti al controller di dominio:

    • Nome utente
    • Richiesta di verifica inviata al client
    • Risposta ricevuta dal client
  6. Il controller di dominio usa il nome utente per recuperare l'hash della password dell'utente dal database di Security Account Manager. Usa questo hash delle password per crittografare la richiesta di verifica.

  7. Il controller di dominio confronta la richiesta crittografata calcolata (nel passaggio 6) con la risposta calcolata dal client (nel passaggio 4). Se sono identici, l'autenticazione ha esito positivo.

L'applicazione non deve accedere direttamente al pacchetto di sicurezza NTLM; deve invece usare il pacchetto di sicurezza Negotiate . Negotiate consente all'applicazione di sfruttare i protocolli di sicurezza più avanzati se supportati dai sistemi coinvolti nell'autenticazione. Attualmente, il pacchetto di sicurezza Negotiate seleziona tra Kerberos e NTLM. Negotiate seleziona Kerberos a meno che non possa essere usata da uno dei sistemi coinvolti nell'autenticazione.