Ampliar GnuPG para su funcionamiento con claves PGP 2.x

La distribución normal de GnuPG no funciona con claves PGP 2.x debido a que PGP 2.x hace uso de IDEA como algoritmo de cifrado simétrico, y de RSA como algoritmo de clave pública. Estos dos algoritmos están patentados[1]y sólo pueden ser usados bajo ciertas condiciones restrictivas. La política de GNU es la de no hacer uso de algoritmos patentados, dado que éstas son una contradicción con el espíritu del "software" libre. La utilización de estos algoritmos representa una barrera para el uso libre de GnuPG.

El uso de RSA e IDEA sin una licencia sobre éstos puede ser o no legal dependiendo de varias cuestiones. RSA sólo está patentado en los Estados Unidos, por lo tanto sí que es lícito desarrollar versiones de RSA fuera de los EE.UU. El módulo de extensión de RSA para GnuPG es una de estas versiones, y en consecuencia sí que puede ser usado legalmente fuera de los Estados Unidos, aunque sería ilegal si lo usara dentro de este país. En los Estados Unidos existe una implementación de referencia para RSA, llamada RSAREF, y que se encuentra disponible por ftp en funet.fi, o en debian.org, y que puede usarse legalmente en los EE.UU. sin cargo alguno para el uso con fines no lucrativos. Debido a leyes que restringen la exportación de este código de los EE.UU., no puede ser distribuido fuera de este país, y por tanto existen dos modos de integrar RSA en GnuPG: uno para los EE.UU. y Canadá, y otro para el resto del mundo.

La situación de IDEA es más simple. IDEA está patentado en Europa y en los EE.UU., y queda pendiente una patente para Japón. El propietario de la patente, Ascom, concede una licencia con fines no lucrativos gratuita, pero la definición de fines no lucrativos es bastante estricta. Si desea utilizar IDEA para fines comerciales necesita adquirir una licencia.

Para poder usar los módulos de extensión primero hay que obtener el código fuente de éstos, idea.c y rsa.c, o rsaref.c, del directorio de cotribución de código a GnuPG. Una vez se tenga el código, éste debe ser compilado. Si se usa gcc, la compilación será como sigue:

alice% gcc -Wall -O2 -shared -fPIC -o idea idea.c  
[...]  
alice% gcc -Wall -O2 -shared -fPIC -o rsa rsa.c  
[...] # ó
alice% gcc -Wall -O2 -shared -fPIC -o rsa rsaref.c /usr/lib/rsaref.a
 

El último argumento /usr/lib/rsaref.a se debe substituir con el camino real de la biblioteca RSAREF en el sistema.

Una vez compilado, GnuPG debe recibir las instrucciones para cargarlos. Esto se puede hacer usando la opción load-extension, bien desde la línea de órdenes, o bien desde el fichero de opciones, aunque por regla general se hará desde el fichero de opciones. Por ejemplo, si se ha puesto los binarios compilados idea y rsa en el directorio ~/.gnupg, en el fichero de opciones se debe añadir

load-extension ~/.gnupg/idea  
load-extension ~/.gnupg/rsa      

Si no se especifica un camino de modo explícito, GnuPG busca los módulos de extensión en el directorio de módulos de GnuPG por definición, el cual es /usr/local/lib/gnupg. Si se ha compilado GnuPG con prefijo distinto para el directorio de instalación, usando --prefix PREFIX durante la configuración del código fuente de GnuPG, entonces el directorio de módulos será PREFIX/lib/gnupg. En tal caso, copiar los dos ficheros `rsa' e `idea' en el directorio de módulos descrito arriba. Asegúrese de que estos ficheros tienen los permisos correctos. No es necesario hacer los ficheros ejecutables, ya que estos ficheros no son programas sino módulos compartidos, y por tanto deben tener permiso de lectura para todos.

Notas

[1]

La patente de RSA finaliza en Septiembre de 2000. La patente de IDEA finaliza en el año 2011.