Verificación de firma de la aplicación: cómo funciona, cómo deshabilitarla con Xposed y por qué no debería

Si alguna vez ha intentado modificar y reinstalar una aplicación del sistema, probablemente haya encontrado comprobaciones de firma de la aplicación de una forma u otra. O eliminó la aplicación original antes de continuar, o le dio a su APK modificado otro nombre de paquete para que se instale sin eliminar primero la aplicación anterior. Y en cualquier caso, también tuvo que volver a firmar la aplicación usted mismo para que se instale en primer lugar.

Puede sortear todos estos comportamientos deshabilitando temporalmente las comprobaciones de firma de la aplicación. Pero antes de entrar en la carne metafórica y las papas de este artículo y decirle cómo hacerlo, es fundamental que hablemos un poco sobre los controles de firma de la aplicación, lo que hacen y por qué nunca debe eliminarlos en la gran mayoría de casos.

Conceptos básicos de verificación de firma de Android

De manera predeterminada, el sistema operativo Android requiere que todas las aplicaciones estén firmadas para poder instalarse. En términos muy básicos, esto significa que la firma de la aplicación se utiliza para identificar al autor de una aplicación ( es decir, verificar su legitimidad), así como para establecer relaciones de confianza entre aplicaciones con la misma firma. Con el primero, tiene la seguridad (en un grado razonable) de que una aplicación con una firma válida proviene de los desarrolladores esperados. Y a través de este último, las aplicaciones firmadas con la misma clave privada pueden ejecutarse en el mismo proceso y compartir datos privados. Luego, cuando instala una actualización de la aplicación, el sistema operativo Android verifica esta firma para asegurarse de que: A) el APK no haya sido alterado en el tiempo desde que se firmó, y B) el certificado de la aplicación coincide con el de la versión instalada actualmente.

Entonces, ¿cómo me afecta todo esto en el mundo real? Es simple, de verdad. Si obtiene un APK desde fuera de Google Play Store e intenta instalarlo como una actualización de su aplicación instalada actualmente (léase: el mismo nombre del paquete), el sistema operativo intentará validar el certificado de la aplicación para asegurarse de que proviene del mismos desarrolladores iniciales Si el certificado coincide, la instalación de la aplicación continuará según lo planeado, su aplicación retendrá sus datos existentes, y todo es salsa. Si la firma no es válida (lo que indica que el APK ha sido alterado) o si el certificado no coincide con el de la aplicación original, la instalación fallará. Y como se indicó anteriormente, el certificado de la aplicación solo coincidirá si está firmado con la misma clave privada utilizada para firmar la versión anterior. En otras palabras, solo puede instalar una aplicación si tiene una firma válida que coincida con el contenido del APK, y solo puede instalar una actualización si su certificado también coincide con el encontrado en la versión anterior de la aplicación.

[Como un comentario humorístico en este artículo de lo contrario denso, hay un ejemplo muy público en el que una clave de firma de una aplicación privada se perdió o se vio comprometida. Por supuesto, me refiero a la aplicación Authenticator de Google, que recibió una actualización que cambió el nombre de su paquete de com.google.android.apps.authenticator a com.google.android.apps.authenticator2 en una actualización hace aproximadamente dos años. Debido a este cambio, todas las actualizaciones posteriores de la aplicación Authenticator solo pueden emitirse con el nuevo nombre del paquete, con la nueva firma generada por la nueva clave de firma privada.]

Por qué puede desear (temporalmente) deshabilitar la verificación de firma

Ahora, echemos un vistazo a un escenario potencial en el que deseamos deshabilitar temporalmente la verificación de firma de la aplicación. Como se mencionó al comienzo de este artículo, la verificación de firmas puede ser un poco dolor de cabeza al modificar las aplicaciones existentes del sistema. Si instala una versión modificada de una aplicación del sistema, no podrá firmar la aplicación con un certificado válido y coincidente. En casos como este, normalmente querrá eliminar primero la aplicación existente y luego instalar la versión modificada normalmente. También puede deshabilitar la verificación de firma, pero es mejor (y más seguro) dejar habilitada la verificación de firma y simplemente eliminar la versión anterior para que se pueda instalar la nueva. Sin embargo, esto puede convertirse en un problema si la aplicación que está tratando de reemplazar tiene datos que prefiere no perder. Ciertamente, hay formas de preservar los datos manualmente mediante el acceso a la raíz y trasplantarlos a la nueva versión de la aplicación, pero los usuarios también pueden deshabilitar la verificación de firma temporalmente y luego reanudar las verificaciones. Alternativamente, como lo señaló el miembro sénior mcbyte_it en los comentarios, esto también puede ser útil en el desarrollo de aplicaciones.

Cómo hacerlo

Hasta ahora, deshabilitar la verificación de firmas ha sido una solución horrible para casi cualquier problema. Esto se debe a que al hacerlo, esencialmente descarta la protección integrada de Android que garantiza que sus aplicaciones no hayan sido manipuladas y que sus actualizaciones provengan de los desarrolladores originales. Pero ahora, gracias a la magia de Xposed Framework, puede deshabilitar temporalmente la verificación de firma y volver a habilitarla una vez que haya terminado de instalar su aplicación modificada. Uno de esos módulos Xposed que puede hacer precisamente esto fue lanzado recientemente por el miembro senior pyler, y funciona según lo planeado para todos los dispositivos capaces de ejecutar Xposed. De esta manera, cuando desee instalar una actualización de la aplicación modificada que no se haya firmado correctamente, simplemente puede habilitar el módulo, reiniciar, instalar la actualización de la aplicación modificada, deshabilitar el módulo, reiniciar y estar feliz.

Ahora que sabe cómo deshabilitar temporalmente la verificación de firma, es importante reiterar lo importante que es dejar habilitada la verificación de firma en todo momento, a menos que tenga una muy, muy buena razón para deshabilitarla. Como tal, solo debe usar una herramienta de este tipo para aplicar actualizaciones de aplicaciones que cree usted mismo y cuando existan circunstancias atenuantes que requieran que lo haga en lugar de simplemente desinstalar la aplicación anterior primero.

Esté seguro y use esto juiciosamente.