requisiti della password vs opzioni di memorizzazione della password

3

Potrebbero essere applicati i seguenti requisiti della password, senza conservare una copia in chiaro / crittografata della password corrente?

The ######## password requirements are as follows:
    * Passwords must be updated every 90 days.
    * Users may not re-use the previous eight passwords.
    * Passwords must be 8 to 16 characters in length.
    * Passwords must contain at least:
            - One alphabetic character
            - One numeric character
            - One of the following special characters: @, #, $
    * Passwords must contain a non-numeric in the first and last positions.
    * Passwords may not contain two consecutive identical characters.
    * When changing a password, the new password must not contain more than
      three consecutive characters from the previous password.
    * Passwords may not contain a dictionary word or proper noun.
    * Passwords may not be the same as, or contain, the user ID.
    * Passwords are case sensitive.  When you create a password using a mix
      of uppercase and lowercase letters, it must always be entered that way.

La condizione "Quando si modifica una password, la nuova password non deve contenere più di tre caratteri consecutivi dalla password precedente." è quello di cui sono curioso.

    
posta Corey 08.07.2016 - 14:54
fonte

2 risposte

4

Se il modulo 'cambia password' richiede la corrente (vecchia) e la nuova password (come dovrebbe), non deve mantenere una copia in chiaro in giro.

Può verificare che la vecchia password sia corretta confrontando le versioni con hash e quindi eseguire il controllo in base al requisito che hai menzionato e solo se passa, aggiorna la password nel database.

( Aggiornamento - modificato "crittografato" in "hash" per evitare di distrarre la discussione sul fatto che la crittografia sia per definizione reversibile)

    
risposta data 08.07.2016 - 15:01
fonte
1

Nel contesto delle password in testo semplice, ecco le politiche più pertinenti:

* Passwords must be 8 to 16 characters in length.

Sebbene l'impostazione di una lunghezza massima di 16 caratteri possa essere semplicemente una guida errata o disinformata, molto probabilmente indica come il sistema sta memorizzando la password e la compatibilità con i sistemi legacy.

Il problema maggiore qui sarebbe se il campo del database fosse impostato su 16 caratteri e stessero memorizzando le password come testo normale. Se questo è il caso, il sistema è completamente insicuro.

Tuttavia, potrebbero anche usare un hash come crypt16 che limita la lunghezza della password a 16 caratteri, sebbene questo non sia ampiamente usato e meno probabile la spiegazione. Se questo è il caso, il sistema è pericolosamente insicuro.

Un altro motivo potrebbe essere che stanno usando MD5 e qualcuno ha determinato che a causa delle collisioni c'è poco da guadagnare consentendo password più lunghe di 16 caratteri. Sebbene questa logica sia difettosa, l'ho vista accadere. Se questo è il caso, il sistema è ancora pericolosamente insicuro.

Penso che la spiegazione più probabile sia che stanno crittografando le password e non le eseguono con l'hashing, il che significa che stanno memorizzando la chiave di crittografia da qualche parte che è anche pericolosamente insicura.

Speriamo che la ragione di questo abbia a che fare con le limitazioni sepolte da qualche parte in un enorme numero di codice che hanno paura di toccare e che in realtà stanno memorizzando le password usando SHA256, ma sfortunatamente non è probabile. Il problema più probabile qui è che sono pericolosamente insicuri.

* Users may not re-use the previous eight passwords.

Per determinarlo, devono memorizzare le otto password precedenti. Visto che probabilmente usano il testo in chiaro, un algoritmo di hashing debole o una crittografia reversibile, ciò significa che 9 password per ogni utente sono potenzialmente a rischio.

* Passwords must contain at least:
        - One alphabetic character
        - One numeric character
        - One of the following special characters: @, #, $

Se la password è sottoposta a hash o addirittura crittografata, i caratteri utilizzati non dovrebbero fare alcuna differenza, purché siano stampabili e all'interno della tabella codici corrente. Il fatto che lo limitino a così pochi caratteri indica strongmente che le password potrebbero essere archiviate in testo normale.

* When changing a password, the new password must not contain more than
  three consecutive characters from the previous password.

Questo può essere confrontato nel punto in cui le password vengono modificate, quindi non è un indicatore strong in entrambi i casi.

Questo è fuori tema, ma le seguenti politiche sono tentativi fuorvianti e obsoleti di rendere più forti le password. Una lunghezza minima della password minima eliminerebbe la necessità di tutti questi.

* Passwords must be updated every 90 days.
* Passwords must contain a non-numeric in the first and last positions.
* Passwords may not contain two consecutive identical characters.
* Passwords may not contain a dictionary word or proper noun.
    
risposta data 09.07.2016 - 21:28
fonte

Leggi altre domande sui tag