Condividi tramite


Autenticazione utente NTLM

Questo articolo fornisce alcune informazioni sull'autenticazione utente NTLM.

Numero KB originale: 102716

Riepilogo

Questo articolo illustra gli aspetti seguenti dell'autenticazione utente NTLM in Windows:

  • Archiviazione delle password nel database dell'account
  • Autenticazione utente tramite il pacchetto di autenticazione MSV1_0
  • Autenticazione pass-through

Ulteriori informazioni

Archiviazione delle password nel database dell'account

I record utente vengono archiviati nel database sam (Security Accounts Manager) o nel database di Active Directory. Ogni account utente è associato a due password: la password compatibile con LAN Manager e la password di Windows. Ogni password viene crittografata e archiviata nel database SAM o nel database di Active Directory.

La password compatibile con LAN Manager è compatibile con la password usata da LAN Manager. Questa password si basa sul set di caratteri OEM (Original Equipment Manufacturer). Questa password non fa distinzione tra maiuscole e minuscole e può contenere fino a 14 caratteri. La versione OWF di questa password è nota anche come versione OWF o ESTD di LAN Manager. Questa password viene calcolata usando la crittografia DES per crittografare una costante con la password di testo non crittografato. La password OWF di LAN Manager è lunga 16 byte. I primi 7 byte della password non crittografata vengono usati per calcolare i primi 8 byte della password OWF di LAN Manager. I secondi 7 byte della password di testo non crittografato vengono usati per computer i secondi 8 byte della password OWF di LAN Manager.

La password di Windows si basa sul set di caratteri Unicode. Questa password fa distinzione tra maiuscole e minuscole e può contenere fino a 128 caratteri. La versione OWF di questa password è nota anche come password di Windows OWF. Questa password viene calcolata usando la funzione hash RSA MD4. Questa funzione calcola un digest a 16 byte di una stringa di lunghezza variabile di byte di password non crittografate.

Qualsiasi account utente potrebbe non avere la password di LAN Manager o la password di Windows. Tuttavia, ogni tentativo viene effettuato per mantenere entrambe le versioni della password.

Ad esempio, se l'account utente viene convertito da un database UAS di LAN Manager tramite PortUas o se la password viene modificata da un client LAN Manager o da un client Windows for Workgroups, sarà presente solo la versione lan Manager della password. Se la password è impostata o modificata in un client Windows e la password non ha alcuna rappresentazione di LAN Manager, esisterà solo la versione di Windows della password. La password potrebbe non avere alcuna rappresentazione di LAN Manager perché la password è più lunga di 14 caratteri o perché i caratteri non possono essere rappresentati nel set di caratteri OEM.

I limiti dell'interfaccia utente in Windows non consentono alle password di Windows di superare i 14 caratteri. Le implicazioni di questa limitazione sono descritte più avanti in questo articolo.

In Windows 2000 Service Pack 2 e nelle versioni successive di Windows è disponibile un'impostazione che consente di impedire a Windows di archiviare un hash di LAN Manager della password. Per altre informazioni, vedere il numero di articolo seguente per visualizzare l'articolo nella Microsoft Knowledge Base:

299656 Come impedire a Windows di archiviare un hash di gestione LAN della password in Active Directory e nei database SAM locali

Nota

Microsoft non supporta la modifica manuale o a livello di codice del database SAM.

Autenticazione utente tramite il pacchetto di autenticazione MSV1_0

Windows usa l'API LsaLogonUser per tutti i tipi di autenticazione utente. L'API LsaLogonUser autentica gli utenti chiamando un pacchetto di autenticazione. Per impostazione predefinita, LsaLogonUser chiama il pacchetto di autenticazione MSV1_0 (MSV). Questo pacchetto è incluso in Windows NT. Il pacchetto di autenticazione MSV archivia i record utente nel database SAM. Questo pacchetto supporta l'autenticazione pass-through degli utenti in altri domini usando il servizio Netlogon.

Internamente, il pacchetto di autenticazione MSV è suddiviso in due parti. La prima parte del pacchetto di autenticazione MSV viene eseguita nel computer a cui si è connessi. La seconda parte viene eseguita nel computer che contiene l'account utente. Quando entrambe le parti vengono eseguite nello stesso computer, la prima parte del pacchetto di autenticazione MSV chiama la seconda parte senza coinvolgere il servizio Netlogon. La prima parte del pacchetto di autenticazione MSV riconosce che l'autenticazione pass-through è necessaria perché il nome di dominio passato non è il proprio nome di dominio. Quando è necessaria l'autenticazione pass-through, MSV passa la richiesta al servizio Netlogon. Il servizio Netlogon instrada quindi la richiesta al servizio Netlogon nel computer di destinazione. A sua volta, il servizio Netlogon passa la richiesta all'altra parte del pacchetto di autenticazione MSV nel computer.

LsaLogonUser supporta accessi interattivi, accessi al servizio e accessi di rete. Nel pacchetto di autenticazione MSV, tutte le forme di accesso passano il nome dell'account utente, il nome del dominio che contiene l'account utente e alcune funzioni della password dell'utente. I diversi tipi di accesso rappresentano la password in modo diverso quando lo passano a LsaLogonUser.

Per gli accessi interattivi, gli accessi batch e gli accessi al servizio, il client di accesso si trova nel computer che esegue la prima parte del pacchetto di autenticazione MSV. In questo caso, la password non crittografata viene passata a LsaLogonUser e alla prima parte del pacchetto di autenticazione MSV. Per gli accessi al servizio e gli accessi in batch, Gestione controllo servizi e Utilità di pianificazione offrono un modo più sicuro per archiviare le credenziali dell'account.

La prima parte del pacchetto di autenticazione MSV converte la password non crittografata in una password OWF di LAN Manager e in una password OWF di Windows NT. La prima parte del pacchetto passa quindi la password non crittografata al servizio NetLogon o alla seconda parte del pacchetto. La seconda parte esegue quindi una query sul database SAM per le password OWF e verifica che siano identiche.

Per gli accessi di rete, il client che si connette al computer in precedenza riceveva una richiesta di 16 byte o "nonce". Se il client è un client di LAN Manager, il client ha calcolato una risposta di verifica a 24 byte crittografando la richiesta di verifica a 16 byte con la password OWF di LAN Manager a 16 byte. Il client LAN Manager passa quindi il messaggio "LAN Manager Challenge Response" al server. Se il client è un client Windows, viene calcolato un "Windows NT Challenge Response" usando lo stesso algoritmo. Tuttavia, il client Windows usa i dati OWF di Windows a 16 byte anziché i dati OWF di LAN Manager. Il client Windows passa quindi sia la risposta alla richiesta di verifica lan che alla risposta alla richiesta di verifica di Windows NT al server. In entrambi i casi, il server autentica l'utente passando tutte le operazioni seguenti all'API LsaLogonUser:

  • Nome di dominio
  • Nome dell'utente
  • La sfida originale
  • Risposta alla richiesta di gestione LAN
  • Risposta facoltativa di Windows NT Challenge

La prima parte del pacchetto di autenticazione MSV passa queste informazioni invariate alla seconda parte. Prima di tutto, la seconda parte esegue una query sulle password OWF dal database SAM o dal database di Active Directory. La seconda parte calcola quindi la risposta alla richiesta di verifica usando la password OWF dal database e la richiesta di verifica passata. La seconda parte confronta quindi la risposta calcolata alla risposta alla richiesta di verifica passata.

Nota

NTLMv2 consente anche al client di inviare una richiesta di verifica insieme all'uso di chiavi di sessione che consentono di ridurre il rischio di attacchi comuni.

Come accennato in precedenza, una delle due versioni della password potrebbe non essere presente nel database SAM o nel database di Active Directory. Inoltre, una delle due versioni della password potrebbe non essere presente nella chiamata a LsaLogonUser. Se sia la versione di Windows della password del database SAM che la versione di Windows della password di LsaLogonUser sono disponibili, vengono usati entrambi. In caso contrario, viene usata la versione lan Manager della password per il confronto. Questa regola consente di applicare la distinzione tra maiuscole e minuscole quando si verificano accessi di rete da Windows a Windows. Questa regola consente anche la compatibilità con le versioni precedenti.

Autenticazione pass-through

Il servizio NetLogon implementa l'autenticazione pass-through. Lo strumento esegue le seguenti funzioni:

  • Seleziona il dominio a cui passare la richiesta di autenticazione.
  • Seleziona il server all'interno del dominio.
  • Passa la richiesta di autenticazione al server selezionato.

La selezione del dominio è semplice. Il nome di dominio viene passato a LsaLogonUser. Il nome di dominio viene elaborato come segue:

  • Se il nome di dominio corrisponde al nome del database SAM, l'autenticazione viene elaborata nel computer. In una workstation Windows membro di un dominio, il nome del database SAM viene considerato il nome del computer. In un controller di dominio di Active Directory il nome del database dell'account è il nome del dominio. In un computer che non è membro di un dominio, tutti gli accessi elaborano le richieste in locale.
  • Se il nome di dominio specificato è considerato attendibile da questo dominio, la richiesta di autenticazione viene passata al dominio attendibile. Nei controller di dominio di Active Directory l'elenco dei domini attendibili è facilmente disponibile. In un membro di un dominio Windows, la richiesta viene sempre passata al dominio primario della workstation, consentendo al dominio primario di determinare se il dominio specificato è attendibile.
  • Se il nome di dominio specificato non è considerato attendibile dal dominio, la richiesta di autenticazione viene elaborata nel computer a cui è connesso come se il nome di dominio specificato fosse tale nome di dominio. NetLogon non distingue tra un dominio inesistente, un dominio non attendibile e un nome di dominio digitato in modo non corretto.

NetLogon seleziona un server nel dominio da un processo denominato individuazione. Una workstation Windows individua il nome di uno dei controller di dominio di Windows Active Directory nel dominio primario. Un controller di dominio Active Directory individua il nome di un controller di dominio Active Directory in ogni dominio attendibile. Il componente che esegue l'individuazione è il localizzatore di controller di dominio eseguito nel servizio Netlogon. Il localizzatore di controller di dominio usa NETBIOS o la risoluzione dei nomi DNS per individuare i server necessari, a seconda del tipo di dominio e dell'attendibilità configurati.