Estoy investigando sobre el reempaquetado de aplicaciones de Android . Sé que el desarrollador original autofirma el APK. ¿Es posible que un pirata informático falsifique la firma y la haga aparecer como la firma original al reenvasar?
Si tiene acceso a la clave privada del desarrollador, simplemente puede firmar la APK modificada con su clave y listo. Si no lo haces, no podrás hacerlo.
Para crear firmas de APK, se utiliza RSA y DSA. No los superarás. Sin embargo, esto no significa nada si puedes encontrar una colisión de hash porque lo que está verificado por una firma no es el mensaje (que es el programa a lo largo de todos sus datos en este caso) sino el hash del mensaje. Es posible cambiar el mensaje y dejar espacio para una parte que no le interesa y luego recorrer los posibles valores de ese campo que creó, haga clic en el nuevo mensaje, pase a la siguiente iteración si no está igual al hash original, y deténgase y recuerde el mensaje modificado una vez que el hash sea el mismo que el original.
El hash predeterminado para los APKs es sha1. sha1 es débil. Pero no lo suficientemente débil como para que alguien encuentre un segundo mensaje con el mismo hash sha1 pronto. Además, los desarrolladores pueden usar funciones hash más fuertes que sha1, por lo que encontrar un segundo mensaje adecuado se vuelve aún más improbable.
1 no, no puedes falsificar la firma digital apk sin romper el cifrado.
2 Sí, puedes volver a empaquetar la aplicación, conservando su firma y su validez, pero necesitas que el contenido de los apks sea idéntico.
3, existen claves privadas predeterminadas que se utilizan para firmar apks en compilaciones de firmware personalizadas distribuidas en el foro y disponibles públicamente. Por supuesto, los proyectos grandes generalmente los cambian, pero a los entusiastas que hacen construcciones no oficiales a menudo no les importa.
Lea otras preguntas en las etiquetas digital-signature android code-signing