Perché una password è accompagnata da un nome utente ritenuto "più sicuro"?

4

Durante la navigazione in questa community, noto che alcuni sostengono che il vantaggio principale dei nomi utente associati alle password è che richiedono più tentativi di essere bruti forzati, tuttavia non penso che sia il caso, ad esempio:

#Easy password just for example

Username: admin
Password: c1235

È altrettanto difficile craccare quanto basta un singolo token / password per accedere:

Password: adminc1235

Un altro argomento che le persone danno è che i nomi utente accompagnati dalle password possono essere salted tuttavia puoi anche salare una singola password dividendola in due diverse sottostringhe e salatandole.

Inoltre SQLinjection è molto più difficile da trovare i dettagli dell'account che vuoi hackerare se non c'è nome utente ...

A parte le misure di sicurezza, ovviamente capisco che i nomi utente servono anche da memoria dell'utente per la password, ma guardando i fatti di sicurezza non vedo molta differenza tra un nome utente con una password e una lunga frase password / frase.

Quindi vorrei chiedere, ci sono più motivi per cui le password accompagnate da un nome utente sono considerate più sicure? Se ho fatto degli errori nei miei post, per favore dì di sì, non sono un esperto!

    
posta Thomas W 02.06.2015 - 18:31
fonte

4 risposte

9

Nella maggior parte dei sistemi, il nome utente deve essere univoco, ma la password no.

Se la password è stata utilizzata come credenziale di accesso senza un nome utente, la password dovrebbe essere univoca. In questo caso, gli stessi attacchi contro lo username funzionerebbero per la password, come provare a registrarsi con una password di parole del dizionario e cercare un errore che la password sia già utilizzata.

    
risposta data 02.06.2015 - 18:38
fonte
7

Prima che la password possa essere convalidata, la registrazione dell'utente deve essere cercata nel database in modo da sapere quale sale usare quando si esegue l'hashing della password. Se non si dispone di un nome utente, è necessario estrarre il sale da ciascuna password con hash memorizzata, salare e cancellare la password immessa e confrontare il risultato con quello memorizzato. Questo dovrebbe essere fatto per ogni record nel database fino a quando non viene trovata una corrispondenza. Ciò sarebbe proibitivamente costoso in quanto gli algoritmi di memorizzazione delle password (ad esempio: bcrypt e PBKDF2) sono progettati per essere costosi in modo da proteggerli dagli attacchi di forza bruta in caso di furto del database delle password.

Quindi, in un mondo con solo password, dovrebbe essere creato un meccanismo di archiviazione della password completamente nuovo. Uno che sarebbe costoso per l'attaccante di fare in massa ma non per il sistema di fare in massa quando si registra un utente. Non dirò che è impossibile, ma sospetto che qualsiasi soluzione sarebbe ancora più complessa di quella che abbiamo oggi.

    
risposta data 02.06.2015 - 19:51
fonte
3

Oltre alla risposta di CoverosGene, hai il problema che ora ci sono solo password per l'autenticazione di identità e . Pensaci in questo modo, se una persona ha appena scelto la sua password come "bob", devi risolverla solo una volta e sei nel loro account poiché non devi applicarlo a uno specifico nome utente / identità. È incredibilmente facile da interrompere poiché non devi mai abbinare le password con un account specifico, poiché è l'identificatore dell'account ora.

Assumi in un sistema con entrambi i nomi utente e le password che il tuo aggressore ha ottenuto un elenco di tutti i tuoi nomi utente registrati e sta tentando di entrare negli account. Dovrà provare a decifrare la password per ogni account separatamente per entrare in ciascuno degli account. Se non ci fosse un nome utente separato, non esiste una tale protezione, dal momento che devono solo provare le password in un unico passaggio del sistema.

    
risposta data 02.06.2015 - 18:56
fonte
2

Oltre alle password e ai problemi computazionali univoci, devi comunque essere in grado di identificare un utente nella maggior parte dei sistemi senza autenticare l'utente. Il miglior esempio è l'e-mail: è necessario avere un ID pubblico di un utente per poterlo inviare un messaggio.

E dal momento che si desidera impedire le collisioni con password, nel mondo si dovrebbe essere sicuri che la password di un utente che desidera ricevere la posta sia almeno parzialmente consegnata dall'ID utente che rende tale parte del password una non-a-password. Il "token" di autenticazione sarebbe comunque costituito da un ID e un segreto, quindi non c'è motivo di mettere insieme questi due elementi e trattarli come un singolo segreto, come spiegato in altre risposte.

    
risposta data 03.06.2015 - 11:04
fonte

Leggi altre domande sui tag