Mi piace il suggerimento di symcbean di creare un valore mappato casuale all'accesso che sia correlato all'account separatamente dal nome utente e dalla password. Per rispondere in modo specifico alla tua domanda, ci sono anche modi per crittografare i dati senza una chiave mappata statica. Prenderò in considerazione la generazione di una chiave utilizzando bit di informazioni univoci per il telefono e recuperabili tramite chiamate all'OS API.
Modifica : per volere di @DW, elaboro: L'UDID, il numero di serie e altre informazioni identificative possono essere di qualità e segretezza crittografica sufficienti senza accesso al telefono per impedire la decrittografia dei dati memorizzati. Tuttavia, l'accesso ai dati memorizzati implica probabilmente l'accesso al telefono. Pertanto, qualsiasi livello di sicurezza attraverso la crittografia locale del dispositivo è semplice oscurità.
Altri intervistati hanno suggerito di archiviare un valore casuale come è stato fatto nelle sessioni HTTP. Sembra che il richiedente originale non stia usando HTTP e non crede che questo metodo si applichi al suo software. Tuttavia, l'implementazione logica di memorizzare e trasmettere un valore casuale è applicabile a qualsiasi protocollo di trasporto. Lo consiglio vivamente.
In alternativa, le credenziali possono essere memorizzate sul telefono utilizzando la crittografia a chiave pubblica. L'applicazione può crittografare il nome utente e la password al momento dell'ingresso con la chiave pubblica del server. I dati di accesso sarebbero quindi illeggibili anche se il dispositivo fosse stato compromesso.
Laddove l'obiettivo è impedire il recupero delle credenziali di accesso, ritengo che l'uso di un identificatore temporale casuale sia il migliore. Ciò preclude qualsiasi problema relativo alla conservazione segreta e disponibile dei dati del server (una chiave privata). Se tale chiave fosse divulgata, la protezione è marginale a inutile. Se viene perso, l'app deve essere ridistribuita con una nuova chiave. Se i dati di accesso temporali sono stati persi, tutti sarebbero stati costretti ad accedere, ma non comporterebbe alcuna interruzione sensibile al servizio.
Inoltre, utilizzare la crittografia a chiave pubblica del trasporto (SSL o chiave PGP semplice incorporata nell'app) sia per l'accesso iniziale che per tutti gli altri dati di autenticazione possibili, indipendentemente dal nome utente e password o da un valore casuale.