Come fa il sistema di autenticazione a sapere se sto riutilizzando una password? Come è sicuro?

0

La mia domanda è: come è possibile sapere se sto riutilizzando una password? Stanno memorizzando anche la mia vecchia password [in testo semplice]?

Se un amministratore avesse accesso al back-end, non avrebbe accesso a tutte le mie password?

Qual è il punto di quella sicurezza?

    
posta DHL17 03.01.2018 - 08:19
fonte

1 risposta

2

In un sistema di progettazione di pozzi, la tua password attuale non viene mai memorizzata. Invece, viene utilizzata una funzione unidirezionale, chiamata hash. Le funzioni di hash sono progettate matematicamente in modo che non ci sia una relazione unidirezionale che consente di eseguire la funzione al contrario e ripristinare l'input originale. Puoi ottenere una nozioni di base da questo articolo .

Nel back-end, viene memorizzato solo l'hash. Nella normale logica dell'applicazione, quando la password viene ricevuta dall'utente all'accesso, viene eseguita l'hash nello stesso modo di quando è stata creata la password. Il valore di hash memorizzato e l'hash della password digitata al login possono quindi essere confrontati.

Usando questo modello, confrontiamo questi sostituti della password e non memorizziamo mai la password. Di conseguenza, se qualcuno ha trovato l'hash nel back-end, non avrebbero la tua password. Non potevano abusare del normale flusso di login con solo l'hash perché non possono invertirlo. Se l'amministratore IT o un hacker avesse avuto accesso solo agli hash delle password, non sarebbe stato sufficiente fare nulla direttamente.

* Nota: gli hash delle password non possono essere annullati, ma è possibile calcolare i valori per le password di input fornite e vedere se la corrispondenza. Salting e altre tecniche possono aiutare a rendere questo più difficile. Leggi l'articolo che ho collegato sopra per un'introduzione al concetto

In termini di cronologia delle password, non è necessario memorizzare le password, ma è possibile memorizzare anche tutti gli hash. Quando ti viene chiesto di inserire una nuova password, tale password verrà sottoposta a hash e quindi tale hash verrà confrontato con tutti gli hash nell'elenco cronologico. Ciò significa che nessuna vecchia password deve essere memorizzata direttamente, quindi nessuno può accedervi.

È anche possibile utilizzare la cronologia hash per verificare le password che sono simili a quelle usate in passato senza conoscere il testo in chiaro:

Ad esempio, se hai inserito una password di "DogFood" potresti anche generare molte variazioni usando un algoritmo in modo da ottenere qualcosa come {"dogfood", "DOGFOOD", "dOGfOOd", ecc.}}. L'algoritmo può provare tutti i tipi di modifiche come i rimpiazzi di caratteri, i tasti one off, il controllo di numeri incrementali (ad esempio, se si esegue "password1", verranno aggiunti "password2", "password3", ecc.). Quindi per ogni variazione calcoli anche l'hash. Se l'hash della password originale o una delle varianti possibili corrispondono a un hash già presente nella cronologia, significa che è troppo vicino e non sarà consentito.

Il punto chiave è che i confronti non sono mai con il valore reale, ma con gli hash calcolati.

Un'ultima cosa, è possibile che un sistema "crittografi" anziché "hashing" le password. In questo caso c'è una maggiore probabilità che la password attuale sia esposta. Tuttavia, l'hashing viene utilizzato per il 99,9% del tempo e la crittografia della password viene utilizzata solo per esigenze specifiche o per una cattiva scelta del software.

    
risposta data 06.01.2018 - 04:16
fonte

Leggi altre domande sui tag