Los archivos de instalación de software suelen reconocerse por su extensión. Pongamos los ejemplos más frecuentes:
- En el caso de las aplicaciones para Android (.apk)
- Para GNU/Linux tipo .deb (Debian, Ubuntu, Mint…) o .rpm (Fedora, CentOS…)
- Windows y sus .msi
- Mac y su extensión .dmg
Estos archivos suele ir acompañados de un mensaje firmado PGP (Pretty Good Privacy) o un archivo de firma pública .asc junto con el manifiest.txt. El mensaje firmado PGP contiene un hash SHA-256 de la versión de software correspondiente. Por lo tanto, la verificación de una versión de software es un proceso que consta de dos partes:
A) Verificación del mensaje firmado PGP.
Utilizando una aplicación PGP que verifique que el mensaje firmado PGP ha sido firmado por la clave PGP del desarrollador.
B) Verificación del hash SHA-256.
Para el software que se ha descargado localmente en el dispositivo (por ejemplo, el archivo .apk o .deb), se genera un hash del archivo utilizando un algoritmo SHA-256. Se comprueba que el hash resultante de esta operación coincide con el hash contenido en el mensaje firmado PGP del punto 1º.
Vale, vale, que sí, pero… ¿que cómo se hace eso?
Muy bien, a continuación se detallarán cuatro métodos diferentes. Todos los podrás probar con casos prácticos y están a tu alcance. Puedes leer el artículo completo o utilizar el siguiente índice para saltarte lo que creas que no te interesa. Todos los métodos resuelven el proceso de verificación.
- Verificando desde la web.
- Verificando con app desde el móvil (y no sólo el móvil)
- Verificando con una billetera Sparrow.
- Verificando desde la consola de comandos (GNU/Linux, Windows, Mac)
1º Verificando desde la web.
Este método es válido tanto para escritorio PC/Laptop como para verificar desde el navegador de un teléfono.
- Ventaja:
- Se trata de un método sencillo donde no se necesita que instalar nada.
- Inconvenientes:
- El proceso que puede tardar bastante tiempo si el archivo a verificar es de gran tamaño.
- Se debe confiar en un tercero (el servicio web de comprobación del hash).
Caso práctico.
A) Verificación del mensaje firmado PGP.
Supongamos que queremos instalar la aplicación «Ashigaru», una billetera BTC para Android*¹. Iremos a su web y puedes hacerlo de dos maneras:
- En clearnet, es decir, desde cualquier navegador. http://ashigaru.rs/
- Desde la red TOR (más privado), necesitas instalar TOR Browser para acceder a ella.*² http://ashigaruprvm4u263aoj6wxnipc4jrhb2avjll4nnk255jkdmj2obqqd.onion/
*¹ A pesar de que vas a comprobar un .apk para Android, en este ejercicio práctico, puedes realizar la verificación desde un PC.
*² También deberías verificar el archivo de instalación de TOR Browser, pero eso lo veremos con el siguiente método. Necesitarás TOR para descargar la .apk de Ashigaru.
En el apartado de descargas «Downloads» verás el mensaje firmado con el SHA-256 de la apk. En este caso, observaremos que el texto contiene dos partes:
- El encabezado que comienza con —BEGIN PGP MESSAGE—-. Es importante entender que lo que vas a comprobar es que el mensaje es correcto y no ha sido alterado. En este caso, lo fundamental es la verificación del hash en sí mismo:
0355b5cae83c25b4f0f59a6426c752bfaea1f02404cbea13d8acbf2eb5324855
- La firma pública del propio mensaje y que comienza con —-BEGIN PGP SIGNATURE—. Aquí no tienes que hacer nada. Es frecuente en los mensajes de texto firmados con PGP mostrar la armadura ASCII (para información técnica: ASCII armor) al pie del propio mensaje.
*Nota: cabe destacar en este punto que la publicación del hash por parte del desarrollador, normalmente, no se hace firmándolo de este modo, sino publicado directamente en el mismo sitio web. Sin embargo, Ashigaru (y algún otro) lo hace así para dar mayor garantía de seguridad al usuario final. En caso de que en el sitio web de descarga el hash venga sin firmar, no supone un gran problema y puedes saltarte este paso e ir directamente al apartado B) Verificación del hash SHA-256. Si hemos empezado por este tipo de caso práctico, se debe a que así también vas practicando con la verificación en línea de mensajes firmados, que será muy útil para otros casos de uso.
Copias el texto y te diriges a la web de Keybase para la verificación del mensaje.
- Clearnet: https://keybase.io/verify
- TOR: http://keybase5wmilwokqirssclfnsqrjdsi7jdir5wy7y7iu3tanwmtp6oid.onion/verify
En el campo correspondiente pegas todo el mensaje anterior y pulsas sobre el botón «Verify». Deberías ver algo como el de la siguiente imagen.

Correcto. El mensaje está firmado y no ha sido alterado. Observa que en la franja de color verde que hay un enlace donde dice «Firmado por ashigarudev». Ahí puedes hacer clic sobre el nombre y te llevará al perfil en Keybase del desarrollador, que será el auténtico.
Algo así:

B) Verificación del hash SHA-256.
Perfecto, hemos dado el primer paso, que consiste con confirmar que el mensaje firmado corresponde con el desarrollador y nos ha facilitado el hash del la aplicación. Ahora hay que contrastar que el archivo que nos descargamos tiene el mismo hash.
- En la web de Ashigaru, donde copiamos el mensaje de texto con la firma, subimos un poco y hacemos clic en el botón de descarga del archivo .apk (en este caso, obligatoriamente tenemos que hacerlo con TOR Browser).
- Una vez descargado, vamos a la web Hash-File https://hash-file.online/.
- En el punto 1. «Select file to hash» buscamos y cargamos el apk de Ashigaru.
- En el punto 2. «Choose your hash function» elegimos SHA-256
- Launch the hashing process… Esperamos un poco.
- Al pie nos dará el resultado, que debe coincidir con el que viene en el mensaje firmado:
0355b5cae83c25b4f0f59a6426c752bfaea1f02404cbea13d8acbf2eb5324855
- Si esto es así, todo correcto. Puedes instalar sin problema. Si no coincide, borra el archivo y no confíes en él.

2º Verificando con app desde el móvil (Y no sólo móvil).
En muchas ocasiones descargamos directamente la apk para Android, en ese caso debemos dar permisos a nuestro dispositivo para que puede instalar aplicaciones que no provienen de fuentes «oficiales» como Google Play. Muchos usuarios no quieren pasar por el control de Google y prefieren mantenerse al margen de esta tienda de aplicaciones, utlizando otras vías alternativas. Si bien ya hay soluciones como F-Droid, Droid-ify, Obtainium, Zapstore, etc. También es posible descargar directamente el .apk del desarrollador e instalarla, sin más. En ese caso, deberíamos comprobar que el Asset Checksum (SHA-256) coincide con el que se nos facilite en el repositorio.
- Ventajas:
- No es necesario volver a subir el archivo a un sitio web para la verificación. Especialmente útil si se trata de un paquete de gran tamaño.
- Válido para Android y para escritorio GNU/Linux y Windows.
- Mayor privacidad.
- Inconvenientes:
- La aplicación de este tutorial no se actualiza desde diciembre de 2023, aunque a día de hoy es perfectamente funcional.
- Existen otras, pero no hay tantas para usar en dispositivos móviles.
- En este ejemplo no se verifica el mensaje de firma, aunque hay un modo de hacerlo con alguna app como OpenKeyChain https://www.openkeychain.org/ Puedes hacerlo, no obstante, siguiendo el método de verificación del ejemplo 1 a través de Keybase.
Caso práctico.
Instala la aplicacion DeadHash que está disponible en Google Play, F-Droid y otras.
- Este es su sitio web: https://codedead.com/
- Aquí el GitHub donde puedes encontrar el .apk https://github.com/CodeDead/DeadHash-android
- Además de la aplicación para Android, también la ofrecen para Windows y GNU/Linux (mediante AppImage).
Vamos a instalar la aplicación de correo Tuta (tuta.com) para Android. Lo vamos a hacer desde su repositorio de Github. Podemos llegar hasta él bien siguiendo el menú «Descargas» > «Android» > «Download apk from Github», también directamente desde aquí: https://github.com/tutao/tutanota/releases



Una vez ahí, debemos buscar el primer grupo de «assets» que hagan referencia a la versión de Android. En el momento de escribir este artículo la última versión es la 259.250106.0 (Android), aunque esto cambiará con el tiempo.
- Observa que el desarrollador ha dejado constancia de cuál es el hash (SHA256) para esa versión. En este caso es d9d525eada40e3ef1a5af0ebab6207ec9a8896027f08d50e594c1a04a78e5797 aunque es lógico pensar que en las siguientes versiones el hash será otro.
- Copia ese hash.
- En «assests» debes hacer «tap» sobre el triángulo que hay al principio para desplegar todos los archivos.
- Clic sobre el .apk para descargarlo.


- Abre la aplicación DeadHash y pega el hash en el campo «Compare». En el «File» haz tap y busca el .apk que acabas de descargar. Es posible que la app te pida que actives algún permiso de acceso a fotos e imágenes.
- Clic sobre «Calculate» y verás el resultado. Tendrías que ver en color verde la marca de verificación correspondiente SHA-256. Tal y como aparece en la siguiente imagen.

3º Verificando con una billetera – Sparrow Wallet
- Ventajas:
- Todo el proceso se realiza en tu escritorio en modo local.
- GNU/Linux, Mac y Windows.
- Mayor privacidad.
- El proceso es muy cómodo, automatiza varios pasos. En el tutorial explicaremos el paso a paso detallado y luego el modo «un clic«.
- Verifica la firma .asc y el manifiest.txt en caso de que existan ambos. También detecta software autofirmado.
- Inconvenientes:
- En ocasiones requiere descargar la firma pgp del desarrollador dentro del sistema o localizarla e introducirla en un archivo de texto plano.
- Sólo para aplicaciones de escritorio PC/Laptop, Sparrow no tiene app para dispositivos móviles.
- Si no te interesa BTC, la billetera sólo la vas a instalar para esto. No es un programa que ocupe mucho, así que esto no debería representar un gran problema.
(En construcción)