2011-03-23 8 views
13

No estoy familiarizado con la idea de firmar archivos, y no puedo encontrar una respuesta satisfactoria hasta el momento, así que creo que será mejor que pregunte:¿La suscripción a la aplicación protege contra la manipulación del archivo?

Lo que quiero saber es cuando firmo un archivo binario (para Android), la herramienta de firma asigna algún tipo de suma de comprobación al archivo para que cuando un pirata haya cambiado algo en el archivo apk, el programa se niegue a iniciarse porque la suma de comprobación no coincide. ¿Este mecanismo existe en la herramienta de firma de Android?

Bueno, entiendo que cuando un hacker tiene el binario, puede deshabilitar todo lo que quiera, incluido el control de suma de comprobación. Pero la pregunta es: ¿la herramienta de firma de Android proporciona este nivel o protección en primer lugar?

¡Gracias por leer y responder!

Respuesta

9

Las respuestas que dicen "no, no pueden modificar su apk" están a la mitad del camino correcto: sí, nadie puede modificar su código y renunciarlo con su clave, lo que significa que el cracker malicioso no puede la aplicación modificada parece que realmente proviene de usted. Pero eso no significa que no puedan modificar y ejecutar el APK después de haberlo resignado con una clave diferente.

Podrían tomar su APK firmado, modificar su código y resignarlo ellos mismos con su propia clave; no podían publicar esa aplicación como una actualización ni nada por el estilo, pero el APK autofirmado modificado normalmente podría ser instalado por cualquier usuario, root o no.

EDITAR: Merece la pena desplazarse por xda-developers para ver qué están haciendo las personas al respecto (algunos semi-legítimos, como modificar y volver a publicar APK de temas, otros mucho menos). Las herramientas como android-apktool son particularmente interesantes.

ver también estas preguntas SO:

+0

Muchas gracias! Sí, mientras trabajaba en este tema, vi una publicación SO que dice que su aplicación fue reeditada en Android Market por algún hacker bajo su propio nombre. Supongo que esto es exactamente lo que dijiste aquí. (Hace muchos años solía utilizar este enfoque: después de realizar una compilación, agregaré mi propia suma de verificación al archivo binario. Y en tiempo de ejecución, el programa realiza su propia comprobación.¡Pero esto no funciona hoy en día, porque esto significaría que estoy manipulando un binario con firma yo mismo!) – wwyt

+0

@wwyt puedes intentar verificar la aplicación * signature * en tiempo de ejecución, pero un hacker particularmente emprendedor podría simplemente eliminar los cheques si no lo haces bien Su mejor opción es algo así como el servicio de licencias de Android (http://developer.android.com/guide/publishing/licensing.html). –

+0

@wwyt El SDK de inicio de sesión único de Facebook hace algo como esto para garantizar que ninguna aplicación maliciosa se apropie de su intención: https://github.com/facebook/facebook-android-sdk/blob/master/facebook/src/com/ facebook/android/Facebook.java # L244-277 –

0

Sí, el sistema operativo debe verificar que el contenido del binario en realidad coincida con la firma. De lo contrario, no tendría valor alguno: alguien podría tomar una firma de una aplicación legítima y pegarla en cualquier otro archivo binario.

5

La firma binaria de Android se lleva a cabo utilizando la herramienta Jarsigner, que forma parte del SDK Java estándar. Firmar un jar con esta herramienta simplemente agrega dos archivos; uno que contiene los valores hash para cada archivo dentro del jar/aplicación (la firma o archivo .sf), y uno que verifica el archivo de firma e identifica el certificado de firma (archivo DSA).

Por lo tanto, verificar la firma implicaría necesariamente verificar si los valores hash del archivo binario coinciden con el valor proporcionado, que detectaría cualquier cambio en el binario. Y sí, el Android documentation dice que el sistema no instalará o ejecutará una aplicación sin una firma válida.

Así que sí, puede asumir que la firma de su archivo correctamente evitará que se ejecute después de haber sido alterado.

Cuestiones relacionadas