pacman/Package signing (Español)

From ArchWiki
< Pacman
Revision as of 17:22, 21 January 2012 by Musikolo (Talk | contribs) (Resetting all the keys)

Jump to: navigation, search

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

pacman-key es una nueva herramienta incluida con pacman 4. Cumple la función de manejar la lista de llaves PGP que mantiene pacman en la nueva implementación de la firma de paquetes.

Visión general

El sistema de la firma de paquetes de pacman se basa en el modelo de "confianza web" para garantizar que los paquetes proceden de los desarrolladores y no de alguien que pretenda suplantarlos. Los desarrolladores y los TUs (usuarios de confianza) disponen de llaves PGP individuales para firmar digitalmente sus paquetes. Además, cuando configuras pacman, tú también obtienes una llave personal.

Una llave PGP permite a los desarrolladores firmar sus paquetes de una forma única, asegurando que ellos hicieron el paquete y no un impostor.

Un keyid es una versión corta de una llave que puede usarse para identificar a dicha llave sin escribirla por completo, dado que éstas pueden ser muy largas.

Formatos de keyid:

  • Keyids como "6645 B0A8 C700 5E78 DB1D 7864 F99F FE0F EAE9 99BD" tienen que ser comprimidas a "6645B0A8C7005E78DB1D7864F99FFE0FEAE999BD" (sin espacios).
  • El bit "0x" es opcional.

Las llaves se pueden usar para firmar otras llaves, lo que significa que el propietario de la llave de firma da el visto bueno a la autenticidad de la llave firmada. Para confiar en la autenticidad de un paquete, es necesario tener una cadena de firmas de tu propia llave PGP que confirme la autenticidad del paquete. De acuerdo con la estructura de llaves de Arch, esto se puede dar de tres formas:

  • Paquetes propios: Tu construyes tus paquetes y los firmas con tu llave personal.
  • Paquetes no oficiales: Un desarrollador construye un paquete y lo firma. Has de usar tu llave personal para firmar la llave del desarrollador.
  • Paquetes oficiales: Un desarrollador construye un paquete y lo firma. La llave del desarrollador ha sido firmada por las llaves maestras de Arch. Has de usar tu llave para firmar las llaves maestra y otorgarles confianza para darle el visto bueno a los desarrolladores.

Configuración

Configurando pacman

En primer lugar, debes de decidir el nivel de validación que quieres. Esto se configura usado la opción SigLevel /etc/pacman.conf. En este fichero hay varios comentarios, aunque puede consultar pacman.conf man page para más detalles.

Advertencia: La opción TrustAll existe para tareas de depuración y hace muy fácil confiar en las llaves que no han sido verificadas. Se recomienda usar TrustedOnly para todos los repositorios oficiales.

A diciembre de 2011, la base de datos de firmas no ha sido implementada todavía, por lo que es necesario añadir la opción DatabaseOptional si usas Required, por ejemplo:

SigLevel = Required DatabaseOptional TrustedOnly

Inicializando el llavero (keyring)

Para configurar el llavero de pacman has de usar:

# pacman-key --init

Esto configura el nuevo llavero en /etc/pacman.d/gnupg y genera una llave maestra para tu sistema.

Gestionando el llavero (keyring)

Las llaves necesarias para verificar las firmas de los paquetes se almacenan en un "llavero" (keyring) gestionado por pacman-key. Cuando se necesita una llave que no está en el llavero, pacman y pacman-key la obtienen del servidor de llaves (keyserver). El servidor de llaves utilizado está configurado en /etc/pacman.d/gnupg/gpg.conf, pudiendo modificarse mediante la opción --keyserver. (Si estás buscando diferentes servidores de llaves, podrás encontrar un breve lista en el artículo de Wikipedia.)

Las llaves PGP son habitualmente demasiado grandes (2048 bits o más) para que trabajen con ellas los humanos, así que se reducen a un código hash para crear una huella de 40 dígitos hexadecimales. Los últimos 8 dígitos se conocen como el ID de llave (key ID) y suele usarse como el "nombre" de la llave. La huella completa se utiliza cuando quieres comprobar a mano si dos llaves son la misma.

Llaves maestras

Hay 5 llaves maestras de Arch Linux que se usan para firmar las llaves de los desarrolladores y los TUs (usuarios de confianza) y, por lo tanto, estas llaves deberían estar en tu llavero. Los IDs de estas llaves están disponibles en la página de Llaves Maestras de Firmas. Para instalarlas, deberás ejecutar:

# pacman-key -r <keyid> <keyid> <keyid> <keyid> <keyid>

También es necesario que firmes localmente estas llaves y establezcas su nivel de confianza a, como mínimo, "marginal":

# pacman-key --edit-key <keyid> <keyid> <keyid> <keyid> <keyid>

Antes de que firmes o confíes en una llave, deberías verificar su huella (fingerprint). El modo más seguro de hacerlo es no usar un ordenador, por ejemplo, invitando a Allan a una cerveza y pidiéndole en persona la huella de su llave pública. Es razonablemente seguro contrastar la huella entre varios listados diferentes, tal como la página de Llaves Maestras de Firmas y la bitároca de Allan (inglés).

gpg> lsign
...
 Primary key fingerprint: ...
...
Really sign? (y/N)

Si la huella coincide, continua y fírmala. Deberías asignar, al menos, nivel de confianza "marginal" para cada una de las llaves maestras.

Really sign? (y/N) y
gpg> trust
...
Your decision? 3
gpg> q
Save changes? (y/N) y

Este proceso se repetirá para cada llave maestra.

Llaves de desarrolladores oficiales

Las llaves de los desarrolladores oficiales y de los TU (usuarios de confianza) están firmadas con las llaves maestras. Cada vez que pacman encuentre una llave que no reconozca, te preguntará si quieres descargarla del servidor de llaves. Una vez descargada la llave del desarrollador, no tendrás que volverlo a hacer y podrá ser reutilizada para verificar cualquier otro paquete firmado por éste.

Llaves no oficiales

Si quieres añadir un llave no oficial a tu llavero, deberás hacerlo manualmente usando pacman-key. En primer lugar, obtén el ID de llave de su propietario. Ejecuta:

# pacman-key -r <keyid>

para descargarla del servidor de llaves. Asegúrate de verificar la huella, tal como harías con una llave maestra o cualquier otra llave que vayas a firmar. Tras verificar la huella, deberás firmar esta llave localmente:

# pacman-key --lsign-key <keyid>

A partir de ahora, confías en en esa llave para firmar paquetes.

Añadir automáticamente llaves

Esta sección proporciona algunos scripts que pueden usarse para descargar las llaves automáticamente. Para evitar establecer confianza a llaves maliciosas, se recomienda un uso precavido.

Llaves maestras

Advertencia: Usar con precaución. Este script establecerá automáticamente como confiable cualquier llave que descargues. Por consiguiente, ¡se recomienda que verifiques las huellas ANTES de usar pacman!

Se deberá ejecutar como root para añadir las llaves.

for key in FFF979E7 CDFD6BB0 4C7EA887 6AC6A4C2 824B18E8; do
    pacman-key --recv-keys $key
    pacman-key --lsign-key $key
    printf 'trust\n3\nquit\n' | gpg --homedir /etc/pacman.d/gnupg/ \
        --no-permission-warning --command-fd 0 --edit-key $key
done

Llaves de desarrolladores y TUs (usuarios de confianza)

Advertencia: Este script debería usarse únicamente para descargar llaves si estás usando TrustedOnly!

Este script usa curl para descargarse la página de los Desarrolladores, extraer las huellas PGP de las llaves y usa pacman --recv-keys con pgp.mit.edu como servidor de llaves, para añadirlas al llavero de pacman.

Se deberá ejecutar como root para añadir las llaves o añadir sudo antes al comando pacman-key.

curl https://www.archlinux.org/{developers,trustedusers}/ |
awk -F\" '(/pgp.mit.edu/) {sub(/.*search=0x/,"");print $1}' |
xargs pacman-key --recv-keys

Solución de problemas

No puedo importar llaves

Algunos ISPs (proveedores de internet) bloquean el puerto usado para importar llaves PGP. Una solución es usar el servidor de llaves MIT dado cual dispone de un puerto alternativo. Para lograr esto, edita /etc/pacman.d/gnupg/gpg.conf y cambia la línea del servidor de llaves a:

keyserver hkp://pgp.mit.edu:11371

Desactivar la comprobación de firmas

Advertencia: Usar con precaución. Desactivar la firma de paquetes permitará a pacman instalar paquetes no confiables automáticamente.

Si no estás interesado en la firma de paquetes, puedes desactivar la firma PGP de paquetes completamente. Edita /etc/pacman.conf y descomenta la siguiente línea bajo [options]:

SigLevel = Never

Esto desactivará la validación de firmas, el cual era el modo de funcionamiento anterior a pacman 4. Si decides hacer esto, no es necesario que configures el llavero de pacman-key. Deberás cambiar esta opción posteriormente, si decides activar la verificación de paquetes.

Restablecer todas las llaves

Si quieres borrar o restablecer todas las llaves instaladas en tu sistema, puedes borrar el directorio /etc/pacman.d/gnupg como root y volver a ejecutar pacman-key --init. Posteriormente, se podrá añadir las nuevas llaves que se desee.