Dove i sistemi operativi (ad esempio Windows) salvano le loro password? Li memorizzano in testo semplice? Usano moduli hardware come TPM? Questi metodi sono generalmente considerati sicuri?
Windows memorizza le sue password in quello che viene chiamato il database Security Accounts Manager o nel database SAM. Questo è un file che esiste nel registro e l'accesso ad esso è strettamente controllato mentre Windows è in esecuzione; tuttavia, gli amministratori locali che possono eseguire processi come NT AUTHORITY\SYSTEM
possono accedervi - vedere dove NT memorizza il database SAM ? .
Per quanto riguarda gli hash utilizzati, possono essere LM o NTLM hash. Vari tentativi sono stati fatti per rompere NTLM; tuttavia, LM è noto per essere rotto, quindi Vista non lo usa di default anche se versioni precedenti di Windows lo fanno. Microsoft apparentemente crittografa il database per rendere più difficile l'analisi offline.
La chiave per la sicurezza della password sui sistemi operativi sta riducendo la possibilità di intercettazione, quindi vale anche la pena di studiare chi e cosa può accedervi. In termini di Windows, LSASS o il servizio di sottosistema dell'autorità di sicurezza locale è responsabile della verifica e della creazione delle credenziali dell'utente. Pertanto, qualsiasi tentativo di collegare o sostituire LSASS è un tentativo di catturare l'immissione della password.
In termini di schermata di accesso era possibile ridisegnarlo usando GINA DLL - molte persone hanno fatto questo per supportare l'autenticazione delle impronte digitali, per esempio. Tuttavia, le GINA personalizzate sono tra le molte cose difficili da scrivere e rappresentano un possibile rischio per la sicurezza, quindi Microsoft la ricostruirà in Vista: vedi framework provider di credenziali che rimuove il livello di codice 1 personalizzato dagli oggetti della GUI, che è molto più sicuro (Vista ha contiene miglioramenti, per le critiche di tutte le persone).
Ora, Linux. Probabilmente è meglio iniziare con l'architettura dell'autenticazione di Linux - la maggior parte delle moderne distribuzioni Linux usa moduli di autenticazione collegabili che possono essere configurati per vari database, remoto, locale ecc. Questi possono essere configurati come facoltativi, o obbligatori, o "una delle molte opzioni " se ti piace. Il modulo pam predefinito convalida gli utenti i cui metadati sono presenti in /etc/passwd
(in modo che qualsiasi programma possa interrogarli in sola lettura, ad esempio per trovare la directory home degli utenti) e le password siano archiviate separatamente in /etc/shadow
. Direttamente da wikipedia ( password shadow ):
/etc/shadow usually contains the following user information:
User login name
salt and hashed password OR a status exception value e.g.:
$id$salt$encrypted
, where$id
is the hashing algorithm used (On linux,$1$
stands for MD5,$2$
is Blowfish,$5$
is SHA-256 and$6$
is SHA-512, see the crypt(3) manpage."NP" or "!" or null - No password, the account has no password.
- "LK" or "*" - the account is Locked, user will be unable to log-in "!!" - the password has expired
- Days since epoch of last password change
- Days until change allowed
- Days before change required
- Days warning for expiration
- Days before account inactive
- Days since Epoch when account expires
- Reserved
Quindi, come puoi vedere, ciò che puoi usare per l'algoritmo di hashing su Linux è del tutto facoltativo. La sicurezza del database /etc/shadow
dipende interamente dal fatto che tu possa diventare root, poiché l'utente root è autorizzato ad accedere.
Entrambi i sistemi operativi essenzialmente password hash che utilizzano una varietà di tecniche (crypt () nella modalità DES predefinita, penso che sia stato uno dei primi a applicare ripetutamente un hash per rendere più lento il controllo degli hash) - questo è fondamentale, poiché le password crittografate potrebbero essere banalmente invertito trovando la chiave di crittografia. Chiaramente, in entrambi i casi, la sicurezza dell'inserimento delle password dipende dalla capacità di penetrare in aree altamente privilegiate; in seguito, le password vengono sottoposte a hash e devono essere decifrati utilizzando le tecniche di hash reverse come le tabelle arcobaleno, che il design hash è costruito per contrastare.
Leggi altre domande sui tag operating-systems