Verificando la firma de un APK
La forma correcta de verificar un archivo APK es usando apksigner
.
apksigner
es parte de las herramientas de compilación de Android (Android SDK), por lo tanto es posible encontrar varias versiones instaladas, una para cada versión de build-tools instalada.
Un ejemplo de la ruta dentro del SDK de Android para apksigner
es:
android-sdk/build-tools/30.0.1/apksigner
Para más detalles sobre cómo obtener apksigner, consulte el último capítulo de esta respuesta.
Ejecute apksigner de esta manera:
apksigner verify --verbose --print-certs "Signal-website-universal-release-4.49.13.apk"
Verifica
Verificado usando el esquema v1 (firma JAR): true
Verificado usando el esquema v2 (Esquema de firma APK v2): true
Verificado usando el esquema v3 (Esquema de firma APK v3): true
Número de firmantes: 1
DN del certificado del firmante #1: CN=Whisper Systems, OU=Investigación y Desarrollo, O=Whisper Systems, L=Pittsburgh, ST=PA, C=US
Resumen SHA-256 del certificado del firmante #1: 29f34e5f27f211b424bc5bf9d67162c0eafba2da35af35c16416fc446276ba26
Resumen SHA-1 del certificado del firmante #1: 45989dc9ad8728c2aa9a82fa55503e34a8879374
Resumen MD5 del certificado del firmante #1: d90db364e32fa3a7bda4c290fb65e310
Algoritmo de clave del firmante #1: RSA
Tamaño de clave del firmante #1 (bits): 1024
Resumen SHA-256 de la clave pública del firmante #1: 75336a3cc9edb64202cd77cd4caa6396a9b5fc3c78c58660313c7098ea248a55
Resumen SHA-1 de la clave pública del firmante #1: b46cbed18d6fbbe42045fdb93f5032c943d80266
Resumen MD5 de la clave pública del firmante #1: 0f9c33bbd45db0218c86ac378067538d
Estimar la autenticidad del certificado del firmante
Ahora has verificado el APK, pero aún no sabes si puedes confiar en la persona/organización que ha firmado el archivo APK. Esto se debe a que en Android las firmas de APK utilizan por definición certificados autofirmados. Por lo tanto, determinar si se puede confiar en un certificado es una pregunta difícil. La única forma es verificar las otras aplicaciones que han sido firmadas con el mismo certificado.
La única forma que conozco para hacerlo es mediante servicios online de rastreo de PlayStore como androidobservatory.org. Tiene una API para verificar qué aplicaciones han sido firmadas por el mismo certificado utilizando el resumen SHA-1 del certificado:
Editar: apkmirror.com también permite buscar el resumen del certificado. Simplemente ingrese el resumen del certificado SHA-1 o SHA-256 sin puntos ni espacios en el campo de búsqueda:
En esta página puedes ver todos los otros archivos APK en Google Play Store que están firmados con el mismo certificado.
Obtener y ejecutar apksigner
Apksigner es una herramienta Java que Google proporciona al inicio con un archivo por lotes apksigner.bat
(Windows) o un script de shell apksigner.sh
(Linux, MacOS).
Como se mencionó antes, está incluido en cada versión de build-tools del Android SDK. Pero no está ubicado en el PATH, por lo que no se puede abrir simplemente un símbolo del sistema o terminal y ejecutar apksigner
, en su lugar hay que proporcionar manualmente la ruta completa a apksigner.bat
/apksigner.sh
.
Si no quieres instalar todo el Android SDK (con o sin Android Studio) puedes descargar directamente las herramientas de compilación, extraerlas y ejecutar apksigner. Los enlaces a todas las herramientas de compilación se proporcionan en este sitio web (los enlaces proporcionados van a las ubicaciones originales de descarga de Google).
Prefiero apksigner de build-tools v30:
Solo necesitas el archivo lib/apksigner.jar
del archivo. Extráelo y abre una terminal en la carpeta. Luego ejecuta java -jar apksigner.jar
. Para ejecutarlo necesitas Java 9 o superior (mejor Java 11 o 17).
Usando este enfoque directo, el comando para ejecutar apksigner es
java -jar apksigner.jar verify --verbose --print-certs "Signal-website-universal-release-4.49.13.apk"
O si usas nombres de ruta completos - reemplaza las secciones <..>
con la ruta apropiada que funcione en tu sistema operativo:
/java -jar /apksigner.jar verify --verbose --print-certs ""
0 votos
Si visitas, desde tu móvil, la página:
m.google.com/maps
, ¿te ofrece un enlace de descarga o algo similar?0 votos
@Nicolás: El enlace lleva al mercado, desde donde no puedo descargarlo.
0 votos
¿De dónde lo descargaste, ya que tu pregunta ha sido editada recientemente? Yo uso gappsandroid.blogspot.com, he cruzado algunas de las aplicaciones y todas han coincidido en los sumas MD5 con las aplicaciones oficiales lanzadas en Play Store.
0 votos
Relacionado Verificar si un APK de Android ha sido reempaquetado?
1 votos
Si tienes una segunda aplicación que es "auténtica" y proviene del mismo proveedor, puedes comparar si ambas aplicaciones están firmadas utilizando las mismas claves/identidad: Comparing signatures of apks
0 votos
Mientras sea un APK y no un AAB... puedes comparar la firma de la aplicación. Esto simplemente demuestra que la aplicación ha sido firmada por un desarrollador que generó una clave/