Arrivo un po 'in ritardo alla festa, ma penso di poter aggiungere alcune utili informazioni.
Is there a way I can validate the integrity of the application (using a checksum or a signature) on the server side to make sure its not tampered with. (e.g a trojan is not implanted in the application and then redistributed)
Per garantire la massima sicurezza tra la tua app e il server API, dovresti utilizzare un servizio di attestazione dell'integrità delle app mobili insieme alla soluzione SafetyNet, il servizio OAUTH2. Importante è anche l'uso del blocco del certificato per proteggere il canale di comunicazione tra il server API e l'app per dispositivi mobili come descritto in questa serie di articoli sulle tecniche di API per dispositivi mobili.
Il ruolo di un servizio di attestazione dell'integrità delle app mobili è quello di garantire in fase di esecuzione che l'app non sia stata manomessa o non sia in esecuzione in un dispositivo rooted utilizzando un SDK integrato nell'app e un servizio in esecuzione nel cloud.
In caso di attestazione riuscita dell'App Integrity, un token JWT viene emesso e firmato con un segreto che solo il server API della tua app e il servizio di attestazione dell'integrità delle app mobili nel cloud sono a conoscenza.
In caso di errore su Attestity Integrity App, il JWT è firmato con un segreto che il server API non conosce.
Ora l'app deve inviare con ogni API la chiamata del token JWT nelle intestazioni della richiesta. Ciò consentirà al server API di servire solo le richieste quando può verificare la firma nel token JWT e rifiutarle quando fallisce la verifica.
Una volta che il segreto utilizzato dal servizio di attestazione dell'integrità delle app mobili non è noto dall'app, non è possibile eseguirne il reverse engineering in fase di runtime anche quando l'app viene manomessa, eseguita in un dispositivo rooted o comunicante tramite una connessione che è il bersaglio di un Uomo nel Medio Attacco. Questo è dove questo tipo di servizio brilla
in relazione alla soluzione SafetyNet.
Puoi trovare questo servizio in Approov che ha SDK per diverse piattaforme, incluso Android. L'integrazione richiede anche un piccolo controllo nel codice del server API per verificare il token JWT al fine di proteggersi dall'uso fraudolento.
Keep in mind that not all of my customers download the application via google play, some of them use 3rd party markets or download the apk from elsewhere.
Con l'uso di un servizio di attestato sull'integrità dell'API mobile come Approov non importa da dove era l'App installato.
I have android applications (Mobile banking) that connect to my server and do online transactions (via Internet/USSD/SMS), I want to make sure those clients are not tampered with and are the original ones distributed by me.
e
For suggested solutions:
Can they be implemented over all 3 communication channels (SMS/USSD/Internet) or are the solutions proprietary to one/some channels?
Quindi, supponendo che la tua App comunichi direttamente con i servizi di terze parti, ti suggerisco di delegare tale responsabilità al server API, che impedirà
utilizzo non autorizzato dei servizi di terze parti a tuo nome, una volta che serve solo
ora autentiche richieste dall'app mobile che ha superato le sfide di integrità.
SafetyNet
The SafetyNet Attestation API helps you assess the security and compatibility of the Android environments in which your apps run. You can use this API to analyze devices that have installed your app.
OAUTH2
The OAuth 2.0 authorization framework enables a third-party
application to obtain limited access to an HTTP service, either on
behalf of a resource owner by orchestrating an approval interaction
between the resource owner and the HTTP service, or by allowing the
third-party application to obtain access on its own behalf. This
specification replaces and obsoletes the OAuth 1.0 protocol described
in RFC 5849.
Blocco dei certificati
Pinning is the process of associating a host with their expected X509 certificate or public key. Once a certificate or public key is known or seen for a host, the certificate or public key is associated or 'pinned' to the host. If more than one certificate or public key is acceptable, then the program holds a pinset (taking from Jon Larimer and Kenny Root Google I/O talk). In this case, the advertised identity must match one of the elements in the pinset.
Token JWT
Token Based Authentication
JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.
Dichiarazione di non responsabilità: lavoro a Approov.