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.
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).
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:
$HOME/.gnupg/options
añadiendo la línea:
force-v3-sigs
$ gpg <opción> --force-v3-sigs [fichero]
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/
:
PGP 2.6.x
PGP 2.6.x
PGP 5.x
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:
GnuPG
.
$ 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.
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
.
$ gpg --import < miclave
Acto seguido volveremos a introducir una contraseña a la clave desde
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>