GNU Privacy Guard ( GnuPG o GPG ) es un reemplazo de software libre para el paquete de software criptográfico PGP de Symantec . El software cumple con RFC 4880, la especificación de seguimiento de estándares IETF de OpenPGP . Las versiones modernas de PGP son interoperables con GnuPG y otros sistemas compatibles con OpenPGP v4. [4]
En noviembre de 2023 se produjeron dos borradores destinados a actualizar la especificación OpenPGP v4 de 2007 (RFC4880), lo que finalmente dio 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ó una importante financiación del gobierno alemán en 1999. [6]
GnuPG es un programa de software 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, normalmente utilizando la clave pública del destinatario para cifrar una clave de sesión que se utiliza únicamente una vez. Este modo de funcionamiento forma parte del estándar OpenPGP y ha formado 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 mensajes utilizando pares de claves asimétricas generadas individualmente por los usuarios de GnuPG. Las claves públicas resultantes se pueden intercambiar con otros usuarios de diversas formas, como servidores de claves de Internet . Siempre deben intercambiarse con cuidado para evitar la suplantación de identidad corrompiendo las correspondencias de identidad de clave pública ↔ "propietario". También es posible agregar 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 confía no ha sido corrompida.
GnuPG también admite algoritmos de cifrado simétrico . Por defecto, GnuPG usa el algoritmo simétrico AES desde la versión 2.1, [7] CAST5 se usó en versiones anteriores. GnuPG no utiliza software o algoritmos patentados o restringidos de otro modo. En cambio, GnuPG utiliza una variedad de otros algoritmos no patentados. [8]
Durante mucho tiempo no admitió el algoritmo de cifrado IDEA utilizado en PGP. De hecho, era posible utilizar IDEA en GnuPG descargando un complemento; sin embargo, esto podría requerir una licencia para algunos usos en los países en los que IDEA estaba patentada. A partir de las versiones 1.4.13 y 2.0.20, GnuPG admite IDEA porque la última patente de IDEA expiró en 2012. El soporte de IDEA tiene como objetivo "deshacerse de todas las preguntas de las personas que intentan descifrar datos antiguos o migrar claves de PGP". to GnuPG", [9] y por lo tanto no se recomienda su uso regular.
Las versiones más recientes de GnuPG 2.x (la serie "moderna" y 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 la adaptación 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 diseñado y desarrollado inicialmente por Phil Zimmermann . [14] [15]
El 7 de febrero de 2014 se cerró un esfuerzo de financiación colectiva de GnuPG, que recaudó 36.732 € para un nuevo sitio web y mejoras de infraestructura. [16]
Desde el lanzamiento de un GnuPG 2.3 estable, 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 se pueden instalar diferentes versiones de GnuPG 2.x (por ejemplo, de las ramas 2.2 y 2.0) al mismo tiempo. 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 ahora obsoleta rama "estable" (2.0), lanzada inicialmente el 13 de noviembre de 2006. [20] Esta rama alcanzó su fin de vida en diciembre 31, 2017; [21] Su última versión es la 2.0.31, lanzada el 29 de diciembre de 2017. [22]
Antes del lanzamiento de GnuPG 2.0, todas las versiones estables se originaban en una única rama; es decir, antes del 13 de noviembre de 2006, no se mantenían múltiples ramas de versión en paralelo. Estas ramas de versiones anteriores, secuencialmente sucesivas (hasta 1.4), fueron:
(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 versión estable con un número de versión "+ 0.1" superior (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 estar compuesta por una rama "estable" y "LTS" de la serie "moderna", más 1.4 como la última rama "clásica" mantenida. También tenga en cuenta 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 GnuPG básico tiene una interfaz de línea de comandos , existen varias interfaces 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 interfaces gráficas GnuPG, por ejemplo Seahorse para GNOME y KGPG y Kleopatra para KDE.
GPGTools proporciona una serie de interfaces para la integración del cifrado y la administración de claves en el sistema operativo , 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 los servicios GPG (integración en el menú de servicios de macOS) para usar el cifrado basado en GnuPG.
Las aplicaciones de mensajería instantánea como Psi y Fire pueden proteger mensajes automáticamente cuando GnuPG está instalado y configurado. El software basado en web como Horde también lo utiliza. La extensión multiplataforma Enigmail proporciona soporte GnuPG para Mozilla Thunderbird y SeaMonkey . De manera similar, Enigform proporciona soporte 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 mensajes digitalmente . En 2003, debido a un error en un cambio en GnuPG destinado a hacer uno de esos métodos más eficiente, se introdujo una vulnerabilidad de seguridad. [29] Afectó 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 este tipo enumeradas en los servidores de claves. [30] La mayoría de las personas no utilizaron este método y, en cualquier caso, se les disuadió de hacerlo, por lo que el daño causado (si lo hubo, ya que ninguno se ha informado públicamente) parece haber sido mínimo. La compatibilidad con este método se eliminó de las versiones de GnuPG publicadas después de este descubrimiento (1.2.4 y posteriores).
A principios de 2006 se descubrieron dos vulnerabilidades más; el primero es que los usos programados de GnuPG para la verificación de firmas pueden dar lugar a falsos positivos , [31] el segundo es que los mensajes no MIME eran vulnerables a la inyección de datos que, si bien no estaban cubiertos por la firma digital, se informarían como parte de el 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) dentro de Libgcrypt : una biblioteca utilizada por GnuPG, que permitía una recuperación completa de la clave para RSA-1024 y aproximadamente más de 1/8 de RSA- 2048 llaves. Este ataque de canal lateral aprovecha el hecho de que Libgcrypt utilizó un método de ventanas deslizantes para la exponenciación, lo que conduce a la fuga de bits exponenciales y a la recuperación completa de la clave. [33] [34] Nuevamente, una versión actualizada de GnuPG estuvo disponible en el momento del anuncio.
En octubre de 2017, se anunció la vulnerabilidad ROCA que afecta a las claves RSA generadas por los tokens YubiKey 4, que a menudo se utilizan con PGP/GPG. Se descubrió que muchas claves PGP publicadas eran susceptibles. [35]
Alrededor de junio de 2018 se anunciaron los ataques de SigSpoof . Esto permitió a un atacante falsificar firmas digitales de manera convincente. [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 publicó una solución 10 días después en Libgcrypt 1.9.1. [38]