SHARE THE PERSPECTIVE
Una suma de comprobación compara los bytes con una referencia. Una firma vincula la integridad a una clave. Ninguna de las dos demuestra por sí sola que el software sea seguro.

Antes de instalar un APK de Android, distingue tres comprobaciones: ¿Coincide este archivo con la versión publicada que se espera? ¿Está firmado con la clave esperada? ¿Pueden terceros independientes reproducirlo a partir del código fuente indicado? Una suma de comprobación SHA-256, una firma de APK y una compilación reproducible abordan estas preguntas de formas distintas.

Ninguna ofrece por sí sola un veredicto sobre la presencia de software malicioso. Un programa correctamente firmado y reproducible puede seguir conteniendo una vulnerabilidad o un comportamiento deliberadamente dañino.

Qué permite establecer cada método de verificación

Comprobación Resultado útil Limitación importante
Hash SHA-256 del archivo Los bytes que tienes coinciden con un hash concreto de confianza Un atacante que sustituya tanto el archivo como el hash puede eludir esta comparación
Verificación de la firma del APK La firma del paquete se verifica con su certificado de firma Debes establecer cuál es la clave de firma esperada; la validez por sí sola no identifica al editor
Comparación de compilaciones reproducibles El artefacto especificado puede recrearse a partir de entradas documentadas Que el código fuente coincida con el binario no demuestra que el código fuente sea seguro
Revisión de seguridad Se han evaluado aspectos concretos del diseño o la implementación Importan su alcance, la versión, los hallazgos y los problemas pendientes

Android exige la firma de los APK para instalarlos y actualizarlos. Con Play App Signing, Google puede gestionar la clave de firma de la aplicación y generar los APK de distribución a partir de un App Bundle. Se trata de acuerdos de confianza documentados, no de pruebas de que cualquier intermediario pueda alterar un paquete en silencio y conservar su firma válida. Guía de Android sobre la firma de aplicaciones.

Paso 1: identifica el artefacto exacto

Anota la versión de la aplicación, el canal de distribución, el nombre del archivo y la variante de plataforma prevista. Utiliza la página oficial de distribución del editor, no una suma de comprobación copiada del mismo mensaje no solicitado que te proporcionó el APK.

Un APK descargado directamente del editor puede diferir de uno generado para un dispositivo por una tienda de aplicaciones. Las diferencias de versión, arquitectura, empaquetado o sistema de firma pueden producir legítimamente hashes de archivo distintos. Compara elementos equivalentes antes de interpretar una discrepancia como prueba de manipulación.

La pregunta práctica es: ¿De dónde procede el valor esperado y por qué confío en esa fuente? Calcular un hash sin conexión no resuelve el problema de confianza de un hash de referencia obtenido en línea.

Paso 2: calcula el SHA-256 localmente

Sustituye messenger.apk por el nombre del archivo descargado. Estos ejemplos leen el archivo; no lo instalan.

Linux:

sha256sum messenger.apk

macOS:

shasum -a 256 messenger.apk

Símbolo del sistema de Windows:

certutil -hashfile messenger.apk SHA256

Compara el hash completo, ignorando únicamente los espacios de presentación y las diferencias entre mayúsculas y minúsculas. No compares solo los primeros o los últimos caracteres. Conserva el hash esperado junto con la información de la publicación y la versión para poder repetir la comparación.

Si los valores difieren, detente antes de instalar. Comprueba el artefacto y la versión, vuelve a descargarlo de la fuente de confianza si corresponde y consulta al editor si la discrepancia no tiene explicación. No «corrijas» la suma de comprobación esperada para que coincida con el archivo que hayas recibido.

Paso 3: comprueba la firma del APK

Para quienes utilicen Android SDK Build Tools, la documentación de apksigner de Google describe cómo verificar la firma y mostrar la información de los certificados:

apksigner verify --verbose --print-certs messenger.apk

La verificación debería completarse correctamente para las plataformas compatibles con el APK. Compara la información de su certificado de firma con un registro de publicación de confianza o con el historial de claves de firma documentado por el editor. Una firma realizada con una clave desconocida no se vuelve fiable por la palabra «verificada». Una rotación legítima de la clave de firma también requiere pruebas, no una instrucción para ignorar una discrepancia.

El hash SHA-256 del archivo APK y la huella SHA-256 de su certificado de firma son valores distintos. No compares uno con el otro.

Paso 4: busca pruebas de compilaciones reproducibles

Una afirmación de compilación reproducible necesita una revisión concreta del código fuente, un entorno de compilación, instrucciones y un artefacto de destino definidos. Terceros independientes deberían poder recrear ese artefacto y comparar el resultado. La definición del proyecto Reproducible Builds incorpora esas entradas a la afirmación.

En una aplicación de mensajería, las pruebas útiles de una publicación incluyen una etiqueta del código fuente, versiones fijadas de las dependencias y de la cadena de herramientas, instrucciones de compilación y resultados de comparaciones independientes. Pregunta qué se comparó exactamente: un artefacto sin firmar, un APK firmado o determinados contenidos del paquete. No deduzcas que una compilación es reproducible solo porque se publiquen el código fuente y un hash de descarga.

La reproducibilidad refuerza el vínculo entre el código fuente revisado y el código distribuido. No convierte una implementación sin revisar en un protocolo seguro ni demuestra que un teléfono en funcionamiento no esté comprometido.

Qué papel desempeña Proof Lab de Livara

Proof Lab de Livara permite calcular localmente el hash de un APK y compararlo con el hash publicado. Sus demostraciones criptográficas tienen un alcance más limitado que una auditoría del protocolo de mensajería completo. Utiliza la comprobación del hash para su finalidad declarada, junto con la información de la publicación esperada y su firma; no la consideres una prueba independiente de compilaciones reproducibles ni de ausencia de puertas traseras.

El modelo de amenazas señala expresamente la limitación que existe cuando pueden sustituirse tanto un APK como el hash que se muestra para él. Por eso, la procedencia del valor de referencia importa tanto como ejecutar correctamente el cálculo.

Preguntas frecuentes

¿Una suma de comprobación coincidente demuestra que un APK es seguro?

No. Establece una coincidencia con el hash de referencia, suponiendo que la referencia sea fiable y se cumplan las propiedades de seguridad de la función hash. No evalúa el comportamiento del programa.

¿La verificación de la firma es redundante si la suma de comprobación coincide?

No. Las comprobaciones aportan pruebas distintas. Una firma vincula la integridad del paquete a una clave; un hash de archivo identifica una secuencia concreta de bytes.

¿Una descarga de una tienda debe coincidir con el hash del APK de la web?

Solo si se supone que son el mismo artefacto. Comprueba primero el canal de distribución, la versión y el empaquetado. Una discrepancia sin explicación merece una investigación, no una acusación automática ni una aprobación automática.

¿Estas comprobaciones pueden detectar software espía que ya esté en mi teléfono?

No. Evalúan un artefacto de instalación, no todos los componentes del estado de ejecución actual del dispositivo.

Verifica tu compilación en Proof Lab
CONTINUE THE THREADAndroid & device security ↗
YOU’VE REACHED THE ENDBack to the reading room ↗