OTP mobile - Sicuro?

3

Mi sono imbattuto in Mobile-OTP , "uno standard di fatto per l'autenticazione mobile strong" ( link ) . Gli sviluppatori affermano che è molto sicuro ecc.

Leggendo l'implementazione, ho notato che lo schema richiede che il PIN dell'utente sia archiviato in modo reversibile sul lato server. (l'implementazione di sourceforge li memorizza in testo semplice), che a mio avviso non è una funzionalità molto desiderabile.

Le mie domande sono

  • Mobile-OTP è uno schema ben noto?
  • È considerato sicuro?
  • Quale sarebbe la ragione per sceglierlo?
    (perché sceglierlo su SSL ad esempio?)
posta Jacco 29.02.2012 - 12:06
fonte

4 risposte

5

La prima volta che ne ho sentito parlare, ma non significa che non sia noto.

Sembra un po 'simile a OATH HOTP / TOTP . OATH è basato su RFC 4226 e sembra almeno a prima vista più solido. Ad esempio usa HMAC invece di un semplice hash (motp usa MD5). OATH è stato adottato anche da prodotti come Yubikey e recentemente Google Authenticator .

Sulla base di questi fatti molto superficiali, direi che preferirei personalmente OATH a questa soluzione apparentemente su misura. Richiederebbe un'analisi più approfondita per evidenziare i vantaggi / svantaggi di tali schemi.

Spero che questo risponda alle tue prime due domande.

Per quanto riguarda i motivi per sceglierla - One Time Password (OTP) non protegge solo contro l'intercettazione sulla linea di comunicazione. Pertanto, mentre SSL garantisce che la password (o la password one-time) venga trasportata in modo sicuro, OTP garantisce che anche se la password viene smarrita / rubata, non può essere riutilizzata . È unico per ogni sessione. Quindi, anche se qualcuno ha guardato da sopra la tua spalla quando hai digitato la tua password, dal momento che è una password monouso, non possono utilizzarla di nuovo.

Ci sono alcuni altri vantaggi agli schemi OTP, in questo caso si comporta come autenticazione a 2 fattori . Non solo quello che sai, ma anche quello che hai. In quegli schemi OTP basati su dispositivi mobili, di solito è una chiave segreta che viene memorizzata sul telefono e viene utilizzata per generare la password. Quindi un utente malintenzionato non solo avrà bisogno della tua password, ma anche del tuo telefono (o della chiave del tuo telefono), per poter autenticare come te.

La maggior parte degli schemi di autenticazione sono complementari a SSL e non la sostituiscono. Anche se il processo di autenticazione è sicuro, solitamente vengono scambiati altri dati o viene stabilito un qualche tipo di sessione. Ad esempio, prendere in considerazione l'accesso al proprio conto bancario e quindi la visualizzazione di transazioni o il trasferimento di fondi. Proteggere l'autenticazione da sola (ad esempio tramite OTP) non è sufficiente. Lo stesso vale solo per proteggere la connessione (usando SSL senza autenticazione). Per proteggerlo meglio solitamente combinare SSL con qualche forma di autenticazione dell'utente.

Per quanto riguarda la tua preoccupazione circa l'archiviazione del PIN / chiave in forma reversibile piuttosto che usare un hash sicuro. Direi che questo è probabilmente un compromesso accettabile considerando ciò che guadagni. OTP offre una protezione eccellente contro i casi in cui la password statica potrebbe essere trapelata (inclusi phishing, over-the-shoulder, persone che annotano le loro password, ingegneria sociale, ecc.). Anche se viene persa una password OTP, limita la sua utilità - può essere utilizzata solo una volta e in un intervallo di tempo limitato in genere. Lo svantaggio è che devi assicurarti che il tuo server di autenticazione (e in qualche misura i dispositivi dell'utente) sia ben protetto. Se il tuo server è il tuo punto debole, allora, non sono sicuro che gli hash protetti da soli saranno sufficienti a proteggerti comunque. Inoltre, la combinazione con SSL e una password standard (con hash) potrebbe davvero migliorare ulteriormente la protezione.

    
risposta data 29.02.2012 - 12:46
fonte
1

Lo schema presenta alcuni limiti di sicurezza. Una password monouso non è sicura contro gli attacchi man-in-the-middle, a meno che non ci sia un altro meccanismo fuori banda per prevenire attacchi man-in-the-middle. È anche un po 'scomodo da usare.

A seconda del contesto, potrebbero esserci modi migliori di autenticazione. Ad esempio, se hai intenzione di creare un'app, in molte impostazioni è preferibile utilizzare SSL con un certificato cliente (puoi anche richiedere un PIN o una password una volta impostato il canale, se preferisci).

L'uso della password monouso è molto probabile che sia meglio di niente. Può fermare alcune minacce.

Bottom line: tutto dipende da cosa si prevede di utilizzare questo per. A seconda del dominio dell'applicazione, potrebbe essere uno strumento utile o potrebbe essere non ottimale. Se desideri consigli più specifici, ti suggerisco di descrivere il contesto applicativo specifico in cui hai bisogno di autenticazione e magari di spiegare il modello di rischio / livello di rischio che hai in mente.

    
risposta data 01.03.2012 - 04:51
fonte
1

MOTP è un protocollo di autenticazione. Lo scenario di utilizzo previsto è un utente con qualche tipo di dispositivo mobile che desidera autenticare con un server; il dispositivo genera un codice di autenticazione valido solo per un periodo di tempo limitato (alcuni minuti). L'autenticazione è basata su un segreto condiviso tra il lato client e il lato server.

Sul lato client, il segreto è diviso in due parti: un segreto a 64 bit contenuto nel dispositivo (quello che hai) e un PIN a 4 cifre che l'utente deve inserire ogni volta (ciò che sai ). In questo modo, MOTP fornisce l'autenticazione a due fattori. Il dispositivo non conosce il PIN, calcola ogni volta il valore di autenticazione dal PIN fornito.

Un tipico dispositivo MOTP ha una tastiera e uno schermo in grado di visualizzare 6 cifre, un processore con requisiti di prestazione molto bassi (deve essere in grado di calcolare un MD5 di 20 byte in un batter d'occhio), un orologio e possibilmente qualche manomissione per proteggere il segreto. Esistono dispositivi MOTP monouso e implementazioni sui telefoni cellulari. Su un dispositivo monouso, il dispositivo visualizza un codice di autenticazione a 6 cifre valido per un paio di minuti (3 minuti meno il tempo impiegato dal calcolo del codice di autenticazione sul client alla verifica sul server, più o meno le conseguenze della deriva dell'orologio). Su un telefono cellulare, il codice di autenticazione può essere visualizzato o utilizzato direttamente dall'applicazione client.

MOTP ha il vantaggio di essere molto semplice. Esistono numerose implementazioni esistenti in varie lingue e su varie piattaforme, sia lato server che lato client. Per quanto ne so, MOTP è venuto dal settore e ha visto poche o nessuna recensione indipendente.

Il PIN è parte del segreto condiviso tra il client e il server. Il server deve eseguire lo stesso calcolo del client, per questo ha bisogno del PIN. Potresti fare una variante di MOTP che utilizza l'immagine del PIN sotto una funzione di rafforzamento invece del PIN stesso, ma non ci sarebbe alcun vantaggio, dato che un hash su uno spazio di ricerca di appena 10 bit è banale per forza bruta anche se dovessi farlo separatamente con ogni account diversamente salato. I server non memorizzano le password perché queste dovrebbero avere abbastanza entropia per rendere difficile l'inversione della brusca forza, questo non vale per un PIN di 4 cifre.

MOTP non è paragonabile a SSL; useresti i due in combinazione. I due possono essere usati in modo complementare. SSL ha tre parti: stabilisce un canale sicuro tra due parti, autentica il server sul client e, a scelta, autentica il client sul server. La terza parte viene spesso lasciata fuori perché la maggior parte dei client non ha dati di autenticazione, il che porta a un sacco di software che utilizza SSL che non supporta l'autenticazione del client. MOTP può essere un modo per autenticare un client su una connessione SSL. A differenza dei certificati client SSL, che in genere autenticano un dispositivo o una combinazione di un dispositivo più i dati memorizzati su di esso, MOTP ha lo scopo di autenticare un utente; la fase di autenticazione richiede l'inserimento di un PIN (che in genere non viene memorizzato nella cache).

    
risposta data 01.03.2012 - 20:21
fonte
0

Mobile-OTP è molto più vecchio di HOTP / TOTP (2003 - 8 anni prima della data di pubblicazione RFC degli HOTP), ma non è stato "pubblicizzato" abbastanza bene da diventare uno standard. Nel complesso, è più o meno lo stesso di TOTP con 2 differenze principali: - L'algoritmo utilizzato per produrre hash è MD5, non SHA-1, ma per un offset di 10 secondi è ancora sicuro sufficiente (citazione: "MD5 non è una limitazione - Mobile-OTP non sarebbe più sicuro con qualsiasi algoritmo di hash diverso":
- L'OTP che produce non è solo a cifre, che è un po 'meno user-friendly - Gli utenti sono obbligati a utilizzare il PIN per generare l'OTP, che è anche un altro fattore negativo dalla prospettiva dell'esperienza utente, ma un vantaggio dal punto di vista della sicurezza.

Anche la registrazione (generazione e trasferimento di segreti condivisi sul client e sul server) era meno conveniente nell'implementazione originale, ma ci sono iniziative per renderlo più user-friendly

    
risposta data 12.08.2018 - 16:13
fonte

Leggi altre domande sui tag