Una password è davvero necessaria? [chiuso]

5

Ai fini della sicurezza , c'è qualche differenza nell'avere un nome utente segreto generato a caso da 50 caratteri accompagnato da una password segreta generata a caso da 50 caratteri, contro un nome utente segreto generato a caso da 100 caratteri senza password?

    
posta RockPaperLizard 26.03.2018 - 20:47
fonte

6 risposte

7

Lo svantaggio principale di un singolo "token" (o "username") da autenticare è che per autenticare l'utente devi fare una delle due cose:

  1. Archivia il token nel database in una forma recuperabile come testo normale o crittografato. Ciò significa che se il DB viene compromesso, l'utente malintenzionato conoscerà il token di tutti.
  2. Hash il token. Ma se lo fai, è meglio usare sali unici per utente, ma in questo caso non puoi. Dovresti usare lo stesso sale per ogni hash, che apre la porta per gli attacchi dei tavoli arcobaleno.
risposta data 26.03.2018 - 22:47
fonte
10

Penso che dipenda da come definisci "nome utente". Di solito un nome utente è qualcosa che deriva dal nome dell'utente. Quindi è probabile.

Un nome utente viene spesso visualizzato nell'applicazione con qualche tipo di preferenze utente . Quindi il nome utente è visibile.

A volte viene usato un nome utente per reimpostare una password, e quindi il nome utente potrebbe essere inviato via cavo, magari via smtp. Quindi il nome utente può essere scaricato dal traffico.

A volte gli utenti devono comunicare tra loro, quindi il nome utente diventa un dato pubblico.

Tuttavia, se si pensa ad un qualche tipo di token di autorizzazione come nome utente, si può benissimo prendere una "stringa" lunga 100 caratteri per l'autenticazione. Ma non pensarlo come un "nome utente"!

    
risposta data 26.03.2018 - 21:08
fonte
7

Stai unendo due concetti, identità e autenticazione , in una singola entità. Quindi stai chiamando il risultato "nome utente". Questo nome implica erroneamente al lettore che è solo incarnando l'identità, nascondendo il fatto che dovrebbe essere tenuto segreto per garantire l'aspetto dell'autenticazione di esso. Ricorda che normalmente l'identità non è qualcosa che le persone mantengono un segreto.

"Unguessability" è un attributo importante di un segreto utilizzato per l'autenticazione. Ma la sicurezza non viene solo dall'avere un segreto inconcepibile. Viene anche da persone che gestiscono correttamente quel segreto. Chiamandolo come qualcosa che non è, rischi di confondere gli utenti nel trattare questo segreto come se fosse il loro indirizzo email.

Questo non è un problema teorico: è il fondamento di tutti i problemi con i furti di carte di credito che il mondo soffre oggi. I numeri delle carte di credito sono sempre stati associati all'identità, non all'autenticazione, ma servono entrambi gli scopi rendendoli preziosi per i ladri.

Per evitare questo problema, non chiamerei la stringa di 100 caratteri né "username" né "password"; invece, chiamarlo "token" potrebbe aiutare le persone a capire come gestirlo.

    
risposta data 27.03.2018 - 04:59
fonte
4

Se non hai un'altra forma di autenticazione al posto delle password, allora non ho idea del perché si userebbero solo i nomi utente per autenticare gli utenti. Sarebbe cattivo.

* Vorrei anche aggiungere che i nomi utente e le password hanno una relazione disgiunta quando si tratta di sicurezza e sono usati solo insieme per autenticare un utente.

    
risposta data 26.03.2018 - 21:05
fonte
2

L'aspetto più importante delle password è la segretezza. Se un nome utente è completamente segreto da tutti tranne che dall'utente, non è necessaria una password. Se un nome utente viene mai condiviso con qualcun altro, allora lo fai.

Inoltre, avere un nome utente segreto sarebbe un incubo UX - le persone non si aspettano che i nomi utente siano segreti e non li tratteranno come tali.

    
risposta data 26.03.2018 - 22:17
fonte
1

Se per "username" si intende un identificatore di account lungo generato automaticamente non visibile ad altri utenti e dove un indirizzo email / nome utente non è necessario per il recupero dell'account, può avere senso. Esempi potrebbero essere Resili / BitTorrent Sync "indentities" o chiavi private di criptovaluta. Ai fini di questa risposta chiameremo questo segreto la "password", non il "nome utente".

Infatti, se alcuni servizi consentono l'uso del nome utente pubblico (insieme a una password) per l'autenticazione, in sostanza utilizza già solo l'unico segreto, la password, per l'autenticazione.

Se hai una sola password per l'autenticazione, cosa succede se un utente tenta di utilizzare una password che qualcuno sta già utilizzando? Non puoi avvisare l'utente che "quella password è già stata presa". Per evitare questo scenario, l'applicazione stessa dovrebbe generare la password lunga e univoca e, a sua volta, molto probabilmente richiederebbe l'uso di un gestore di password.

Un altro problema è il recupero dell'account - potrebbe essere necessario che l'utente associ la propria e-mail al proprio account in ogni caso per consentire il ripristino della password. Se questo è il caso, potresti usare sia un nome utente sia una password per accedere.

    
risposta data 26.03.2018 - 22:10
fonte

Leggi altre domande sui tag