Domanda:
Perché non posso condividere un codice monouso con nessun altro?
Henry WH Hack v2.1.3
2019-05-13 21:11:49 UTC
view on stackexchange narkive permalink

Ho notato che in alcuni casi, quando ricevo un codice di verifica da Google, potrebbe dire qualcosa del tipo:

"Non dovresti condividere questo codice con nessun altro e nessuno di Google chiederà mai questo codice. "

OK, sembra che sia per motivi di sicurezza, ma il codice è solo un codice usa e getta quindi se lo dai a qualcuno dopo che è stato usato, allora non funzionerà. (Potrebbe non essere applicabile per fornire a qualcuno il codice prima dell'uso, tuttavia anche se qualcuno conosce il tuo nome utente e la tua password ed è stato in grado di ottenere un codice inutilizzato e quella persona doveva accedere, un nuovo codice dovrebbe essere generato per la nuova sessione. Giusto?)

Mi sto perdendo qualcosa, c'è qualche motivo per non condividere l'unico codice temporale, specialmente la parte su uno sconosciuto casuale che lo chiama e lo chiede? Inoltre dovrebbe essere scaduto da tempo prima che qualcuno avesse la possibilità di chiamarti e chiederlo in futuro.

Perché pensi che dicano "non guardare la canna di una pistola" invece di "non guardare la canna di una pistola a meno che non sia vuota"?Oppure "non cercare di infilare le dita nella presa di corrente" invece di "non cercare di infilare le dita nella presa di corrente a meno che non siano troppo grandi per entrare oa meno che tu non abbia spento l'alimentazione"?eccetera.
@Mehrdad Conosci il detto "Meglio prevenire che curare", giusto?Te lo dicono per assicurarti di stare sempre attento a tutto ciò che potrebbe essere rischioso.
È ora di pubblicare una risposta alla tua domanda!
Non sono un esperto, quindi non ne farò una risposta.Immagina se qualcuno riuscisse in qualche modo a copiare il contenuto solo sui server giusti al momento giusto.Potrebbero quindi utilizzare il vecchio codice per accedere ai tuoi dati privati.Almeno, questo è uno dei motivi per cui non dovresti condividere le vecchie password.(Correggimi se sbaglio.)
Le persone che sono letteralmente mi fanno impazzire.Per favore, calmati, OP.
Perchè vorresti?
Se ottieni abbastanza codici, potresti potenzialmente capire come stanno calcolando anche quello successivo.
I codici non sono un uso!Possono assolutamente essere utilizzati più volte.Riuscite a immaginare lo svantaggio, se dovessero memorizzare il codice utilizzato per la copertura in un database?
Non sono _necessariamente_ monouso, in quanto ci sono solo 1.000.000 di codici possibili nel solito spazio di 6 cifre.La tempestività è un fattore cruciale qui.
@Snake, se stanno usando lo standard TOTP, non devono memorizzare nulla tranne il segreto condiviso e qualsiasi chiave è valida solo per 30 secondi.Se utilizzano token generati (ovvero token di reimpostazione della password), non devono condividere quelli che sono stati utilizzati, devono solo memorizzare quelli che sono stati generati, che di solito sono solo uno alla volta, edi solito va bene per un'ora o meno.
Sei risposte:
Ghedipunk
2019-05-13 21:31:15 UTC
view on stackexchange narkive permalink

Non sono precisi perché non devono farlo e un linguaggio preciso potrebbe confondere alcuni utenti.

Potrebbero dire, ad esempio, "Non dovresti condividere codici inutilizzati inferiori a un'ora con nessun altro e nessuno di Google chiederà mai questo codice. "

Io e te sapremmo cosa significano. Mio suocero e mio nonno non sapranno perché, però. Mio suocero è un esempio specifico di una persona che vedrebbe che ci sono momenti in cui può condividere codici e qualcuno che lo truffa dal suo controllo di sicurezza sociale avrà accesso anche alla sua posta elettronica. (Sì, la maggior parte della sua posta in arrivo riguarda le sostanze chimiche per il controllo mentale aggiunte alle scie di condensazione e il modo in cui le eruzioni solari causano i terremoti, ma potrebbe anche consentire a qualcuno di accedere al suo conto bancario.)

Come è stato sottolineato nei commenti, ci sono altri esempi di situazioni che sono condizionatamente pericolose, ma le persone semplicemente non includono le eccezioni. Ad esempio: "Non guardare mai la canna di un'arma da fuoco [a meno che tu non abbia svuotato la camera]" o "non inserire mai il dito in una presa di corrente [a meno che tu non abbia spento la corrente a quella presa]."

Poiché un token usato o scaduto è inutile per tutti, non ha senso conservarlo, condividerlo, proteggerlo, eliminarlo o aggiungere eccezioni ai consigli generali sulla sicurezza.

Lo capisco da personale esperienza che ci sono utenti che faranno cose stupide quando gli fai sapere che ci sono casi limite e sfumature per la sicurezza. Sapendo che, se dovessi scrivere un simile avvertimento ai miei utenti, renderei la mia dichiarazione il più ampia e generale possibile.

Anche semplice.Le regole semplici sono facili da ricordare.Le condizioni annidate aumentano la complessità ciclomatica.
* (...) un esempio specifico di una persona che vedrebbe che ci sono momenti in cui può condividere codici *.Questo è un ottimo punto.Dare troppi dettagli significa che si può (logicamente) assumere qualcosa di inaspettato.
Nota che la custodia della pistola è un esempio dello stesso approccio: tutti ti diranno di trattare ogni arma come carica e in procinto di accendersi male in qualsiasi momento * anche se * l'hai appena pulita e sei assolutamente sicuro che non sia caricata (salveràla prossima volta che la tua memoria muscolare inserisce anche la cartuccia mentre la tua mente non se ne accorge).Perché se non hai bisogno di fare l'eccezione, è meglio non farlo.
Scie chimiche?Spargili in questo modo, amico - io * amo * quelle cose !!!:-)
E tieni presente che, non sapendo come vengono generati i codici, non possiamo sapere con certezza che non contengono informazioni sensibili che qualcuno con la giusta conoscenza e interesse non può estrarre e utilizzare per fare del male.Per esempio.Ho visto algoritmi per tali codici che contengono un nome utente codificato, che da solo fornirebbe a un potenziale intruso informazioni che non aveva prima.
Un grande bagliore _può_ causare un terremoto, in teoria ...;)
dr jimbob
2019-05-13 22:15:13 UTC
view on stackexchange narkive permalink

Serve a prevenire attacchi di ingegneria sociale contro di te. Immagina, ad esempio, di aver effettuato l'accesso al tuo account Gmail a due fattori su un computer pubblico ombreggiato in cui un keylogger ha registrato il tuo indirizzo email e la tua password (ma non sei stato in grado di usarli mentre eri loggato), ma hai l'autenticazione a due fattori abilitata e ti sei ricordato di disconnetterti alla fine della sessione. Il tuo account è ancora al sicuro (anche se ancora una volta, è meglio non accedere ai tuoi sistemi utilizzando computer pubblici imprecisi; perché anche con l'autenticazione a due fattori qualcuno sofisticato potrebbe comunque fare cose potenzialmente dannose sul tuo account nella finestra mentre eri connesso) .

Gli aggressori ora hanno il tuo indirizzo email e la tua password. Per accedere al tuo account (ad esempio per utilizzare il tuo indirizzo e-mail per reimpostare le password per altri sistemi, come ordinare cose online, accedere a conti bancari, inviare spam o altro caos), devono superare il sistema di autenticazione a due fattori. Quindi ti contattano, fingono di essere Google e cercano di indurti a rispondere con il codice di autenticazione effettivo, in modo che possano accedere completamente al tuo account. Forse ti chiamano al telefono (numero falsificato che sembra associato a Google Inc) e dicono "vediamo che hai configurato l'autenticazione a 2 fattori, prima di poter procedere ho bisogno che tu ci dica il codice appena inviato", ecc.

I token scaduti o già utilizzati non hanno importanza, ma vogliono solo farti prendere l'abitudine di non divulgare queste informazioni a terzi.

In alternativa, qualcuno con il nome utente, la linea fissa e il numero di cellulare del destinatario può telefonare alla linea fissa, fingendo di controllare l'accuratezza delle informazioni sul numero di telefono, utilizzare la funzione "password persa" sull'account e chiedere il codice al destinatarioil loro cellulare dovrebbe ricevere.In tali circostanze, molte vittime potrebbero non preoccuparsi di leggere il messaggio contenente il codice per vedere perché è stato inviato.
Penso che il PO capisca già i punti dei paragrafi 1 e 2. Il paragrafo 3 è davvero la parte in cui risponde alla sua domanda.
@JonBentley: Non sono d'accordo.I paragrafi 1 e 2 sollevano un punto a cui non credo il PO avesse pensato.(La premessa della domanda è "Ho legittimamente richiesto questo codice e sto per usarlo - perché non condividerlo in seguito?"; Questa risposta sottolinea "Questa stessa notifica è anche ciò che viene inviato quando non hai legittimamente richiesto questo codice. Non condividerlo con chi ti ha fatto ricevere una notifica. ")
@ruakh: Un altro modo di vederlo: l'unico motivo per cui qualcuno vorrebbe un codice del genere sarebbe se sperava di usarlo per impersonarti * prima * che tu lo usi, quindi l'unico motivo per cui dovresti dare a qualcuno un codice del genere sarebbe sevolevi che fossero in grado di impersonarti.Data la mancanza di supporto da parte di molti siti per gli account proxy, a volte si potrebbe * voler * assistere una persona * fidata * con tale imitazione (ad esempio qualcuno in un luogo con un servizio telefonico solo vocale potrebbe volere che una persona fidata controlli la propria posta)ma non un falso dipendente di Google.
AndrolGenhald
2019-05-13 21:32:07 UTC
view on stackexchange narkive permalink

Potrebbe non essere applicabile per fornire il codice a qualcuno prima dell'uso, tuttavia anche se qualcuno conosce il tuo nome utente e la tua password ed è stato in grado di ottenere un codice inutilizzato e quella persona a cui accedere dovrebbe essere generato un nuovo codice per la nuova sessione . giusto?

Sbagliato. Presumo tu stia parlando di un codice TOTP generato ad esempio dall'app Google Authenticator. TOTP funziona memorizzando un segreto condiviso sul client e sul server (il tuo telefono e i server di Google). Per l'autenticazione, sia il client che il server utilizzano il segreto come una chiave HMAC per eseguire l'hashing dell'ora corrente, quindi troncarlo a un valore di n cifra (spesso 6 cifre, a volte più lunghe ).

TOTP non è legato in alcun modo a una sessione, è interamente basato su un segreto condiviso e l'ora corrente.

Mi manca qualcosa, è lì qualche motivo per non condividere l'unico codice temporale, specialmente la parte su uno sconosciuto casuale che lo chiama e lo chiede? Inoltre dovrebbe essere scaduto da tempo prima che qualcuno avesse la possibilità di chiamarti e chiederlo in futuro.

Immagino che stiano cercando di impedire alle persone di cadere in truffe quando qualcuno te lo chiede per inviare loro il codice corrente . Dopo che il codice è stato utilizzato o dopo che è trascorso un tempo sufficiente per renderlo non più valido, il codice è inutile.

Più vecchi codici possono contenere informazioni sufficienti per consentire la forzatura bruta del segreto condiviso, ma che richiede almeno un attacco preimage a SHA-1, che è ancora abbastanza irrealizzabile (cioè i codici permetteranno loro di dire se qualche particolare ipotesi per il segreto condiviso è corretta, ma potrebbero trascorrere diverse vite indovinare e non trovarlo mai).

https://it.slashdot.org/story/19/05/13/2255229/academics-improve-sha-1-collision-attack-make-it-actually-dangerous
@ivanivan Questo è ancora un attacco di collisione.Un attacco prima dell'immagine è molto più difficile.Non ci sono ancora attacchi pratici di preimage contro MD5.
In realtà non sono sicuro che un attacco preimage all'hash potrebbe [rompere HMAC] (https://crypto.stackexchange.com/a/44785), anche se come dice fgrieu, probabilmente è meglio presumere che sia rotto a quel punto.
ANone
2019-05-15 18:39:54 UTC
view on stackexchange narkive permalink

Questo vale per molti consigli nella comunità della sicurezza.

La linea che divide "buona pratica" e "cattiva pratica" dovrebbe essere coerente, ma spesso non lo è. O puoi romperlo ed è brutto o non puoi ed è buono, giusto?

Sfortunatamente non è così che tende a funzionare. In particolare la parte offensiva e quella difensiva tracciano linee sulla sabbia in modo diverso. Sebbene la stessa domanda rotta o non sia il cuore della questione in pratica, ignora molte aree grigie tra il "buono" e il "cattivo" che nessuna delle parti vuole affrontare, il che porta a molte domande imbarazzanti come la mia preferito "Quanto è grave MD5?".

Sfortunatamente non esiste un modo semplice per aggirare questo problema. C'è molta area grigia nella crittografia in quanto riguarda ciò che le persone non possono fare e che è quasi impossibile da provare o evitare. Anche quando non c'è alcuna ambiguità, quanto tempo ci vorrà, e con quale kit, perché qualcosa sia forza bruta prima che sia sicuro? I suoi minuti chiari su un desktop medio non sono buoni e miliardi di anni su tutti gli attuali computer dell'umanità sono probabilmente abbastanza buoni per la maggior parte delle cose, ma il confine c'è nel mezzo. Non c'è risposta a questo. L'unico modo per essere al sicuro è se la parte difensiva insiste sempre su condizioni più rigide di quelle che la parte offensiva accetterebbe come vulnerabile .

Il risultato da portare a casa è:

Non dovresti aspettarti che il consiglio difensivo si allinei esattamente con gli attacchi vitali, non è il loro lavoro ed è invariabilmente una linea sfocata complessa che è quasi impossibile da correggere e gli errori possono essere a dir poco problematici.

Quindi sbagliamo dalla parte della cautela. Soprattutto se questo fa poco male.

Onestamente l'ultima riga dovrebbe essere l'intestazione 1, all'inizio della tua risposta.Quando si tratta di sicurezza, questo è il consiglio perfettamente corretto.
Philip Tinney
2019-05-16 08:31:12 UTC
view on stackexchange narkive permalink

dr jimbob è completamente corretto. Ingegneria sociale. In particolare, un attacco di ingegneria sociale quando l'aggressore ha la tua password. Posso immaginare uno scenario in cui un database utente insicuro viene forzato. Immagino che un discreto numero di utenti potrebbe essere associato a un numero di telefono, potrebbe anche essere nel database. Man mano che le password vengono violate e viene associato un numero di telefono, inviarlo a un IVR Twilio. Se rispondono, l'IVR dice loro che il loro account potrebbe essere stato compromesso e verrà disattivato a meno che non inseriscano il codice di conferma che dovrebbero ricevere. Quindi attiva un login e se rispondono con il codice, sei dentro. Questo è esattamente il motivo per cui si dice che nessuno lo chiederà mai. Come accennato, quelli usati non hanno valore, ma convincerti a rinunciare a uno inutilizzato è d'oro.

Tony
2019-05-15 21:30:58 UTC
view on stackexchange narkive permalink

La mia risposta è sbagliata.

Questi codici sono generati da "qualche algoritmo". Anche se qualcuno conosce questo algoritmo, non conosce il punto di partenza o la posizione corrente nella sequenza di codici calcolabili in cui si trova attualmente l'algoritmo.

Se qualcuno avesse abbastanza codici E conoscesse l'algoritmo potrebbe, in teoria, capire dove si trova l'algoritmo nella sequenza e iniziare a calcolare nuovi codici.

Anche se, penso che questo potrebbe applicarsi solo a quei token hardware che ottieni, ad esempio, accedendo al tuo MMORPG preferito

Altamente improbabile che qualcuno possa elaborare entrambe le informazioni richieste per rompere il sistema.

Avere semplicemente abbastanza codici e sapere quale algoritmo è stato utilizzato non è sufficiente per infrangerlo, se lo fosse sarebbe considerato insicuro.Gli algoritmi 2FA più comuni sono standard e pubblici.
Mi sono reso conto una volta che ho letto il mio commento dopo aver postato che era sbagliato lol.L'ho modificato ma è ancora sbagliato e potrei "cancellarlo".
L'aggressore può facilmente cantare da solo e ottenere tutti i codici che desidera.Non c'è bisogno di indurre una terza parte a condividere un codice.


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