Penso che tu abbia due scelte:
- Esegui la sicurezza della password e invia gli hash per il sistema locale per verificare
- Utilizza un "PIN" anziché una password per ridurre al minimo i danni se le credenziali vengono rubate.
Per ricapitolare quello che stai chiedendo, il problema ovvio è che dover inviare le credenziali in qualche modo aumenta i rischi di furto di credenziali. Con il riutilizzo della password un problema senza fine, passare le password delle persone in giro per la convalida locale è un pericolo per gli utenti più di ogni altra cosa.
La crittografia non aiuta molto (o forse dipende dai tuoi problemi di sicurezza) perché indipendentemente da quali circuiti fai passare l'app, l'app deve ancora essere in grado di verificare le password offline, il che significa che c'è un modo per recuperare le password in testo semplice.
di hashing
Probabilmente il modo più sicuro per utilizzare le password effettive è semplicemente seguire il protocollo standard e utilizzare un algoritmo di hashing della password sicuro. Ovviamente quindi non vuoi un aglithithm veloce, ma non riesco a immaginare che il telefono sarà molto più lento nell'hashing in modo da causare problemi di interfaccia utente dolorosi. Ovviamente dovrai riprodurre l'algoritmo di hash sul tuo telefono, presumibilmente non sarà un problema per gli algoritmi di hashing standard.
L'hashing fornisce un livello base di protezione contro le password rubate durante il trasporto o dal telefono. Ovviamente anche se non proteggerà le password deboli contro le forzature brute. Tuttavia, se queste password non sono collegate ai dettagli dell'utente in altro modo (ad esempio indirizzi e-mail), questo è meno di un problema: ogni password che ho mai usato potrebbe essere pubblicizzata in Internet, ma non importa se il mio indirizzo e-mail non è collegato a loro. Se puoi assicurarti che le password non siano in alcun modo collegate a qualsiasi informazione personale, allora c'è meno preoccupazione.
PIN
L'altra opzione sarebbe quella di utilizzare un PIN, come si menziona, e renderlo definitivamente un PIN - solo numeri. Ciò impedirà alle persone di riutilizzare la propria password. Tuttavia, non impedirà alle persone di riutilizzare il proprio codice PIN ATM, quindi manterrei comunque queste credenziali lontane da qualsiasi informazione personale.
In breve, se tutto ciò che hai è una password o un PIN, allora non è più una vera password, è solo un identificatore univoco assegnato a un utente. Questo è molto meno pericoloso di aver rubato (o almeno, solo pericoloso per la tua app e ciò che quell'ID univoco consente a un utente malintenzionato di fare). Pertanto, l'opzione migliore è in realtà solo per assicurarsi che queste password locali non siano mai connesse (o collegabili) a informazioni utente reali.