GNU Privacy Guard
The
GNU Privacy Guard (
GnuPG or
GPG) is a
free software replacement for the
PGP suite of
cryptographic software, released under the
GNU General Public License. It is a part of the
Free Software Foundation's
GNU software project, and has received major funding from the German Government. GnuPG is completely compliant with the
IETF standard for
OpenPGP. Current versions of PGP (and Veridis' Filecrypt) are interoperable with GnuPG and other OpenPGP-compliant systems. Although some older versions of PGP are also interoperable, not all features of newer software are supported by the older software. It is necessary for users to understand those incompatibilities and work around them.
GnuPG was initially developed by
Werner Koch. Version 1.0.0 was released on
September 7,
1999. The German Federal Ministry of Economics and Technology has funded the documentation and the port to
Microsoft Windows in 2000.
Because GnuPG is an OpenPGP standard compliant system, the history of OpenPGP is of importance. See both
PGP and
OpenPGP for more information.
Version 1.4.5 of the stable branch was released on
August 1 2006[GnuPG 1.4.5 released, Werner Koch, June 25 2006]; version 1.9.20 of the development branch (with
S/MIME support) was released on
December 20,
2005.
GnuPG is stable, production-quality software. It is frequently included in free
operating systems, such as
FreeBSD,
OpenBSD, and
NetBSD and nearly all distributions of
GNU/Linux.
Although the basic GnuPG program has a
command line interface, there exist various front-ends that provide it with a
graphical user interface; for example, it has been integrated into
KMail and
Evolution, the graphical
e-mail clients found in the most popular
Linux desktops
KDE and
GNOME. For GNOME, there is a graphical GnuPG front-end called
Seahorse. A
plugin known as
Enigmail allows GnuPG to be integrated with
Mozilla and
Thunderbird, which works on
Microsoft Windows as well as Linux and other operating systems. Web-based software such as
Horde also makes use of it. Note that, because the plugin mechanism is not part of GnuPG itself and not specified by the Open PGP standard, and because neither the GnuPG nor Open PGP developers were involved in their development, it is possible that GnuPG's security benefits could be compromised or even lost as a result of using such auxiliaries.
GnuPG can also be compiled for other platforms like
Mac OS X and
Windows. For Mac OS X, there is a free port called MacGPG which has been adapted to use the OS X user interface and its native class definitions. Cross compilation is not a trivial exercise, at least in part because security provisions vary with operating system and adapting to them is often tricky, but high quality compilers should routinely produce executables which will interoperate correctly with other GnuPG implementations.
Recently, G10 Code and Intevation have released Gpg4win, a package of software that includes GnuPG for Windows, WinPT, Gnu Privacy Assistant, and GnuPG plug-ins for Windows Explorer and Outlook. These tools are wrapped in a standard windows installer, making it merely trivial for GnuPG to be installed and used on almost any recent Windows system.
|
The form of a file encrypted using MacGPG |
GnuPG encrypts messages using asymmetric keypairs individually generated by GnuPG users. The resulting public keys can be exchanged with other users in a variety of ways, such as Internet
key servers. They must always be exchanged carefully to prevent identity spoofing by corrupting public key ↔ 'owner' identity correspondences. It is also possible to add a cryptographic digital signature to a message, so the message integrity and sender can be verified, if a particular correspondence relied upon has not been corrupted.
GnuPG does not use patented or otherwise restricted software or algorithms, including the
IDEA encryption algorithm which has been present in PGP almost from the beginning. Instead, it uses a variety of other, non-patented algorithms such as
CAST5,
Triple DES,
AES,
Blowfish and
Twofish. It is still possible to use IDEA in GnuPG by downloading a plugin for it, however this may require getting a license for some uses in some countries in which IDEA is patented.
GnuPG is a hybrid encryption software program in that it uses a combination of conventional
symmetric-key cryptography for speed, and
public-key cryptography for ease of secure key exchange, typically by using the recipient's public key to encrypt a session key which is only used once. This mode of operation is part of the Open PGP standard and has been part of PGP from its first version.
The OpenPGP standard specifies several methods of
digitally signing messages. Due to an error in a change to GnuPG intended to make one of those methods more efficient, a security vulnerability was introduced
[Phong Q. Nguyen "Can We Trust Cryptographic Software? Cryptographic Flaws in GNU Privacy Guard v1.2.3." EUROCRYPT 2004: 555–570]. It affects only one method of digitally signing messages, only for some releases of GnuPG (1.0.2 through 1.2.3), and there were less than 1000 such keys listed on the key servers
[GnuPG's ElGamal signing keys compromised, Werner Koch, November 27 2003]. Most people did not use this method, and were in any case discouraged from doing so, so the damage caused (if any, and none has been publicly reported) would appear to have been minimal. Support for this method has been removed from GnuPG versions released after this discovery (1.2.4 and later). Two further vulnerabilities were discovered in early 2006; the first being that scripted uses of GnuPG for signature verification may result in false positives
[False positive signature verification in GnuPG, Werner Koch, February 15 2006], the second that non-MIME messages were vulnerable to the injection of data which while not covered by the digital signature, would be reported as being parted of the signed message
[GnuPG does not detect injection of unsigned data, Werner Koch, March 9 2006]. In both cases updated versions of GnuPG were made available at the time of the announcement.
GnuPG is a command-line based system, that is not written as an
API which can be incorporated into other software. GPGME is an API wrapper around GnuPG which
parses the output of GnuPG, and various graphical front-ends based on GPGME have been created. This currently requires an out-of-process call to the GnuPG executable for many GPGME API calls. Because GPGME makes use of a special GnuPG interface designed for machine use, a stable and maintainable API between the components is given. Possible security problems in an application do not propagate to the actual crypto code due to the process barrier.
Other software wraps the command line in a Perl script (e.g. gpg-dialog) that is menu based and more user friendly.
*
E-mail privacy*
Pretty Good Privacy*
Asymmetric key algorithm*
Cryptosystem*
Enigmail – A
Mozilla Thunderbird extension which allows signing and encryption of e-mails.
*
GNU Privacy Guard website*
MacGPG homepage*
GnuPG for Windows homepage*
GnuPG Keysigning Party HOWTO*
GnuPG's ElGamal signing keys compromised*
Graphical tutorial for Windows, Linux and others â€" email-oriented tutorial, using
Enigmail, and
Mozilla or
Mozilla Thunderbird e-mail clients.
*
GPG and Mutt*
Short two page tutorial on en/decrypting files using public keys*
FSF page on GPGME â€"
software library designed to integrate GnuPG with other applications
*
Freshmeat project page