GNU Privacy Guard ( GnuPG o GPG ) es un software libre que reemplaza al paquete de software criptográfico PGP de Symantec . El software cumple con RFC 4880, la especificación de la IETF de OpenPGP basada en estándares . Las versiones modernas de PGP son interoperables con GnuPG y otros sistemas compatibles con OpenPGP v4. [4]
En noviembre de 2023 se publicaron dos borradores cuyo objetivo era actualizar la especificación OpenPGP v4 de 2007 (RFC4880), que finalmente dieron como resultado el estándar propuesto RFC 9580 en julio de 2024. La propuesta de los desarrolladores de GnuPG se llama LibrePGP. [5]
GnuPG es parte del Proyecto GNU y recibió financiación importante del gobierno alemán en 1999. [6]
GnuPG es un programa de cifrado híbrido porque utiliza una combinación de criptografía de clave simétrica convencional para mayor velocidad y criptografía de clave pública para facilitar el intercambio seguro de claves, generalmente utilizando la clave pública del destinatario para cifrar una clave de sesión que se utiliza solo una vez. Este modo de funcionamiento es parte del estándar OpenPGP y ha sido parte de PGP desde su primera versión.
La serie GnuPG 1.x utiliza una biblioteca criptográfica integrada, mientras que la serie GnuPG 2.x la reemplaza con Libgcrypt .
GnuPG cifra los mensajes utilizando pares de claves asimétricas generados individualmente por los usuarios de GnuPG. Las claves públicas resultantes pueden intercambiarse con otros usuarios de diversas formas, como por ejemplo mediante servidores de claves de Internet . Siempre deben intercambiarse con cuidado para evitar la suplantación de identidad mediante la corrupción de las correspondencias clave pública ↔ identidad del "propietario". También es posible añadir una firma digital criptográfica a un mensaje, de modo que se pueda verificar la integridad del mensaje y el remitente, si una correspondencia particular en la que se ha confiado no ha sido corrompida.
GnuPG también admite algoritmos de cifrado simétrico . De forma predeterminada, GnuPG utiliza el algoritmo simétrico AES desde la versión 2.1, [7] CAST5 se utilizó en versiones anteriores. GnuPG no utiliza software o algoritmos patentados o restringidos de otro modo. En su lugar, GnuPG utiliza una variedad de otros algoritmos no patentados. [8]
Durante mucho tiempo, no fue compatible con el algoritmo de cifrado IDEA utilizado en PGP. De hecho, era posible utilizar IDEA en GnuPG descargando un complemento para ello; sin embargo, esto podría requerir una licencia para algunos usos en países en los que IDEA estaba patentado. A partir de las versiones 1.4.13 y 2.0.20, GnuPG es compatible con IDEA porque la última patente de IDEA expiró en 2012. El soporte de IDEA tiene como objetivo "eliminar todas las preguntas de las personas que intentan descifrar datos antiguos o migrar claves de PGP a GnuPG", [9] y, por lo tanto, no se recomienda para un uso regular.
Las versiones más recientes de GnuPG 2.x (la serie "moderna" y la ahora obsoleta "estable") exponen la mayoría de las funciones y algoritmos criptográficos que proporciona Libgcrypt (su biblioteca de criptografía), incluido el soporte para criptografía de curva elíptica (ECDH, ECDSA y EdDSA) [10] en la serie "moderna" (es decir, desde GnuPG 2.1).
A partir de las versiones 2.3 o 2.2, GnuPG admite los siguientes algoritmos:
GnuPG fue desarrollado inicialmente por Werner Koch . [11] [12] La primera versión de producción, la versión 1.0.0, fue lanzada el 7 de septiembre de 1999, casi dos años después del primer lanzamiento de GnuPG (versión 0.0.0). [13] [11] El Ministerio Federal Alemán de Economía y Tecnología financió la documentación y el puerto a Microsoft Windows en 2000. [12]
GnuPG es un sistema compatible con el estándar OpenPGP, por lo que la historia de OpenPGP es importante; fue diseñado para interoperar con PGP , un programa de cifrado de correo electrónico inicialmente diseñado y desarrollado por Phil Zimmermann . [14] [15]
El 7 de febrero de 2014, se cerró una campaña de financiación colectiva de GnuPG , recaudando 36.732 € para un nuevo sitio web y mejoras de infraestructura. [16]
Desde el lanzamiento de una versión estable de GnuPG 2.3, a partir de la versión 2.3.3 en octubre de 2021, se mantienen activamente tres ramas estables de GnuPG: [17]
Antes de GnuPG 2.3, se mantenían activamente dos ramas estables de GnuPG:
No es posible instalar al mismo tiempo distintas versiones de GnuPG 2.x (por ejemplo, de las ramas 2.2 y 2.0). Sin embargo, es posible instalar una versión "clásica" de GnuPG (es decir, de la rama 1.4) junto con cualquier versión de GnuPG 2.x. [10]
Antes del lanzamiento de GnuPG 2.2 ("moderno"), se recomendaba para uso general la rama "estable" (2.0), ahora obsoleta, publicada inicialmente el 13 de noviembre de 2006. [20] Esta rama llegó al final de su vida útil el 31 de diciembre de 2017; [21] Su última versión es 2.0.31, publicada el 29 de diciembre de 2017. [22]
Antes del lanzamiento de GnuPG 2.0, todas las versiones estables se originaban a partir de una única rama; es decir, antes del 13 de noviembre de 2006, no se mantenían varias ramas de versiones en paralelo. Estas ramas de versiones anteriores, que se sucedieron secuencialmente (hasta la versión 1.4), eran:
(Tenga en cuenta que antes del lanzamiento de GnuPG 2.3.0, las ramas con un número de versión menor impar (por ejemplo, 2.1, 1.9, 1.3) eran ramas de desarrollo que conducían a una rama de lanzamiento estable con un número de versión "+ 0.1" más alto (por ejemplo, 2.2, 2.0, 1.4); por lo tanto, las ramas 2.2 y 2.1 pertenecen a la serie "moderna", 2.0 y 1.9 a la serie "estable", mientras que las ramas 1.4 y 1.3 pertenecen a la serie "clásica".
Con el lanzamiento de GnuPG 2.3.0, esta nomenclatura se modificó para que estuviera compuesta por una rama "estable" y una "LTS" de la serie "moderna", más la 1.4 como la última rama "clásica" mantenida. Tenga en cuenta también que los números de versiones menores pares o impares ya no indican una rama de versión estable o de desarrollo.)
Aunque el programa básico GnuPG tiene una interfaz de línea de comandos , existen varios front-ends que le proporcionan una interfaz gráfica de usuario . Por ejemplo, el soporte de cifrado GnuPG se ha integrado en KMail y Evolution , los clientes de correo electrónico gráficos que se encuentran en KDE y GNOME , los escritorios Linux más populares . También hay front-ends gráficos GnuPG, por ejemplo Seahorse para GNOME y KGPG y Kleopatra para KDE.
GPGTools proporciona una serie de interfaces para la integración del sistema operativo de cifrado y administración de claves , así como instalaciones de GnuPG a través de paquetes de instalación [26] para macOS . GPG Suite [26] instala todas las aplicaciones OpenPGP relacionadas (GPG Keychain), complementos ( GPG Mail ) y dependencias (MacGPG), junto con GPG Services (integración en el menú de Servicios de macOS) para usar cifrado basado en GnuPG.
Las aplicaciones de mensajería instantánea como Psi y Fire pueden proteger automáticamente los mensajes cuando se instala y configura GnuPG. El software basado en la Web como Horde también lo utiliza. La extensión multiplataforma Enigmail proporciona compatibilidad con GnuPG para Mozilla Thunderbird y SeaMonkey . De manera similar, Enigform proporciona compatibilidad con GnuPG para Mozilla Firefox . FireGPG se suspendió el 7 de junio de 2010. [27]
En 2005, g10 Code GmbH e Intevation GmbH lanzaron Gpg4win , un paquete de software que incluye GnuPG para Windows, GNU Privacy Assistant y complementos GnuPG para Windows Explorer y Outlook . Estas herramientas están incluidas en un instalador estándar de Windows, lo que facilita la instalación y el uso de GnuPG en sistemas Windows. [28]
El estándar OpenPGP especifica varios métodos para firmar digitalmente mensajes. En 2003, debido a un error en un cambio a GnuPG que pretendía hacer más eficiente uno de esos métodos, se introdujo una vulnerabilidad de seguridad. [29] Afectaba sólo a un método de firma digital de mensajes, sólo para algunas versiones de GnuPG (1.0.2 a 1.2.3), y había menos de 1000 claves de ese tipo listadas en los servidores de claves. [30] La mayoría de la gente no utilizaba este método, y en cualquier caso se les desaconsejaba hacerlo, por lo que el daño causado (si lo hubo, ya que no se ha informado públicamente de ninguno) parece haber sido mínimo. El soporte para este método ha sido eliminado de las versiones de GnuPG publicadas después de este descubrimiento (1.2.4 y posteriores).
A principios de 2006 se descubrieron otras dos vulnerabilidades: la primera era que los usos de GnuPG con scripts para la verificación de firmas podían dar lugar a falsos positivos [31] y la segunda era que los mensajes no MIME eran vulnerables a la inyección de datos que, aunque no estuvieran cubiertos por la firma digital, se informarían como parte del mensaje firmado. [32] En ambos casos, se pusieron a disposición versiones actualizadas de GnuPG en el momento del anuncio.
En junio de 2017, Bernstein, Breitner y otros descubrieron una vulnerabilidad (CVE-2017-7526) en Libgcrypt : una biblioteca utilizada por GnuPG, que permitía una recuperación completa de claves para RSA-1024 y aproximadamente más de 1/8 de las claves RSA-2048. Este ataque de canal lateral explota el hecho de que Libgcrypt utilizaba un método de ventanas deslizantes para la exponenciación, lo que conduce a la fuga de bits de exponente y a la recuperación completa de la clave. [33] [34] Nuevamente, una versión actualizada de GnuPG estaba disponible en el momento del anuncio.
En octubre de 2017, se anunció la vulnerabilidad ROCA que afecta a las claves RSA generadas por tokens YubiKey 4, que suelen usarse con PGP/GPG. Se descubrió que muchas claves PGP publicadas eran susceptibles. [35]
Alrededor de junio de 2018, se anunciaron los ataques SigSpoof , que permitían a un atacante falsificar de forma convincente las firmas digitales. [36] [37]
En enero de 2021 se lanzó Libgcrypt 1.9.0, que contenía un error grave que era fácil de explotar. Se lanzó una solución 10 días después en Libgcrypt 1.9.1. [38]