Página siguiente Página anterior Índice general

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 oIDEA. 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:


force-v3-sigs


$ 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/:

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:


$ 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.


$ 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.


$ 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>


Página siguiente Página anterior Índice general