APT seguro (Secure APT)

APT utiliza el sistema de criptografía GPG para validar los paquetes .deb descargados y asegurarse de que no han sido alterados. A esto se le llama Secure APT y funciona de la siguiente manera:

  • cuando nos conectamos a un repositorio de paquetes .deb, APT descarga los archivos Packages.gz (que contiene el archivo Packages comprimido), Release y Release.gpg.
  • cuando nos descargamos un paquete binario .deb APT comprueba que su md5sum coincide con la que figura en Packages.
  • para asegurarse de que el archivo Packages no ha sido alterado, APT comprueba que su md5sum coincide con la que figura en Release.
  • para asegurarse de que el archivo Release no ha sido alterado, APT comprueba su firma, el archivo Release.pgp. Para comprobar Release.pgp, APT debe conocer la clave pública del que firma el archivo, es decir, esa clave pública debe estar en el archivo /etc/apt/trusted.gpg. Veremos el contenido de /etc/apt/trusted.gpg con el comando:
    # apt-key list
    /etc/apt/trusted.gpg
    --------------------
    pub 1024D/6070D3A1 2006-11-20 [expires: 2009-07-01]
    uid                Debian Key (4.0/etch) <master@debian.org>

    Como vemos, por defecto tenemos una clave pública en el anillo de claves de APT, referencia 6070D3A1 y caducidad 2009-07-01. Es la clave pública del repositorio oficial de Debian que hemos utilizado al instalar nuestra máquina.

  • si añadimos otro repositorio a /etc/apt/sources.list (o si la clave del repositorio oficial caduca), tendremos que conseguir su clave pública y añadirla al anillo de claves de APT para que la pueda utilizar para verificar los paquetes. El proceso consta de dos pasos:
    1. conseguir la clave pública GPG del nuevo repositorio. Para ello, tenemos que buscarla en un servidor de claves públicas. Por ejemplo, podemos buscar la clave pública del repositorio de Christian Marillat (debian-multimedia.org) en el servidor de claves de RedIRIS (rediris.es/cert/servicios/keyserver/), donde veremos que su UID es 1F41B907 (este UID también figura en el mensaje de error que nos habrá tirado ATP). Importaremos la clave y la añadiremos al anillo de GPG con el comando:
      # gpg --recv-keys 1F41B907

      Comprobaremos que GPG ha añadido la clave a su anillo con el comando:

      #  gpg --list-keys
    2. añadir la clave pública al anillo de claves de APT. Lo haremos con el comando:
      # gpg -a --export 1F41B907 | apt-key add -

      Comprobamos que APT ha añadido la clave a su anillo:

      # apt-key list
      /etc/apt/trusted.gpg
      --------------------
      pub 1024D/6070D3A1 2006-11-20 [expires: 2009-07-01]
      uid                Debian Key (4.0/etch) <master@debian.org>
      pub 1024D/1F41B907 1999-10-03
      uid                Christian Marillat <marillat@debian.org>

      Para terminar haremos un:

      # apt-get update

      Si todo está correcto, APT no se quejará.

  • ¿Y qué pasa si no disponemos de la clave pública del repositorio, si ésta ha caducado o si la firma está mal? APT nos advertirá de que la fuente está sin autentificar y nos dará la opción de Abortar o Continuar la instalación, eso sí, sin garantía de su autenticidad.

Archivos Packages, Release y Release.gpg

Veamos el contenido de los archivos Packages, Release y Release.gpg:

  • parte del contenido de Packages:
    Package: 3dchess
    Priority: optional
    Section: games
    Installed-Size: 136
    Maintainer: Debian QA Group <packages@qa.debian.org>
    Architecture: i386
    Version: 0.8.1-12
    Depends: libc6, libx11-6, libxext6, libxmu6, libxpm4, xaw3dg
    Filename: pool/main/3/3dchess/3dchess_0.8.1-12_i386.deb
    Size: 33564
    MD5sum: fecee217870b621286f75e528496d3b1
    SHA1: 88343e19f566cf5cd11ef099bad97fbabf4e316d
    SHA256: 3601709708044f7e489a0a74dbe4aca0e04b2fe1bc533655b268a
    ...
  • parte del contenido de Release:
    Origin: Debian
    Label: Debian
    Suite: stable
    Version: 4.0r0
    Codename: etch
    Date: Sun, 08 Apr 2007 10:41:22 UTC
    Architectures: alpha amd64 arm hppa i386 ia64 powerpc s390 sparc
    Components: main contrib non-free
    Description: Debian 4.0r0 Released 8 April 2007
    MD5Sum:
     1757dd307e43c7d86c9d08406044 19454084 main/binary/Packages
     c83575303b87ea665bc62e1f8d56  5637843 main/binary/Packages.gz
    SHA1:
     1083885552dc601b8206b7ee269915fd 19454084 main/binary/Packages
     924f355bb8567e7db7255df336876547  5637843 main/binary/Packages.gz
    ...
  • contenido de Release.gpg:
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.1 (GNU/Linux)
     
    iD8DBQBGGMb4pw2vU2Bw06ERAmPbAJ4wTvLZlocu/sTJBGBxaS0TXhT6hgCbBnQl
    Rlof3xGJXxYnsUoHishfZMY=
    =QSdS
    -----END PGP SIGNATURE-----
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.6 (GNU/Linux)
     
    iD8DBQBGGLggtdDIBK2xEncRAl8+AJwNeefC/JOB7dz6cbKjym2MjywKQACfeuCJ
    4MbfYYrUSg4wi7D4fs/Tv4g=
    =flEJ
    -----END PGP SIGNATURE-----

Frontal gráfico para Secure APT

Existen varios GUI para gestionar Secure APT, como:

Artículos en la categoría "Encriptación y Criptografía"

  1. Checksum MD5
  2. Conexión remota segura SSH
  3. Software de encriptación GPG
  4. APT seguro (Secure APT)
  5. HTTPS (HTTP seguro): SSL