pacman/Package signing (Español)

From ArchWiki
< Pacman
Revision as of 17:05, 21 January 2012 by Musikolo (Talk | contribs) (Agregando llaves)

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

Firmar llaves

Para que funcione la llave, el nivel de confianza tiene que ser cambiado.

Encuentre el desarrollador a quien le pertenece la llave en https://www.archlinux.org/developers/; el texto del enlace "PGP Key" es el keyid.

Para firmar una llave localmente, use:

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

Para mas opciones, entre al menú de manejo de la llave usando el comando:

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

y ahora mete Template:Codeline aquí para listar las otras opciones.

Al contrario, pacman se puede configurar para confiar en cualquier llave en su llavero. Para hacer esto, agregue UNA de las siguientes lineas a Template:Filename:

SigLevel     = Required TrustAll
SigLevel     = Optional TrustAll


Script para agregar las firmas PGP requeridas

Cuando las llaves maestras son agregadas, ya no es necesario validar cada llave de desarrollador oficial o de usuario de confianza, por que ellos estan firmados en por lo menos tres llaves maestras.

Script para agregar todas las llaves maestras

Este script agrega todas las llaves maestras al almacenaje de llaves de pacman y pone el nivel de conianza en "marginal" (3).

Advertencia: Haga esto con precaucion. Por favor revize que las llaves listadas abajo coincidan con las llaves de master-keys. Es posible que alguien pueda hackear las llaves maestras e instertar llaves GPG maliciosas, haciendo que todo el proceso de firmas algo inutil.

Este script debe ser ejecutado como root o agregar sudo antes del comando pacman-key.

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

Script para agregar todas las llaves GPG de developers de la pagina de developers: Developers page

Este script utiliza curl para descargar la pagina de Developers, extraer las llaves PGP y utiliza pacman --recv-keys con pgp.mit.edu como el servidor de llaves, para agregarlos al almacenaje de llaves de pacman.

Advertencia: Haga esto con precaucion. Es posible que alguien pueda hackear las llaves maestras de la pagina de Developers e instertar llaves GPG maliciosas,algo inutil.


Este script debe ser ejecutado como root o agregar sudo antes del comando pacman-key.

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

Script para agregar las llaves PGP desde la pagina de usuarios de confianza

Este script utiliza curl para descargar la pagina de usuarios de confianza, extrae las llaves PGP y utiliza pacman --recv-keys con pgp.mit.edu como el servidor de llaves, para agregarlos al almacenaje de llaves de pacman.

Advertencia: Haga esto con precaucion. Es posible que alguien pueda hackear las llaves maestras de la pagina de usuarios de confianza e instertar llaves GPG maliciosas,algo inutil.

Este script debe ser ejecutado como root o agregar sudo antes del comando pacman-key.

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

Script para agregar todas las llaves GPG (de Desarrolladores y usuarios de confianza)

Advertencia: Haga esto con precaucion. Es posible que alguien pueda hackear las llaves de los los desarrolladores oficiales o de usuarios de confianza e inserte llaves GPG maliciosas, haciendo que todo el proceso de firmas.


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

Solucion a posibles problemas si la importacion de llaves falla

El problema puede ser porque ciertos proveedores de internet bloquean el puerto utilizado para la importacion de llaves.

Edite el archivo /etc/pacman.d/gnupg/gpg.conf y remplaze la linea keyserver hkp://keys.gnupg.net con keyserver hkp://pgp.mit.edu:11371. Despues de esto, todo debera funcionar bien.