The app uses those keys in an offline scenario to 'self validate' the signatures of its data
Non sono sicuro delle circostanze esatte che hai in mente, ma se la tua applicazione deve convalidare i dati forniti dall'esterno, al contrario dei dati che ha prodotto da sola, l'approccio più semplice sarebbe utilizzare la crittografia a chiave pubblica per firmare i dati . In questo modo, devi solo memorizzare la chiave pubblica sul dispositivo, che non è un aspetto critico per la sicurezza e non deve essere protetto (modifica: vedi il commento di nolanda per una spiegazione del perché questo è completamente sbagliato ! hai bisogno di proteggere la chiave pubblica!)
But how secure is this approach from attack?
Che tipo di attacco? Sei contro le risorse di uno stato nazionale o di un hacker solitario? Cosa sai dei dispositivi sottostanti? Stai cercando di proteggere i codici di lancio missilistici oi numeri di telefono dei clienti?
La difficoltà di estrazione dei tasti da Android Keystore varia; ad esempio, se il dispositivo sottostante ha un modulo di sicurezza hardware, è più difficile estrarre il materiale chiave dal dispositivo piuttosto che se è protetto da software.
Se il tuo dispositivo Android o dispositivo Apple ha funzionalità di telco (ad esempio un telefono), potresti essere esposto ad attacchi dal processore in banda base, a seconda di quanto il tuo telefono isola la baseband dalla piattaforma applicativa e chi sia il tuo aggressore . Anche questo è importante.
Senza sapere esattamente con cosa hai a che fare, è impossibile dare una risposta significativa.
Dovresti anche considerare che attaccare il keystore potrebbe non essere l'attacco più semplice. Il keystore è probabilmente ben protetto ei difetti nella sua sicurezza sono presi seriamente e fissati dai ragazzi intelligenti di Google e Apple. IMO è più probabile che la tua app abbia difetti di sicurezza e se un utente malintenzionato accede alla tua app, ad es. riesce a eseguire il proprio codice nel processo dell'app, sarà anche in grado di utilizzare le chiavi crittografiche per crittografare / decifrare o qualsiasi altra cosa le usi, e probabilmente non importa se può accedi al materiale chiave stesso o no, perché può usare i tasti proprio come può fare la tua app.
Un altro attacco potrebbe concentrarsi sull'isolamento processo / app del sistema operativo Android / iOS. Una volta che un utente malintenzionato riesce a violare questo isolamento o ottiene i privilegi di root sul tuo telefono, sarà molto probabile che sarà in grado di utilizzare le chiavi ovunque siano archiviate, anche se non è in grado di ottenere le chiavi stesse.
Tutto ciò che ho detto, aggiungerei che IMO è molto difficile proteggere una piattaforma di telefonia mobile per i consumatori e se hai a che fare con qualsiasi tipo di dati veramente importanti (pensa ai sistemi di voto elettronico o ai sistemi in cui la vita umana è a rischio ), Mi sentirei a disagio nel confidare in una tale piattaforma per mantenere i miei dati al sicuro.