¿Es posible asegurar una Intención de Android desde otras llamadas desde aplicaciones?

1

Estoy observando la arquitectura de Android y quiero crear un servicio que permita que múltiples aplicaciones (terceros) llamen a un servicio local de Android y obtengan datos. Piense en esto como un servicio de Dropbox particionado, donde cada aplicación guarda un archivo, y si el usuario configura la aplicación para compartir datos entre aplicaciones (por ejemplo, fotos entre aplicación1 y aplicación2), entonces está permitido.

¿Conoce alguna API que me permita validar de forma segura la aplicación de llamada para que sean las únicas que puedan acceder a su tienda?

Estoy pensando en identificar el archivo EXE que llama y en comprobar el hash, pero eso no funcionará si la aplicación se actualiza.

Potencialmente, cada aplicación está firmada por la misma clave para que pueda usarla como una constante única de identificación de la aplicación.

Mi principal preocupación es que alguien obtenga acceso binario a la aplicación # 1, extraiga una clave o identificador, y use eso para falsificar el acceso a mi servicio Android.

Cualquier solución alternativa es bienvenida

    
pregunta random65537 25.07.2015 - 01:00
fuente

1 respuesta

2

Así que este es un problema realmente difícil, y no creo que haya ninguna API para lograr lo que quieres.

Lo que no puedes hacer: Permisos personalizados

Aunque suenan como una buena idea, los permisos personalizados se definen en el archivo AndroidManifest.xml. Consulte esta SO contesta sobre cómo definir / usarlos, pero mira algo como esto:

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

Para usar el permiso que todas las otras aplicaciones deben hacer es poner lo siguiente en su propio AndroidManifest.xml:

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

Dado que los APK de Android son trivial a la ingeniería inversa para obtener la información más básica sobre una aplicación; esto caería tu miedo de que alguien acceda a la APK. Cualquier persona con un teléfono rooteado puede extraer el APK de su teléfono.

Admito que es probable que haya más uso de un permiso personalizado que solo esa línea XML. Pero parece que si alguien está pasando por la molestia, entonces puede resolverlo.

¿Solución?

Este es un problema difícil, porque en algún momento tendrá que pedirle al usuario que verifique que confía en que una aplicación se utilizará con su aplicación central . Si el usuario verifica que confía en la aplicación, probablemente grabaría la firma de la aplicación; que puede ser que se encuentra en el tiempo de ejecución . Si la firma cambia con respecto a lo que ha grabado, no es la aplicación en la que el usuario confió.

Esta es probablemente la solución más fácil. Verificación de la firma en sí debe ser posible ya que el META-INF/CERT.RSA contiene el Firma y clave pública para verificar la firma. Creo que esta publicación en SO muestra cómo se puede hacer esto.

Nuevamente, aún confías en el usuario para verificar la confianza de una aplicación a través de tu aplicación central . No estoy seguro de si esto es aceptable para usted o no.

    
respondido por el RoraΖ 07.08.2015 - 16:54
fuente

Lea otras preguntas en las etiquetas