Domanda:
Is it acceptable practice to only increment a number when changing a password?
user21820
2016-05-12 14:37:10 UTC
view on stackexchange narkive permalink

Nota: non sto chiedendo se questo schema di password sia il migliore o meno (ovviamente non lo è); Chiedo la 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 quanto ciò che viene detto alle persone di fare (ma raramente lo fanno; sebbene irrilevante qui), ma non so se ci sono strani aspetti dell'autenticazione o della crittografia che invalidano l'analisi matematica basata solo sull'entropia.

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

awefjio; 1

awefjio; 2

...

Mi chiedo se usare una simile famiglia di password sia sicuro quanto scegliere ogni volta una nuova password completamente casuale, purché il prefisso è scelto casualmente in modo uniforme e fintanto che ogni nuova password casuale più circa 10 bit. Ho ignorato i bit extra dal contatore poiché potrebbero essere indovinati con un piccolo margine di errore data la frequenza con cui gli utenti sono tenuti a cambiare la loro password. Matematicamente questo schema di password è abbastanza buono perché i 10 bit extra consentono all'attaccante di provare 1024 volte di più per decifrare la password rispetto a quello completamente casuale, supponendo che non si cambi una password più di 1024 volte. (Qui presumo che l'aggressore in qualche modo abbia un hash della password, incluso il sale necessario.)

Ora conosco un ovvio svantaggio di questo, che è che un attaccante che in qualche modo si impossessa dell'attuale password conoscerà tutte le password precedenti, tuttavia questo sembra del tutto irrilevante nelle situazioni più pratiche, dove una volta effettuato l'accesso l'utente ha pieno accesso al proprio account e non necessita mai delle vecchie password.

Da qui la mia domanda; c'è qualche motivo concreto per cui gli utenti non dovrebbero utilizzare questo schema per modificare le password? Immagino che se la risposta è positiva, dipenderà dagli algoritmi di autenticazione o crittografia coinvolti, nel qual caso io Va bene limitare la domanda agli algoritmi più comunemente utilizzati.

Per essere chiari, chiedo solo la situazione in cui:

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

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

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

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

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

https://www.cesg.gov.uk/articles/problems-forcing-regular-password-expiry
I commenti non sono per discussioni estese;questa conversazione è stata [spostata in chat] (http://chat.stackexchange.com/rooms/39729/discussion-on-question-by-user21820-is-it-acceptable-practice-to-only-increment).
Questo è uno dei motivi per cui alcuni ritengono che le password che scadono frequentemente siano ** meno ** sicure nel complesso.L'unico modo in cui un utente può ragionevolmente essere in grado di ricordare la password quando deve cambiarla ogni, diciamo, tre mesi è usare un semplice incremento o annotare, entrambi i quali sono probabilmente peggiori di una scadenza meno frequente (ad esempio:una volta all'anno).
Dodici risposte:
Sjoerd
2016-05-12 14:45:35 UTC
view on stackexchange narkive permalink

Se un utente malintenzionato ha scoperto la tua password, può accedere al sistema finché non la modifichi. La modifica delle password spesso impedisce agli aggressori che hanno già la tua password di accedere senza essere rilevati a tempo indeterminato.

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

Ok, questo è un punto che non ho considerato.Ma solo gli aggressori stupidi farebbero affidamento sull'accesso tramite la password.Una volta per la prima volta, l'attaccante ** avrebbe dovuto ** piantare un trojan.
@user21820 Dipende dal tipo di password.Se è una password per un servizio web, come potresti piantare un trojan?
@Anders: Se si tratta di un servizio web, presumibilmente l'aggressore avrebbe dovuto fare immediatamente quello che voleva.Ma concedo che hai ragione, dal momento che alcuni ** buoni ** servizi web (come Gmail) bloccheranno parzialmente il tuo account se lo segnali come violato, in attesa della verifica dell'identità, quindi l'attaccante deve pensarci due volte prima di cambiarela password.
@Anders: Ma detto questo, personalmente considero già una violazione come `` caso peggiore '' ...
@user21820 Una volta che l'attaccante è entrato, proverà a installare un trojan (o altro malware) per proteggere un punto d'appoggio persistente.Per entrare per la prima volta, possono provare a utilizzare schemi di phishing per ottenere le password.Se la password è scaduta, l'aggressore può tentare di indovinare la nuova password incrementando il numero.
@user21820: Dato lo stesso sistema.L'autore dell'attacco potrebbe ora avere un forte suggerimento sullo schema delle password utilizzate anche per i suoi sistemi.
@user21820: non si tratta solo di persone che hanno la tua password chiara prima che tu la modifichi.Riguarda anche le persone che ottengono la tua password con hash salato e iniziano a provare a decifrarla.Potrebbe volerci più tempo per farlo rispetto a te per cambiare la tua password, ma anche se lo fa, e la tua password è prevedibilmente basata sulla tua vecchia password, potrebbero capire la tua nuova password da quella che (per il momentolo hanno capito) era troppo vecchio per essere usato.
Quindi una nuova parola di n bit ogni volta è migliore in questo scenario di una parola n + 10 bit riutilizzata insieme a un contatore.Sebbene ovviamente se +10 fosse la differenza tra una n che è stupida piccola e cade nella forza bruta, contro un n + 10 che regge OK, allora il secondo schema vincerebbe perché questo scenario è basato su qualcuno che ottienela tua vecchia password dopo il punto in cui sarebbe stata loro direttamente utile.Le password perse presumibilmente * a volte * restano in sospeso per un po 'prima di essere utilizzate, indipendentemente da come sono state acquisite.
@SteveJessop: Abbastanza giusto.Sebbene avessi supposto che la password con hash salato dovesse essere ** assicurata ** non crackabile utilizzando una funzione hash crittografica e lunghezze salt e hash a 1024 bit, il che renderebbe discutibile quel punto, ma come dici tu ** se ** illa password è trapelata in qualche modo ** allora ** uno schema è chiaramente migliore dell'altro.
@user21820: se n è ad esempio 10, la password con hash salata è crackabile indipendentemente dalla quantità di sale o dall'algoritmo di hashing che usi, a condizione che l'hacker conosca il sale e l'algoritmo (che, nel momento in cui hanno rubato un file di password,si presume che lo facciano) ;-) D'altra parte se n è 128, aggiungere 10 o meno non fa differenza per qualsiasi scenario di attacco che conosco.Quindi la risposta su quale dei tuoi schemi è migliore dipende * leggermente * da n, ma per n grandi il primo è migliore perché ci sono altri modi per ottenere vecchie password rispetto agli hash.
In pratica, però, il motivo per cui le persone usano i contatori è perché fa più di una differenza di +10.Ci sono almeno tre password che devo ricordare e utilizzare frequentemente, che ho generato in modo casuale, composte da 10+ caratteri ciascuna, quindi chiamatele 50+ bit.Ma se dovessi cambiarle ogni mese probabilmente non potrei ricordare 3 password casuali di due caratteri più corte, che continuano a cambiare.Quindi sarei almeno tentato di usare un contatore (o in realtà un gestore di password).
@SteveJessop: In effetti ho in mente prefissi con entropia a 100 bit, che quindi sembravano abbastanza sicuri da lasciarli stare e cambiare solo il contatore.Naturalmente, i vari punti sollevati finora da te e da altri mettono in dubbio la ** sicurezza ** pratica ** di un tale schema nonostante la ** teorica ** infrangibilità.
@user21820: bene, sia in teoria che in pratica una vecchia password può trapelare in qualche modo (forse quella volta che l'hai digitata accidentalmente nel sito sbagliato, nessuno recensisce il "registro del male" per mesi, o forse le spie lo hanno raccolto filmandoti in un internet cafèma non aveva motivo di indagare ulteriormente su di te fino ad oggi).Non lasciare che "in teoria" ti induca a ignorare tutti gli scenari di attacco tranne uno, che non è solo "in teoria" ma "nella mia immaginazione" :-)
@user21820 Se la tua teoria non tiene conto della cronologia delle password, allora sarei d'accordo.Ma, dal momento che stai chiedendo esplicitamente una password che si trasmuta nel tempo, è un po 'sfacciato usare una teoria che non ne tiene conto.La tua prima password potrebbe avere 108 bit di entropia totale;la tua prossima password avrà 0 bit di entropia, poiché entrambe le parti sono completamente prevedibili.
@SteveJessop è vero il tuo commento altamente votato?La mia comprensione della crittografia significa che le stringhe, anche un carattere a parte, dovrebbero produrre hash completamente non correlati.Se fossero correlati, in linea di principio si potrebbe risalire a password simili, come indicato.Per favore fatemi sapere se ho sbagliato.
@anon0909: il mio commento è vero e non ha nulla a che fare con gli hash.Se so che cambi la tua password una volta al mese a causa della politica aziendale, e in qualche modo apprendo anche che la tua password il mese scorso era "uodnfhApril2016", allora non importa se l'hash di "uodnfhMay2016" è simile all'hash di"uodnfhApril2016" o no, vado avanti e indovino che la tua password ora è "uodnfhMay2016".Questo è il rischio a cui ti espone l'utilizzo di un contatore.
Lukas
2016-05-12 14:45:53 UTC
view on stackexchange narkive permalink

Non dovresti utilizzare questo schema, perché una volta che questa password è nota a un utente malintenzionato, può derivare le password "successive".

Questo potrebbe essere il caso in questi situazioni:

  • La password è condivisa tra te e altre persone fidate, e un giorno decidi di non fidarti più (di uno di) di loro. In questo caso, potrebbero facilmente indovinare le password successive.
  • Un utente malintenzionato si impossessa della password. Una volta risolto il problema (il che potrebbe richiedere del tempo) può quindi indovinare le derivazioni della password.

Usando queste "password numerate", si distrugge il (piccolo) vantaggio di password regolarmente.

Domanda correlata: In che modo cambiare la password ogni 90 giorni aumenta la sicurezza?

Il primo punto non è rilevante, perché sto parlando di un utente che sceglie deliberatamente un prefisso abbastanza lungo completamente casuale, certamente non qualcuno che condividerebbe la sua password.Per quanto riguarda il cracking e quindi l'ipotesi della derivazione della password, ho già provveduto a ciò richiedendo all'utente di aggiungere 10 bit a quello che avrebbe fatto se avesse cambiato completamente la password.
Inoltre, solo una persona stupida che decide di non fidarsi più di qualcuno userebbe comunque la stessa password che sapeva essere condivisa con quella persona.
Anche se la tua password fosse lunga 100 cifre, potrebbero esserci ancora possibili attacchi come keylogger, cavalli di Troia, malware sul lato server ... Quindi fare affidamento solo sulla forza di calcolo della password potrebbe non essere sufficiente.Non voglio dire che il tuo sistema sia completamente insicuro: perdi i * vantaggi * della modifica della password.E ancora una nota: né Google né Microsoft né Facebook richiedono di cambiare la password.
E riguardo alla condivisione delle password ... L'ho visto a volte in aziende / associazioni - ecco perché l'ho menzionato (anche se potrebbe non essere rilevante nel tuo caso).
Come ho detto, non stai rispondendo alla mia domanda!La mia prima frase dice che la mia domanda riguarda i sistemi protetti da password che ** richiedono ** agli utenti di cambiare regolarmente le loro password.Che sia buono o meno è irrilevante per la mia domanda.
In secondo luogo, ho chiesto specificamente di ** confrontare ** questo schema di modifica della password con lo schema ottimale noto di cambiare completamente la password.
@user21820 Non sono sicuro di come questo non risponda alla tua domanda.La tua domanda letterale come lo specifichi è "c'è qualche motivo concreto per cui gli utenti non dovrebbero usare questo schema per cambiare le password?"a cui la risposta è il secondo punto di questa risposta: se una password viene compromessa, vengono tutte compromesse e poiché nel mondo reale può essere necessario molto tempo prima che la compromissione venga rilevata, questo è un problema molto reale.
@Cronax: Il secondo punto di questa risposta presuppone il cracking, che non dovrebbe essere possibile nello scenario che ho in mente.Come accennato in altre risposte, il cracking non è l'unico modo, che è ciò a cui non ho prestato abbastanza attenzione quando ho posto la domanda per la prima volta.
@user21820 Forse la tua domanda era "l'uso di uno schema incrementale ha un effetto sostanziale sull'entropia complessiva di una password" a cui la rispostaè "non direttamente, ma non appena un'istanza è in qualche modo nota, il resto ha solo un'entropia ugualea una password con la lunghezza del numero di caratteri nello schema incrementale, potenzialmente inferiore se c'è uno schema chiaro in quello schema (cioè maggio2016) "
A quel punto diventa irrilevante se ciò avveniva attraverso il cracking o l'ingegneria sociale o qualsiasi altro metodo
@Cronax: Ebbene matematicamente la risposta è già chiara.Cambiare un po 'della password ovviamente ti dà una bassa entropia condizionale.Stavo solo facendo la (col senno di poi) sciocca supposizione che il cracking fosse il modo naturale in cui la password sarebbe stata violata.
woliveirajr
2016-05-12 19:20:29 UTC
view on stackexchange narkive permalink

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

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

Per il tempo necessario a 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 ... cosa succede se una password precedente viene recuperata? O due?

Ciò può accadere con siti / sistemi che memorizzano le password precedenti in testo normale. 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à a usare IamGod_may16 ... Basta cambiare una parte, in qualche modo prevedibile, esporrà facilmente la tua nuova password.

Anche se è stata memorizzata come hash: sarà più difficile se eseguita correttamente, ma cosa succede se qualcuno frena l'hash e scopre qual era la tua password? Quindi potrà provare IamGod_december18, e se non hai cambiato il tuo schema in futuro ... bang! È stato colpito a causa di una fuga di notizie avvenuta 2 anni prima.

Vedi che non importa se la parte "IamGod_" è casuale, è leggibile dall'uomo o qualsiasi altra cosa: ciò che ti prende a calci è quella parte di if possono trapelare alcune informazioni: il mese, il numero, la lettera 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 se lo schema (b) è inferiore, uguale o più sicuro di (a): non è più sicuro. Perché se usi solo un numero che cambia, cambia mese, cambia lettera ... alla fine, è molto facile provare nuove combinazioni, sia offline che in qualche sistema online.

E c'è la seconda parte: anche se si crea uno schema molto buono, e la parte che cambia è nel mezzo della password ... cosa succede se qualcuno recupera 2 o più vecchie password? E scopre che erano "3VQ2NMkK", "3VQ3NMkK" e "3VQ4NMkK"? Bene, riesci a vedere qualche schema?

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

Naturalmente, ciò presuppone che il sistema si guasta in qualche modo: che il database è trapelato perché qualcuno invade un sito, o perché alcune persone interne copia il database, o qualcuno perde il nastro di backup, o la fanciulla esegue un attacco man-in-the-middle all'interno dell'azienda , o perché qualche aggiornamento nel sito ha fatto trapelare la password, o perché l'attacco heartbleed ha rivelato alcune password, o perché l'azienda ha lasciato che un vecchio computer fosse disponibile nella rete, oppure ...

Dato che quelli le situazioni (e molte altre) sono al di fuori del tuo controllo, il consiglio è di scegliere il lato sicuro: non dare per scontato che le vecchie password non vengano trapelate.

Quindi la vera soluzione sarebbe combinare una stringa casuale, in continua evoluzione all'inizio, con un numero casuale, in continua evoluzione, alla fine!Fatto!Ora, devo solo ricordare la stringa e il numero ... per più siti ... che cambiano nel tempo ... potrei usare un computer per farlo!Sì!Soluzione trovata.
Yokai
2016-05-12 18:55:18 UTC
view on stackexchange narkive permalink

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

  #! / Bin / bashcrunch 9 9 0123456789 -t awefjio @@ Crunch ora genererà la seguente quantità di dati: 1000 bytes0 MB0 GB0 TB0 PBCrunch ora genererà il seguente numero di righe: 100 awefjio00awefjio01awefjio02awefjio03awefjio04awefjio05awefjio06awefjio07awefjio08awefjio09awefjio10 > e poi  Mantenere un modello di password prevedibile rende molto facile l'hacking nei forum di accesso ai siti Web protetti da credenziali. È buona norma creare una password unica e completamente nuova ogni volta. Un'altra cosa che rappresenta una minaccia è la fase di raccolta delle informazioni dell'hacking. Più un hacker impara a conoscere le abitudini, i gusti, le antipatie, gli hobby, i nomi di famiglia, le date di nascita, le date di eventi speciali della vita di un bersaglio, ecc., Più dovrà andare avanti con la creazione di un dizionario / elenco di parole per crackare un accesso.  

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

Simon B
2016-05-12 15:57:40 UTC
view on stackexchange narkive permalink

Sì, lo è.

Richiedere agli utenti di cambiare regolarmente le password è un sistema di sicurezza controproducente (vedi articolo CESG) poiché costringe gli utenti a scrivere Le password. Se un utente malintenzionato è riuscito a ottenere una password, potrebbe avere diverse settimane per installare backdoor o eliminare comunque gigabyte di dati dal sistema prima che la password venga modificata.

L'uso di un semplice schema di numerazione consente di scegliere una password che puoi ricordare senza scriverla, quindi puoi giocare con il sistema per consentirti di continuare a utilizzare la tua password memorizzabile per un tempo indefinito.

Se la tua password esistente è n bit di entropia, allora continuerà ad avere la stessa quantità di entropia di qualsiasi altra password di n bit di entropia. 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 il tuo schema di numerazione è così facilmente indovinabile da non aggiungere entropia, hai ancora i n bit con cui hai iniziato.

Se l'algoritmo di hashing utilizzato è buono, allora una password a passerà a quella che sembra essere una stringa casuale. Un'altra password b darà quella che sembra essere una stringa completamente diversa (tranne nel caso straordinariamente raro di una collisione di hash). Non dovrebbe esserci alcun modo, guardando i due hash, per determinare se le due password sono completamente diverse o variano di un solo carattere (forse una cifra alla fine). Se è possibile sapere se è cambiato solo un carattere, il tuo algoritmo di hashing è rotto e ne hai bisogno di uno migliore.

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

Questo è esattamente il mio punto sulla motivazione della mia domanda.Tuttavia, non risponde alla mia domanda sull'effettiva sicurezza di questo schema rispetto all'altro, anche se non ho (non posso) downvote.
@user21820 Ha ampliato la mia risposta.
Continuo a non rispondere alla mia domanda!L'hai letto attentamente?Ho detto: "Matematicamente questo schema di password è abbastanza buono perché i 10 bit in più consentono all'attaccante di provare 1024 volte più a lungo per decifrare la password rispetto a quello completamente casuale, supponendo che non si cambi una password più di 1024 volte."E poi più tardi ho detto che se questo schema non è buono, presumibilmente "dipenderà dagli algoritmi di autenticazione o crittografia coinvolti".In particolare, l'utilizzo di una tale famiglia di password potrebbe renderlo più facile da decifrare ** a causa degli algoritmi scelti **.
@user21820 Terza volta fortunato?Visualizza le ultime modifiche.
Questo è esattamente il mio punto;quanto siamo sicuri che i nostri algoritmi di hashing (per l'autenticazione) siano abbastanza sicuri da non essere frangibili anche se tutte le password differiscono solo nel contatore?
Ad ogni modo, alcune nuove risposte stanno dando ragioni per cui questo "gioco delle politiche sulle password" è dannoso dal punto di vista della sicurezza, anche assumendo proprietà crittografiche perfette del sistema.
"L'uso di un semplice schema di numerazione ti consente di scegliere una password che puoi ricordare senza scriverla" - l'interrogante l'ha già quantificata come una differenza di +10 bit.La domanda avrebbe potuto riguardare un numero molto più grande di 10, ma non lo è, quindi stai assumendo abbastanza nel dire che 10 bit (caratteri 2-ish) assicurano che l'utente del primo schema dovrà scrivere ilpassword giù mentre l'utente del secondo schema no.Se la domanda fosse "dovrei usare una nuova password a 12 bit o una password a 112 bit più contatore", l'argomento per il contatore sarebbe più forte.
(o meglio, l'argomento contro una password a 12 bit sarebbe una tale schiacciata che il secondo schema vincerebbe facilmente nonostante il piccolo svantaggio del contatore).
John Deters
2016-05-12 19:03:48 UTC
view on stackexchange narkive permalink

Nel tuo caso, la sicurezza dello schema di sequenziamento è diminuita principalmente a causa di fattori non crittografici. Considera il surf sulle spalle. Se digiti la stessa password, giorno dopo giorno, anno dopo anno, i tuoi colleghi o altri osservatori potrebbero notare gli schemi. È possibile digitare la stessa password in luoghi diversi con diversi livelli di sicurezza fisica, come un caffè, dove una normale telecamera potrebbe rilevare la password.

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

Utilizzando uno schema, aumenti il ​​rischio di perdita per un periodo di tempo più lungo.

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

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

Una valida ragione;Grazie.Ora mi chiedo quanto siano sicure le password dall'osservazione fisica senza contatto.
Inoltre, il dispositivo hardware nelle buone versioni di questo schema non si limita a incrementare, è un PRNG sicuro.Quindi, sapendo che era qwerty1007 tre settimane fa e qwerty1011 ieri mi dice solo che oggi è qwerty più 4 cifre, mentre un contatore incrementale mi dice che quasi certamente è qwerty1011 o qwerty1012 oggi.Il PRNG è sufficiente che i tentativi limitati prima del blocco interrompano effettivamente la maggior parte dei tentativi di indovinare le 4 cifre.Se fosse solo incrementato, l'attaccante avrebbe bisogno solo di 2 tentativi, quindi non verrebbe bloccato ...
DRF
2016-05-12 18:31:24 UTC
view on stackexchange narkive permalink

Vorrei elaborare in qualche modo la spiegazione fornita da Sjoerd e affrontarla da una prospettiva leggermente diversa.

Per prima cosa si dovrebbe chiedere quale obiettivo di sicurezza viene raggiunto dal cambio programmato (anziché reattivo) delle password ? Perché la tua divisione di sicurezza o il documento di best practice ti obbliga a cambiare una password ogni due mesi?

Ci sono un paio di ragioni:

  1. per complicare la forza bruta attacchi

    Quando qualcuno ottiene l'accesso all'hash della tua password, è probabile che ci vorrà un bel po 'di tempo prima che riesca a infrangerlo. Se la quantità di tempo per eseguire un attacco di forza bruta è più lunga del periodo di validità della password, non possono effettivamente trarre profitto dall'ottenere la password poiché l'hai già modificata

  2. Per limitare la quantità di tempo in cui una password compromessa può essere utile

    Le persone non sempre scoprono che la loro password è stata compromessa. Una modifica regolare della password garantisce che la password non consenta all'aggressore di entrare per sempre. (Ovviamente in alcuni casi quando si trovano in una volta sono sempre a causa di malware, apt è quello che hai, ma questo non è sempre il caso.) Questo si prende cura anche delle situazioni in cui l'attaccante scopre il compromesso solo in ritardo a causa di alcune circostanze.

  3. Per limitare leggermente il riutilizzo delle password

    Le persone spesso riutilizzano le proprie password in più sistemi (lavorativi e privati). La maggior parte dei sistemi privati ​​(gmail, quella pagina web di registrazione del centro sportivo ecc.) Non impone modifiche regolari della password, quindi è probabile che anche se l'utente inizia con la stessa password ovunque, le modifiche alla password gli faranno differenziare.

  4. Per eseguire il binding pass gli attacchi hash

    Se un utente malintenzionato ottiene solo l'accesso all'hash della tua password, può spesso usare quell'hash per autenticarsi contro i sistemi se abbastanza sofisticato. La modifica della password sottostante cambierà l'hash e quindi fermerà nuovamente l'attaccante.

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

Tutti insieme semplicemente incrementare il contatore su una password è certamente molto più debole che scegliere nuove password arbitrarie, ma quanto dipende dai tipi di attacchi previsti.

Queste sono tutte ragioni fornite molto comunemente, ma ognuna è sbagliata a modo suo.1) La forza bruta dovrebbe essere mitigata da forti protocolli di hashing, come PBKDF2.2) Un attaccante si procurerà quasi sempre una backdoor alternativa come primo passo.3) Questo schema è così comune e debole che chiunque conosca la password originale indovinerà tutte le permutazioni comuni della password.4) questo è un altro problema di implementazione.Gli hash devono scadere indipendentemente dalle password e a una velocità molto più rapida.
@JohnDeters Hmm Non posso davvero essere d'accordo con te.Nel secondo caso potrebbe non essere possibile fornire una backdoor alternativa (ad esempio l'accesso dell'utente a un server di posta).Sono d'accordo con il fatto che la forza bruta dovrebbe essere mitigata da forti protocolli di hashing, ma nessuna quantità di iterazioni ti salva se il tuo utente sceglie password errate (ish).3) Non vedo come siamo in disaccordo qui, sto dicendo che lo schema è cattivo.4) Non sono in disaccordo ma non sempre puoi scegliere quale soluzione tecnica utilizzare.
Grazie.(1) può essere ignorato perché ovviamente l'utente nella mia domanda sceglierà un n.(2) è più o meno lo stesso del motivo di Sjoerd, che è valido.(3) non funziona affatto;quasi tutti quelli che conosco usano varianti della loro password originale esattamente come descritto nella mia domanda, anche se non è valida a causa della password originale.Ma nel mio caso non è rilevante perché non intendevo usare lo stesso prefisso per diversi sistemi protetti da password;è sciocco.(4) è davvero stupido, dal momento che qualsiasi sistema che utilizza lo stesso hash ogni volta non vale la pena usarlo con una password sicura ...
Data una password casuale, è improbabile che la scoperta di un hash identico fornisca la password effettiva, e quindi sapere che c'è un numero che viene incrementato nella migliore delle ipotesi produce il fatto che non è la password effettiva, non lascia che un utente malintenzionato indovini ilpassword successiva.
@jmoreno Questa è un'affermazione piuttosto forte.Puoi confermarlo con la matematica?Per quanto ne so, non è nemmeno noto se qualcosa come SHA256 sia uno a uno su ingressi di dimensioni 256 bit.Anche se non lo fosse, sembra abbastanza probabile che sarà uno a uno su piccoli ingressi (la solita password sarà inferiore a 128 bit o 16 caratteri).
@user21820 per il numero 4) Ciò significa che crei sempre il tuo sistema operativo?Poiché tutti i sistemi operativi che conosco memorizzano gli hash delle password e ottenere l'hash è essenzialmente equivalente a ottenere la password per i tentativi di autenticazione remota.In realtà è un po 'peggio di così poiché puoi mostrare alcuni risultati sul valore hash per gli schemi di autenticazione della password, ma probabilmente sarebbe più sensato discuterne in chat piuttosto che nei commenti.
@DRF: no, e non avrei dovuto dirlo, perché dipende davvero da fattori che non sono coperti (quanto è lunga la password, ci sono limitazioni di lunghezza, quale algoritmo di hashing viene utilizzato, quali caratteri sono consentiti e così via).
@DRF: Avrei pensato che creando un account, il client avrebbe hash la password e la userebbe per generare una coppia di chiavi RSA e inviare solo la chiave pubblica al server (tramite HTTPS), dove viene memorizzata insieme all'hash salatopassword (utilizzando un hash diverso).Quindi per autenticare il server invierebbe una sfida crittografata utilizzando la chiave pubblica dell'utente, che solo l'utente può decrittografare utilizzando la password, e il client risponde con la password con hash salata (tramite HTTPS).Un utente malintenzionato che ottiene il database delle password con hash e i sali non sarà in grado di decrittografare la sfida.
(La sfida ovviamente include il sale e il nonce. Inoltre, l'uso di RSA non è necessario; qualsiasi crittografia a chiave pubblica andrà bene.) Non sono neanche lontanamente un esperto, ma se anche io riesco a trovare un tale schema mi aspettereiun sistema di autenticazione adeguato per essere almeno migliore del mio ...
@user21820 Hmm questo è più per una chat, ma essenzialmente la risposta è No praticamente niente di tutto ciò accade e ci sono un paio di ragioni per cui no.
@DRF: Oh perché non è stato fatto?Lo schema SCRAM descritto su wikipedia è simile al mio schema.Non mi dispiace chattare ma non è ancora apparso alcun "collegamento continua nella chat" ...
@user21820 Prova a partecipare a http://chat.stackexchange.com/rooms/39839/authentication-using-hashes se è possibile
Dewi Morgan
2016-05-12 19:37:49 UTC
view on stackexchange narkive permalink

Se il tuo database di password è trapelato, una buona password può richiedere del tempo per essere violata. A quel punto, molto probabilmente, sei stato costretto a cambiare la tua password. Questo concetto è una parte importante del motivo per cui esistono queste reimpostazioni forzate della password "security theater".

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

Se lo script conosce il periodo di reimpostazione della password per il tuo sistema, o può indovinarlo, allora può indovinare con un semplice numero crescente, quante volte il numero avrà stato incrementato. Quindi "fred12", dopo sette periodi di reimpostazione forzata della password, sarà quasi certamente "fred19". I periodi di reimpostazione della password sono quasi sempre un mese, quindi indovinarli funzionerà quasi sempre.

Vale anche la pena notare: se usi la stessa password su più sistemi, ma con numeri diversi perché uno viene incrementato a un rate, o perché hai creato i tuoi account in un momento diverso, quindi se un sistema è compromesso, entrambi i sistemi lo sono.

Quindi, in breve: no, genera una nuova password casuale ogni volta. Usa un gestore di password. Se puoi utilizzare l'autenticazione a due fattori, fallo.

Normalmente raccomando di utilizzare anche gestori di password.Tuttavia, molti dei luoghi in cui vengono applicate frequenti modifiche della password sono per gli accessi al computer sul posto di lavoro, dove i gestori di password non sono di aiuto.Per questo, utilizzo una passphrase ... ma non sono felice al 100% di memorizzarne una nuova ogni due mesi, né di digitare più di 40 caratteri ogni giorno quando accedo al mio computer di lavoro.
Lilly
2016-05-13 00:51:33 UTC
view on stackexchange narkive permalink

Dovresti rotolare una password completamente nuova.

Se non c'è una violazione, non vedo il valore nella rotazione costante delle password. Tuttavia, quando ruoti le password, questa è la chiave:

Vuoi rigenerare la password usando un sistema con lo stesso vincolo presumibilmente sicuro con cui hai impostato la password originale. Cioè l'incremento di un numero NON è accettabile perché stai solo modificando un byte poiché probabilmente un generatore ti ha dato P3588swrOd4.

Quindi se le tue regole per la password sono 3 parole casuali effettive "BadgerYtterbiumLancet" scegli una nuova non -parola casuale, rende la tua password molto più indovinabile, "BadgerFoxSquirrel".

L'altro grosso problema con il solo incremento delle password è che crea una situazione - diciamo che la tua azienda lo fa per 10 anni ... persone cambiare le password ogni mese. Stai creando hash delle password che sono pericolosamente simili tra loro. (questo è il motivo per cui usi qualsiasi cosa "casuale", "scegli" password - beh, le persone tendono a usare la password, una frase comune, ecc.) Vuoi la stessa unicità di ogni password rispetto alle altre - vuoi trattare nuove password per la stessa cosa delle nuove password. Cioè Password1, Password2, 3,4,5, ecc. questo finisce in un brutto posto. Ancora peggio se sei compromesso e risolvi il problema, se i tuoi dati sono preziosi per il cracker, puoi scommettere che proveranno quasi variazioni di ciò che hanno scoperto funzionare prima.

Inoltre, dovrebbe essere notato che non è sicuro per le persone esterne alla tua organizzazione (ad esempio dipendenti licenziati / vecchi) conoscere il metodo per la generazione della password. Ancora una volta questo è il motivo per cui torno al "casuale": nessuno dovrebbe sapere come prevedere la generazione della tua password oltre a qualcosa di vago "hanno scelto 4 parole casuali nel dizionario" o "hanno usato un potente generatore di password casuali".

Stai creando hash delle password che sono pericolosamente simili tra loro: hai esempi reali di algoritmi hash che lo fanno?
sonofapharmacist
2016-05-13 17:53:05 UTC
view on stackexchange narkive permalink

Quando sto violando le password, riceverò 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 schemi relativi a qwerty e l'elenco di base delle password scoperte poiché è stata la mia esperienza che è ciò che noi umani siamo inclini a fare.

Paul Pehrson
2016-05-14 04:50:33 UTC
view on stackexchange narkive permalink

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 viaggio a Disney World prima che la tua password scada, potresti fare qualcosa come Looking4wrd2SpaceMtn!

Tra 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 da password precedenti (se sei intelligente al riguardo), hanno una lunghezza decente e ti aiutano a ricordare un obiettivo su cui stai lavorando o un evento che non vedi l'ora di fare.

Se il trucco è cercare di ricordare la password e cambia frequentemente, penso che questa non sia un'opzione terribile.

Idea interessante!Immagino sia molto meglio di quello che fanno di solito le persone (che è scrivere su una nota adesiva e incollare sotto la tastiera dove nessun altro la vedrà, o incrementare un contatore).
Mawg says reinstate Monica
2016-05-15 18:57:01 UTC
view on stackexchange narkive permalink

Potresti essere in qualche modo al sicuro se il tuo suffisso sembra un anno di nascita.

Se uso myname1977 allora ci sono meno, ma probabilmente non zero, possibilità che qualcuno che conosce quella password indovini che l'ho cambiata in myname1978 .

Ma perché correre il rischio? (fai come dico, non come faccio io; incremento, ma solo al lavoro, perché è l'unico posto che mi chiede di cambiare la 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 minimo 8 caratteri, un numero, un carattere speciale maiuscolo & un carattere speciale è sicuramente gatto più un grosso cane AKA gatto + 1 cane



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...