La comprobación de una clave está firmada
La respuesta corta es que utiliza el comando gpg --list-sig <key id>
.
Por ejemplo, fui al sitio que mencionaste anteriormente y descargué la clave de firma de qubes release 2. Luego importé esa clave en mi llavero local de gpg:
$ gpg --import qubes-release-2-signing-key.asc
que da como resultado lo siguiente
pub rsa4096/0A40E458 2012-11-15 [SC]
uid [ unknown] Qubes OS Release 2 Signing Key
Para verificar si la clave ha sido firmada, puedes usar el comando gpg --list-sig <key id>
.
En este caso, podemos ver que la ID de clave es 0A40E458
de la salida anterior:
$ gpg --list-sig 0A40E458
pub rsa4096/0A40E458 2012-11-15 [SC]
uid [ unknown] Qubes OS Release 2 Signing Key
sig 3 0A40E458 2012-11-15 Qubes OS Release 2 Signing Key
sig 36879494 2012-11-15 [User ID not found]
La última entrada es la clave maestra de Qubes, pero se desconoce porque no la tengo en mi llavero. Si luego descargo la clave maestra y la agrego al conjunto de claves:
$ gpg2 --import ./qubes-master-signing-key.asc
gpg: key 36879494: public key "Qubes Master Signing Key" imported
gpg: Total number processed: 1
gpg: imported: 1
Puedo verificar de nuevo y ver que la clave de liberación está firmada correctamente:
$ gpg2 --list-sig 0A40E458
pub rsa4096/0A40E458 2012-11-15 [SC]
uid [ unknown] Qubes OS Release 2 Signing Key
sig 3 0A40E458 2012-11-15 Qubes OS Release 2 Signing Key
sig 36879494 2012-11-15 Qubes Master Signing Key
Verificación de firmas
Cuando un archivo se firma con una clave gpg, se crea un archivo de firma separado. Con el ejemplo de qubes, lanzan un archivo .DIGESTS
. Consulte el encabezado "Verificación de compendios" en el enlace que proporcionó para obtener más detalles sobre cómo verificar dicho compendio.
Básicamente, lo que han hecho es tomar el archivo que se supone que proviene de ellos y ejecutar una variedad de algoritmos hash en su contra. Una función hash tomará un archivo o mensaje de entrada, y generará una cadena hash bastante corta única. Esto se crea criptográficamente de manera que hace que sea muy difícil o casi imposible encontrar cualquier otro archivo que produzca la misma salida.
Luego, firman esta cadena de hash con su clave GPG. Tanto el hash como la firma de ese texto hash se colocan dentro del archivo .DIGESTS.
Lo importante a tener en cuenta con este proceso es que cualquier cambio en el archivo original que se está verificando producirá una cadena de hash completamente diferente. Por lo tanto, cuando ejecuta el comando de verificación, lo que está sucediendo en su máquina local es que su sistema está creando su propio hash del archivo dado y comprobando que coincida con el hash dentro del texto firmado. Si ambos coinciden, y se verifica que la firma proviene de la clave en la que ya ha decidido confiar, entonces sabe que el propietario de la clave ha "firmado" la versión del archivo que ha descargado.