Panoramica tecnica sulle password
Questo argomento per i professionisti IT illustra come Windows implementa le password nelle versioni di Windows a partire da Windows Server 2012 e Windows 8.1. Illustra anche password complesse, passphrase e criteri password.
Modalità di archiviazione delle password in Windows
Questo articolo fornisce informazioni sull'archiviazione delle password "inattive".
Windows rappresenta le password in stringhe UNICODE di 256 caratteri, ma la finestra di dialogo di accesso è limitata a 127 caratteri. Pertanto, la password più lunga possibile ha 127 caratteri. Programmi come i servizi possono usare password più lunghe, ma devono essere impostate a livello di codice.
Il sistema operativo Windows archivia le password in molti modi diversi per scopi diversi.
Password archiviate come OWF
Per l'uso nelle reti Windows, inclusi i domini di Active Directory, la password viene archiviata in due modi diversi per impostazione predefinita: come funzione unidirezionale (LM OWF) e come NT OWF. "Funzione unidirezionale" è un termine che indica una trasformazione matematica unidirezionale dei dati. I dati trasformati possono essere convertiti solo tramite crittografia unidirezionale e non possono essere invertiti. Il tipo più comune di funzione unidirezionale in uso è un hash crittografico. Un hash è un piccolo set di dati che è matematicamente associato a un set di dati più ampio da cui viene calcolato l'hash. Se viene modificato il set di dati più ampio, viene modificato anche l'hash. Gli hash sono utili, ad esempio, come checksum per verificare che i dati non siano stati modificati nella trasmissione. Un hash crittografico è un hash che soddisfa determinate proprietà. Un hash crittografico deve, ad esempio, essere creato in modo che sia matematicamente impossibile in una quantità ragionevole di tempo per dedurre il set di dati più grande solo dall'hash. Analogamente, è matematicamente impossibile trovare due set di dati di grandi dimensioni che generano lo stesso hash.
Esistono molti tipi diversi di funzioni unidirezionali. Tutte le funzioni hash sono, per definizione, funzioni unidirezionali. Tuttavia, le normali funzioni crittografiche che in genere sono reversibili possono essere usate anche per creare una funzione unidirezionale. Questa operazione può essere eseguita scambiando i dati e la chiave in una funzione di crittografia e crittografando il valore fisso (la chiave) usando i dati come chiave. Questo è il modo in cui viene calcolato l'hash LM. L'hash LM viene calcolato come segue:
- La password viene riempita con byte NULL per esattamente 14 caratteri. Se la password è più lunga di 14 caratteri, viene sostituita con 14 byte NULL per le operazioni rimanenti.
- La password viene convertita in maiuscolo.
- La password viene suddivisa in due chiavi a 7 byte (56 bit).
- Ogni chiave viene usata per crittografare una stringa fissa.
- I due risultati del passaggio 4 vengono concatenati e archiviati come hash LM.
L'algoritmo LM OWF è incluso in Windows per garantire la compatibilità con le versioni precedenti con software e hardware che non possono usare algoritmi più recenti.
L'hash NT è semplicemente un hash. La password viene sottoposto a hash utilizzando l'algoritmo MD4 e archiviato. NT OWF viene usato per l'autenticazione da parte dei membri del dominio sia in Windows NT 4.0 che in domini precedenti e nei domini di Active Directory.
Né l'hash NT né l'hash LM hanno il salt. Il salting è un processo che combina la password con un valore numerico casuale (il salt) prima di calcolare la funzione unidirezionale.
Password archiviate in Active Directory
Le password inattive vengono archiviate in diversi attributi del database di Active Directory (file NTDS.DIT). Questi attributi sono elencati nella tabella seguente:
Attributo di Active Directory | Contenuto |
---|---|
unicodePwd | Hash NT crittografato |
dbcsPwd | Hash LM crittografato |
ntPwdHistory | Hash NT crittografati - Cronologia password |
lmPwdHistory | Hash LM crittografati - Cronologia password |
supplementalCredentials | Chiavi Kerberos, WDigest e così via. |
Nota
L'archiviazione degli hash LM è disabilitata per impostazione predefinita a partire da Windows Vista e Windows Server 2008.
Se archiviato nel file DIT, l'hash NT è protetto da due livelli di crittografia. In Windows Server 2016/Windows 10 e versioni successive, viene prima crittografato con DES per garantire la compatibilità con le versioni precedenti e quindi con CNG BCrypt AES-256 (vedere CNG BCRYPT_AES_ALGORITHM). Le versioni precedenti di Windows crittografano gli hash NT usando due livelli di crittografia DES + RC4.
Per altre informazioni sulle credenziali supplementari, vedere MS-SAMR: supplementalCredentials e Strutture di credenziali supplementari.
Password archiviate nel SAM locale
Nei membri del dominio e nelle workstation, gli hash delle password dell'account utente locale vengono archiviati in un database SAM (Security Account Manager) locale che si trova nel Registro di sistema. Vengono crittografati usando gli stessi algoritmi di crittografia e hash di Active Directory. Le password nell'attributo supplementalCredentials per gli account utente locali vengono archiviate anche nel database SAM locale a partire da Windows Server 2016.
Credenziali memorizzate nella cache
Windows archivia anche un verificatore di password nei membri del dominio quando un utente di dominio accede a tale membro di dominio. Questo verificatore può essere usato per autenticare un utente di dominio se il computer non è in grado di accedere al controller di dominio. Il verificatore delle password viene comunemente definito anche credenziale memorizzato nella cache. Viene calcolato prendendo l'hash NT, concatenando il nome utente e quindi eseguendo l'hashing del risultato usando la funzione hash MD4.
Funzionamento delle password in Windows
In Windows e in molti altri sistemi operativi, un metodo per l'autenticazione dell'identità di un utente consiste nell'usare una passphrase o una password segrete.
È consigliabile usare l'autenticazione a più fattori sicura, ad esempio Smart Card, FIDO e Windows Hello for Business. Tuttavia, l'autenticazione della password è ancora necessaria in alcuni scenari.
La protezione dell'ambiente di rete richiede l'uso di password complesse da parte di tutti gli utenti. Ciò consente di evitare la minaccia di un utente malintenzionato che indovina una password debole, tramite metodi manuali o usando strumenti, per acquisire le credenziali di un account utente compromesso. Ciò vale soprattutto per gli account amministrativi. Quando si modifica regolarmente una password complessa, riduce la probabilità di un attacco con password riuscito.
Le impostazioni dei criteri password controllano la complessità e la durata delle password. I criteri password influiscono sulle password di Windows, non necessariamente sulle password delle funzionalità.
La capacità degli utenti di modificare le password è governata dai criteri password e dalle interfacce disponibili. Ad esempio, tramite Secure Desktop, gli utenti possono modificare la password in qualsiasi momento in base ai criteri password amministrati dall'amministratore di sistema o dall'amministratore di dominio. Funzionalità come Windows Vault, BitLocker e Encrypting File System consentono agli utenti di modificare le password specifiche di tale funzionalità.
Modalità di utilizzo delle password in Windows
Quando un utente accede, la password digitata dall’utente viene convertita in entrambi i tipi di funzioni unidirezionale e mantenuta in memoria dal processo LSASS (Local Security Authority Subsystem Service). Se l'utente usa un account locale per l'autenticazione, NT OWF viene confrontato con l'hash NT archiviato in locale e, se le due corrispondono, l'utente viene connesso. Se l'utente esegue l'autenticazione in un dominio di Active Directory usando un nome host per accedere a una risorsa, l'hash NT viene usato in un accesso Kerberos al Centro distribuzione chiavi (KDC), che in genere è il controller di dominio.
Non può invece essere utilizzato nelle seguenti situazioni:
- Autenticazione in un dominio che esegue solo Windows NT 4.0 o versioni precedenti
- Accesso a una risorsa in un membro di dominio di Active Directory tramite un indirizzo IP anziché un nome host
- Accesso a una risorsa in un computer che non è membro di un dominio di Active Directory
- Accesso a una risorsa in un computer membro di un dominio di Active Directory ma non attendibile dal dominio
- Accesso a qualsiasi risorsa su un computer in esecuzione che non supporta Kerberos
In queste situazioni, il processo di autenticazione usa due protocolli diversi, denominati LAN Manager e NTLM. Il processo inizia con il client che richiede un test dal server di autenticazione. Dopo aver ricevuto la richiesta di verifica, il client calcola un test a questa sfida. Questa operazione viene eseguita riempiendo prima i due hash della password con valori Null a 168 bit. I 168 bit di ogni hash vengono quindi suddivisi in tre chiavi DES a 56 bit. Le sei chiavi DES vengono quindi usate per crittografare la richiesta di verifica. I tre testi crittografati prodotti usando l'hash LM vengono concatenati e diventano la risposta di LAN Manager. I tre testi di crittografia prodotti tramite l'hash NT vengono concatenati e diventano la risposta NTLM.
Le funzioni usate per calcolare la risposta possono essere modificate dall'impostazione Livello di compatibilità LM nell'impostazione Criteri di gruppo Sicurezza di rete: livello di autenticazione LAN Manager. Se tale valore è impostato su 1 o inferiore, il client invierà le risposte originali di LAN Manager e NTLM. Se è impostato su 2, viene inviata solo la risposta NTLM. Se è impostato su 3 o versione successiva, viene usata una nuova versione di entrambi i protocolli. La versione NTLM è denominata NTLMv2. La versione di LAN Manager viene spesso definita LMv2. Entrambi i protocolli usano l'hash NT per calcolare la risposta e entrambi usano una richiesta sul lato client, anziché oppure oltre alla richiesta di verifica del server. Inoltre, se l'impostazione Livello di compatibilità LM è impostata su 1 o versione successiva, la risposta NTLM viene contrassegnata come timestamp per evitare attacchi di riproduzione. Per informazioni sull'impostazione Livello di compatibilità LM, vedere Sicurezza di rete: livello di autenticazione LAN Manager.
Password complesse
Le password forniscono la prima linea di difesa contro l'accesso non autorizzato all'organizzazione. A partire da Windows Server 2003, Windows controlla la complessità della password per l'account amministratore durante l'installazione del sistema operativo. Se la password è vuota o non soddisfa i requisiti di complessità, la finestra di dialogo Installazione di Windows richiede di creare una password complessa per l'account amministratore. Se si lascia vuota questa password, non sarà possibile accedere a questo account in rete.
Le password deboli forniscono agli utenti malintenzionati un accesso semplice ai computer e alla rete, mentre le password complesse sono notevolmente più difficili da violare. Nella tabella seguente vengono confrontate password deboli e complesse.
Password vulnerabile | Password complessa |
---|---|
Vuoto | Lunghezza minima di sette caratteri |
Contiene informazioni facilmente individuabili o note, ad esempio nome utente o nome di dominio | Contiene informazioni "segrete" o casuali |
È simile alle password precedenti | È significativamente diversa dalle password precedenti |
Contiene una parola di dizionario completa | Contiene una combinazione dei caratteri seguenti: - Lettere maiuscole - Lettere minuscole - Numeri - Simboli che includono spazi |
Un esempio di password complessa è J*p2leO4>F.
Una password può soddisfare la maggior parte dei criteri di una password complessa, ma è comunque piuttosto debole. Ad esempio, Hello2U! è una password relativamente debole anche se soddisfa la maggior parte dei criteri per una password complessa e soddisfa anche i requisiti di complessità dei criteri password. H!elZl2o è una password complessa perché la parola del dizionario è intervallata da simboli, numeri e altre lettere. È importante informare gli utenti sui vantaggi dell'uso di password complesse e di insegnare loro come creare password effettivamente complesse.
È possibile creare password contenenti caratteri dal set di caratteri ANSI esteso. L'uso di caratteri ANSI estesi aumenta il numero di caratteri che è possibile scegliere quando si crea una password. Di conseguenza, potrebbe essere necessario più tempo per il software di cracking delle password per violare le password che contengono questi caratteri ANSI estesi che non per violare altre password. Prima di usare caratteri ANSI estesi nella password, testarli accuratamente per assicurarsi che le password contenenti caratteri ANSI estesi siano compatibili con le applicazioni usate dall'organizzazione. Prestare particolare attenzione all'uso di caratteri ANSI estesi nelle password se l'organizzazione usa diversi sistemi operativi. Ad esempio, questi sistemi possono standardizzarsi in ISO-8859-15. L'implementazione effettiva del protocollo in Windows spesso usa UNICODE o UTF8 anziché la codifica ANSI effettiva.
Esempi di password contenenti caratteri del set di caratteri ANSI esteso sono kUμ!*0o e Wf©$0k#»g++5ªrd.
Passphrase in Windows
Una passphrase è una forma diversa di password basata su token in cui i token sono parole anziché simboli da un set di caratteri. Un esempio di passphrase è una frase che contiene caratteri speciali, numeri, lettere maiuscole e lettere minuscole. Le differenze principali tra passphrase e password sono:
- Una passphrase ha in genere degli spazi; le password non li hanno.
- Una passphrase è molto più lunga della maggior parte delle parole, e, più importante ancora, è più lunga di qualsiasi stringa casuale di lettere che una persona comune potrebbe ricordare.
Le passphrase conformi al limite di caratteri impostato nei criteri sono in genere più difficili da violare rispetto alle password perché contengono più caratteri. È l'hash LM e NT che archivia la password o la passphrase e l'hash LM è il più debole tra i due.
Esistono diversi modi per garantire che l'hash LM non sia archiviato; uno di essi consiste nell'usare password o passphrase più lunghe di 14 caratteri. È anche possibile usare la Sicurezza di rete: non archiviare il valore hash di LAN Manager nella successiva impostazione di Criteri di gruppo per modificare la password. L'uso di questa impostazione di criterio disattiva a livello globale gli hash LM di archiviazione per tutti gli account. La modifica avrà effetto alla successiva modifica della password. Poiché l'effetto del criterio non è immediato, non si noteranno immediatamente eventuali problemi di interoperabilità causati dall'archiviazione degli hash LM.
Criteri password locali disponibili in Windows
È possibile implementare un'impostazione dei criteri password che applica i requisiti di complessità delle password. Per altre informazioni su questa impostazione di criterio, vedere La password deve soddisfare i requisiti di complessità. Per informazioni su come applicare un criterio password, vedere Applicare o modificare un criterio password. Per informazioni su tutte le impostazioni dei criteri password disponibili, vedere Criteri password.
Criteri granulari per le password disponibili tramite Active Directory Domain Services (AD DS)
A partire da Windows Server 2008, è possibile utilizzare criteri granulari per le password per specificare più criteri password in un unico dominio e applicare restrizioni diverse per i criteri password e di blocco account a seconda dei gruppi di utenti di un dominio. Ad esempio, per aumentare la sicurezza degli account con privilegi, è possibile applicare impostazioni più rigide agli account con privilegi e quindi applicare impostazioni meno rigide agli account di altri utenti. In alcuni casi è possibile applicare criteri password speciali per gli account le cui password vengono sincronizzate con altre origini dati.
Per archiviare criteri granulari per le password, esistono due nuove classi di oggetti nello schema di Active Directory Domain Services:
- Contenitore Impostazioni password
- Impostazioni password
Per altre informazioni su questi criteri, vedere Servizi di dominio Active Directory: Criteri granulari per le password.