Un'app mobile non è fondamentalmente diversa da un'app Web per quanto riguarda la sicurezza: il server non può fidarsi di nulla che il client sta inviando. Il server deve convalidare l'autorizzazione di ogni richiesta ricevuta. In particolare, devi autorizzare gli utenti, non i dispositivi.
Hai ragione che inviare la password ogni volta potrebbe essere problematico. Invece, usa un token di autenticazione di breve durata (come un cookie con app web) che è firmato crittograficamente dal server. Il token viene rilasciato dal server al momento dell'accesso con nome utente / password. Questo token include informazioni protette come il nome utente. Il client invia il token come autenticazione con richieste successive. Il server quindi controlla la firma del token per vedere se il token è valido. Confronta anche JWT per uno schema esistente - NON inventare il tuo. Se implementato correttamente, le informazioni in un token non possono essere modificate dal client.
La memorizzazione del token nell'app è più sicura rispetto all'archiviazione di una password in chiaro, ma sono comunque informazioni riservate. In alcuni casi, potrebbe essere opportuno limitare la validità del token a un certo intervallo di tempo fino a quando non è richiesta una nuova autenticazione. Si consiglia inoltre di eseguire nuovamente l'autenticazione per le operazioni con privilegi. Ma la maggior parte delle app in realtà non è così importante e dovrebbe consentire i token con durate lunghe.
Un telefono root è una minaccia? La sicurezza del client non dovrebbe influire sulla sicurezza del server, quindi schemi come i token firmati dal server. In generale, la persona che ha effettuato il rooting di un telefono e la persona che detiene un account utente del servizio sono stessa persona . Non puoi difendere qualcuno contro se stesso, quindi non è ragionevole o possibile impedire l'estrazione di chiavi, password o token dalla tua app.
La minaccia principale w.r.t. i telefoni rooted sono malware che l'utente ha (inconsapevolmente) installato o che il produttore del dispositivo ha preinstallato. Non si può ragionevolmente difendersi da questo, anche se alcune app sensibili alla sicurezza cercano segni di root e si rifiutano di girare su dispositivi rooted.