Sono coinvolto in un progetto che sta creando un chat-bot che gli utenti possono comunicare via SMS dai loro telefoni cellulari. Vorremmo che gli utenti fossero in grado di utilizzare il bot per svolgere alcune attività di gestione degli account di base tramite SMS per i loro account con noi - cambiando il loro piano di base, acquistando funzionalità aggiuntive, ecc.
Ci chiediamo se esiste un modo per (ragionevolmente) identificare in modo sicuro che l'utente che invia il messaggio di testo sia veramente il proprietario dell'account? Le opzioni che abbiamo considerato sono 1) chiedi gli ultimi 4 della carta di credito dell'utente e 2) invia un codice di accesso utilizzabile una sola volta per email.
Ovviamente, nessuno di questi fornisce sicurezza a tenuta d'aria, ma la responsabilità qui è piuttosto bassa. Se qualcuno perde il loro smartphone, le accuse che il ladro potrebbe fare usando questo chat bot sarebbe l'ultima delle preoccupazioni della persona. Nel raro caso in cui il telefono di qualcuno fosse compromesso, saremmo disposti a mangiare i costi necessari per rendere l'utente integro.
Tuttavia, vorremmo comunque rendere questo processo di identificazione il più sicuro possibile. Problemi che vediamo:
Con lo scenario 1, gli ultimi 4 della carta di credito sono potenzialmente lasciati nella cronologia degli SMS, quindi chiunque riceva il telefono (o installi un'app dannosa) ha accesso agli ultimi 4 della carta e ora può autenticarsi.
Con lo scenario 2, chiunque abbia accesso al telefono ha accesso all'e-mail, quindi non si tratta di un miglioramento superiore a 1.
Esistono altre tecniche che potrebbero essere utilizzate per l'autenticazione che potrebbero fornire maggiore sicurezza rispetto a questi due metodi? Sono consapevole che nulla sarà a tenuta d'aria, ma sto cercando dei buoni suggerimenti.
Ho preso in considerazione qualcosa come send a salt, farli calcolare un hash del loro ultimo-4 e inviarlo indietro, ma questo è proibitivamente complesso, e ancora non molto di un miglioramento della sicurezza.