Devo implementare il mio hash della password locale?

2

Avendo una conoscenza più che elementare della sicurezza di Internet, mi sono reso conto che alcune applicazioni web e i siti Web che utilizzo implementano una politica delle password meno che ideale. Alcuni esempi includono:

  • Implementazione di un limite superiore della lunghezza della password (i limiti superiori che ho visto sono 16, 20 e 32)
  • Richiede la presenza di caratteri arbitrari
  • Proibisce la presenza di caratteri arbitrari (come spazi,%, ^ e altri)

Questo tipo di pratiche mi preoccupa che la crittografia lato server sia altrettanto discutibile.

Quindi mi chiedo se sarebbe una buona idea implementare il mio script (attingendo a metodi provati e veri) per creare un hash della mia password sul mio computer locale e quindi eseguirne il rehash finché non soddisfa i siti requisiti arbitrari e utilizzarli come "password".

    
posta Robert Wolfe 15.07.2014 - 05:44
fonte

3 risposte

5

Quello che descrivi è uno dei due principali metodi utilizzati dai prodotti "password vaults". Tali prodotti cercano di rendere più facile per te (l'utente umano) "ricordare" le password specifiche del sito, mantenendo comunque la proprietà importante, ovvero la specificità delle password: una password per ciascun sito, in modo che una violazione su un sito non mette in pericolo i tuoi account su altri siti.

I due metodi principali sono:

  1. Prova a "derivare" (attraverso le funzioni di hash o costrutto simile) una password specifica del sito da una password principale; il nome del sito viene quindi utilizzato come parametro aggiuntivo, per assicurarsi che ogni sito abbia la propria password.

  2. Genera password casuali per ogni sito e memorizzale localmente (sul client), crittografato con una "password principale".

In entrambi i casi, è necessario un software client-side, perché non esiste un metodo noto per raggiungere l'unidireità richiesta per la specificità corretta con le sole funzionalità del cervello umano (vedere questa domanda precedente ). Tale software può essere un'applicazione locale, qualche script, un'estensione del browser ...

La tua proposta si riferisce al metodo "tipo 1" (derivazione dalla password principale). La solita speranza è che il metodo "tipo 1" possa consentire l'erogazione dell'archiviazione locale. Sfortunatamente, questo non funziona su due account:

  • Come hai notato, le regole della password imposte da vari siti sono incompatibili tra loro, quindi non puoi produrre password che possano adattarsi a tutti i siti possibili. Pertanto, qualcosa nel tuo sistema deve ricordare le regole per ciascun sito specifico, in modo che la password del sito possa essere ricalcolata correttamente.

  • Alcuni siti richiedono modifiche della password a intervalli più o meno regolari. Una derivazione della password senza memoria non può far fronte a una modifica della password.

I vault della password di "Tipo 1" hanno ancora valore, in quanto la memoria locale richiesta non deve essere riservata, poiché non include nulla che dipende dalla password principale (che fa include informazioni su tutti i siti su cui si dispone di account, tuttavia, e potrebbe trattarsi di un problema di privacy). D'altra parte, ogni password specifica del sito può essere utilizzata per un attacco di dizionario offline sulla tua password principale, che può essere un problema.

I vault della password di tipo 2 sono più flessibili e quindi più comuni (ad esempio KeePass ). Alcuni di essi si accoppiano con un archivio centralizzato (vedi 1Password ) in modo che tu possa avere accesso alle tue password da tutti i tuoi dispositivi. Un punto davvero valido per i "va 2" è che le password specifiche del sito, generate casualmente, non possono (in senso stretto) perdono informazioni sulla password principale o sulle password per altri siti.

    
risposta data 15.07.2014 - 14:22
fonte
2

Un paio di problemi che vedo con questo approccio:

  • Probabilmente vuoi andare avanti e salare l'hash (anche se è solo con il nome del sito).
  • Se provi ad accedere da un altro computer, è necessario che il tuo programma di hashing sia disponibile. In alternativa, puoi utilizzare un hash che puoi ottenere da un sito web, ma poi stai inviando la tua password a un dominio non attendibile.
  • Dovrai mappare l'output dell'hash in quelle restrizioni arbitrarie, quindi dovrai conoscere lo schema per sito ogni volta che accedi. Ad esempio, un sito potrebbe richiedere caratteri speciali, mentre un altro potrebbe vietare loro.

Ho raccomandato questa strategia in passato, e penso che sembri solida rispetto agli articoli che ho menzionato sopra; Non vedo l'ora di vedere il consiglio degli altri sull'argomento.

    
risposta data 15.07.2014 - 06:37
fonte
0

Se hai appena usato un hash della tua password, la tua password con hash diventerà la tua nuova password di fatto. Se usato su più di un sito, è simile al riutilizzo della normale password, anche se è probabilmente più difficile indovinarlo o forzarlo.

In pratica, vuoi mischiare un sale (per proteggere dalle tabelle arcobaleno) e il nome del sito web (per proteggere dal riutilizzo) nel processo di hashing, ma poi incontri un altro problema (oltre a quelli menzionati da altri) - alcuni i siti condividono il database degli utenti, perché sono effettivamente gestiti dalla stessa azienda o sono anche solo un nome o front-end diverso per lo stesso servizio.

È meglio usare solo un gestore di password, imo.

    
risposta data 07.08.2014 - 12:41
fonte

Leggi altre domande sui tag