``GNU Privacy Guard'' (GnuPG) Mini Como: GnuPG + PGP

Next Previous Contents

## 5. GnuPG + PGP

Al ser `PGP` un programa más antiguo que `GnuPG`, es normal que un nuevo usuario de `GnuPG` tenga ya instalado alguna versión de `PGP` en su sistema, y que desee mantener sus viejas claves después de actualizarse a `GnuPG`. Pues bien, no sólo es posible importar el contenido de los anillos de claves sino que, alternativamente, es posible que `GnuPG` gestione los anillos de claves de `PGP 2.6.3` y `PGP 5.0`.

Hay otros «problemas» de compatibilidad sobre los que también trataremos en este capítulo, como son las firmas de tipo V4 generadas por `GnuPG`, o el uso por parte de `PGP` de los algoritmos propietarios `RSA` o`IDEA`. Empezaremos por esto último.

## 5.1 Uso de Algoritmos no libres

El uso de algoritmos con patentes restrictivas por parte de `PGP` representa un problema en tanto en cuanto la filosofía en torno a `GnuPG` es la de implementar un sistema criptográfico libre. Así pues, las patentes sobre estos algoritmos imposibilitan una implementación total. Pero `GnuPG` también pretende cumplir con las reglas de los «estándares» de OpenPGP.

Existen unas extensiones para RSA e IDEA que pueden ser instaladas y que permiten cierto uso de estos algoritmos. Las claves generadas por `PGP 2.6.x` son del tipo `RSA`, y el algoritmo de cifrado que usa es `IDEA` (también puede ser usado por `PGP 5.x`). Es posible conseguir el código fuente de estos algoritmos en los ficheros rsa.c e idea.c.

También existen los binarios instalables de estas extensiones para algunas distribuciones de Linux, como Debian (comprobar para otras distribuciones).

## 5.2 Firma Digital con GnuPG

`GnuPG` es el único sistema capaz de implementar firmas digitales V4 (de acuerdo con OpenPGP) y esta es la opción por defecto, pero en este caso `PGP` no es capaz de verificarlas. Es posible obligar a `GnuPG` a usar V3, de dos modos:

- Indicarlo en el fichero de configuración `$HOME/.gnupg/options` añadiendo la línea:

> `

>     force-v3-sigs

> `

- Indicar esta opción cada vez que se desee firmar un mensaje en V3:

> `

>     $ gpg <opción> --force-v3-sigs [fichero]

> `

## 5.3 Importar Anillos de Claves de PGP a GnuPG

Intentaremos explicar cómo exportar las claves públicas y privadas desde nuestros anillos de claves `PGP` a los anillos de claves `GnuPG`.

NOTA: este método se ha extraído del PGP2GnuPG Howto de Caskey L. Dickson y no lo he probado personalmente. La última actualización del «PGP2GnuPG Howto» data del data de Diciembre de 1998. Por ello, y para poder integrar `PGP` con `GnuPG`, recomiendo el uso del método que se explica en la siguiente sección por ser más sencillo y fiable.

Suponiendo que tengamos instaladas las dos versiones de `PGP` para `Unix/Linux`, tenemos pues sus respectivos anillos de claves públicas y privadas en `$HOME/.pgp/`:

- pubring.pgp -> fichero de claves públicas de `PGP 2.6.x`
- secring.pgp -> fichero de claves privadas de `PGP 2.6.x`
- pubring.pkr -> fichero de claves públicas de `PGP 5.x`
- secring.skr -> fichero de claves privadas de `PGP 5.x`

A continuación usaríamos las órdenes que correspondan a cada versión para extraer la(s) clave(s) que deseemos.

Así, para extraer una clave de `PGP 2.6.x`:

> `

>     $ pgp -kx UID fichero anillo

> `

vg.:

> `

>     $ pgp -kx Pepe clavepepe2 ~/.pgp/pubring.pgp

> `

Esta operación nos daría el fichero clavepepe2.pgp. Para extraer nuestra clave privada, no tendríamos más que indicar nuestro UID y el fichero de las claves secretas `~/.pgp/secring.pgp`. No me consta que haya modo alguno de indicar más de un UID con `PGP 2.6.3`, si sabéis de alguno, por favor enviadme un mensaje.

Una vez extraída la clave sólo queda importarla al fichero de `GnuPG`:

> `

>     $ gpg --import clavepepe2

> `

Para extraer una clave de `PGP 5.0`:

> `

>     $ pgpk -x UID -o fichero

> `

vg.:

> `

>     $ pgpk -x Pepe -o clavepepe5

> `

En este caso, el fichero por defecto es el de las claves públicas, y obtendríamos el fichero clavepepe5 como hemos indicado.

Una vez más, sólo queda importar la clave:

> `

>     $ gpg --import clavepepe5

> `

Ya que `PGP 5.0` no nos permite indicarle el fichero sobre el que queremos operar, la extracción de la clave secreta se complica algo. La solución viene dada por un sistema superior como GnuPG:

Este procedimiento pone en riesgo la clave secreta durante un breve periodo de tiempo, así que no debería ser usado en un sistema multiusuario o público. Los pasos a seguir son:

- Extraer la clave pública correspondiente a la clave privada que queremos exportar, e importarla a `GnuPG`.
- ¡¡¡Borrar la contraseña de la clave secreta!!! (se recomienda hacer una copia de seguridad del fichero secring.skr):

> `

>     $ pgpk -e UID

> `

vg.:

> `

>     $ pgpk -e 0x614DB9FA

>     sec  1024 0x614DB9FA 1998-03-22 ---------- DSS        Sign & Encrypt

>     sub  1024 0x2B9E0571 1998-03-22 ---------- Diffie-Hellman

>     uid  Horacio <homega@vlc.servicom.es>

>     uid  Horacio <homega@correo.com>

>     1024 bits, Key ID 0x614DB9FA, created 1998-03-22

>     "Horacio <homega@vlc.servicom.es>"

>     "Horacio <homega@correo.com>"

> `

> `

>     Do you want to unset this key as axiomatic [y/N]? N

>     Do you want to unset this key as axiomatic [y/N]? N

>     Do you want to add a new user ID [y/N]? N

>     Do you want to change your pass phrase (y/N)? Y
>     Need old passphrase. Enter pass phrase: <introducir contraseña>
>     Need new passphrase. Enter pass phrase: <dejar vacío>
>     Enter it a second time. Enter pass phrase: <dejar vacío>
>     Changing master key passphrase...

>     Changing subkey passphrase...

>     Do want to set this as your default key [y/N]? N

>     Keyrings updated.

> `

- El paso siguiente será exportar la clave privada. Como ya hemos podido ver, `PGP 5.0` es incapaz de hacer esto, así que usaremos `GnuPG`:

> `

>     $ gpg --export-secret-keys --secret-key-ring ~/.pgp/secring.skr 0x614DB9FA > miclave

> `

Todo esto en una una sola línea, y se creará el fichero `miclave`.

- Ahora ya podemos importar la clave secreta a GnuPG:

> `

>     $ gpg --import < miclave

> `

Acto seguido volveremos a introducir una contraseña a la clave desde `GnuPG`.

## 5.4 Usar Anillos de Claves de PGP con GnuPG

Es posible evitar todo lo anterior, manteniendo instaladas las diferentes versiones de `PGP` al mismo tiempo que la de `GnuPG`. Siendo `GnuPG` un sistema superior y más nuevo, puede reconocer los anillos de claves de `PGP` como propios.

En el caso de `PGP 5.0`, basta con añadir el camino completo a los ficheros de claves de `PGP 5.0`, precedido por `keyring` o `secret-keyring`, al final del fichero `~/.gnupg/options` según corresponda:

> `

>     keyring ~/.pgp/pubring.pkr
>     secret-keyring ~/.pgp/secring.skr

> `

Los ficheros de claves de `PGP 2.6.3` son reconocidos por `GnuPG` por defecto. Si esto no fuera así, bastaría con repetir la misma operación anterior adaptándola a las circunstancias:

> `

>     keyring ~/.pgp/pubring.pgp
>     secret-keyring ~/.pgp/secring.pgp

> `

Si a continuación hacemos un listado de las claves públicas con `GnuPG`, observaremos que lee los tres ficheros, `~/.gnupg/pubring.gpg`, `~/.pgp/pubring.pkr`, y `~/pubring.pgp`:

> `

>     $ gpg --list-keys

>          /home/usuario/.gnupg/pubring.gpg
>          --------------------------------
>          pub 1024D/57548DCD 1998-07-07 Werner Koch (gnupg sig)
>          <dd9jn@gnu.org>
>          pub 1024D/A95AF46C 1998-11-29 Brenno J.S.A.A.F. de Winter
>          <brenno@dewinter.com>
>          sub 3072g/A3CA62A0 1998-11-29

>        (... y demás claves públicas DSA/ElGamal...)

>          /home/usuario/.pgp/pubring.pkr
>          ------------------------------
>          pub 1024D/FAEBD5FC 1997-04-07 Philip R. Zimmermann <prz@pgp.com>
>          sub 2048g/42F0A0A0 1997-04-07

>        (... etc DSS/Diffie-Helman...)

>          /home/usuario/.pgp/pubring.pgp
>          ------------------------------
>          pub 1024R/88A17FF5 1995-09-11 IRIS-CERT, Spain

>        (... etc RSA...)

> `

Lo mismo sucedería con las claves privadas:

> `

>     $ gpg --list-secret-keys

>          /home/horacio/.gnupg/secring.gpg
>          --------------------------------
>          sec 1024D/42337AE6 1999-03-14 Horacio (comentario)
>          <homega@vlc.servicom.es>
>          ssb 2048g/1F177864 1999-03-14

>          /home/horacio/.pgp/secring.skr
>          ------------------------------
>          sec 1024D/7992AB40 1998-05-04 Horacio <homega@vlc.servicom.es>
>          uid Horacio <homega@correo.com>
>          ssb 2048g/917366AE 1998-05-04

>          /home/horacio/.pgp/secring.pgp
>          ------------------------------
>          sec 1024R/32D4A925 1997-09-23 Horacio <homega@vlc.servicom.es>

> `

Next Previous Contents