g10: Hyphenate --clearsign.
[gnupg.git] / doc / a-decade-of-gnupg.txt
1                A Short History of the GNU Privacy Guard
2                ========================================
3
4 It's been a decade now that the very first version of the GNU Privacy
5 Guard [0] has been released.  This very first version was not yet
6 known under the name of GnuPG but dubbed "g10" as a reference on the
7 German constitution article on freedom of telecommunication
8 (Grundgesetz Artikel 10) and as a pun on the G-10 law which allows the
9 secret services to bypass these constitutional guaranteed freedoms.
10
11 Version 0.0.0 released on December 20th 1997 [1], was a barely working
12 replacement of PGP avoiding all patented algorithm by using Elgamal
13 and Blowfish instead of RSA and IDEA.  It was prominently marked as a
14 test version but nevertheless included most of the features of the
15 current GnuPG.  The data format however was not compatible with
16 OpenPGP but oriented towards the PGP 2 format with a few extensions
17 (e.g. to allow streaming of data).  The OpenPGP working group was
18 founded back in fall 1997 and I learned a bit too late about it to
19 build "g10" according to the then existing draft.  For copyright
20 reasons it was practically not possible to reverse engineer the format
21 used by PGP-5, so the establishment of the OpenPGP WG was the right
22 thing at the right time.
23
24 Before talking about GnuPG we need to go some more years back in
25 history: To help political activists Phil Zimmermann published a
26 software called Pretty Good Privacy (PGP) in 1991.  PGP was designed
27 as an easy to use encryption tool with no backdoors and disclosed
28 source code.  PGP was indeed intended to be cryptographically strong
29 and not just pretty good; however it had a couple of initial bugs, most
30 of all a home designed cipher algorithm.  With the availability of the
31 source code a community of hackers (Branko Lankester, Colin Plumb,
32 Derek Atkins, Hal Finney, Peter Gutmann and others) helped him to fix
33 these flaws and a get a solid version 2 out.
34
35 Soon after that the trouble started.  As in many countries the use or
36 export of cryptographic devices and software was also strongly
37 restricted in the USA.  Only weak cryptography was generally allowed.
38 PGP was much stronger and due to the Usenet and the availability of
39 FTP servers and BBSs, PGP accidentally leaked out of the country and
40 soon Phil was sued for unlicensed munitions export.  Those export
41 control laws were not quite up to the age of software with the funny
42 effect that exporting the software in printed form seemed not to be
43 restricted.  MIT Press thus published a book with the PGP source code
44 which was then scanned outside the USA to form the base of PGP-2i ("i"
45 for international).  Since then that version was used widely.
46
47 The criminal investigations against Phil ended in 1996 and he founded
48 PGP Inc to write PGP-5.  The first public release was done in spring
49 1997.  The same year at the 39th IETF meeting at Munich in August Phil
50 Zimmermann and Jon Callas asked the IETF to setup a working group to
51 publish a standard for the protocol used by PGP-5 under the name
52 OpenPGP.  The main drive behind this was to allow widespread use of
53 strong encryption even if at some point the new company would decide
54 to stop selling and supporting PGP.  As it turned out PGP Inc was
55 acquired by Network Associates just a few months later and in 2002
56 this company actually ceased support and development of PGP (though
57 the PGP product was later continued by the new PGP Corporation).
58
59 Also often claimed to be Free Software, PGP has never fulfilled the
60 requirements for it: PGP-5 is straight proprietary software; the
61 availability of the source code alone does not make it free.  PGP-2 has
62 certain restrictions on commercial use [2] and thus puts restrictions
63 on the software which makes it also non-free.  Another problem with
64 PGP-2 is that it requires the use of the patented RSA and IDEA
65 algorithms.  The patent on RSA was only valid in the USA but the
66 patent on IDEA was and is still valid [3] in most countries.
67
68 Although the GNU project listed a requirement for a PGP replacement
69 for some years on its task list, it was not possible to start
70 implementing it as long as patents on all public key algorithms were
71 valid.  That changed when in April 1997 the basic patent on public key
72 algorithms expired (the Diffie-Hellman US patent 4200770) and finally
73 in August when the broader Hellman-Merkle patent (4218582) expired.
74
75 A month later, at the Individual-Network Betriebstagung at Aachen [4],
76 Richard Stallman continued his talk with a BoF session where he asked
77 the European hackers to start implementing public key software.  The
78 arms trafficker laws of the USA prohibited the GNU project to write
79 such software in their country or even by US citizens working abroad.
80 Thus he told the European hackers that they are in the unique position
81 to help the GNU with crypto software.
82
83 Being tired of writing SGML conversion software and without a current
84 fun project, I soon found myself hacking on PGP-2 parsing code based
85 on the description in RFC-1991 and the pgformat.txt file.  As this
86 turned out to be easy I continued and finally came up with code to
87 decrypt and create PGP-2 data.  After I told the GNU towers that I
88 will take up the PGP replacement implementation I spent the rest of
89 the year replacing IDEA by Blowfish, RSA by Elgamal, implementing
90 streaming encryption, adding some key management and getting the code
91 into a reasonable shape.
92
93 There used to be a plan for a free version of Secure Shell called PSST
94 (later known as LSH) with a somewhat populated mailing lists
95 maintained by Martin Hamilton.  Martin was the so kind to setup a
96 mailing list for g10 too and announced it on that list.  This way we
97 got the first subscribers.  Eventually I made the first tarball, put
98 it up to ftp.guug.de, the FTP server of the German Unix User Group,
99 and wrote an announcement [5].
100
101 Right the next day Peter Gutmann offered to allow the use of his
102 random number code for systems without a /dev/random.  This eventually
103 helped a lot to make GnuPG portable to many platforms.  The next two
104 months were filled with code updates and a lengthily discussion on the
105 name; we finally settled for Anand Kumria's suggestion of GnuPG and
106 made the first release under this name (gnupg-0.2.8) on Feb 24 [6].
107 Just a few days later an experimental version with support for Windows
108 was released.  (That release also fixed an alignment problem on Alpha
109 boxes which was detected due to kernel log files filling up the hard
110 disk and an admin asking whether they really need to be backed up. ;-)
111
112 In July 1998 the first more or less OpenPGP draft compliant version
113 was released.  Matthew Skala had contributed Twofish code done cleanly
114 from scratch (Twofish was at that time a promising AES candidate and
115 suggested by Schneier as a Blowfish replacement; however we had some
116 copyright concerns with the reference code).  Michael Roth contributed
117 a Triple-DES implementation later the year and thus completed the
118 required set of OpenPGP algorithms.  Over the next year the usual
119 problems were solved, features discussed, complaints noticed and
120 support for GPG in various other software was introduced by their
121 respective authors.
122
123 Finally, on September 7, 1999 the current code was released as version
124 1.0.0 with the major update of including Mike Ashley's GNU Privacy
125 Handbook [7].  A year later the RSA patent was to expire on September
126 20; the patent holder placed the patent into the public domain 3 weeks
127 earlier and thus we could release 1.0.3 with RSA support already on
128 September 18.  One of the major obstacles on widespread use public
129 cryptography had gone (far too late of course).
130
131 Also in 1999 the German government decided that strong encryption will
132 not be regulated in any way and that its use is recommended for
133 everyone.  To publicly support this statement the Ministry of
134 Economics funded the porting of GnuPG and related software to
135 Microsoft Windows [8].  The US government was not keen to see that and
136 tried to urge the German government to revise the decision to allow
137 unregulated distribution of crypto software [9].  That did not work
138 out and to the end the USA had no other way than to weaken their own
139 export rules.
140
141 Although we still develop GnuPG using servers located in Europe the
142 new US export controls eventually allowed US hackers to contribute to
143 GnuPG development.  In 2001 David Shaw joined the project and since
144 then he is one of the most active GnuPG hackers and the co-maintainer.
145
146 It's now a long time since GnuPG could be managed as a fun project and
147 thus I now spend most of my professional life maintaining and extending
148 GnuPG.  In 2001 I founded g10 Code, a Free Software company for the
149 development and support of GnuPG and related software.  The most known
150 project is probably GnuPG-2 which started under the name NewPG as part
151 of the broader Aegypten project.  The main goal of Aegypten was to
152 provide support for S/MIME under GNU/Linux and integrate that cleanly
153 with other mail clients, most notably KMail.  Although having been
154 actively used since 2004, we released 2.0.0 only one years ago.
155
156 It was not that much fun writing X.509/CMS (commonly named S/MIME)
157 software compared to the elegant and very interoperable OpenPGP
158 protocol.  Having mastered that we meanwhile achieved to provide a
159 software which is really useful and works nicely with almost any other
160 S/MIME implementation.  It also turned out that we could port GnuPG-2
161 to Windows - despite my original claim that a modern POSIX platform
162 will be needed for GnuPG-2.  This development also showed that it is
163 viable to develop Free Software as a business.
164
165 With the new tools and from a user's perspective S/MIME and OpenPGP
166 will soon not make much of a difference anymore.  However I had to
167 smile when I today read a report on the last RSA Europe conference
168 where a quick poll during a talk showed that OpenPGP is the mostly
169 used encryption protocol.
170
171 Recall that GnuPG is just one tool; there are numerous other tools out
172 to solve related privacy problems.  Kudos to all who worked on writing
173 and deploying privacy tools over all these years!
174
175
176 Happy Hacking,
177
178   Werner
179
180
181 [0] http://www/gnupg.org
182 [1] ftp://ftp.gnupg.org/gcrypt/historic/g10-0.0.0.tar.gz
183 [2] from pgpdoc2.txt: "Finally, if you want to turn PGP into a
184     commercial product and make money selling it, then we must agree
185     on a way for me to also make money on it. [...] Under no
186     circumstances may PGP be distributed without the PGP
187     documentation, including this PGP User's Guide."
188 [3] "valid" is meant in the sense the patent holders use it and does
189     not imply that I regard patents on software a valid concept.  See
190     http://www.fsfeurope.org/projects/swpat/background.en.html .
191 [4] http://www.dascon.de/IN-BT97/programm.html
192 [5] http://lists.gnupg.org/pipermail/gnupg-devel/1997-December/014131.html
193     There are just a few mails in December mainly discussing patent things.
194 [6] http://lists.gnupg.org/pipermail/gnupg-devel/1998-February/014208.html
195 [7] http://lists.gnupg.org/pipermail/gnupg-announce/1999q3/000037.html
196 [8] http://partners.nytimes.com/library/tech/99/11/cyber/articles/19encrypt.html
197 [9] http://www.heise.de/tp/r4/artikel/5/5124/1.html
198
199 === Remarks ===
200
201 In a reply to this mail Alan Olsen remarked on the ML:
202
203   MIT was forced to use the RSAREF library which had a non free
204   license.  At first they used the RSAREF2 library, but then they were
205   told to use the RSAREF1 library.  (I diffed the two libraries and
206   determined that the only difference was that RSAREF2 had fixed a
207   number of buffer overflows and other security flaws.  There were no
208   added features.)
209
210   If I remember correctly, 2.5 had RSAREF2 and 2.6 had RSAREF1.  One
211   of the main reasons for the creation of the "International version"
212   was the use of RSAREF.  (Besides the security issues, it was pretty
213   damn slow.  In the days of the i386 people cared about speed.)
214
215 Jaime Suarez translated the text in his blog, see
216
217   http://wordpress.mundocripto.com
218