Domanda:
Perché molti siti Web nascondono l'input quando si immette una OTP?
Robin Salih
2019-09-26 21:09:17 UTC
view on stackexchange narkive permalink

Ho notato che su molti siti, quando chiedono una password monouso (OTP) (solitamente inviata tramite SMS), l'input è nascosto allo stesso modo del campo della password è.

La mia comprensione è che una volta utilizzata una OTP, non è più utile per nulla.

C'è un motivo valido per nascondere l'input per questi campi?

Quando Facebook ha iniziato ad accettare password con lettere maiuscole, alcune persone hanno espresso dubbi sul fatto che fossero sicure.Se un sito smette di nascondere l'input in un campo denominato "password", ne deriverà la stessa controversia.
Puoi fare un esempio per i siti?Facebook, Github, Azure, AWS, Google mostrano tutti le cifre.
@eckes La cosa 3D Secure della mia banca lo fa.Ogni volta che utilizzo la mia carta di debito, vengo indirizzato a quella pagina (* .arcot.com).https://imgur.com/a/RNMr555
In una forma grande con molti campi incluso il campo della password, una terza parte potrebbe vedere la password e inviarla prima che lo faccia l'utente.
@eckes L'ho visto in alcuni posti, incluso Natwest Online banking.
Cinque risposte:
MechMK1
2019-09-26 21:43:56 UTC
view on stackexchange narkive permalink

Sto basando la mia risposta sul presupposto che una password monouso sia utilizzata come secondo fattore, oltre a una tradizionale combinazione nome utente / password. Se questo non è il caso e la password monouso è l'unico fattore, la risposta di Gilles è sicuramente più applicabile.


Molto probabilmente a causa della Programmazione Cargo Cult, che significa seguire ciecamente schemi che sono stati osservati altrove, senza comprenderne il vero significato.

Uno sviluppatore potrebbe vedere la password " "in" One-time password "e rendila felicemente <input type =" password "> . Dopotutto, è lì per questo, giusto?

C'è uno svantaggio?

Dal punto di vista della sicurezza, no. La divulgazione di una password monouso a terzi (ad esempio tramite navigazione a spalla) non è altrettanto problematica, perché la password perde validità dopo un utilizzo o dopo un certo periodo di tempo.

L'unico svantaggio immaginabile sarebbe un'esperienza utente inferiore, poiché un utente potrebbe avere problemi a garantire che ciò che ha digitato corrisponda effettivamente alla password ricevuta.

I commenti non sono per discussioni estese;questa conversazione è stata [spostata in chat] (https://chat.stackexchange.com/rooms/99174/discussion-on-answer-by-mechmk1-why-do-many-websites-hide-input-when-entering-un).
A seconda dello schema, le OTP non sono solo una tantum.Ad esempio, i token TOTP sono validi per 30 secondi, indipendentemente dal numero di volte in cui si utilizza effettivamente il token.In tal caso, la navigazione a spalla può essere un problema se il primo fattore (ad esempio la password) è già stato compromesso.
@ChristopherSchultz Se è implementato secondo la [RFC] (https://tools.ietf.org/html/rfc6238#section-5.2) TOTP _is_ una volta: "Il verificatore NON DEVE accettare il secondo tentativo di OTP dopo la convalida riuscitaè stato rilasciato per la prima OTP ".
@AndrolGenhald Interessante.Apparentemente, a un certo punto mi ero perso quel dettaglio durante l'implementazione di TOTP come esempio.Questo requisito * RFC-MUST-NOT * rende difficile l'implementazione completa delle specifiche nei sistemi distribuiti.Mi chiedo quante implementazioni siano effettivamente conformi.
@ChristopherSchultz - difficile ma non impossibile.Una delle cose che l'hype blockchain ha insegnato è che è possibile sviluppare robusti algoritmi di consenso - qualcosa con cui le persone avevano difficoltà (in particolare affrontando il problema del cervello diviso)
@ChristopherSchultz è vero che molte delle soluzioni sono state sviluppate prima del clamore della blockchain: Paxos, ad esempio, è piuttosto vecchio.Ma ultimamente gli algoritmi di consenso hanno rinnovato l'interesse per la blockchain
@AndrolGenhald "la convalida è stata rilasciata per il primo" - il surfista spalla ha ancora tempo per digitarlo prima che lo faccia l'utente reale.CioèPRIMA "è stata rilasciata la convalida per la prima".
@OlegV.Volkov Dato che stiamo parlando della voce sul sito web, il surfista spalla ovviamente non può inserire il codice completo prima dell'utente reale (anche se potrebbe potenzialmente inviare il modulo prima dell'utente reale).Se stai parlando di spalla che naviga il codice visualizzato sul dispositivo OTP, è irrilevante per la domanda.
@slebetman Questo è un problema con una durata di 30 secondi (per i parametri TOTP predefiniti).Blockchain è forse la peggiore implementazione possibile di una contromisura per questo possibile vettore di attacco (per quasi tutto se è per questo).
@ChristopherSchultz Non sto parlando di blockchain.Sto parlando di algoritmi di consenso che precedono la blockchain ma forse non erano abbastanza conosciuti fino a quando la blockchain non li ha portati in prima linea.Paxos ad esempio è stato pubblicato nel 1988 ma software come Elasticsearch (pubblicato nel 2010) aveva ancora / ha problemi con la sincronizzazione asincrona anche se è un problema risolto perché i suoi sviluppatori non erano consapevoli dell'esistenza di tali algoritmi ma in realtà esiste un'intera famigliadi algoritmi.Le blockchain non sarebbero possibili senza algoritmi di consenso
Gilles 'SO- stop being evil'
2019-09-26 21:42:15 UTC
view on stackexchange narkive permalink

Il motivo per nascondere le password è impedire la navigazione a spalla: qualcuno che è fisicamente presente (o qualcuno che osserva attraverso una telecamera) potrebbe essere in grado di leggere la password sullo schermo. Anche questo è un rischio per una password monouso, ma in misura molto minore per due motivi: la password monouso è valida solo per un breve periodo e viene comunque visualizzata sul dispositivo OTP. Ma è comunque un rischio. A seconda del tipo di OTP, può rimanere valido per un paio di minuti (se è basato sul tempo e il server non protegge dalla riproduzione) o fino a quando l'utente legittimo non ha terminato di digitarlo (se è basato su sequenza o il server protegge dalla riproduzione). Spesso lo schermo del dispositivo OTP è meno visibile ai navigatori a spalla rispetto al computer in cui l'utente entra nell'OTP.

Dichiarare un campo come password fa altre cose oltre a nascondere i dati: potrebbe impedire la copia nel appunti e potrebbe impedire all'applicazione di registrare l'OTP in una cronologia delle voci del modulo. Nessuno di questi ha alcun vantaggio in termini di sicurezza, ma omettere l'OTP dalla cronologia delle voci ha un vantaggio di usabilità: evita di dare agli utenti l'impressione che l'OTP sia un input valido in seguito.

Queste sono ragioni piuttosto deboli. Il motivo principale è che i progettisti di moduli vedono che l'input è una password di qualche tipo e quindi la dichiarano come una password.

Supponendo che una password monouso sia utilizzata come secondo fattore, la considererei molto meno rischiosa, dal momento che qualcuno dovrebbe essere anche in possesso del fattore primario.Ma questo è un buon punto, lo aggiungerò di conseguenza alla mia risposta.
L'uso di "autocomplete =" one-time-code "` omette l'OTP dalla cronologia senza essere ostile all'utente.
Questo può sembrare un po 'un livello di paranoia alla James Bond, ma una considerazione per la sicurezza della navigazione a spalla è l'affidabilità della rete.Spingiamo le persone su https per prevenire attacchi mitm automatici, ma nessuna crittografia garantisce che la rete non si interrompa.Un utente malintenzionato può essere in grado di vedere il codice, bloccare il segnale (ad esempio scollegare il router) e avere due minuti buoni nella confusione per inserirlo da solo.
Ovviamente potrebbero non doverlo fare.Ho solo pensato che valesse la pena menzionarlo nel caso in cui qualcuno abbia ritenuto che "quando lo vedono, è troppo tardi per fare qualcosa con"
Un server che non protegge dalle OTP riprodotte è praticamente rotto per definizione ...
@ilkkachu No, non necessariamente.Molti sistemi "OTP" sono basati sul tempo e hanno più punti di autenticazione, creando una finestra di tempo durante la quale una OTP non solo _può_ essere accettata più volte, ma _dovrebbe_ essere accettata più volte (perché l'utente accede a diversi punti di autenticazione all'internostesso breve lasso di tempo).
@Gilles, Non dubito che esistano, ma sembra davvero violare la proprietà "una tantum" che è proprio lì nell'abbreviazione di OTP ... Ho sempre pensato che l'idea fosse che una volta una password monouso fosseusato, deve essere considerato trapelato e quindi non deve essere accettato nuovamente.Il che potrebbe significare che avresti bisogno di un sistema centralizzato per tenere traccia dell'OTP utilizzato e che dovresti avere un sistema di accesso singolo per l'autenticazione in più sistemi contemporaneamente, ma è quello che ottieni.Riattivare la stessa OTP suona come invitare un intercettatore ad accedere dopo di te ...
@ilkkachu Non proprio.Il punto principale dei metodi di autenticazione comunemente chiamati "OTP" oggi è quello di essere un fattore di autenticazione what-you-have: sono una prova dell'accesso fisico a qualche dispositivo (generalmente il tuo cellulare o la tua SIM).Il rischio da cui proteggono è che il fattore che cosa sai è trapelato.Indubbiamente sarebbe meglio se quelli basati sul tempo non fossero chiamati "OTP", ma il nome rimane popolare anche se è impreciso.
@Gilles, Penso che questo sia il punto che ilkkachu stava facendo.Sono visti come un fattore che cosa hai, ma se sono vulnerabili allo sniffing e ai replay non dimostrano quello che hai.
@Josiah No, questo non segue.Le password sono anche vulnerabili allo sniffing e ai replay, ma dimostrano ciò che sai.I token OTP sono vulnerabili ai furti, ma dimostrano quello che hai.
@Josiah, beh, ad essere onesti, se puoi attaccare in tempo reale, puoi ancora annusare un OTP, devi solo usarlo prima che arrivi al server.Non hai nemmeno bisogno di disturbare la rete se sei solo più veloce dell'utente.Ovviamente, se l'OTP è valido anche dopo aver raggiunto il server, lo rende molto più semplice poiché non c'è gara e l'utente non riceve un errore di accesso.
@Gilles, francamente, ancora non capisco perché si dovrebbe implementare un OTP basato sul tempo e non invalidare l'OTP corrente quando viene utilizzato.Se disponi di più punti di autenticazione, fanno entrambi parte dello stesso sistema e potresti avere una sola autenticazione per concedere l'accesso a tutti (ripetere lo stesso codice tre volte in tre luoghi diversi non sembra più utile del sempliceinserendolo una volta).
... Oppure i sistemi sono indipendenti, nel qual caso possono solo invalidare l'OTP utilizzato per se stessi e l'accesso con lo stesso codice funziona.È un po 'come usare la stessa password in più sistemi, tranne che questa volta è l'OTP.Quindi possiamo discutere se è un problema o meno, ma pensando a qualcosa come TOTP, c'è una chiave condivisa che genera le OTP e se quella fuoriesce da uno dei sistemi, allora compromette anche gli altri, proprio come se una password in qualche modoviene trapelato dal database delle password ...
Josiah
2019-09-27 12:07:34 UTC
view on stackexchange narkive permalink

Speculare sul motivo di altri sviluppatori è forse uno scarso utilizzo del tempo, ma posso vedere un vantaggio che non è stato menzionato.

Psicologicamente, far sembrare una password aiuta le persone ad associarla con sicurezza. Trasferisce il messaggio che abbiamo spinto per decenni che "non dici alla gente la tua password" alle OTP e, si spera, aiuta alcuni utenti in più a mettere in pausa e fare domande quando Bob Hackerman li chiama chiedendo loro di confermare il codice a sei cifre che ha appena inviato loro. L'utente è solitamente la parte più debole del sistema, quindi sembra un luogo ragionevole in cui investire.

Tecnicamente, ci sono degli svantaggi (come il browser che lo memorizza) e sarebbe meglio con un campo HTML dedicato per le OTP. Anche se ne avessimo uno, sarebbe del tutto ragionevole averlo puntato come UX predefinito.

Mi piace questo ragionamento.So cosa sono e sui soliti problemi di sicurezza.La nonna di Joe Blogg d'altra parte.Tutto ciò che aiuta i meno esperti di sicurezza a essere più sicuri è una buona cosa.
Hightown Hill
2019-09-28 18:10:11 UTC
view on stackexchange narkive permalink

Il motivo per nascondere l'input del campo potrebbe essere dovuto a schemi di programmazione (come ha dichiarato @ MechMK1), perché lo sviluppatore non codifica un campo separato per ogni tipo di autenticazione offerto, quindi riutilizzano il campo con il tipo di password. In caso contrario, il codice potrebbe gonfiarsi.

cornelinux
2019-09-29 04:13:00 UTC
view on stackexchange narkive permalink

Un utente malintenzionato potrebbe utilizzare la password una tantum quando vede che la digiti.

Si tratta di una questione di tempismo. Se è un aggressore sofisticato, potrebbe leggere la password monouso non nascosta e allo stesso tempo bloccare la connessione di rete prima di premere invio . Quindi può leggere l'OTP che stai digitando, impedirti di inviare il modulo e utilizzare l'OTP per accedere come te.

Questo potrebbe sembrare molto imbarazzante, ma a nostro parere dovrebbe occuparsi di un'implementazione sincera di Come ha sottolineato @ MechMK1, l'OTP è - come suggerisce il nome - valido solo una volta . Ma l'OTP viene invalidato solo quando il server lo verifica. E come accennato, se l'attaccante può impedirti di inviare l'OTP al server, l'otp non viene invalidato e l'attaccante può utilizzare questa stessa OTP prima 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 4.0 con cui è distribuito.
Loading...