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.