Autenticazione utente NTLM

Questo articolo fornisce alcune informazioni sull'autenticazione utente NTLM.

Si applica a: Windows Server 2012 R2
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, ovvero una compatibile con LAN Manager e una di Windows. Ogni password è 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 non crittografata. La password OWF di LAN Manager è lunga 16 byte. I primi 7 byte della password non crittografati vengono usati per calcolare i primi 8 byte della password OWF di LAN Manager. I secondi 7 byte della password non crittografati vengono usati per computerizzare 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 OWF di Windows. 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, viene effettuato ogni tentativo di mantenere entrambe le versioni della password.

Ad esempio, se l'account utente viene convertito da un database UAS di LAN Manager usando PortUas o se la password viene modificata da un client LAN Manager o da un client Windows for Workgroups, esisterà solo la versione di LAN Manager della password. Se la password viene 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 illustrate 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 LAN Manager della password. Per altre informazioni, controllare il numero dell'articolo seguente per visualizzare l'articolo della 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 tramite il servizio Netlogon.

Internamente, il pacchetto di autenticazione MSV è diviso in due parti. La prima parte del pacchetto di autenticazione MSV viene eseguita nel computer a cui è in corso la connessione. 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 ai servizi 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 la 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 crittografa sia in una password OWF di GESTIONE LAN che in una password OWF di Windows NT. Quindi, la prima parte del pacchetto passa la password non crittografa 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 ha ricevuto in precedenza una richiesta di verifica a 16 byte, o "nonce". Se il client è un client 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 questa "risposta alla richiesta di verifica di LAN Manager" al server. Se il client è un client Windows, viene calcolata una "risposta di richiesta di verifica Di Windows NT" 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 al server sia la risposta alla richiesta di verifica di LAN Manager che la risposta alla richiesta di verifica di Windows NT. In entrambi i casi, il server autentica l'utente passando tutto quanto segue all'API LsaLogonUser:

  • Nome di dominio
  • Nome utente
  • La sfida originale
  • Risposta alla sfida di LAN Manager
  • Risposta alla richiesta di verifica di Windows NT facoltativa

La prima parte del pacchetto di autenticazione MSV passa queste informazioni invariate alla seconda parte. In primo luogo, 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 del database e la richiesta di verifica passata. La seconda parte confronta quindi la risposta della richiesta calcolata con la risposta alla richiesta di verifica superata.

Nota

NTLMv2 consente inoltre al client di inviare una richiesta 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 sono disponibili sia la versione di Windows della password del database SAM che la versione di Windows della password da LsaLogonUser, vengono usate entrambe. In caso contrario, la versione di LAN Manager della password viene usata per il confronto. Questa regola consente di applicare la distinzione tra maiuscole e minuscole quando gli accessi di rete si verificano 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. Esegue le funzioni seguenti:

  • 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 in tale computer. In una workstation Windows membro di un dominio, il nome del database SAM è considerato il nome del computer. In un controller di dominio 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 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 si è connessi come se il nome di dominio specificato fosse tale nome di dominio. NetLogon non distingue tra un dominio non esistente, un dominio non attendibile e un nome di dominio tipizzato in modo non corretto.

NetLogon seleziona un server nel dominio tramite 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 dc usa NETBIOS o la risoluzione dei nomi DNS per individuare i server necessari, a seconda del tipo di dominio e trust configurato.