È pratica accettabile aumentare un numero solo quando si modifica una password?

36

Nota: non sto chiedendo che questo schema di password sia il migliore o meno (ovviamente non lo è); Sto chiedendo della sua sicurezza teorica o pratica rispetto allo schema di password ottimale basato sugli algoritmi comunemente usati nell'autenticazione e nella crittografia. Come ho già detto nella mia domanda, matematicamente questo schema (come l'ho definito qui) è sicuro come quello che le persone sono chiamate a fare (ma raramente lo fanno, anche se irrilevante qui), ma non so se ci sono stranezze aspetti di autenticazione o crittografia che invalidano l'analisi matematica basata sull'entropia da sola.

Bene, quindi ho avuto questo pensiero interessante. Poiché i sistemi protetti da password spesso richiedono agli utenti di cambiare frequentemente la propria password, molte persone semplicemente incrementano un contatore aggiunto ad un prefisso, come ad esempio:

awefjio;1

awefjio;2

...

Mi chiedo se usare una tale famiglia di password sia sicura quanto scegliere ogni volta una nuova password completamente casuale, purché il prefisso sia scelto in modo casuale in modo casuale e purché ogni nuova password casuale più circa 10 bit. Ho ignorato i bit extra dal contatore poiché ciò potrebbe essere ipotizzabile con un piccolo margine di errore, data la frequenza con cui gli utenti sono tenuti a modificare la propria password. Matematicamente questo schema di password è abbastanza buono perché i 10 bit extra consentono all'hacker di provare 1024 volte il tempo necessario per decifrare la password rispetto a quella completamente casuale, assumendo che non si cambi una password più di 1024 volte. (Qui presumo che l'attaccante abbia in qualche modo un hash della password, incluso qualsiasi sale necessario.)

Ora conosco un ovvio svantaggio di questo, ovvero che un utente malintenzionato che in qualche modo ottiene la password corrente conoscerà tutte le password precedenti, tuttavia ciò sembra del tutto irrilevante nella maggior parte delle situazioni pratiche, dove una volta connesso l'utente ha accesso completo al suo account e non ha mai bisogno delle vecchie password.

Di qui la mia domanda; esiste una ragione concreta per cui gli utenti non dovrebbero utilizzare questo schema per modificare le password? Suppongo che se la risposta è positiva, dipenderà dagli algoritmi di autenticazione o crittografia coinvolti, nel qual caso sto bene, limitando la domanda agli algoritmi più comunemente usati.

Per essere chiari, sto solo chiedendo della situazione in cui:

  1. Gli utenti non hanno altra scelta che cambiare le loro password ad una frequenza fissa e non hanno la possibilità di utilizzare un gestore di password (come un computer sul posto di lavoro). Quindi devono decidere su qualche schema. Questa domanda riguarda se uno schema particolare è migliore di un altro.

  2. Scegli una costante fissa n. Ho in mente n ≥ 64 al minimo, se questo è importante.

    a. Il primo schema è scegliere una nuova stringa casuale indipendente con entropia n bit ogni volta che è necessario modificare la password.

    b. Il secondo schema consiste nel scegliere una stringa casuale fissa con entropia (n + 10) -bit e aggiungere un contatore che viene incrementato ogni volta che è necessario cambiare la password.

La domanda è se (b) è almeno sicuro come (a) per i tipi comuni di sistemi protetti da password.

    
posta user21820 12.05.2016 - 11:37
fonte

12 risposte

70

Se un utente malintenzionato ha scoperto la tua password, può accedere al sistema fino a quando non cambi la password. La modifica delle password spesso impedisce agli autori di attacchi che hanno già la password di avere accesso non rilevato a tempo indeterminato.

Ora, se la tua password è secret-may16 e l'attaccante è bloccato quando cambi la tua password, cercherà sicuramente secret-june16 come password. Quindi cambiare la password in modo prevedibile non è sicuro.

    
risposta data 12.05.2016 - 11:45
fonte
36

Dovresti non utilizzare questo schema, perché una volta che questa password è nota a un utente malintenzionato, può ricavare le password "successive".

Questo potrebbe essere il caso in queste situazioni:

  • La password è condivisa tra te e altre persone con trucchi, e un giorno decidi di non fidarti più di nessuno di loro. In questo caso, potrebbero facilmente indovinare le prossime password.
  • Un utente malintenzionato ottiene la password. Una volta che lo crepa (che potrebbe richiedere del tempo), può quindi indovinare le derivazioni della password.

Usando tali "password numerate", si distrugge il (piccolo) beneficio per la sicurezza di cambiare le password regolarmente.

Domanda correlata: Come cambia la tua la password ogni 90 giorni aumenta la sicurezza?

    
risposta data 12.05.2016 - 11:45
fonte
11

Cambiare solo una parte della password è [la citazione necessaria] molto comune, e una pessima pratica.

L'entropia è una misura di quanto sia sconosciuto qualcosa. per la prima volta si sceglie l'inizio fisso a caso o una password completamente nuova, entrambe con la stessa quantità di entropia, entrambe le alternative saranno equivalenti. Ok.

Per il tempo necessario per cambiare la password, se sei completamente sicuro che nessuna password precedente verrà scoperta, sei anche bravo. Perché qualcosa che non è noto manterrà la stessa quantità di entropia.

Ma ... e c'è sempre un ma ... e se una password precedente viene recuperata? O due?

Ciò può accadere con siti / sistemi che memorizzano le password precedenti in testo semplice. Può anche accadere con siti / sistemi che memorizzano le password precedenti come hash.

Perché il testo in chiaro, beh, mostrerà facilmente che la tua password precedente era IamGod_april16. E qualcuno proverà ad usare IamGod_may16 ... Cambiare semplicemente una parte, in qualche modo prevedibile, ti permetterà di esporre facilmente la tua nuova password.

Anche se è stato memorizzato come hash: sarà più difficile se eseguito correttamente, ma cosa succede se qualcuno frena l'hash e scopre qual è la tua password? Sarà quindi in grado di provare IamGod_december18, e se non hai cambiato il tuo schema in futuro ... bang! È stato colpito a causa di una perdita verificatasi 2 anni prima.

Guarda che non importa se la parte "IamGod_" è casuale, è leggibile dall'uomo, o qualsiasi altra cosa: quello che ti dà un calcio è che una parte di se può trapelare qualche informazione: il mese, il numero, la lettera in Alla fine ... anche se il tuo schema fosse "IamGodh", qualcuno potrebbe provare "IamGodi", "IamGodj" e così via.

Quindi, la prima parte della risposta alla tua domanda specifica sul fatto che lo schema (b) sia inferiore, uguale o più sicuro di (a): non è più sicuro. Perché se usi solo un numero che cambia, cambiando mese, cambiando lettera ... alla fine, è molto facile provare nuove combinazioni, sia offline che in qualche sistema online.

E c'è la seconda parte: anche se si escogita un ottimo schema, e la parte che cambia è nel mezzo della password ... e se qualcuno recupera due o più vecchie password? E scopre che erano "3VQ2NMkK", "3VQ3NMkK" e "3VQ4NMkK"? Bene, puoi vedere qualche schema?

Quindi, (a) e (b) possono anche essere ugualmente sicuri se il tuo schema non viene rilevato. Ma è un strong presupposto che si possa escogitare un buon schema, quindi, in generale, è molto sicuro assumere che (b) sarà meno sicuro, per qualsiasi tipo di sistema.

Ovviamente, questo presuppone che il sistema si rompa in qualche modo: che il database sia trapelato perché qualcuno invade un sito, o perché alcune persone interne copiano il database, o qualcuno perde il nastro di backup, o la verida esegue un man-in -il-medio attacco all'interno dell'azienda, o perché qualche aggiornamento nel sito trapelava la password, o perché l'attacco heartbleed rivelava alcune password, o perché la società lasciava un vecchio computer disponibile nella rete, o ...

Dato che quelle situazioni (e molte altre) sono al di fuori del tuo controllo, il consiglio è di scegliere il lato sicuro: non pensare che le vecchie password non saranno trapelate.

    
risposta data 12.05.2016 - 16:20
fonte
7

Mantenere uno schema specifico non è mai una buona idea anche se ambienti aziendali che richiedono frequenti aggiornamenti / modifiche delle password. Ad esempio se, come nel tuo esempio, qualcuno ha mantenuto gli stessi caratteri di base e ha modificato la password solo per un singolo numero intero, qualcuno che impara una vecchia password potrebbe utilizzare lo schema per prevedere le modifiche. Prendiamo ad esempio lo strumento chiamato "crunch". Utilizzando l'esempio che hai fornito, tutte le possibili permutazioni dello schema potrebbero essere generate e utilizzate in un attacco di dizionario.

#!/bin/bash

crunch 9 9 0123456789 -t awefjio@@

Crunch will now generate the following amount of data: 1000 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 100 
awefjio00
awefjio01
awefjio02
awefjio03
awefjio04
awefjio05
awefjio06
awefjio07
awefjio08
awefjio09
awefjio10
.........

E così via e così via. Mantenere un modello di password prevedibile rende molto semplice l'hacking nei forum di accesso ai siti Web protetti dalle credenziali. È buona prassi creare una password unica e completamente nuova ogni volta. Un'altra cosa che è una minaccia è la fase di raccolta delle informazioni dell'hacking. Più un hacker scopre le abitudini, i gusti, le antipatie, gli hobby, i nomi di famiglia, le date di nascita, le date speciali degli eventi della vita, ecc. Di un target, più dovranno andare avanti con la creazione di dizionari / liste vocali per craccare un login.

Quindi per rispondere alla tua domanda, no, non è, mai, in nessuna circostanza, una buona pratica usare gli incrementi di interi semplici con le modifiche della password,

    
risposta data 12.05.2016 - 15:55
fonte
5

Sì.

Richiedere agli utenti di cambiare regolarmente le password è un ostacolo controproducente di sicurezza-teatro (si veda Articolo CESG ) in quanto obbliga gli utenti a scrivere le proprie password. Se un utente malintenzionato è riuscito a ottenere una password, potrebbe richiedere diverse settimane per installare back-door o scaricare gigabyte di dati dal sistema prima che la password venga cambiata.

Utilizzando uno schema di numerazione semplice puoi scegliere una password che puoi ricordare senza scriverla, quindi puoi giocare al sistema per permetterti di continuare a utilizzare la tua password memorabile a tempo indeterminato.

Se la tua password esistente ha n bit di entropia, allora continuerà ad avere più entropia di qualsiasi altra n password bit entropy. Cambiare continuamente le password non cambia questo. L'aggiunta di una singola cifra alla fine aggiunge circa 2,3 bit ( ln (10) bit). Ma anche se lo schema di numerazione è così facilmente ipotizzabile che non aggiunge entropia, hai ancora i bit n con cui hai iniziato.

Se l'algoritmo di hashing utilizzato è valido, la password a verrà cancellata da una stringa casuale. Un'altra password b darà quello che sembra essere una stringa completamente diversa (tranne nel caso estremamente raro di una collisione hash). Non dovrebbe esserci alcun modo possibile, osservando i due hash, per determinare se le due password sono completamente diverse, o variare di un solo carattere (forse una cifra alla fine). Se è possibile capire se è stato modificato un solo personaggio, allora il tuo algoritmo di hashing è rotto, e ne hai bisogno uno migliore.

Lo stesso argomento vale per qualsiasi sistema di crittografia utilizzato per trasferire le password da un client a un host. Se due password simili danno messaggi crittografati simili, la crittografia è già inutile.

    
risposta data 12.05.2016 - 12:57
fonte
4

Nel tuo caso, la sicurezza dello schema di sequenziamento è diminuita principalmente a causa di fattori non crittografici. Prendi in considerazione la navigazione a spalla Se digiti la stessa password, giorno dopo giorno, anno dopo anno, i tuoi colleghi o altri osservatori potrebbero notare i modelli. È possibile digitare la stessa password in posizioni diverse che hanno diversi livelli di sicurezza fisica, come ad esempio un caffè, in cui una normale fotocamera potrebbe raccogliere la password.

Considera il caso in cui l'attaccante non usa la conoscenza nello stesso momento in cui lo apprende. Potrei essere un collega che ha accidentalmente osservato la tua password l'anno scorso, ma quest'anno siamo rivali amari per lo stesso account. Conoscere una delle tue vecchie password era qwerty1007 e un'altra era qwerty1011 significa che avrò successo con alcune supposizioni piuttosto semplici.

Utilizzando un modello, aumenti il rischio di perdita per un periodo di tempo più lungo.

[La tua proposta assomiglia superficialmente a uno schema comune utilizzato dai sistemi di autenticazione a due fattori. Un utente deve inserire una password memorizzata, oltre a dover inserire un codice visualizzato sul proprio dispositivo hardware.

Ma il motivo per cui è sicuro non è che la sicurezza sia nettamente migliorata dalla dimensione del codice dal token; è che il sistema limiterà il numero di password errate + codice suppone a un numero finito, quindi bloccherà l'ID utente. ]

    
risposta data 12.05.2016 - 16:03
fonte
3

Vorrei approfondire un po 'la spiegazione di Sjoerd e avvicinarla da un angolo leggermente diverso.

Il primo dovrebbe chiedere quale obiettivo di sicurezza viene raggiunto dal cambio di password programmato (al contrario di reattivo)? Perché la tua divisione sulla sicurezza o il documento sulle migliori pratiche ti obbliga a cambiare una password ogni due mesi?

Ci sono un paio di motivi:

  1. per complicare gli attacchi di forza bruta

    Quando qualcuno ottiene l'accesso all'hash della tua password è probabile che ci vorrà un bel po 'di tempo prima che riescano a romperlo. Se la quantità di tempo per eseguire un attacco di forza bruta è più lunga del periodo di validità della password, in realtà non può trarre profitto dall'acquisizione della password poiché è già stata modificata.

  2. Per limitare il tempo che una password compromessa può essere utile

    Le persone non sempre scoprono che la loro password è stata compromessa. Una normale modifica della password assicura che la password non permetta all'intruso di entrare per sempre. (Ovviamente in alcuni casi, quando si trovano in una volta, sono sempre a causa del malware, questo è quello che hai ma non è sempre così.) Questo si occupa anche delle situazioni in cui l'aggressore scopre solo il ritardo del ritardo dovuto a alcune circostanze.

  3. Per ridurre leggermente il riutilizzo della password

    Le persone spesso riutilizzano le loro password in più sistemi (lavoro e privato). La maggior parte dei sistemi privati (gmail, la pagina web di registrazione di un centro sportivo ecc.) Non impone modifiche periodiche alle password, quindi è probabile che anche se l'utente inizi con la stessa password ovunque le modifiche alla password gli facciano differenziare.

  4. Vincolare gli attacchi di hash

    Se un utente malintenzionato accede solo all'hash della tua password, spesso può usare quell'hash per autenticarsi contro i sistemi se è sufficientemente sofisticato. Cambiando la password sottostante cambierà l'hash e quindi fermerai di nuovo l'aggressore.

Ora possiamo chiederci in che modo i due schemi che proponi si sovrappongono agli obiettivi che abbiamo delineato. In ogni caso in cui l'attaccante ottiene l'accesso al testo in chiaro della tua password (sicuramente 1,2) il primo schema (incrementale) è molto più debole del secondo. Qualsiasi attaccante non cerebrale tenterà l'incremento. Nella terza situazione è un po 'più difficile da giudicare in quanto dipende dal fatto che la password sul servizio esterno contenga il contatore e in generale quale sia l'impatto reale del regolamento. Per il quarto obiettivo l'incremento è praticamente alla pari con il secondo schema, supponendo che la funzione di hash utilizzata si comporti abbastanza strettamente come un oracolo casuale.

Tutti insieme solo incrementare il contatore di una password è sicuramente molto più debole rispetto alla scelta di nuove password arbitrarie, ma solo in base a quanto dipende dai tipi di attacchi che ti aspetti.

    
risposta data 12.05.2016 - 15:31
fonte
1

Dovresti inserire una nuova password completa.

Se non c'è una violazione, non vedo il valore nelle password che ruotano costantemente. Tuttavia, quando ruoti le password, questa è la chiave:

Si desidera rigenerare la password utilizzando un sistema con lo stesso vincolo presumibilmente sicuro in cui è stata inserita la password originale. Cioè l'incremento di un numero NON è accettabile perché stai apportando una modifica di un byte solo perché probabilmente un generatore ti ha dato P3588swrOd4.

Quindi, se le regole della password sono 3 parole casuali effettive "BadgerYtterbiumLancet" selezionando una nuova parola non casuale, rende la tua password molto più probabile, "BadgerFoxSquirrel".

L'altro grosso problema con le password appena incrementate è che crea una situazione - diciamo che la tua azienda fa questo per 10 anni ... le persone cambiano le password ogni mese. Stai creando hash delle password che sono pericolosamente simili tra loro. (questo è il motivo per cui si usano le parole "casuali", "selezionabili" - beh le persone tendono a usare la password, una frase comune, ecc.). Desiderate trattare l'unicità di tutte le password una rispetto all'altra le password per la stessa cosa delle nuove password. Cioè Password1, Password2, 3,4,5, ecc. questo finisce in un posto veramente brutto. Ancora peggio se sei compromesso e risolvi il problema, se i tuoi dati sono preziosi per il cracker, puoi scommettere che proveranno vicino a variazioni di ciò che hanno scoperto di funzionare prima.

Inoltre, va notato che non è sicuro per le persone esterne alla tua organizzazione (cioè licenziati / vecchi dipendenti) conoscere il metodo per la generazione della password. Anche in questo caso rimando al 'casuale' - nessuno dovrebbe sapere come prevedere la generazione della password oltre a qualcosa di vago "hanno scelto 4 parole casuali nel dizionario" o "hanno usato un potente generatore di password casuali".

    
risposta data 12.05.2016 - 21:51
fonte
1

Se il database delle password è trapelato, una buona password può richiedere del tempo per craccare. A quel punto, molto probabilmente, sei stato costretto a cambiare la tua password. Quel concetto è una grande parte del motivo per cui questi "sistemi di sicurezza" forzati ripristini password esistono.

TUTTAVIA, l'accesso al tuo account viene in genere gestito utilizzando uno script automatico. Se la password tentata fallisce, lo script ha ancora qualche tentativo fino al blocco. Se, il 12 maggio 2016, una parola d'ordine come "fredJune15" è stata rifiutata e lo script è stato informato che i dati sono stati acquisiti a luglio 2015, allora lo script potrebbe provare fredApril15, fredApril12, fredApril16 prima del blocco: hai dato lo script indizi per le cose da provare.

Se lo script conosce il periodo di reimpostazione della password nel sistema, o può indovinarlo, allora può indovinare con un semplice numero incrementale, su quante volte il numero sarà stato incrementato. Quindi "fred12", dopo sette periodi forzati di reimpostazione della password, sarà quasi sicuramente "fred19". I periodi di reimpostazione password sono quasi sempre un mese, quindi indovinare quasi sempre funzionerà.

Vale anche la pena notare: se si utilizza la stessa password su più sistemi, ma con numeri diversi perché uno viene incrementato a una velocità diversa o perché sono stati creati gli account in un momento diverso, se un sistema viene compromesso, entrambi i sistemi sono.

Quindi in breve: no, genera una nuova password casuale ogni volta. Utilizzare un gestore di password. Se è possibile utilizzare l'autenticazione a due fattori, farlo.

    
risposta data 12.05.2016 - 16:37
fonte
0

Quando eseguo il cracking delle password, otterrò la tua nuova password entro lo stesso secondo se tutto ciò che fai è incrementare. Questo perché sto provando le password aggiunte e anteposte prima di ogni altra cosa e solo dopo gli schemi correlati a qwerty e l'elenco di base delle password scoperte poiché è stata la mia esperienza che è ciò che noi umani siamo in grado di fare.

    
risposta data 13.05.2016 - 14:53
fonte
0

Probabilmente non è la risposta più sicura, ma di recente ho sentito consigli su cosa usare per le password che cambiano regolarmente: qual è il tuo obiettivo o qualcos'altro che non vedi l'ora di fare nei prossimi X mesi? Usalo per creare una password. Quindi, se stai andando in un viaggio a Disney World prima che la tua password scada, potresti fare qualcosa come Looking4wrd2SpaceMtn!

In X mesi, quando la password scade, considera qualcos'altro, forse un obiettivo su cui stai lavorando: Wrk-out-35mincard! o

La tua password non può essere dedotta dalle password precedenti (se sei intelligente), hanno una lunghezza decente e ti aiutano a ricordare un obiettivo su cui stai lavorando o un evento che non vedi.

Se il trucco sta cercando di ricordare la password e cambia frequentemente, penso che questa non sia una scelta terribile.

    
risposta data 14.05.2016 - 01:50
fonte
0

Potresti essere un po 'al sicuro se il tuo suffisso sembra un anno di nascita.

Se utilizzo myname1977 allora c'è meno, ma probabilmente non zero, possibilità che qualcuno che conosce quella password possa indovinare che l'ho cambiato in myname1978 .

Ma perché correre il rischio? (faccio come dico, non come faccio io, ma incremento, ma solo al lavoro, perché è l'unico posto che mi chiede di cambiare la mia password e, per quanto mi riguarda, chiunque in azienda è libero di vedere tutto su il mio PC di lavoro. Il tuo chilometraggio sicuramente varierà).

Personalmente, trovo Edward Lear una grande fonte di ispirazione per le password: -)

E il più semplice, il più memorabile, "spunta tutte le caselle" di almeno 8 caratteri, un numero, un maiuscolo e amp; un carattere speciale è sicuramente cat plus one big dog AKA cat+1Dog

    
risposta data 15.05.2016 - 15:57
fonte

Leggi altre domande sui tag