Hai dimenticato la password: "La nuova password deve avere almeno 4 caratteri diversi dalla password precedente" [duplicato]

8

È stato trovato su una funzione di reimpostazione della password di un sito web governativo, in cui inserisci il tuo nome utente, quindi ti porta a una schermata dove puoi

  • inserisci una nuova password
  • inserisci la conferma della nuova password
  • rispondi a una domanda di sicurezza (sul nome del tuo primo animale domestico)

E quindi inviare il modulo, che cambia la password.

Le mie domande:

  1. Come memorizzi in modo sicuro una password, ma puoi comunque eseguire questo tipo di convalida, controllando che una nuova password sia composta da almeno 4 caratteri diversi da una vecchia password memorizzata nel database. Sto cercando una spiegazione tecnica di questo.
  2. Ho ragione nel dire che questo flusso sembra insicuro per cominciare? L'unica cosa che devi sapere per cambiare la password di qualcuno è il loro nome utente e una singola domanda di sicurezza.
posta Obversity 22.04.2017 - 05:46
fonte

3 risposte

3

È matematicamente possbile fare ciò che stanno facendo in modo sicuro per memorizzare le password in un modo che consentirebbe quella funzionalità, ma non avrebbe la vecchia password memorizzata in testo normale. Ma solo perché è matematicamente possibile, non significa che sia probabile.

Codifica omomorfica

A Eurocrypt 2004 Michael Freedman, Kobbi Nissim e Benny Pinkas ha presentato un articolo che si è esplicitamente indirizzato su come trovare in modo efficiente l'intersezione di due set senza rivelare il contenuto di uno dei due set (diverso dall'intersezione) a chiunque non lo avesse prima. È anche possibile trovare una stima della dimensione dell'intersezione senza nemmeno rivelare (molto circa) l'intersezione stessa.

Questo era il 2004 (ed era basato sul lavoro precedente). Quindi ci sono stati miglioramenti da allora in questo e relativi algoritmi. Quindi ci sono tecniche conosciute per scoprire quanti caratteri sono comuni a due set senza rivelare il contenuto di entrambi i set. (Nel caso si stia chiedendo, è solo un set, la vecchia password, che deve essere nascosta perché al sistema viene data la nuova password completa.)

Filtri Bloom

Se stiamo parlando di sovrapposizione di sequenze di quattro caratteri (anziché solo caratteri in entrambe le password), allora un modo ragionevolmente sicuro per farlo è con un Bloom Filter . Un filtro Bloom è un tipo speciale di tabella hash. Ogni sottostringa di quattro caratteri della password originale può essere aggiunta al filtro Bloom quando quella password fornita al servizio e quindi tutte e quattro le sottostringhe dei caratteri della nuova password possono essere ricercate nel filtro Bloom.

Si noti che i filtri Bloom sono progettati per quando ci sono molti membri del set e sono probabilistici. Possono dare falsi positivi.

La risposta ovvia è purtroppo corretta

Sarei sbalordito se il sito in questione utilizza la crittografia omomorfica o persino i filtri Bloom. Quasi certamente stanno facendo un modo in cui gli operatori del sito (e chiunque li violi) hanno accesso alle password in chiaro.

    
risposta data 22.04.2017 - 18:42
fonte
3

Questo suona male per una serie di motivi.

  1. Le password vengono archiviate in modo da poter essere recuperate in chiaro, rapidamente, in modo che possano essere confrontate con nuove password.
  2. L'archiviazione delle password chiaramente non sta usando un hash unidirezionale.
  3. Se il sistema che memorizza queste password è compromesso, l'utente malintenzionato potrebbe successivamente accedere a tutte le password effettive dei membri dell'organizzazione.
  4. L'uso del nome di un animale domestico per una domanda di sicurezza è sbagliato perché per molte persone questa è un'informazione pubblica e non un segreto.
  5. Non hai specificato, ma se il processo di reimpostazione della password non utilizza un metodo di verifica fuori banda (come e-mail o SMS, entrambi con i loro problemi) per autenticare che un utente valido ha cambiato il loro password ma consente direttamente l'accesso a qualsiasi utente malintenzionato che richieda una modifica della password davvero pessima.

Nota: non hai specificato la tua posizione, ma menzionerò che ho visto più organizzazioni governative e militari con sicurezza incredibilmente orribile in alcuni punti. Questo succede, non dovrebbe, ma occasionalmente lo fa.

    
risposta data 22.04.2017 - 06:02
fonte
1

È una domanda davvero interessante su come memorizzare in modo sicuro una password, ma essere comunque in grado di fare questo tipo di convalida, controllando che una nuova password abbia almeno 4 caratteri diversi da una vecchia password memorizzata nel database.

Se si dovesse progettare un modo per archiviare la password in modo sicuro, ma consentire comunque questo tipo di convalida, potrebbe essere fatto in questo modo:

  1. Prendi tutte le lettere nella password e ordinale in ordine alfabetico e in modo univoco. È importante ordinarli e rimuovere i duplicati, altrimenti si salva la password completa.
  2. Hash la password in modo sicuro (PBKDF2 o crypt).
  3. Memorizza l'elenco di lettere e l'hash. Non memorizzare la password attuale.

    • password originale : questa è quasi una via d'uscita !!!
    • lettere memorizzate :! 0Sadehilmoprstwy
    • hash memorizzato : (hash Sha512)

Ecco come si può facilmente tenere traccia delle lettere utilizzate, mentre non si memorizza la password effettiva. È ancora una pessima idea, perché se qualcuno avesse accesso al database, renderebbe le password molto più semplici.

    
risposta data 22.04.2017 - 06:36
fonte

Leggi altre domande sui tag