Hace unos años, a la hora de instalar software fuera de los repositorios oficiales, las precauciones era bien sencillas: acudir a la fuente original y huir como de la peste de la mayoría de portales especializados en descargas.
Aunque tengo la sospecha de que la mayoría de usuarios no las utilizan, la comprobación de las sumas de verificación mediante MD5 o SHA-1 es una realidad desde hace muchos años, pero si algo aprendimos de los recientes ataques a Linux Mint y Transmissión (en su versión OS X), es que incluso eso puede no ser suficiente.
Nada impide a un atacante una vez infectados los archivos de descarga, manipular también las sumas de verificación para que coincidan.
Para evitar esto y proporcionar un grado de seguridad mayor, se inventaron las firmas GPG en la verificación de software, que nos permite comprobar que los archivos que estamos descargando son auténticos y han sido creados por el desarrollador de la aplicación.
Al asunto
Doy por supuesto que tenéis instalado GnuPG, y os suena algo lo del cifrado asimétrico con sus claves públicas y privadas, así que vamos a tomar como ejemplo la última versión de Arch Linux descargando una imagen ISO desde cualquiera de sus mirrors y también un archivo con extensión .sig que es su firma digital.
Una vez descargados, empezamos ejecutando el comando:
gpg --verify archlinux-2016.03.01-dual.iso.sig archlinux-2016.03.01-dual.iso
Que nos va a dar un resultado parecido a este:
gpg: enabled debug flags: memstat gpg: Firmado el mar 01 mar 2016 16:52:58 CET usando clave RSA ID 9741E8AC gpg: Imposible comprobar la firma: No public key gpg: keydb: kid_not_found_cache: total: 1 gpg: random usage: poolsize=600 mixed=0 polls=0/0 added=0/0 outmix=0 getlvl1=0/0 getlvl2=0/0 gpg: secmem usage: 0/32768 bytes in 0 blocks
Nos dice que no puede comprobar la firma porque no disponemos de la clave pública (clave RSA ID 9741E8AC), así que vamos a importarla desde un servidor de claves y así trabajo que nos ahorramos para próximas ocasiones.
gpg --keyserver pgpkeys.mit.edu --recv-key 9741E8AC
En la salida del comando nos muestra el dueño de la firma (un desarrollador de Arch llamado Schmitz):
gpg: enabled debug flags: memstat gpg: clave 9741E8AC: clave pública "Pierre Schmitz <pierre@archlinux.de>" importada gpg: marginals needed: 3 completes needed: 1 trust model: PGP gpg: nivel: 0 validez: 3 firmada: 0 confianza: 0-, 0q, 0n, 0m, 0f, 3u gpg: Cantidad total procesada: 1 gpg: importadas: 1 gpg: keydb: kid_not_found_cache: total: 388 gpg: random usage: poolsize=600 mixed=0 polls=0/0 added=0/0 outmix=0 getlvl1=0/0 getlvl2=0/0 gpg: secmem usage: 0/32768 bytes in 0 blocks
Repetimos el primer comando:
gpg --verify archlinux-2016.03.01-dual.iso.sig archlinux-2016.03.01-dual.iso
y ya vemos que cambia el resultado:
gpg: enabled debug flags: memstat gpg: Firmado el mar 01 mar 2016 16:52:58 CET usando clave RSA ID 9741E8AC gpg: Firma correcta de "Pierre Schmitz <pierre@archlinux.de>" [desconocido] gpg: ATENCIÓN: ¡Esta clave no está certificada por una firma de confianza! gpg: No hay indicios de que la firma pertenezca al propietario. Huellas dactilares de la clave primaria: 4AA4 767B BC9C 4B1D 18AE 28B7 7F2D 434B 9741 E8AC gpg: random usage: poolsize=600 mixed=0 polls=0/0 added=0/0 outmix=0 getlvl1=0/0 getlvl2=0/0 gpg: secmem usage: 0/32768 bytes in 0 blocks
Sin duda habéis reparado en esa palabra “ATENCIÓN” que esta gritando como una loca poníéndonos sobre aviso, respecto de la firma. Bueno, eso es algo normal dado que no conocemos al propietario, no la hemos marcado como de confianza ni nosotros ni lo que se denomina nuestro anillo o red de confianza, así que… diablos!, podría ser cualquiera.
En este punto podemos ir la web de Arch Linux y ver si esa clave pública está validada mediante la firma de las llamadas Master Keys (llaves maestras) del proyecto.
Hola desde un XP, aún :-), hice la prueba con youtube-dl.exe, tengo una duda, las claves siempre se solicitan al servidor pgpkeys.mit.edu … Si hay otros, no importa cual se use ¿? … Generalmente al software lo compruebo mediante su hash (md5, sha) … Y al software propietario con el antivirus de siempre, jejeje.
Saludos.
PD: Firefox se queja del sitio, al tratar de enviar el comentario.
Los servidores de claves se sincronizan entre ellos.
No importa cual visites, o a cual subas tus calves, después de un tiempo se sincronizan, replicándose la información.
Saludos.
La mayoría de los servidores de claves están conectados entre si, por lo que no debería haber problemas si utilizas otro cualquiera.
Aunque no lo mencione en el post (siempre hay que reservar algo para los comentarios 😉 ), existe la opción de importar la clave utilizando el archivo gpg disponible en su web.
Gracias por la respuesta (y a @Victor), un tema interesante y por lo que veo GPG va más alla … Estoy buscando un cliente para el e-mail, estoy interesado en «Claws Mail» o «Sylpheed», no confio en el viejo outlook express, jeje … Y leyendo sobre «HushMail» y «ProtonMail», pa jugar un rato.
Saludos.
Plas,plas,plas…
Aplaudo con las orejas este artículo!! 🙂
Compartiendo…
Gracias por compartir amigo y por arrebatarme la «pole» en la respuesta a @anjira 🙂
Esto toma importancia, sobre todo después de lo que pasó con Mint.
He ingresado la línea ‘9741E8AC’ en la casilla de búsqueda de la página del MIT PGP Public Key Server y no obtuve resultados. ??
Es posible que el autor la haya revocado.
Si se revoca una clave, eso queda también reflejado.
Anteponle un 0x a la clave 9741E8AC, es decir, busca por: 0x9741E8AC
Saludos.
Hola. ¿Cómo sería el procedimiento para archivos donde no ho disponen directamente un archivo .sig?
Entiendo, otros también disponen ficheros .asc
Se que también suele usarse el comando ejemplo: ‘gpg –fingerprint 0x8e94c9cd163e3fb0’
También: ‘gpg –keyserver pool.sks-keyservers.net –recv-keys 0x4E2C6E8793298290’
¿Cómo sería el asunto con los datos dados por la web de GParted?: https://gparted.org/download.php
Gracias.
Tu artículo fue el primer hallazgo usando buscador startpage.com –> como verificar gpg archivo linux
Demasiado engorroso como para que se use de forma masiva.
Es bastante ridículo que después de varios pasos, todavía nos diga que «Esta clave no está certificada por una firma de confianza». Obviamente deberían incluirse firmas de confianza en el programa. Si es tan engorroso que casi nadie lo usa, es prácticamente inútil.