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:

1
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:

1
2
3
4
5
6
7
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.

1
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):

1
2
3
4
5
6
7
8
9
10
gpg: enabled debug flags: memstat
gpg: clave 9741E8AC: clave pública "Pierre Schmitz <Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>;" 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:

1
gpg --verify archlinux-2016.03.01-dual.iso.sig archlinux-2016.03.01-dual.iso

y ya vemos que cambia el resultado:

1
2
3
4
5
6
7
8
9
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 <Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>;" [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.

 

Fuente: lamiradadelreplicante

¿Quién está en línea?

Hay 32120 invitados y ningún miembro en línea