Domanda:
I codici di sicurezza 2FA con testo sono volutamente facili da ricordare?
Bob Kaufman
2017-12-12 00:11:34 UTC
view on stackexchange narkive permalink

Ho una configurazione 2FA sul mio conto bancario. Quando effettuo l'accesso, ricevo un codice di sei cifre come messaggio istantaneo sul mio telefono che inserisco nel sito web. Questi codici sempre sembrano avere uno schema. O qualcosa come 111xxx, 123321, xx1212, ecc.

Penso che questi codici siano intenzionalmente facili da ricordare a colpo d'occhio. Esiste una pratica commerciale comune / best practice che imponga che questi codici abbiano uno schema per renderli più facili da ricordare?

Uso molti codici 2FA e non ho mai notato un tale schema.Certo, a volte ci sono cifre ripetute, ma non sembrano verificarsi abbastanza spesso da suggerire che stia succedendo qualcosa di strano.Potrebbe essere istruttivo tenere traccia dei tuoi codici e fare un'analisi statistica sulle cifre dopo averne accumulate un centinaio.
Uso sia i codici 2FA con testo che anche i codici delle app di autenticazione e sebbene non noti alcun pattern nei codici delle app di autenticazione, ho notato che quelli inviati al mio telefono sono spesso facilmente memorizzabili.
Come nota a margine (essendo questo lo Stack infosec), i fattori inviati come messaggi SMS non sono considerati secondi fattori sicuri.Molti sistemi non offrono niente di meglio, ma se hai la possibilità di utilizzare un'app di autenticazione o qualcosa che richiede la registrazione del dispositivo, sarebbe meglio.Un articolo di esempio sull'argomento: https://techcrunch.com/2016/07/25/nist-declares-the-age-of-sms-based-2-factor-authentication-over/
Se pensi a uno schema, è probabile che non si applichi al tuo codice, ma se pensi a un codice, è probabile che il codice abbia * qualche * tipo di schema.Una volta ho dovuto generare una password wi-fi casuale per mia madre;Ho continuato a generarli finché non ho trovato uno che pensavo non avesse schemi su cui commentare.Poi ha detto "Hai scelto quello perché ha le tue iniziali?"
@TobySmith Noto schemi in quelli molto più frequentemente in quelli delle app che in quelli degli SMS!
Ho passato 10 minuti a digitare una domanda identica prima che SO raccomandasse la tua.Sono un po 'triste che tu mi abbia battuto, ma felice di non essere l'unico pazzo.:)
Cinque risposte:
#1
+127
ScarySpider
2017-12-12 01:43:51 UTC
view on stackexchange narkive permalink

Anch'io l'ho notato e penso che sia il risultato della tendenza del cervello umano ad applicare schemi al rumore casuale. Questo sembra essere più comune quando si cerca specificamente di ricordare una stringa di numeri.

Direi che è questo.Questi [OTP] (https://en.wikipedia.org/wiki/One-time_password#Methods_of_generating_the_OTP) sono solitamente codici generati casualmente che cercano di essere il più sicuri possibile, introdurre modelli nella loro creazione sarebbe sicuramente un difetto di sicurezza.Inoltre, nota quanto sono brevi questi numeri, questo, combinato con ciò che ha menzionato @ScarySpider, li rende facili da ricordare.
E una volta che inizi a notare gli schemi, [bias di conferma] (https://en.m.wikipedia.org/wiki/Confirmation_bias) prende il sopravvento.
#2
+56
Michael
2017-12-12 03:03:31 UTC
view on stackexchange narkive permalink

Circa l'85% dei numeri casuali a sei cifre avrà almeno una cifra ripetuta e il 40% avrà una cifra sequenziale ripetuta una accanto all'altra. (Sono felice di essere corretto in matematica.)

Queste chiavi vengono generate utilizzando l'algoritmo TOTP standard. L'articolo riassume questa implementazione, mostrando che non c'è alcuno sforzo per generare un numero memorabile:

Secondo RFC 6238, l'implementazione di riferimento è la seguente:

  • Genera una chiave, K, che è una stringa di byte arbitraria, e condividila in modo sicuro con il client.
  • Concorda un T0, l'ora Unix da cui iniziare a contare i passi temporali e un intervallo, TI, che verrà utilizzato per calcolare il valore del contatore C (i valori predefiniti sono l'epoca Unix come T0 e 30 secondi come TI)
  • Concordare un metodo hash crittografico (il valore predefinito è SHA-1)
  • Concordare una lunghezza del token, N (il valore predefinito è 6)

Sebbene RFC 6238 consenta l'utilizzo di parametri diversi, l'implementazione Google dell'app di autenticazione non supporta T0, valori TI , metodi hash e lunghezze di token diverse da quelle predefinite. Si aspetta inoltre che la chiave segreta K venga inserita (o fornita in un codice QR) nella codifica base 32 secondo RFC 3548.

Una volta concordati i parametri, la generazione del token è la seguente:

  1. Calcola C come numero di volte in cui TI è trascorso dopo T0.
  2. Calcola l'hash HMAC H con C come messaggio e K come chiave (l'algoritmo HMAC è definito in la sezione precedente, ma anche la maggior parte delle biblioteche crittografiche lo supportano). K dovrebbe essere passato così com'è, C dovrebbe essere passato come intero senza segno a 64 bit.
  3. Prendi i 4 bit meno significativi di H e usali come offset, O.
  4. Prendi 4 byte da H a partire da O byte MSB, elimina il bit più significativo e memorizza il resto come un numero intero (senza segno) a 32 bit, I.
  5. Il token è le N cifre più basse di I in base 10. Se il risultato ha meno cifre di N, riempilo con zeri da sinistra.

Sia il server che il client calcolare il token, quindi il server controlla se il token fornito dal client corrisponde al token generato localmente. Alcuni server consentono codici che avrebbero dovuto essere generati prima o dopo l'ora corrente per tenere conto di lievi disallineamenti dell'orologio, latenza di rete e ritardi degli utenti.

Non c'è motivo per cui un OTP fornito da IM utilizzi questo tipo di algoritmo.Molto probabilmente sono solo sei cifre casuali da / dev / random.
@Sneftel Questo ha il vantaggio che il server non deve memorizzare l'OTP;lo calcola solo quando viene inserito.Gestisce anche il fatto che il codice è valido solo per una breve finestra.Se utilizzi un numero casuale, dovresti memorizzare ciò che hai generato e la relativa data di scadenza.Ovviamente l'uno o l'altro funziona altrettanto bene in assenza di un secondo fattore, però.
@ChrisHayes Non dover memorizzare un numero a sei cifre per un paio di minuti, insieme a una data di scadenza, è un vantaggio immateriale.Questi sono i tipi di cose che devono essere salvati comunque per la sessione.
Non puoi sapere se un vank senza nome usa TOTP o meno, quindi vorrei proteggere questa affermazione.Ma +1 per fare i conti.
-1 per reclami infondati presentati come fatti
@Sneftel Anche se è vero al 100% che "un OTP fornito da IM" non * deve * utilizzare l'algoritmo sopra descritto, ma * generalmente * quando le persone fanno riferimento a 2FA e OTP, l'algoritmo di cui sopra viene implementato e utilizzato.È un'ipotesi abbastanza sicura da fare.Ma sì, se devi essere pedante al riguardo, è vero, non * deve * riferirsi alla RFC 6238. Ciò che ci lascia, quindi, è il motivo per cui le cifre sembrano avere uno schema e per questoSono d'accordo, su entrambe le spiegazioni (RFC 6239 o / dev / random), con la [risposta attualmente accettata] (https://security.stackexchange.com/a/175278/3992).
È più probabile che i codici con testo IME vengano generati con HOTP che con TOTP, semmai.È difficile sapere quanto presto arriverà il codice e dovrà essere accettato;Inoltre, non si desidera che due richieste nello stesso periodo di tempo generino lo stesso codice.
@otus, buon punto.Ho letto "IM sul telefono" come una notifica proveniente dall'app mobile della banca, che probabilmente sarebbe TOTP, ma rileggendo mi rendo conto che probabilmente OP significava un messaggio di testo.
** Amico ** Ho appena fatto i conti da solo per un commento, ho fatto scorrere verso il basso e ho scoperto che mi hai battuto sul tempo.Da una persona a caso su Internet a un'altra: la mia matematica è d'accordo con la tua matematica.Questa dovrebbe essere una risposta sufficiente per chiunque: se Internet dice che è vero, allora è vero.
#3
+21
Tim
2017-12-14 09:09:53 UTC
view on stackexchange narkive permalink

Sul mio telefono avevo circa 90 codici di verifica di varie aziende. 62 di questi erano lunghi 6 cifre. Ecco il conteggio di ogni cifra:

Forse una leggera inclinazione verso 1,8 e 9? Quasi certamente solo rumore nei dati (62 è un piccolo campione).

E le doppie cifre?

enter image description here Il primo grafico è solo il doppie cifre sui limiti a 2 cifre (cioè AABBCC), quindi ci aspetteremmo che ogni coppia appaia circa 1,86 volte attraverso i 186 possibili posizionamenti di cifre. Il secondo è qualsiasi posizionamento (ad esempio XXX99X conta come una doppia cifra). Ci aspettiamo che ogni coppia sia circa 3,1 volte nei 310 posizionamenti.

Non sembra esserci alcuna inclinazione evidente con molte più cifre doppie rispetto alle cifre non doppie - doppie sono mostrate in arancione. In questi ultimi dati, ci aspetteremmo circa 31 cifre doppie e ne otteniamo 27. Sembra ragionevole.

Ovviamente, questo non esclude altri modelli "non casuali", ma ad essere onesti gli esseri umani è probabile che stiano cercando modelli: guarda questi numeri, tutti presi dalla mia app 2FA: 365 595, 111216, 566 272, 468 694, 191 574, 833 043.

Voto positivo perché mi piacciono i grafici.
#4
+14
schroeder
2017-12-12 00:21:49 UTC
view on stackexchange narkive permalink

Spero che questa sia solo una casualità nel tuo caso. Se c'è uno schema, indebolisce l'intero punto di avere un secondo codice.

No, non dovrebbero essere intenzionalmente facili da ricordare e non esiste un caso aziendale generalizzato a meno che non abbiano ricevuto feedback che i loro utenti avevano problemi a digitare 6 numeri. Allora qualcuno potrebbe aver fatto qualcosa di stupido, ma spero davvero di no.

#5
+13
thomasrutter
2017-12-12 05:21:14 UTC
view on stackexchange narkive permalink

Ha anche a che fare con il modo in cui gli umani tendono a pensare alla casualità. Nella vera casualità, le cifre ripetute e gli schemi ripetuti si verificano molto più spesso di quanto ci aspettiamo. Quando agli esseri umani viene chiesto di creare sequenze di cifre che "sembrano" casuali, tendono a evitare di ripetere schemi o cifre (così come altre stranezze, come l'uso eccessivo di "7" e il sottoutilizzo di "0" e "2", eccetera). Se chiedi a qualcuno di scegliere un numero "casuale" compreso tra 1 e 100, molto spesso conterrà un 7 e molto spesso sarà 37 (o 17). Puoi studiare i numeri della lotteria che le persone scelgono manualmente poiché (spesso) le persone cercano di scegliere qualcosa di casuale (sulla falsa convinzione che i numeri dall'aspetto casuale abbiano maggiori probabilità di vincere in un'estrazione casuale).

Se un umano sta cercando di emulare un lancio casuale di una moneta, alternerà testa e croce molto più di quanto ripeterà l'ultimo risultato, rendendo possibile prevedere il loro prossimo valore con una certezza abbastanza buona (> 50% di possibilità che il loro prossimo valore sarà essere l'opposto del loro ultimo).

Una cifra ripetuta o una sequenza di due cifre sarebbe abbastanza comune in un vero numero casuale a 6 cifre (ad esempio ~ 41% di una cifra ripetuta consecutiva, ~ 85% di una cifra ripetuta ovunque) e molto raro in un numero "casuale" di 6 cifre che chiedi a un essere umano di inventare.

Scegliere un numero veramente casuale è una strategia legittima in una lotteria poiché è meno probabile che tu condivida il premio con molte altre persone.Ovviamente, poiché la maggior parte delle lotterie ha un'opzione "dammi numeri veramente casuali", provare a farlo manualmente è un po 'stupido
Questo è corretto, e non deve essere confuso con un numero "casuale" (per un essere umano) che è uno svantaggio in una lotteria.Quando si tratta di partecipanti alla lotteria, la superstizione gioca un ruolo importante, le persone hanno numeri "fortunati", ecc.
@fjw OK, ma come fai a sapere che le persone scelgono numeri dall'aspetto casuale perché hanno la falsa convinzione che i numeri dall'aspetto casuale abbiano maggiori probabilità di vincere rispetto a scegliere numeri dall'aspetto casuale in base alla convinzione giustificata che il numero casuale massimizza i loro guadagni (accoppiaticon la nostra incapacità di scegliere numeri veramente casuali)?(+1 alla risposta in ogni caso)
Il "valore predefinito" non è scegliere i propri numeri e generarli casualmente.Scegliere specificamente di scegliere i propri numeri è sempre fatto nella convinzione che si possa in qualche modo fare meglio di un generatore di numeri casuali, sia che si tratti di massimizzare i guadagni o la probabilità di vincita.Se questa convinzione è che puoi ottenerli più "casuali" o puoi scegliere numeri "casuali" migliori rispetto ai numeri generati automaticamente, è falso.La superstizione gioca un ruolo importante e forse anche un po 'di paranoia: che i numeri generati automaticamente siano in qualche modo truccati contro di te.


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...