Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> Domanda >> password >> .

Quando un utente accede al sistema, come viene fornito correttamente la password?

Il processo di verifica della password di un utente prevede diversi passaggi, concentrandosi sulle migliori pratiche di sicurezza piuttosto che archiviare la password in testo normale. Ecco una rottura di come funziona in genere:

1. Archiviazione della password (nel modo corretto):

* Hashing: Invece di archiviare direttamente la password dell'utente, il sistema memorizza un hash * crittografico * della password. Un hash è una funzione a senso unico; È facile calcolare l'hash dalla password, ma praticamente impossibile derivare la password originale dall'hash.

* Salting: Per migliorare ulteriormente la sicurezza, un * sale casuale * viene aggiunto alla password prima dell'hashing. Il sale è una stringa di caratteri unica e generata casualmente. Ciò rende molto più difficile per gli aggressori utilizzare tabelle hash pre-computate (tabelle arcobaleno) per rompere le password, anche se ottengono l'accesso al database.

* Il `Salt` è in genere archiviato insieme alla password` Hash` nel record dell'utente.

* Algoritmi di hashing forti: I sistemi moderni utilizzano robusti algoritmi di hashing come:

* bcrypt: Algoritmo di hashing adattivo che è lento e computazionalmente costoso, rendendo molto resistente agli attacchi a forza bruta. Include la generazione di sale e lo stoccaggio all'interno dell'hash stesso.

* Argon2: Un algoritmo di hashing più moderno e duro, spesso considerato il successore di BCrypt.

* Scrypt: Un'altra funzione di derivazione chiave progettata per essere intensiva dal punto di vista computazionale, rendendo più difficile rompere le password.

2. Processo di accesso/autenticazione:

1. Input utente: L'utente inserisce il proprio nome utente e password nel modulo di accesso.

2. Recupera il sale: Il sistema recupera il * sale * associato al nome utente inserito dal database utente.

3. Hashing con sale: Il sistema prende la password inserita dall'utente e il sale *recuperato *, li combina e quindi applica lo stesso algoritmo di hashing utilizzato quando la password era originariamente memorizzata.

4. Confronto: L'hash risultante dal passaggio 3 viene confrontato con l'hash password memorizzato per quell'utente nel database.

5. Verifica:

* Se i due hash corrispondono: È molto probabile che l'utente abbia inserito la password corretta. L'utente è autenticato e viene stabilita una sessione.

* Se gli hash non corrispondono: La password inserita non è corretta. All'utente viene negato l'accesso e in genere riceve un messaggio di errore.

Perché questo è sicuro:

* Nessuna password in chiaro: Il sistema * non * mai * memorizza la password effettiva in testo in chiaro, quindi anche se il database è compromesso, gli aggressori non avranno accesso diretto alle password.

* Il sale impedisce gli attacchi del tavolo arcobaleno: Il sale unico per ciascun utente produce tabelle arcobaleno (tabelle hash pre-computate) inefficaci. Un utente malintenzionato dovrebbe generare un tavolo arcobaleno per * ciascuno * sale, che è proibitivo computazionalmente.

* Hashing lento impedisce gli attacchi di forza bruta: Gli algoritmi di hashing moderni (come BCrypt, Argon2 e Scrypt) sono deliberatamente progettati per essere lenti. Ciò significa che un aggressore non può provare rapidamente un gran numero di ipotesi di password.

Esempio di codice (concettuale - python con bcrypt):

`` `Python

Importa bcrypt

def hash_password (password):

"" "Hash una password utilizzando BCrypt con un sale generato casualmente." ""

# Genera un sale

Salt =bcrypt.gensalt ()

# Hash la password utilizzando il sale

hashed_password =bcrypt.hashpw (password.encode ('utf-8'), sale)

restituire hashed_password, sale #return sia l'hash che il sale in modo che il sale possa essere conservato con l'hash

DEF Verify_Password (Ented_Password, Stored_hash, Stored_Salt):

"" "Verifica se la password inserita corrisponde all'hash memorizzato." ""

# Hash la password inserita con il sale memorizzato

hashed_entered_password =bcrypt.hashpw (Ented_password.encode ('UTF-8'), Stored_Salt)

# Confronta l'hash generato con l'hash immagazzinato

return hashed_entered_password ==stored_hash

Esempio di utilizzo (quando si crea un nuovo utente):

Password ="MySECRETPassword123"

hashed_password, salt =hash_password (password)

Memorizza Hashed_Password e Salt nel database (associato all'utente)

Esempio di utilizzo (durante l'accesso):

Entered_Password ="MySECRETPassword123" #USER fornisce durante l'accesso

Ottieni Stored_hash e Stored_Salt dal database in base al nome utente

Stored_hash =b '$ 2b $ 12 $ EK11WE0GJ8DK9J7CQH9YOC9/S8/6RXLG13N/L604QG1V14K6YDNA' # Esempio - memorizzato da sopra

Stored_salt =b '$ 2b $ 12 $ EK11WE0GQJ8DK9J7CQH9YO' # Esempio - memorizzato dall'alto

Se Verify_Password (Ented_Password, Stored_hash, Stored_Salt):

Stampa ("Verificata password! Accedi di successo")

altro:

Stampa ("Password errata. Accedi non riuscita.")

`` `

Considerazioni importanti:

* Complessità della password: Applicare le regole di complessità della password (lunghezza minima, caratteri richiesti) per rendere le password più difficili da indovinare.

* Limitazione della velocità: Implementare la velocità di limitazione dei tentativi di accesso per prevenire gli attacchi di forza bruta. Blocca i conti dopo un certo numero di tentativi non riusciti.

* Autenticazione a due fattori (2FA): Usa 2FA per un ulteriore livello di sicurezza. Anche se la password è compromessa, un utente malintenzionato avrà comunque bisogno di un secondo fattore (ad esempio un codice da un'app mobile).

* Audit di sicurezza regolari: Condurre audit di sicurezza regolari per identificare e affrontare potenziali vulnerabilità.

* Mantieni le librerie aggiornate: Mantieni aggiornate le librerie e le dipendenze di hashing per beneficiare delle ultime patch di sicurezza.

* Meccanismi di reimpostazione della password: Implementare i meccanismi di reimpostazione della password sicuri utilizzando le domande di verifica e sicurezza e -mail.

Utilizzando questi principi, i sistemi possono verificare efficacemente le password proteggendo i dati dell'utente dal compromesso. È un aspetto cruciale della sicurezza generale.

 

Domanda © www.354353.com