È possibile proteggere un intento Android da altre chiamate da app?

1

Sto osservando l'architettura di Android e voglio creare un servizio che consenta a più applicazioni (terze parti) di chiamare un servizio Android locale e recuperare i dati. Consideralo come un servizio Dropbox partizionato, in cui ogni app salva un file e, se l'utente configura l'app per condividere i dati tra le app (ad esempio le foto tra app1 e app2), è consentita.

Sei a conoscenza di qualsiasi API che mi consenta di convalidare in sicurezza l'applicazione chiamante in modo che siano gli unici a poter accedere al loro negozio?

Sto pensando di identificare l'EXE chiamante e di controllare quell'hash ma non funzionerà se l'app viene aggiornata.

Potenzialmente ogni app è firmata dalla stessa chiave, quindi posso utilizzarla come costante di identificazione dell'app unica.

La mia preoccupazione principale è che qualcuno ottenga l'accesso binario all'app # 1, estraendo una chiave o un identificatore, e usandolo per falsificare l'accesso al mio servizio Android.

Qualsiasi soluzione alternativa è gradita

    
posta random65537 25.07.2015 - 01:00
fonte

1 risposta

2

Quindi questo è un problema davvero difficile, e non credo ci siano API in giro per ottenere quello che vuoi.

Cosa non puoi fare: permessi personalizzati

Mentre suona come una buona idea, le autorizzazioni personalizzate sono definite in AndroidManifest.xml. Leggi questo SO answer su come definirli / usarli, ma assomiglia a questo:

<permission 
    android:name="com.testpackage.mypermission" 
    android:label="my_permission" 
    android:protectionLevel="dangerous">
</permission>

Per utilizzare il permesso che tutte le altre applicazioni devono fare è mettere quanto segue nel proprio AndroidManifest.xml:

<uses-permission android:name="com.testpackage.mypermission"/>

Poiché gli APK Android sono trivial to reverse engineer per ottenere le informazioni di base su un'applicazione; ciò causerebbe la paura che qualcuno acceda all'APK. Chiunque abbia un telefono rootato può estrarre l'APK dal proprio telefono.

Devo ammettere che è probabile che ci sia più bisogno di un permesso personalizzato rispetto a quella riga XML. Ma sembra che qualcuno stia attraversando il problema per cominciare, quindi possono capirlo.

Soluzione?

Questo è un problema difficile, perché ad un certo punto dovrai chiedere all'utente di verificare che si fida di un'applicazione da utilizzare con la app principale . Se l'utente verifica che si fida della app, probabilmente registrerei la firma dell'applicazione; che può essere trovato al runtime . Se la firma cambia da ciò che hai registrato, non è l'applicazione di cui l'utente ha avuto fiducia.

Questa è probabilmente la soluzione più semplice. La verifica della firma stessa dovrebbe essere possibile poiché META-INF/CERT.RSA contiene il firma e chiave pubblica per verificare la firma. Credo questo post su SO mostra come ciò può essere fatto.

Ancora una volta, stai ancora facendo affidamento sull'utente per verificare la fiducia di un'applicazione tramite la applicazione principale . Non sono sicuro che sia accettabile per te o no.

    
risposta data 07.08.2015 - 16:54
fonte

Leggi altre domande sui tag