|
|
1.1.1.4 root 1:
1.1.1.5 root 2:
1.1.1.4 root 3: Phil's Pretty Good Software
4: Presents
5:
6: =======
7: PGP(tm)
8: =======
9:
10: Pretty Good(tm) Privacy
11: Public Key Encryption for the Masses
12:
13:
14: --------------------------
1.1.1.5 root 15: PGP(tm) User's Guide
16: Volume I: Essential Topics
1.1.1.4 root 17: --------------------------
1.1.1.5 root 18: by Philip Zimmermann
1.1.1.6 ! root 19: Revised 11 October 94
1.1.1.4 root 20:
21:
1.1.1.6 ! root 22: PGP Version 2.6.2 - 11 Oct 94
1.1.1.4 root 23: Software by
24: Philip Zimmermann, and many others.
25:
26:
27:
28:
29: Synopsis: PGP(tm) uses public-key encryption to protect E-mail and
30: data files. Communicate securely with people you've never met, with
31: no secure channels needed for prior exchange of keys. PGP is well
32: featured and fast, with sophisticated key management, digital
33: signatures, data compression, and good ergonomic design.
34:
35:
36: Software and documentation (c) Copyright 1990-1994 Philip Zimmermann.
37: All rights reserved. For information on PGP licensing, distribution,
38: copyrights, patents, trademarks, liability limitations, and export
39: controls, see the "Legal Issues" section in the "PGP User's Guide,
40: Volume II: Special Topics". Distributed by the Massachusetts
41: Institute of Technology.
42:
43:
44: "Whatever you do will be insignificant, but it is very important that
45: you do it." --Mahatma Gandhi
46:
47:
48: Contents
49: ========
50:
51: Quick Overview
52: Why Do You Need PGP?
53: How it Works
54: Installing PGP
55: How to Use PGP
56: To See a Usage Summary
57: Encrypting a Message
58: Encrypting a Message to Multiple Recipients
59: Signing a Message
60: Signing and then Encrypting
61: Using Just Conventional Encryption
62: Decrypting and Checking Signatures
63: Managing Keys
64: RSA Key Generation
65: Adding a Key to Your Key Ring
66: Removing a Key or User ID from Your Key Ring
67: Extracting (copying) a Key from Your Key Ring
68: Viewing the Contents of Your Key Ring
69: How to Protect Public Keys from Tampering
70: How Does PGP Keep Track of Which Keys are Valid?
71: How to Protect Secret Keys from Disclosure
72: Revoking a Public Key
73: What If You Lose Your Secret Key?
74: Advanced Topics
75: Sending Ciphertext Through E-mail Channels: Radix-64 Format
76: Environmental Variable for Path Name
1.1.1.6 ! root 77: Setting Parameters in the PGP Configuration File
1.1.1.4 root 78: Vulnerabilities
79: Beware of Snake Oil
1.1.1.5 root 80: Notice to Macintosh Users
1.1.1.4 root 81: PGP Quick Reference
82: Legal Issues
83: Acknowledgments
84: About the Author
85:
86:
87: Quick Overview
88: ==============
89:
90: Pretty Good(tm) Privacy (PGP), from Phil's Pretty Good Software, is a
91: high security cryptographic software application for MSDOS, Unix,
92: VAX/VMS, and other computers. PGP allows people to exchange files or
93: messages with privacy, authentication, and convenience. Privacy
94: means that only those intended to receive a message can read it.
95: Authentication means that messages that appear to be from a
96: particular person can only have originated from that person.
97: Convenience means that privacy and authentication are provided
98: without the hassles of managing keys associated with conventional
99: cryptographic software. No secure channels are needed to exchange
100: keys between users, which makes PGP much easier to use. This is
101: because PGP is based on a powerful new technology called "public key"
102: cryptography.
103:
104: PGP combines the convenience of the Rivest-Shamir-Adleman (RSA)
105: public key cryptosystem with the speed of conventional cryptography,
106: message digests for digital signatures, data compression before
107: encryption, good ergonomic design, and sophisticated key management.
108: And PGP performs the public-key functions faster than most other
109: software implementations. PGP is public key cryptography for the
110: masses.
111:
112: PGP does not provide any built-in modem communications capability.
113: You must use a separate software product for that.
114:
115: This document, "Volume I: Essential Topics", only explains the
116: essential concepts for using PGP, and should be read by all PGP
117: users. "Volume II: Special Topics" covers the advanced features of
118: PGP and other special topics, and may be read by more serious PGP
119: users. Neither volume explains the underlying technology details of
120: cryptographic algorithms and data structures.
121:
122:
123: Why Do You Need PGP?
124: ====================
125:
126: It's personal. It's private. And it's no one's business but yours.
127: You may be planning a political campaign, discussing your taxes, or
128: having an illicit affair. Or you may be doing something that you
129: feel shouldn't be illegal, but is. Whatever it is, you don't want
130: your private electronic mail (E-mail) or confidential documents read
131: by anyone else. There's nothing wrong with asserting your privacy.
132: Privacy is as apple-pie as the Constitution.
133:
134: Perhaps you think your E-mail is legitimate enough that encryption is
135: unwarranted. If you really are a law-abiding citizen with nothing to
136: hide, then why don't you always send your paper mail on postcards?
137: Why not submit to drug testing on demand? Why require a warrant for
138: police searches of your house? Are you trying to hide something?
139: You must be a subversive or a drug dealer if you hide your mail
140: inside envelopes. Or maybe a paranoid nut. Do law-abiding citizens
141: have any need to encrypt their E-mail?
142:
143: What if everyone believed that law-abiding citizens should use
144: postcards for their mail? If some brave soul tried to assert his
145: privacy by using an envelope for his mail, it would draw suspicion.
146: Perhaps the authorities would open his mail to see what he's hiding.
147: Fortunately, we don't live in that kind of world, because everyone
148: protects most of their mail with envelopes. So no one draws suspicion
149: by asserting their privacy with an envelope. There's safety in
150: numbers. Analogously, it would be nice if everyone routinely used
151: encryption for all their E-mail, innocent or not, so that no one drew
152: suspicion by asserting their E-mail privacy with encryption. Think
153: of it as a form of solidarity.
154:
155: Today, if the Government wants to violate the privacy of ordinary
156: citizens, it has to expend a certain amount of expense and labor to
157: intercept and steam open and read paper mail, and listen to and
158: possibly transcribe spoken telephone conversation. This kind of
159: labor-intensive monitoring is not practical on a large scale. This
160: is only done in important cases when it seems worthwhile.
161:
162: More and more of our private communications are being routed through
163: electronic channels. Electronic mail is gradually replacing
164: conventional paper mail. E-mail messages are just too easy to
165: intercept and scan for interesting keywords. This can be done
166: easily, routinely, automatically, and undetectably on a grand scale.
167: International cablegrams are already scanned this way on a large
168: scale by the NSA.
169:
170: We are moving toward a future when the nation will be crisscrossed
171: with high capacity fiber optic data networks linking together all our
172: increasingly ubiquitous personal computers. E-mail will be the norm
173: for everyone, not the novelty it is today. The Government will
174: protect our E-mail with Government-designed encryption protocols.
175: Probably most people will acquiesce to that. But perhaps some people
176: will prefer their own protective measures.
177:
178: Senate Bill 266, a 1991 omnibus anti-crime bill, had an unsettling
179: measure buried in it. If this non-binding resolution had become real
180: law, it would have forced manufacturers of secure communications
181: equipment to insert special "trap doors" in their products, so that
182: the Government can read anyone's encrypted messages. It reads: "It
183: is the sense of Congress that providers of electronic communications
184: services and manufacturers of electronic communications service
185: equipment shall insure that communications systems permit the
186: Government to obtain the plain text contents of voice, data, and
187: other communications when appropriately authorized by law." This
188: measure was defeated after rigorous protest from civil libertarians
189: and industry groups.
190:
191: In 1992, the FBI Digital Telephony wiretap proposal was introduced to
192: Congress. It would require all manufacturers of communications
193: equipment to build in special remote wiretap ports that would enable
194: the FBI to remotely wiretap all forms of electronic communication
195: from FBI offices. Although it never attracted any sponsors in
196: Congress in 1992 because of citizen opposition, it was reintroduced in
197: 1994.
198:
199: Most alarming of all is the White House's bold new encryption policy
200: initiative, under development at NSA since the start of the Bush
201: administration, and unveiled April 16th, 1993. The centerpiece of
202: this initiative is a Government-built encryption device, called the
203: "Clipper" chip, containing a new classified NSA encryption
204: algorithm. The Government is encouraging private industry to design
205: it into all their secure communication products, like secure phones,
206: secure FAX, etc. AT&T is now putting the Clipper into their secure
207: voice products. The catch: At the time of manufacture, each Clipper
208: chip will be loaded with its own unique key, and the Government gets
209: to keep a copy, placed in escrow. Not to worry, though-- the
210: Government promises that they will use these keys to read your
211: traffic only when duly authorized by law. Of course, to make Clipper
212: completely effective, the next logical step would be to outlaw other
213: forms of cryptography.
214:
215: If privacy is outlawed, only outlaws will have privacy. Intelligence
216: agencies have access to good cryptographic technology. So do the big
217: arms and drug traffickers. So do defense contractors, oil companies,
218: and other corporate giants. But ordinary people and grassroots
219: political organizations mostly have not had access to affordable
220: "military grade" public-key cryptographic technology. Until now.
221:
222: PGP empowers people to take their privacy into their own hands.
223: There's a growing social need for it. That's why I wrote it.
224:
225:
226: How it Works
227: ============
228:
229: It would help if you were already familiar with the concept of
230: cryptography in general and public key cryptography in particular.
231: Nonetheless, here are a few introductory remarks about public key
232: cryptography.
233:
234: First, some elementary terminology. Suppose I want to send you a
235: message, but I don't want anyone but you to be able to read it. I
236: can "encrypt", or "encipher" the message, which means I scramble it
237: up in a hopelessly complicated way, rendering it unreadable to anyone
238: except you, the intended recipient of the message. I supply a
239: cryptographic "key" to encrypt the message, and you have to use the
240: same key to decipher or "decrypt" it. At least that's how it works
241: in conventional "single-key" cryptosystems.
242:
243: In conventional cryptosystems, such as the US Federal Data Encryption
244: Standard (DES), a single key is used for both encryption and
245: decryption. This means that a key must be initially transmitted via
246: secure channels so that both parties can know it before encrypted
247: messages can be sent over insecure channels. This may be
248: inconvenient. If you have a secure channel for exchanging keys, then
249: why do you need cryptography in the first place?
250:
251: In public key cryptosystems, everyone has two related complementary
1.1.1.5 root 252: keys, a publicly revealed key and a secret key (also frequently called
253: a private key). Each key unlocks the code that the other key makes.
254: Knowing the public key does not help you deduce the corresponding
255: secret key. The public key can be published and widely disseminated
256: across a communications network. This protocol provides privacy
257: without the need for the same kind of secure channels that a
258: conventional cryptosystem requires.
1.1.1.4 root 259:
260: Anyone can use a recipient's public key to encrypt a message to that
261: person, and that recipient uses her own corresponding secret key to
262: decrypt that message. No one but the recipient can decrypt it,
263: because no one else has access to that secret key. Not even the
264: person who encrypted the message can decrypt it.
265:
266: Message authentication is also provided. The sender's own secret key
267: can be used to encrypt a message, thereby "signing" it. This creates
268: a digital signature of a message, which the recipient (or anyone
269: else) can check by using the sender's public key to decrypt it. This
270: proves that the sender was the true originator of the message, and
271: that the message has not been subsequently altered by anyone else,
272: because the sender alone possesses the secret key that made that
273: signature. Forgery of a signed message is infeasible, and the sender
274: cannot later disavow his signature.
275:
276: These two processes can be combined to provide both privacy and
277: authentication by first signing a message with your own secret key,
278: then encrypting the signed message with the recipient's public key.
279: The recipient reverses these steps by first decrypting the message
280: with her own secret key, then checking the enclosed signature with
281: your public key. These steps are done automatically by the
282: recipient's software.
283:
284: Because the public key encryption algorithm is much slower than
285: conventional single-key encryption, encryption is better accomplished
286: by using a high-quality fast conventional single-key encryption
287: algorithm to encipher the message. This original unenciphered
288: message is called "plaintext". In a process invisible to the user, a
289: temporary random key, created just for this one "session", is used to
290: conventionally encipher the plaintext file. Then the recipient's
291: public key is used to encipher this temporary random conventional
292: key. This public-key-enciphered conventional "session" key is sent
293: along with the enciphered text (called "ciphertext") to the
294: recipient. The recipient uses her own secret key to recover this
295: temporary session key, and then uses that key to run the fast
296: conventional single-key algorithm to decipher the large ciphertext
297: message.
298:
299: Public keys are kept in individual "key certificates" that include
300: the key owner's user ID (which is that person's name), a timestamp of
301: when the key pair was generated, and the actual key material. Public
302: key certificates contain the public key material, while secret key
303: certificates contain the secret key material. Each secret key is
304: also encrypted with its own password, in case it gets stolen. A key
305: file, or "key ring" contains one or more of these key certificates.
306: Public key rings contain public key certificates, and secret key
307: rings contain secret key certificates.
308:
309: The keys are also internally referenced by a "key ID", which is an
310: "abbreviation" of the public key (the least significant 64 bits of
311: the large public key). When this key ID is displayed, only the lower
312: 32 bits are shown for further brevity. While many keys may share the
313: same user ID, for all practical purposes no two keys share the same
314: key ID.
315:
316: PGP uses "message digests" to form signatures. A message digest is a
317: 128-bit cryptographically strong one-way hash function of the
318: message. It is somewhat analogous to a "checksum" or CRC error
319: checking code, in that it compactly "represents" the message and is
320: used to detect changes in the message. Unlike a CRC, however, it is
321: computationally infeasible for an attacker to devise a substitute
322: message that would produce an identical message digest. The message
323: digest gets encrypted by the secret key to form a signature.
324:
325: Documents are signed by prefixing them with signature certificates,
326: which contain the key ID of the key that was used to sign it, a
327: secret-key-signed message digest of the document, and a timestamp of
328: when the signature was made. The key ID is used by the receiver to
329: look up the sender's public key to check the signature. The
330: receiver's software automatically looks up the sender's public key
331: and user ID in the receiver's public key ring.
332:
333: Encrypted files are prefixed by the key ID of the public key used to
334: encrypt them. The receiver uses this key ID message prefix to look
335: up the secret key needed to decrypt the message. The receiver's
336: software automatically looks up the necessary secret decryption key
337: in the receiver's secret key ring.
338:
339: These two types of key rings are the principal method of storing and
340: managing public and secret keys. Rather than keep individual keys in
341: separate key files, they are collected in key rings to facilitate the
342: automatic lookup of keys either by key ID or by user ID. Each user
343: keeps his own pair of key rings. An individual public key is
344: temporarily kept in a separate file long enough to send to your
345: friend who will then add it to her key ring.
346:
347:
348:
349: Installing PGP
350: ==============
351:
1.1.1.5 root 352: The MSDOS PGP release package comes in a compressed archive file with
353: a file named in this form: PGPxx.ZIP (each release version has a
354: different number for the "xx" in the filename). For example, the
355: release package for version 2.6 is called PGP26.ZIP. The archive can
356: be decompressed with the MSDOS shareware decompression utility
357: PKUNZIP, or the Unix utility "unzip". When the PGP release package
358: is decompressed, several files emerge from it. One such file, called
359: README.DOC, should always be read before installing PGP. This file
360: contains late-breaking news on what's new in this release of PGP, as
361: well as information on what's in all the other files included in the
362: release.
1.1.1.4 root 363:
364: If you already have an earlier version of PGP, you should rename it
365: or delete it, to avoid name conflicts with the new PGP.
366:
1.1.1.6 ! root 367: For full details on how to install PGP, see the separate PGP
! 368: Installation Guide, in the file SETUP.DOC included with this release
! 369: package. It fully describes how to set up the PGP directory and your
! 370: AUTOEXEC.BAT file and how to use PKUNZIP to install it. We will just
! 371: briefly summarize the installation instructions here, in case you are
! 372: too impatient to read the more detailed installation manual right now.
! 373:
! 374: To install PGP on your MSDOS system, you have to copy the compressed
! 375: archive PGPxx.ZIP file into a suitable directory on your hard disk
! 376: (like C:\PGP), and decompress it with PKUNZIP. For best results, you
! 377: should also modify your AUTOEXEC.BAT file, as described elsewhere in
! 378: this manual, but you can do that later, after you've played with PGP
! 379: a bit and read more of this manual. If you haven't run PGP before,
! 380: the first step after installation (and reading this manual) is to
! 381: make a pair of keys for yourself by running the PGP key generation
! 382: command "pgp -kg". Read the "RSA Key Generation" section of the
! 383: manual first.
1.1.1.4 root 384:
385: Installing on Unix and VAX/VMS is generally similar to installing on
386: MSDOS, but you may have to compile the source code first. A Unix
387: makefile is provided with the source release for this purpose.
388:
389:
390:
391: How to Use PGP
392: ==============
393:
394:
395: To See a Usage Summary
396: ----------------------
397:
398: To see a quick command usage summary for PGP, just type:
399:
400: pgp -h
401:
402:
403:
404: Encrypting a Message
405: --------------------
406:
407: To encrypt a plaintext file with the recipient's public key, type:
408:
409: pgp -e textfile her_userid
410:
411: This command produces a ciphertext file called textfile.pgp. A
412: specific example is:
413:
414: pgp -e letter.txt Alice
415: or:
416: pgp -e letter.txt "Alice S"
417:
418: The first example searches your public key ring file "pubring.pgp"
419: for any public key certificates that contain the string "Alice"
420: anywhere in the user ID field. The second example would find any
421: user IDs that contain "Alice S". You can't use spaces in the string
422: on the command line unless you enclose the whole string in quotes.
423: The search is not case-sensitive. If it finds a matching public key,
424: it uses it to encrypt the plaintext file "letter.txt", producing a
425: ciphertext file called "letter.pgp".
426:
427: PGP attempts to compress the plaintext before encrypting it, thereby
428: greatly enhancing resistance to cryptanalysis. Thus the ciphertext
429: file will likely be smaller than the plaintext file.
430:
431: If you want to send this encrypted message through E-mail channels,
432: convert it into printable ASCII "radix-64" format by adding the -a
433: option, as described later.
434:
435:
436:
437: Encrypting a Message to Multiple Recipients
438: -------------------------------------------
439:
440: If you want to send the same message to more than one person, you may
441: specify encryption for several recipients, any of whom may decrypt the
442: same ciphertext file. To specify multiple recipients, just add more
443: user IDs to the command line, like so:
444:
445: pgp -e letter.txt Alice Bob Carol
446:
447: This would create a ciphertext file called letter.pgp that could be
448: decrypted by Alice or Bob or Carol. Any number of recipients may be
449: specified.
450:
451:
452:
453: Signing a Message
454: -----------------
455:
456: To sign a plaintext file with your secret key, type:
457:
458: pgp -s textfile [-u your_userid]
459:
460: Note that [brackets] denote an optional field, so don't actually type
461: real brackets.
462:
463: This command produces a signed file called textfile.pgp. A specific
464: example is:
465:
466: pgp -s letter.txt -u Bob
467:
468: This searches your secret key ring file "secring.pgp" for any secret
469: key certificates that contain the string "Bob" anywhere in the user
470: ID field. Your name is Bob, isn't it? The search is not
471: case-sensitive. If it finds a matching secret key, it uses it to
472: sign the plaintext file "letter.txt", producing a signature file
473: called "letter.pgp".
474:
475: If you leave off the user ID field, the first key on your secret
476: key ring is used as the default secret key for your signature.
477:
478: PGP attempts to compress the message after signing it. Thus the
479: signed file will likely be smaller than the original file, which is
480: useful for archival applications. However, this renders the file
481: unreadable to the casual human observer, even if the original message
482: was ordinary ASCII text. It would be nice if you could make a signed
483: file that was still directly readable to a human. This would be
484: particularly useful if you want to send a signed message as E-mail.
485:
486: For signing E-mail messages, where you most likely do want the result
487: to be human-readable, it is probably most convenient to use the
488: CLEARSIG feature, explained later. This allows the signature to be
489: applied in printable form at the end of the text, and also disables
490: compression of the text. This means the text is still human-readable
491: by the recipient even if the recipient doesn't use PGP to check the
492: signature. This is explained in detail in the section entitled
493: "CLEARSIG - Enable Signed Messages to be Encapsulated as Clear Text",
494: in the Special Topics volume. If you can't wait to read that section
495: of the manual, you can see how an E-mail message signed this way
496: would look, with this example:
497:
498: pgp -sta message.txt
499:
500: This would create a signed message in file "message.asc", comprised
501: of the original text, still human-readable, appended with a printable
502: ASCII signature certificate, ready to send through an E-mail system.
503: This example assumes that you are using the normal settings for
504: enabling the CLEARSIG flag in the config file.
505:
506:
507: Signing and then Encrypting
508: ---------------------------
509:
510: To sign a plaintext file with your secret key, and then encrypt it
511: with the recipient's public key:
512:
513: pgp -es textfile her_userid [-u your_userid]
514:
515: Note that [brackets] denote an optional field, so don't actually type
516: real brackets.
517:
518: This example produces a nested ciphertext file called textfile.pgp.
519: Your secret key to create the signature is automatically looked up in
520: your secret key ring via your_userid. Her public encryption key is
521: automatically looked up in your public key ring via her_userid. If
522: you leave off her user ID field from the command line, you will be
523: prompted for it.
524:
525: If you leave off your own user ID field, the first key on your secret
526: key ring is be used as the default secret key for your signature.
527:
528: Note that PGP attempts to compress the plaintext before encrypting
529: it.
530:
531: If you want to send this encrypted message through E-mail channels,
532: convert it into printable ASCII "radix-64" format by adding the -a
533: option, as described later.
534:
535: Multiple recipients may be specified by adding more user IDs to the
536: command line.
537:
538:
539:
540: Using Just Conventional Encryption
541: ----------------------------------
542:
543: Sometimes you just need to encrypt a file the old-fashioned way, with
544: conventional single-key cryptography. This approach is useful for
545: protecting archive files that will be stored but will not be sent to
546: anyone else. Since the same person that encrypted the file will also
547: decrypt the file, public key cryptography is not really necessary.
548:
549: To encrypt a plaintext file with just conventional cryptography,
550: type:
551:
552: pgp -c textfile
553:
554: This example encrypts the plaintext file called textfile, producing a
555: ciphertext file called textfile.pgp, without using public key
556: cryptography, key rings, user IDs, or any of that stuff. It prompts
557: you for a pass phrase to use as a conventional key to encipher the
558: file. This pass phrase need not be (and, indeed, SHOULD not be) the
559: same pass phrase that you use to protect your own secret key. Note
560: that PGP attempts to compress the plaintext before encrypting it.
561:
562: PGP will not encrypt the same plaintext the same way twice, even if
563: you used the same pass phrase every time.
564:
565:
566:
567: Decrypting and Checking Signatures
568: ----------------------------------
569:
570: To decrypt an encrypted file, or to check the signature integrity of a
571: signed file:
572:
573: pgp ciphertextfile [-o plaintextfile]
574:
575: Note that [brackets] denote an optional field, so don't actually type
576: real brackets.
577:
578: The ciphertext file name is assumed to have a default extension of
579: ".pgp". The optional plaintext output file name specifies where to
580: put processed plaintext output. If no name is specified, the
581: ciphertext filename is used, with no extension. If a signature is
582: nested inside of an encrypted file, it is automatically decrypted and
583: the signature integrity is checked. The full user ID of the signer
584: is displayed.
585:
586: Note that the "unwrapping" of the ciphertext file is completely
587: automatic, regardless of whether the ciphertext file is just signed,
588: just encrypted, or both. PGP uses the key ID prefix in the
589: ciphertext file to automatically find the appropriate secret
590: decryption key on your secret key ring. If there is a nested
591: signature, PGP then uses the key ID prefix in the nested signature to
592: automatically find the appropriate public key on your public key ring
593: to check the signature. If all the right keys are already present on
594: your key rings, no user intervention is required, except that you
595: will be prompted for your password for your secret key if necessary.
596: If the ciphertext file was conventionally encrypted without public
597: key cryptography, PGP recognizes this and prompts you for the pass
598: phrase to conventionally decrypt it.
599:
600:
601: Managing Keys
602: =============
603:
604: Since the time of Julius Caesar, key management has always been the
605: hardest part of cryptography. One of the principal distinguishing
606: features of PGP is its sophisticated key management.
607:
608:
609:
610: RSA Key Generation
611: ------------------
612:
613: To generate your own unique public/secret key pair of a specified
614: size, type:
615:
616: pgp -kg
617:
618: PGP shows you a menu of recommended key sizes (low commercial grade,
619: high commercial grade, or "military" grade) and prompts you for what
620: size key you want, up to more than a thousand bits. The bigger the
621: key, the more security you get, but you pay a price in speed.
622:
623: It also asks for a user ID, which means your name. It's a good idea
624: to use your full name as your user ID, because then there is less
625: risk of other people using the wrong public key to encrypt messages
626: to you. Spaces and punctuation are allowed in the user ID. It would
627: help if you put your E-mail address in <angle brackets> after your
628: name, like so:
629:
630: Robert M. Smith <[email protected]>
631:
632: If you don't have an E-mail address, use your phone number or some
633: other unique information that would help ensure that your user ID is
634: unique.
635:
636: PGP also asks for a "pass phrase" to protect your secret key in case
637: it falls into the wrong hands. Nobody can use your secret key file
638: without this pass phrase. The pass phrase is like a password, except
639: that it can be a whole phrase or sentence with many words, spaces,
640: punctuation, or anything else you want in it. Don't lose this pass
641: phrase-- there's no way to recover it if you do lose it. This pass
642: phrase will be needed later every time you use your secret key. The
643: pass phrase is case-sensitive, and should not be too short or easy to
644: guess. It is never displayed on the screen. Don't leave it written
645: down anywhere where someone else can see it, and don't store it on
646: your computer. If you don't want a pass phrase (You fool!), just
647: press return (or enter) at the pass phrase prompt.
648:
649: The public/secret key pair is derived from large truly random numbers
650: derived mainly from measuring the intervals between your keystrokes
651: with a fast timer. The software will ask you to enter some random
652: text to help it accumulate some random bits for the keys. When
653: asked, you should provide some keystrokes that are reasonably random
654: in their timing, and it wouldn't hurt to make the actual characters
655: that you type irregular in content as well. Some of the randomness
656: is derived from the unpredictability of the content of what you
657: type. So don't just type repeated sequences of characters.
658:
659: Note that RSA key generation is a lengthy process. It may take a few
660: seconds for a small key on a fast processor, or quite a few minutes
661: for a large key on an old IBM PC/XT. PGP will visually indicate its
662: progress during key generation.
663:
664: The generated key pair will be placed on your public and secret key
665: rings. You can later use the -kx command option to extract (copy)
666: your new public key from your public key ring and place it in a
667: separate public key file suitable for distribution to your friends.
668: The public key file can be sent to your friends for inclusion in
669: their public key rings. Naturally, you keep your secret key file to
670: yourself, and you should include it on your secret key ring. Each
671: secret key on a key ring is individually protected with its own pass
672: phrase.
673:
674: Never give your secret key to anyone else. For the same reason, don't
675: make key pairs for your friends. Everyone should make their own key
676: pair. Always keep physical control of your secret key, and don't risk
677: exposing it by storing it on a remote timesharing computer. Keep it
678: on your own personal computer.
679:
680: If PGP complains about not being able to find the PGP User's Guide on
1.1.1.6 ! root 681: your computer, and refuses to generate a key pair without it, don't
! 682: panic. Just read the explanation of the NOMANUAL parameter in the
! 683: section "Setting Configuration Parameters" in the Special Topics
! 684: volume of the PGP User's Guide.
1.1.1.4 root 685:
686:
687: Adding a Key to Your Key Ring
688: -----------------------------
689:
690: Sometimes you will want to add to your keyring a key provided to you
691: by someone else, in the form of a keyfile.
692:
693: To add a public or secret key file's contents to your public or
694: secret key ring (note that [brackets] denote an optional field):
695:
696: pgp -ka keyfile [keyring]
697:
698: The keyfile extension defaults to ".pgp". The optional keyring file
699: name defaults to "pubring.pgp" or "secring.pgp", depending on whether
700: the keyfile contains a public or a secret key. You may specify a
701: different key ring file name, with the extension defaulting to
702: ".pgp".
703:
704: If the key is already on your key ring, PGP will not add it again.
705: All of the keys in the keyfile are added to the keyring, except for
706: duplicates.
707:
708: Later in the manual, we will explain the concept of certifying keys
709: with signatures. If the key being added has attached signatures
710: certifying it, the signatures are added with the key. If the key is
711: already on your key ring, PGP just merges in any new certifying
712: signatures for that key that you don't already have on your key ring.
713:
714: PGP was originally designed for handling small personal keyrings. If
715: you want to handle really big keyrings, see the section on "Handling
716: Large Public Keyrings" in the Special Topics volume.
717:
718:
719:
720: Removing a Key or User ID from Your Key Ring
721: --------------------------------------------
722:
723: To remove a key or a user ID from your public key ring:
724:
725: pgp -kr userid [keyring]
726:
727: This searches for the specified user ID in your key ring, and removes
728: it if it finds a match. Remember that any fragment of the user ID
729: will suffice for a match. The optional keyring file name is assumed
730: to be literally "pubring.pgp". It can be omitted, or you can specify
731: "secring.pgp" if you want to remove a secret key. You may specify a
732: different key ring file name. The default key ring extension is
733: ".pgp".
734:
735: If more than one user ID exists for this key, you will be asked if
736: you want to remove only the user ID you specified, while leaving the
737: key and its other user IDs intact.
738:
739:
740:
741: Extracting (copying) a Key from Your Key Ring
742: ---------------------------------------------
743:
744: To extract (copy) a key from your public or secret key ring:
745:
746: pgp -kx userid keyfile [keyring]
747:
748: This non-destructively copies the key specified by the user ID from
749: your public or secret key ring to the specified key file. This is
750: particularly useful if you want to give a copy of your public key to
751: someone else.
752:
753: If the key has any certifying signatures attached to it on your key
754: ring, they are copied off along with the key.
755:
756: If you want the extracted key represented in printable ASCII
757: characters suitable for email purposes, use the -kxa options.
758:
759:
760:
761: Viewing the Contents of Your Key Ring
762: -------------------------------------
763:
764: To view the contents of your public key ring:
765:
766: pgp -kv[v] [userid] [keyring]
767:
768: This lists any keys in the key ring that match the specified user ID
769: substring. If you omit the user ID, all of the keys in the key ring
770: are listed. The optional keyring file name is assumed to be
771: "pubring.pgp". It can be omitted, or you can specify "secring.pgp"
772: if you want to list secret keys. If you want to specify a different
773: key ring file name, you can. The default key ring extension is
774: ".pgp".
775:
776: Later in the manual, we will explain the concept of certifying keys
777: with signatures. To see all the certifying signatures attached to
778: each key, use the -kvv option:
779:
780: pgp -kvv [userid] [keyring]
781:
782: If you want to specify a particular key ring file name, but want to
783: see all the keys in it, try this alternative approach:
784:
785: pgp keyfile
786:
787: With no command options specified, PGP lists all the keys in
788: keyfile.pgp, and also attempts to add them to your key ring if they
789: are not already on your key ring.
790:
791:
792:
793: How to Protect Public Keys from Tampering
794: -----------------------------------------
795:
796: In a public key cryptosystem, you don't have to protect public keys
797: from exposure. In fact, it's better if they are widely disseminated.
798: But it is important to protect public keys from tampering, to make
799: sure that a public key really belongs to whom it appears to belong to.
800: This may be the most important vulnerability of a public-key
801: cryptosystem. Let's first look at a potential disaster, then at how
802: to safely avoid it with PGP.
803:
804: Suppose you wanted to send a private message to Alice. You download
805: Alice's public key certificate from an electronic bulletin board
806: system (BBS). You encrypt your letter to Alice with this public key
807: and send it to her through the BBS's E-mail facility.
808:
809: Unfortunately, unbeknownst to you or Alice, another user named
810: Charlie has infiltrated the BBS and generated a public key of his own
811: with Alice's user ID attached to it. He covertly substitutes his
812: bogus key in place of Alice's real public key. You unwittingly use
813: this bogus key belonging to Charlie instead of Alice's public key.
814: All looks normal because this bogus key has Alice's user ID. Now
815: Charlie can decipher the message intended for Alice because he has
816: the matching secret key. He may even re-encrypt the deciphered
817: message with Alice's real public key and send it on to her so that no
818: one suspects any wrongdoing. Furthermore, he can even make
819: apparently good signatures from Alice with this secret key because
820: everyone will use the bogus public key to check Alice's signatures.
821:
822: The only way to prevent this disaster is to prevent anyone from
823: tampering with public keys. If you got Alice's public key directly
824: from Alice, this is no problem. But that may be difficult if Alice
825: is a thousand miles away, or is currently unreachable.
826:
827: Perhaps you could get Alice's public key from a mutual trusted friend
828: David who knows he has a good copy of Alice's public key. David
829: could sign Alice's public key, vouching for the integrity of Alice's
830: public key. David would create this signature with his own secret
831: key.
832:
833: This would create a signed public key certificate, and would show
834: that Alice's key had not been tampered with. This requires you have a
835: known good copy of David's public key to check his signature. Perhaps
836: David could provide Alice with a signed copy of your public key also.
837: David is thus serving as an "introducer" between you and Alice.
838:
839: This signed public key certificate for Alice could be uploaded by
840: David or Alice to the BBS, and you could download it later. You
841: could then check the signature via David's public key and thus be
842: assured that this is really Alice's public key. No impostor can fool
843: you into accepting his own bogus key as Alice's because no one else
844: can forge signatures made by David.
845:
846: A widely trusted person could even specialize in providing this
847: service of "introducing" users to each other by providing signatures
848: for their public key certificates. This trusted person could be
849: regarded as a "key server", or as a "Certifying Authority". Any
850: public key certificates bearing the key server's signature could be
851: trusted as truly belonging to whom they appear to belong to. All
852: users who wanted to participate would need a known good copy of just
853: the key server's public key, so that the key server's signatures
854: could be verified.
855:
856: A trusted centralized key server or Certifying Authority is
857: especially appropriate for large impersonal centrally-controlled
858: corporate or government institutions. Some institutional
859: environments use hierarchies of Certifying Authorities.
860:
861: For more decentralized grassroots "guerrilla style" environments,
862: allowing all users to act as a trusted introducers for their friends
863: would probably work better than a centralized key server. PGP tends
864: to emphasize this organic decentralized non-institutional approach.
865: It better reflects the natural way humans interact on a personal
866: social level, and allows people to better choose who they can trust
867: for key management.
868:
869: This whole business of protecting public keys from tampering is the
870: single most difficult problem in practical public key applications.
871: It is the Achilles' heel of public key cryptography, and a lot of
872: software complexity is tied up in solving this one problem.
873:
874: You should use a public key only after you are sure that it is a good
875: public key that has not been tampered with, and actually belongs to
876: the person it claims to. You can be sure of this if you got this
877: public key certificate directly from its owner, or if it bears the
878: signature of someone else that you trust, from whom you already have
879: a good public key. Also, the user ID should have the full name of
880: the key's owner, not just her first name.
881:
882: No matter how tempted you are-- and you will be tempted-- never,
883: NEVER give in to expediency and trust a public key you downloaded
884: from a bulletin board, unless it is signed by someone you trust.
885: That uncertified public key could have been tampered with by anyone,
886: maybe even by the system administrator of the bulletin board.
887:
888: If you are asked to sign someone else's public key certificate, make
889: certain that it really belongs to that person named in the user ID of
890: that public key certificate. This is because your signature on her
891: public key certificate is a promise by you that this public key
892: really belongs to her. Other people who trust you will accept her
893: public key because it bears your signature. It may be ill-advised to
894: rely on hearsay-- don't sign her public key unless you have
895: independent firsthand knowledge that it really belongs to her.
896: Preferably, you should sign it only if you got it directly from her.
897:
898: In order to sign a public key, you must be far more certain of that
899: key's ownership than if you merely want to use that key to encrypt a
900: message. To be convinced of a key's validity enough to use it,
901: certifying signatures from trusted introducers should suffice. But
902: to sign a key yourself, you should require your own independent
903: firsthand knowledge of who owns that key. Perhaps you could call the
904: key's owner on the phone and read the key file to her to get her to
905: confirm that the key you have really is her key-- and make sure you
906: really are talking to the right person. See the section called
907: "Verifying a Public Key Over the Phone" in the Special Topics volume
908: for further details.
909:
910: Bear in mind that your signature on a public key certificate does not
911: vouch for the integrity of that person, but only vouches for the
912: integrity (the ownership) of that person's public key. You aren't
913: risking your credibility by signing the public key of a sociopath, if
914: you were completely confident that the key really belonged to him.
915: Other people would accept that key as belonging to him because you
916: signed it (assuming they trust you), but they wouldn't trust that
917: key's owner. Trusting a key is not the same as trusting the key's
918: owner.
919:
920: Trust is not necessarily transferable; I have a friend who I trust
921: not to lie. He's a gullible person who trusts the President not to
922: lie. That doesn't mean I trust the President not to lie. This is
923: just common sense. If I trust Alice's signature on a key, and Alice
924: trusts Charlie's signature on a key, that does not imply that I have
925: to trust Charlie's signature on a key.
926:
927: It would be a good idea to keep your own public key on hand with a
928: collection of certifying signatures attached from a variety of
929: "introducers", in the hopes that most people will trust at least one
930: of the introducers who vouch for your own public key's validity.
931: You could post your key with its attached collection of certifying
932: signatures on various electronic bulletin boards. If you sign
933: someone else's public key, return it to them with your signature so
934: that they can add it to their own collection of credentials for their
935: own public key.
936:
937: PGP keeps track of which keys on your public key ring are properly
938: certified with signatures from introducers that you trust. All you
939: have to do is tell PGP which people you trust as introducers, and
940: certify their keys yourself with your own ultimately trusted key.
941: PGP can take it from there, automatically validating any other keys
942: that have been signed by your designated introducers. And of course
943: you may directly sign more keys yourself. More on this later.
944:
945: Make sure no one else can tamper with your own public key ring.
946: Checking a new signed public key certificate must ultimately depend
947: on the integrity of the trusted public keys that are already on your
948: own public key ring. Maintain physical control of your public key
949: ring, preferably on your own personal computer rather than on a
950: remote timesharing system, just as you would do for your secret key.
951: This is to protect it from tampering, not from disclosure. Keep a
952: trusted backup copy of your public key ring and your secret key ring
953: on write-protected media.
954:
955: Since your own trusted public key is used as a final authority to
956: directly or indirectly certify all the other keys on your key ring,
957: it is the most important key to protect from tampering. To detect
958: any tampering of your own ultimately-trusted public key, PGP can be
959: set up to automatically compare your public key against a backup copy
960: on write-protected media. For details, see the description of the
961: "-kc" key ring check command in the Special Topics volume.
962:
963: PGP generally assumes you will maintain physical security over your
964: system and your key rings, as well as your copy of PGP itself. If an
965: intruder can tamper with your disk, then in theory he can tamper with
966: PGP itself, rendering moot the safeguards PGP may have to detect
967: tampering with keys.
968:
969: One somewhat complicated way to protect your own whole public key ring
970: from tampering is to sign the whole ring with your own secret key.
971: You could do this by making a detached signature certificate of the
972: public key ring, by signing the ring with the "-sb" options (see the
973: section called "Separating Signatures from Messages" in the PGP
974: User's Guide, Special Topics volume). Unfortunately, you would still
975: have to keep a separate trusted copy of your own public key around to
976: check the signature you made. You couldn't rely on your own public
977: key stored on your public key ring to check the signature you made
978: for the whole ring, because that is part of what you're trying to
979: check.
980:
981:
982:
983: How Does PGP Keep Track of Which Keys are Valid?
984: ------------------------------------------------
985:
986: Before you read this section, be sure to read the above section on
987: "How to Protect Public Keys from Tampering".
988:
989: PGP keeps track of which keys on your public key ring are properly
990: certified with signatures from introducers that you trust. All you
991: have to do is tell PGP which people you trust as introducers, and
992: certify their keys yourself with your own ultimately trusted key.
993: PGP can take it from there, automatically validating any other keys
994: that have been signed by your designated introducers. And of course
995: you may directly sign more keys yourself.
996:
997: There are two entirely separate criteria PGP uses to judge a public
998: key's usefulness-- don't get them confused:
999:
1000: 1) Does the key actually belong to whom it appears to belong?
1001: In other words, has it been certified with a trusted signature?
1002: 2) Does it belong to someone you can trust to certify other keys?
1003:
1004: PGP can calculate the answer to the first question. To answer the
1005: second question, PGP must be explicitly told by you, the user. When
1006: you supply the answer to question 2, PGP can then calculate the
1007: answer to question 1 for other keys signed by the introducer you
1008: designated as trusted.
1009:
1010: Keys that have been certified by a trusted introducer are deemed
1011: valid by PGP. The keys belonging to trusted introducers must
1012: themselves be certified either by you or by other trusted
1013: introducers.
1014:
1015: PGP also allows for the possibility of you having several shades of
1016: trust for people to act as introducers. Your trust for a key's owner
1017: to act as an introducer does not just reflect your estimation of
1018: their personal integrity-- it should also reflect how competent you
1019: think they are at understanding key management and using good
1020: judgment in signing keys. You can designate a person to PGP as
1021: unknown, untrusted, marginally trusted, or completely trusted to
1022: certify other public keys. This trust information is stored on your
1023: key ring with their key, but when you tell PGP to copy a key off your
1024: key ring, PGP will not copy the trust information along with the key,
1025: because your private opinions on trust are regarded as confidential.
1026:
1027: When PGP is calculating the validity of a public key, it examines the
1028: trust level of all the attached certifying signatures. It computes a
1029: weighted score of validity-- two marginally trusted signatures are
1030: deemed as credible as one fully trusted signature. PGP's skepticism
1031: is adjustable-- for example, you may tune PGP to require two fully
1032: trusted signatures or three marginally trusted signatures to judge a
1033: key as valid.
1034:
1035: Your own key is "axiomatically" valid to PGP, needing no introducer's
1036: signature to prove its validity. PGP knows which public keys are
1037: yours, by looking for the corresponding secret keys on the secret
1038: key ring. PGP also assumes you ultimately trust yourself to certify
1039: other keys.
1040:
1041: As time goes on, you will accumulate keys from other people that you
1042: may want to designate as trusted introducers. Everyone else will
1043: each choose their own trusted introducers. And everyone will
1044: gradually accumulate and distribute with their key a collection of
1045: certifying signatures from other people, with the expectation that
1046: anyone receiving it will trust at least one or two of the signatures.
1047: This will cause the emergence of a decentralized fault-tolerant web
1048: of confidence for all public keys.
1049:
1050: This unique grass-roots approach contrasts sharply with Government
1051: standard public key management schemes, such as Internet Privacy
1052: Enhanced Mail (PEM), which are based on centralized control and
1053: mandatory centralized trust. The standard schemes rely on a
1054: hierarchy of Certifying Authorities who dictate who you must trust.
1055: PGP's decentralized probabilistic method for determining public key
1056: legitimacy is the centerpiece of its key management architecture.
1057: PGP lets you alone choose who you trust, putting you at the top of
1058: your own private certification pyramid. PGP is for people who prefer
1059: to pack their own parachutes.
1060:
1061:
1062:
1063: How to Protect Secret Keys from Disclosure
1064: ------------------------------------------
1065:
1066: Protect your own secret key and your pass phrase carefully. Really,
1067: really carefully. If your secret key is ever compromised, you'd
1068: better get the word out quickly to all interested parties (good luck)
1069: before someone else uses it to make signatures in your name. For
1070: example, they could use it to sign bogus public key certificates,
1071: which could create problems for many people, especially if your
1072: signature is widely trusted. And of course, a compromise of your own
1073: secret key could expose all messages sent to you.
1074:
1075: To protect your secret key, you can start by always keeping physical
1076: control of your secret key. Keeping it on your personal computer at
1077: home is OK, or keep it in your notebook computer that you can carry
1078: with you. If you must use an office computer that you don't always
1079: have physical control of, then keep your public and secret key rings
1080: on a write-protected removable floppy disk, and don't leave it behind
1081: when you leave the office. It wouldn't be a good idea to allow your
1082: secret key to reside on a remote timesharing computer, such as a
1083: remote dial-in Unix system. Someone could eavesdrop on your modem
1084: line and capture your pass phrase, and then obtain your actual secret
1085: key from the remote system. You should only use your secret key on a
1086: machine that you have physical control over.
1087:
1088: Don't store your pass phrase anywhere on the computer that has your
1089: secret key file. Storing both the secret key and the pass phrase on
1090: the same computer is as dangerous as keeping your PIN in the same
1091: wallet as your Automatic Teller Machine bank card. You don't want
1092: somebody to get their hands on your disk containing both the pass
1093: phrase and the secret key file. It would be most secure if you just
1094: memorize your pass phrase and don't store it anywhere but your brain.
1095: If you feel you must write down your pass phrase, keep it well
1096: protected, perhaps even more well protected than the secret key file.
1097:
1098: And keep backup copies of your secret key ring-- remember, you have
1099: the only copy of your secret key, and losing it will render useless
1100: all the copies of your public key that you have spread throughout the
1101: world.
1102:
1103: The decentralized non-institutional approach PGP uses to manage
1104: public keys has its benefits, but unfortunately this also means we
1105: can't rely on a single centralized list of which keys have been
1106: compromised. This makes it a bit harder to contain the damage of a
1107: secret key compromise. You just have to spread the word and hope
1108: everyone hears about it.
1109:
1110: If the worst case happens-- your secret key and pass phrase are both
1111: compromised (hopefully you will find this out somehow)-- you will
1112: have to issue a "key compromise" certificate. This kind of
1113: certificate is used to warn other people to stop using your public
1114: key. You can use PGP to create such a certificate by using the "-kd"
1115: command. Then you must somehow send this compromise certificate to
1116: everyone else on the planet, or at least to all your friends and
1117: their friends, et cetera. Their own PGP software will install this
1118: key compromise certificate on their public key rings and will
1119: automatically prevent them from accidentally using your public key
1120: ever again. You can then generate a new secret/public key pair and
1121: publish the new public key. You could send out one package containing
1122: both your new public key and the key compromise certificate for your
1123: old key.
1124:
1125:
1126:
1127: Revoking a Public Key
1128: ---------------------
1129:
1130: Suppose your secret key and your pass phrase are somehow both
1131: compromised. You have to get the word out to the rest of the world,
1132: so that they will all stop using your public key. To do this, you
1133: will have to issue a "key compromise", or "key revocation" certificate
1134: to revoke your public key.
1135:
1136: To generate a certificate to revoke your own key, use the -kd
1137: command:
1138:
1139: pgp -kd your_userid
1140:
1141: This certificate bears your signature, made with the same key you are
1142: revoking. You should widely disseminate this key revocation
1143: certificate as soon as possible. Other people who receive it can add
1144: it to their public key rings, and their PGP software then
1145: automatically prevents them from accidentally using your old public
1146: key ever again. You can then generate a new secret/public key pair
1147: and publish the new public key.
1148:
1149: You may choose to revoke your key for some other reason than the
1150: compromise of a secret key. If so, you may still use the same
1151: mechanism to revoke it.
1152:
1153:
1154:
1155: What If You Lose Your Secret Key?
1156: ---------------------------------
1157:
1158: Normally, if you want to revoke your own secret key, you can use the
1159: "-kd" command to issue a revocation certificate, signed with your own
1160: secret key (see "Revoking a Public Key").
1161:
1162: But what can you do if you lose your secret key, or if your secret
1163: key is destroyed? You can't revoke it yourself, because you must use
1164: your own secret key to revoke it, and you don't have it anymore. A
1165: future version of PGP will offer a more secure means of revoking keys
1166: in these circumstances, allowing trusted introducers to certify that
1167: a public key has been revoked. But for now, you will have to get the
1168: word out through whatever informal means you can, asking users to
1169: "disable" your public key on their own individual public key rings.
1170:
1171: Other users may disable your public key on their own public key rings
1172: by using the "-kd" command. If a user ID is specified that does not
1173: correspond to a secret key on the secret key ring, the -kd command
1174: will look for that user ID on the public key ring, and mark that
1175: public key as disabled. A disabled key may not be used to encrypt
1176: any messages, and may not be extracted from the key ring with the -kx
1177: command. It can still be used to check signatures, but a warning is
1178: displayed. And if the user tries to add the same key again to his
1179: key ring, it will not work because the disabled key is already on the
1180: key ring. These combined features will help curtail the further
1181: spread of a disabled key.
1182:
1183: If the specified public key is already disabled, the -kd command will
1184: ask if you want the key reenabled.
1185:
1186:
1187: Advanced Topics
1188: ===============
1189:
1190: Most of the "Advanced Topics" are covered in the "PGP User's Guide,
1191: Volume II: Special Topics". But here are a few topics that bear
1192: mentioning here.
1193:
1194:
1195: Sending Ciphertext Through E-mail Channels: Radix-64 Format
1196: -----------------------------------------------------------
1197:
1198: Many electronic mail systems only allow messages made of ASCII text,
1199: not the 8-bit raw binary data that ciphertext is made of. To get
1200: around this problem, PGP supports ASCII radix-64 format for
1201: ciphertext messages, similar to the Internet Privacy-Enhanced Mail
1202: (PEM) format, as well as the Internet MIME format. This special
1203: format represents binary data by using only printable ASCII
1204: characters, so it is useful for transmitting binary encrypted data
1205: through 7-bit channels or for sending binary encrypted data as normal
1206: E-mail text. This format acts as a form of "transport armor",
1207: protecting it against corruption as it travels through intersystem
1208: gateways on Internet. PGP also appends a CRC to detect transmission
1209: errors.
1210:
1211: Radix-64 format converts the plaintext by expanding groups of 3
1212: binary 8-bit bytes into 4 printable ASCII characters, so the file
1213: grows by about 33%. But this expansion isn't so bad when you
1214: consider that the file probably was compressed more than that by PGP
1215: before it was encrypted.
1216:
1217: To produce a ciphertext file in ASCII radix-64 format, just add the
1218: "a" option when encrypting or signing a message, like so:
1219:
1220: pgp -esa message.txt her_userid
1221:
1222: This example produces a ciphertext file called "message.asc" that
1.1.1.6 ! root 1223: contains data in a MIME-like ASCII radix-64 format. This file can be
1.1.1.4 root 1224: easily uploaded into a text editor through 7-bit channels for
1225: transmission as normal E-mail on Internet or any other E-mail
1226: network.
1227:
1228: Decrypting the radix-64 transport-armored message is no different than
1229: a normal decrypt. For example:
1230:
1231: pgp message
1232:
1233: PGP automatically looks for the ASCII file "message.asc" before it
1234: looks for the binary file "message.pgp". It recognizes that the file
1235: is in radix-64 format and converts it back to binary before
1236: processing as it normally does, producing as a by-product a ".pgp"
1237: ciphertext file in binary form. The final output file is in normal
1238: plaintext form, just as it was in the original file "message.txt".
1239:
1240: Most Internet E-mail facilities prohibit sending messages that are
1.1.1.6 ! root 1241: more than 50000 or 65000 bytes long. Longer messages must be broken
! 1242: into smaller chunks that can be mailed separately. If your encrypted
1.1.1.4 root 1243: message is very large, and you requested radix-64 format, PGP
1244: automatically breaks it up into chunks that are each small enough to
1245: send via E-mail. The chunks are put into files named with extensions
1246: ".as1", ".as2", ".as3", etc. The recipient must concatenate these
1247: separate files back together in their proper order into one big file
1248: before decrypting it. While decrypting, PGP ignores any extraneous
1249: text in mail headers that are not enclosed in the radix-64 message
1250: blocks.
1251:
1252: If you want to send a public key to someone else in radix-64 format,
1253: just add the -a option while extracting the key from your keyring.
1254:
1255: If you forgot to use the -a option when you made a ciphertext file or
1256: extracted a key, you may still directly convert the binary file into
1257: radix-64 format by simply using the -a option alone, without any
1258: encryption specified. PGP converts it to a ".asc" file.
1259:
1260: If you sign a plaintext file without encrypting it, PGP will normally
1261: compress it after signing it, rendering it unreadable to the casual
1262: human observer. This is a suitable way of storing signed files in
1263: archival applications. But if you want to send the signed message as
1264: E-mail, and the the original plaintext message is in text (not
1265: binary) form, there is a way to send it through an E-mail channel in
1266: such a way that the plaintext does not get compressed, and the ASCII
1267: armor is applied only to the binary signature certificate, but not to
1268: the plaintext message. This makes it possible for the recipient to
1269: read the signed message with human eyes, without the aid of PGP. Of
1270: course, PGP is still needed to actually check the signature. For
1271: further information on this feature, see the explanation of the
1.1.1.6 ! root 1272: CLEARSIG parameter in the section "Setting Configuration Parameters"
! 1273: in the Special Topics volume.
! 1274:
! 1275: Sometimes you may want to send a binary data file through an E-mail
! 1276: channel without encrypting or signing it with PGP. Some people use
! 1277: the Unix uuencode utility for that purpose. PGP can also be used for
! 1278: that purpose, by simply using the -a option alone, and it does a
! 1279: better job than the uuencode utility. For further details, see the
! 1280: section on "Using PGP as a Better Uuencode" in the Special Topics
! 1281: volume.
1.1.1.4 root 1282:
1283:
1284: Environmental Variable for Path Name
1285: ------------------------------------
1286:
1287: PGP uses several special files for its purposes, such as your
1288: standard key ring files "pubring.pgp" and "secring.pgp", the random
1289: number seed file "randseed.bin", the PGP configuration file
1.1.1.6 ! root 1290: "config.txt" (or "pgp.ini", or ".pgprc"), and the foreign language
! 1291: string translation file "language.txt". These special files can be
! 1292: kept in any directory, by setting the environmental variable
! 1293: "PGPPATH" to the desired pathname. For example, on MSDOS, the shell
! 1294: command:
1.1.1.4 root 1295:
1296: SET PGPPATH=C:\PGP
1297:
1298: makes PGP assume that your public key ring filename is
1299: "C:\PGP\pubring.pgp". Assuming, of course, that this directory
1300: exists. Use your favorite text editor to modify your MSDOS
1301: AUTOEXEC.BAT file to automatically set up this variable whenever you
1302: start up your system. If PGPPATH remains undefined, these special
1303: files are assumed to be in the current directory.
1304:
1305:
1306:
1.1.1.6 ! root 1307: Setting Parameters in the PGP Configuration File
! 1308: ------------------------------------------------
1.1.1.4 root 1309:
1310: PGP has a number of user-settable parameters that can be defined in a
1.1.1.6 ! root 1311: special PGP configuration text file called "config.txt", in the
! 1312: directory pointed to by the shell environmental variable PGPPATH.
! 1313: Having a configuration file enables the user to define various flags
! 1314: and parameters for PGP without the burden of having to always define
1.1.1.4 root 1315: these parameters in the PGP command line.
1316:
1.1.1.6 ! root 1317: In the interest of complying with local operating system file naming
! 1318: conventions, for Unix systems this configuration file may also be
! 1319: named ".pgprc", and on MSDOS systems it may also be named "pgp.ini".
! 1320:
1.1.1.4 root 1321: With these configuration parameters, for example, you can control
1322: where PGP stores its temporary scratch files, or you can select what
1323: foreign language PGP will use to display its diagnostics messages and
1324: user prompts, or you can adjust PGP's level of skepticism in
1325: determining a key's validity based on the number of certifying
1326: signatures it has.
1327:
1328: For more details on setting these configuration parameters, see the
1329: appropriate section of the PGP User's Guide, Special Topics volume.
1330:
1331:
1332:
1333: Vulnerabilities
1334: ---------------
1335:
1336: No data security system is impenetrable. PGP can be circumvented in
1337: a variety of ways. Potential vulnerabilities you should be aware of
1338: include compromising your pass phrase or secret key, public key
1339: tampering, files that you deleted but are still somewhere on the
1340: disk, viruses and Trojan horses, breaches in your physical security,
1341: electromagnetic emissions, exposure on multi-user systems, traffic
1342: analysis, and perhaps even direct cryptanalysis.
1343:
1344: For a detailed discussion of these issues, see the "Vulnerabilities"
1345: section in the PGP User's Guide, Special Topics volume.
1346:
1347:
1348: Beware of Snake Oil
1349: ===================
1350:
1351: When examining a cryptographic software package, the question always
1352: remains, why should you trust this product? Even if you examined the
1353: source code yourself, not everyone has the cryptographic experience
1354: to judge the security. Even if you are an experienced cryptographer,
1355: subtle weaknesses in the algorithms could still elude you.
1356:
1357: When I was in college in the early seventies, I devised what I
1358: believed was a brilliant encryption scheme. A simple pseudorandom
1359: number stream was added to the plaintext stream to create
1360: ciphertext. This would seemingly thwart any frequency analysis of
1361: the ciphertext, and would be uncrackable even to the most resourceful
1362: Government intelligence agencies. I felt so smug about my
1363: achievement. So cock-sure.
1364:
1365: Years later, I discovered this same scheme in several introductory
1366: cryptography texts and tutorial papers. How nice. Other
1367: cryptographers had thought of the same scheme. Unfortunately, the
1368: scheme was presented as a simple homework assignment on how to use
1369: elementary cryptanalytic techniques to trivially crack it. So much
1370: for my brilliant scheme.
1371:
1372: From this humbling experience I learned how easy it is to fall into a
1373: false sense of security when devising an encryption algorithm. Most
1374: people don't realize how fiendishly difficult it is to devise an
1375: encryption algorithm that can withstand a prolonged and determined
1376: attack by a resourceful opponent. Many mainstream software engineers
1377: have developed equally naive encryption schemes (often even the very
1378: same encryption scheme), and some of them have been incorporated into
1379: commercial encryption software packages and sold for good money to
1380: thousands of unsuspecting users.
1381:
1382: This is like selling automotive seat belts that look good and feel
1383: good, but snap open in even the slowest crash test. Depending on
1384: them may be worse than not wearing seat belts at all. No one
1385: suspects they are bad until a real crash. Depending on weak
1386: cryptographic software may cause you to unknowingly place sensitive
1387: information at risk. You might not otherwise have done so if you had
1388: no cryptographic software at all. Perhaps you may never even
1389: discover your data has been compromised.
1390:
1391: Sometimes commercial packages use the Federal Data Encryption
1.1.1.5 root 1392: Standard (DES), a fairly good conventional algorithm recommended by
1393: the Government for commercial use (but not for classified
1394: information, oddly enough-- hmmm). There are several "modes of
1395: operation" the DES can use, some of them better than others. The
1396: Government specifically recommends not using the weakest simplest
1397: mode for messages, the Electronic Codebook (ECB) mode. But they do
1398: recommend the stronger and more complex Cipher Feedback (CFB) or
1399: Cipher Block Chaining (CBC) modes.
1.1.1.4 root 1400:
1401: Unfortunately, most of the commercial encryption packages I've looked
1402: at use ECB mode. When I've talked to the authors of a number of
1403: these implementations, they say they've never heard of CBC or CFB
1404: modes, and didn't know anything about the weaknesses of ECB mode.
1405: The very fact that they haven't even learned enough cryptography to
1.1.1.5 root 1406: know these elementary concepts is not reassuring. And they sometimes
1407: manage their DES keys in inappropriate or insecure ways. Also, these
1408: same software packages often include a second faster encryption
1409: algorithm that can be used instead of the slower DES. The author of
1410: the package often thinks his proprietary faster algorithm is as
1411: secure as the DES, but after questioning him I usually discover that
1412: it's just a variation of my own brilliant scheme from college days.
1413: Or maybe he won't even reveal how his proprietary encryption scheme
1414: works, but assures me it's a brilliant scheme and I should trust it.
1415: I'm sure he believes that his algorithm is brilliant, but how can I
1416: know that without seeing it?
1417:
1418: In all fairness I must point out that in most cases these terribly
1419: weak products do not come from companies that specialize in
1420: cryptographic technology.
1421:
1422: Even the really good software packages, that use the DES in the
1423: correct modes of operation, still have problems. Standard DES uses a
1424: 56-bit key, which is too small by today's standards, and may now be
1425: easily broken by exhaustive key searches on special high-speed
1426: machines. The DES has reached the end of its useful life, and so has
1427: any software package that relies on it.
1.1.1.4 root 1428:
1429: There is a company called AccessData (87 East 600 South, Orem, Utah
1430: 84058, phone 1-800-658-5199) that sells a package for $185 that
1431: cracks the built-in encryption schemes used by WordPerfect, Lotus
1432: 1-2-3, MS Excel, Symphony, Quattro Pro, Paradox, and MS Word 2.0. It
1433: doesn't simply guess passwords-- it does real cryptanalysis. Some
1434: people buy it when they forget their password for their own files.
1435: Law enforcement agencies buy it too, so they can read files they
1436: seize. I talked to Eric Thompson, the author, and he said his
1437: program only takes a split second to crack them, but he put in some
1438: delay loops to slow it down so it doesn't look so easy to the
1439: customer. He also told me that the password encryption feature of
1440: PKZIP files can often be easily broken, and that his law enforcement
1441: customers already have that service regularly provided to them from
1442: another vendor.
1443:
1444: In some ways, cryptography is like pharmaceuticals. Its integrity
1445: may be absolutely crucial. Bad penicillin looks the same as good
1446: penicillin. You can tell if your spreadsheet software is wrong, but
1447: how do you tell if your cryptography package is weak? The ciphertext
1448: produced by a weak encryption algorithm looks as good as ciphertext
1449: produced by a strong encryption algorithm. There's a lot of snake
1450: oil out there. A lot of quack cures. Unlike the patent medicine
1451: hucksters of old, these software implementors usually don't even know
1452: their stuff is snake oil. They may be good software engineers, but
1453: they usually haven't even read any of the academic literature in
1454: cryptography. But they think they can write good cryptographic
1455: software. And why not? After all, it seems intuitively easy to do
1456: so. And their software seems to work okay.
1457:
1458: Anyone who thinks they have devised an unbreakable encryption scheme
1.1.1.5 root 1459: either is an incredibly rare genius or is naive and inexperienced.
1460: Unfortunately, I sometimes have to deal with would-be cryptographers
1461: who want to make "improvements" to PGP by adding encryption
1462: algorithms of their own design.
1.1.1.4 root 1463:
1464: I remember a conversation with Brian Snow, a highly placed senior
1465: cryptographer with the NSA. He said he would never trust an
1466: encryption algorithm designed by someone who had not "earned their
1467: bones" by first spending a lot of time cracking codes. That did make
1468: a lot of sense. I observed that practically no one in the commercial
1469: world of cryptography qualified under this criterion. "Yes", he said
1470: with a self assured smile, "And that makes our job at NSA so much
1471: easier." A chilling thought. I didn't qualify either.
1472:
1473: The Government has peddled snake oil too. After World War II, the US
1474: sold German Enigma ciphering machines to third world governments.
1475: But they didn't tell them that the Allies cracked the Enigma code
1476: during the war, a fact that remained classified for many years. Even
1477: today many Unix systems worldwide use the Enigma cipher for file
1478: encryption, in part because the Government has created legal
1479: obstacles against using better algorithms. They even tried to
1480: prevent the initial publication of the RSA algorithm in 1977. And
1481: they have squashed essentially all commercial efforts to develop
1482: effective secure telephones for the general public.
1483:
1484: The principal job of the US Government's National Security Agency is
1485: to gather intelligence, principally by covertly tapping into people's
1486: private communications (see James Bamford's book, "The Puzzle
1487: Palace"). The NSA has amassed considerable skill and resources for
1488: cracking codes. When people can't get good cryptography to protect
1489: themselves, it makes NSA's job much easier. NSA also has the
1490: responsibility of approving and recommending encryption algorithms.
1491: Some critics charge that this is a conflict of interest, like putting
1492: the fox in charge of guarding the hen house. NSA has been pushing a
1493: conventional encryption algorithm that they designed, and they won't
1494: tell anybody how it works because that's classified. They want
1495: others to trust it and use it. But any cryptographer can tell you
1496: that a well-designed encryption algorithm does not have to be
1497: classified to remain secure. Only the keys should need protection.
1498: How does anyone else really know if NSA's classified algorithm is
1499: secure? It's not that hard for NSA to design an encryption algorithm
1500: that only they can crack, if no one else can review the algorithm.
1501: Are they deliberately selling snake oil?
1502:
1.1.1.5 root 1503: There are three main factors that have undermined the quality of
1504: commercial cryptographic software in the US. The first is the
1505: virtually universal lack of competence of implementors of commercial
1506: encryption software (although this is starting to change since the
1507: publication of PGP). Every software engineer fancies himself a
1508: cryptographer, which has led to the proliferation of really bad
1509: crypto software. The second is the NSA deliberately and
1510: systematically suppressing all the good commercial encryption
1511: technology, by legal intimidation and economic pressure. Part of
1512: this pressure is brought to bear by stringent export controls on
1513: encryption software which, by the economics of software marketing,
1514: has the net effect of suppressing domestic encryption software. The
1515: other principle method of suppression comes from the granting all the
1516: software patents for all the public key encryption algorithms to a
1517: single company, affording a single choke point to suppress the spread
1518: of this technology. The net effect of all this is that before PGP
1519: was published, there was almost no highly secure general purpose
1520: encryption software available in the US.
1521:
1.1.1.4 root 1522: I'm not as certain about the security of PGP as I once was about my
1523: brilliant encryption software from college. If I were, that would be
1524: a bad sign. But I'm pretty sure that PGP does not contain any
1.1.1.5 root 1525: glaring weaknesses (although it may contain bugs). The crypto
1526: algorithms were developed by people at high levels of civilian
1527: cryptographic academia, and have been individually subject to
1528: extensive peer review. Source code is available to facilitate peer
1529: review of PGP and to help dispel the fears of some users. It's
1530: reasonably well researched, and has been years in the making. And I
1531: don't work for the NSA. I hope it doesn't require too large a "leap
1532: of faith" to trust the security of PGP.
1533:
1534:
1535: Notice to Macintosh Users
1536: =========================
1537:
1538: PGP was originally developed for MSDOS and Unix machines. There is
1539: also an Apple Macintosh version of PGP. This manual is written for
1540: the MSDOS/Unix versions of PGP, which use a command-line interface
1541: for all the PGP functions. On the Mac, all the PGP functions are
1542: accessed through pull-down menus and dialog boxes. There is also
1543: on-line help on the Mac for how to use MacPGP, and there should be
1544: some Mac-specific user documentation included in the MacPGP release
1545: package, in addition to this manual.
1546:
1547: Almost all good Mac software applications are written from scratch
1548: for the Mac, not simply ported there from other operating systems.
1549: Unfortunately, the current Mac version of PGP was not designed for
1550: the Mac from scratch. It was ported from the MSDOS/Unix version to
1551: the Mac by Zbigniew Fiedorwicz. Since the MSDOS/Unix version of PGP
1552: was not designed for a GUI (graphical user interface), porting to the
1553: Mac was not an easy task, and many bugs still remain. An all-new
1554: version of PGP is under development, designed for easy adaptation to
1555: a GUI. A new Mac version will be developed from this new PGP source
1556: code. It will be more Mac-like, and more reliable. Despite the bugs
1557: in the current version of MacPGP, it is important to note that if
1558: Zbigniew had waited for this all-new version of PGP to be developed
1559: before he ported PGP to the Mac, the world would have been deprived
1560: of a Mac version of PGP for far too long.
1.1.1.4 root 1561:
1562:
1563: PGP Quick Reference
1564: ===================
1565:
1566: Here's a quick summary of PGP commands.
1567:
1568:
1569: To encrypt a plaintext file with the recipient's public key:
1570: pgp -e textfile her_userid
1571:
1572: To sign a plaintext file with your secret key:
1573: pgp -s textfile [-u your_userid]
1574:
1575: To sign a plaintext ASCII text file with your secret key, producing a
1576: signed plaintext message suitable for sending via E-mail:
1577: pgp -sta textfile [-u your_userid]
1578:
1579: To sign a plaintext file with your secret key, and then encrypt it
1580: with the recipient's public key:
1581: pgp -es textfile her_userid [-u your_userid]
1582:
1583: To encrypt a plaintext file with just conventional cryptography, type:
1584: pgp -c textfile
1585:
1586: To decrypt an encrypted file, or to check the signature integrity of a
1587: signed file:
1588: pgp ciphertextfile [-o plaintextfile]
1589:
1590: To encrypt a message for any number of multiple recipients:
1591: pgp -e textfile userid1 userid2 userid3
1592:
1593: --- Key management commands:
1594:
1595: To generate your own unique public/secret key pair:
1596: pgp -kg
1597:
1598: To add a public or secret key file's contents to your public or
1599: secret key ring:
1600: pgp -ka keyfile [keyring]
1601:
1602: To extract (copy) a key from your public or secret key ring:
1603: pgp -kx userid keyfile [keyring]
1604: or: pgp -kxa userid keyfile [keyring]
1605:
1606: To view the contents of your public key ring:
1607: pgp -kv[v] [userid] [keyring]
1608:
1609: To view the "fingerprint" of a public key, to help verify it over
1610: the telephone with its owner:
1611: pgp -kvc [userid] [keyring]
1612:
1613: To view the contents and check the certifying signatures of your
1614: public key ring:
1615: pgp -kc [userid] [keyring]
1616:
1617: To edit the userid or pass phrase for your secret key:
1618: pgp -ke userid [keyring]
1619:
1620: To edit the trust parameters for a public key:
1621: pgp -ke userid [keyring]
1622:
1623: To remove a key or just a userid from your public key ring:
1624: pgp -kr userid [keyring]
1625:
1626: To sign and certify someone else's public key on your public key ring:
1627: pgp -ks her_userid [-u your_userid] [keyring]
1628:
1629: To remove selected signatures from a userid on a keyring:
1630: pgp -krs userid [keyring]
1631:
1632: To permanently revoke your own key, issuing a key compromise
1633: certificate:
1634: pgp -kd your_userid
1635:
1636: To disable or reenable a public key on your own public key ring:
1637: pgp -kd userid
1638:
1639: --- Esoteric commands:
1640:
1641: To decrypt a message and leave the signature on it intact:
1642: pgp -d ciphertextfile
1643:
1644: To create a signature certificate that is detached from the document:
1645: pgp -sb textfile [-u your_userid]
1646:
1647: To detach a signature certificate from a signed message:
1648: pgp -b ciphertextfile
1649:
1650: --- Command options that can be used in combination with other
1651: command options (sometimes even spelling interesting words!):
1652:
1653: To produce a ciphertext file in ASCII radix-64 format, just add the
1654: -a option when encrypting or signing a message or extracting a key:
1655: pgp -sea textfile her_userid
1656: or: pgp -kxa userid keyfile [keyring]
1657:
1658: To wipe out the plaintext file after producing the ciphertext file,
1659: just add the -w (wipe) option when encrypting or signing a message:
1660: pgp -sew message.txt her_userid
1661:
1662: To specify that a plaintext file contains ASCII text, not binary, and
1663: should be converted to recipient's local text line conventions, add
1664: the -t (text) option to other options:
1665: pgp -seat message.txt her_userid
1666:
1667: To view the decrypted plaintext output on your screen (like the
1668: Unix-style "more" command), without writing it to a file, use
1669: the -m (more) option while decrypting:
1670: pgp -m ciphertextfile
1671:
1672: To specify that the recipient's decrypted plaintext will be shown
1673: ONLY on her screen and cannot be saved to disk, add the -m option:
1674: pgp -steam message.txt her_userid
1675:
1676: To recover the original plaintext filename while decrypting, add
1677: the -p option:
1678: pgp -p ciphertextfile
1679:
1680: To use a Unix-style filter mode, reading from standard input and
1681: writing to standard output, add the -f option:
1682: pgp -feast her_userid <inputfile >outputfile
1683:
1684:
1685:
1686: Legal Issues
1687: ============
1688:
1689: For detailed information on PGP(tm) licensing, distribution,
1690: copyrights, patents, trademarks, liability limitations, and export
1691: controls, see the "Legal Issues" section in the "PGP User's Guide,
1692: Volume II: Special Topics".
1693:
1694: PGP uses a public key algorithm claimed by U.S. patent #4,405,829.
1.1.1.6 ! root 1695: The exclusive licensing rights to this patent are held by a company
! 1696: called Public Key Partners (PKP), and you may be infringing the
! 1697: patent if you use PGP in the USA without a license. These issues are
! 1698: detailed in the Volume II manual, and in the RSAREF license that
! 1699: comes with the freeware version of PGP. PKP has licensed others to
! 1700: practice the patent, including a company known as ViaCrypt, in
! 1701: Phoenix, Arizona. ViaCrypt sells a fully licensed version of PGP.
1.1.1.4 root 1702: ViaCrypt may be reached at 602-944-0773.
1703:
1704: PGP is "guerrilla" freeware, and I don't mind if you distribute it
1705: widely. Just don't ask me to send you a copy. Instead, you can look
1706: for it yourself on many BBS systems and a number of Internet FTP
1707: sites. But before you distribute PGP, it is essential that you
1708: understand the U.S. export controls on encryption software.
1709:
1710:
1711:
1712: Acknowledgments
1713: ================
1714:
1715: Formidable obstacles and powerful forces have been arrayed to stop
1716: PGP. Dedicated people are helping to overcome these obstacles. PGP
1717: has achieved notoriety as "underground software", and bringing PGP
1718: "above ground" as fully licensed freeware has required patience and
1719: persistence. I'd especially like to thank Hal Abelson, Jeff
1720: Schiller, Brian LaMacchia, and Derek Atkins at MIT for their
1721: determined efforts. I'd also like to thank Jim Bruce and David
1722: Litster in the MIT administration and Bob Prior and Terry Ehling at
1723: the MIT Press. And I'd like to thank my entire legal defense team,
1724: whose job is not over yet. I used to tell a lot of lawyer jokes,
1725: before I encountered so many positive examples of lawyers in my legal
1726: defense team, most of whom work pro bono.
1727:
1728: The development of PGP has turned into a remarkable social
1729: phenomenon, whose unique political appeal has inspired the collective
1730: efforts of an ever-growing number of volunteer programmers. Remember
1731: that children's story called "Stone Soup"?
1732:
1733: I'd like to thank the following people for their contributions to the
1734: creation of Pretty Good Privacy. Although I was the author of PGP
1735: version 1.0, major parts of later versions of PGP were implemented by
1736: an international collaborative effort involving a large number of
1737: contributors, under my design guidance.
1738:
1739: Branko Lankester, Hal Finney and Peter Gutmann all contributed a huge
1740: amount of time in adding features for PGP 2.0, and ported it to Unix
1741: variants.
1742:
1743: Hugh Kennedy ported it to VAX/VMS, Lutz Frank ported it to the Atari
1744: ST, and Cor Bosman and Colin Plumb ported it to the Commodore Amiga.
1745:
1746: Translation of PGP into foreign languages was done by Jean-loup
1747: Gailly in France, Armando Ramos in Spain, Felipe Rodriquez Svensson
1748: and Branko Lankester in The Netherlands, Miguel Angel Gallardo in
1749: Spain, Hugh Kennedy and Lutz Frank in Germany, David Vincenzetti in
1750: Italy, Harry Bush and Maris Gabalins in Latvia, Zygimantas Cepaitis
1751: in Lithuania, Peter Suchkow and Andrew Chernov in Russia, and
1752: Alexander Smishlajev in Esperantujo. Peter Gutmann offered to
1753: translate it into New Zealand English, but we finally decided PGP
1754: could get by with US English.
1755:
1756: Jean-loup Gailly, Mark Adler, and Richard B. Wales published the ZIP
1757: compression code, and granted permission for inclusion into PGP. The
1758: MD5 routines were developed and placed in the public domain by Ron
1759: Rivest. The IDEA(tm) cipher was developed by Xuejia Lai and James L.
1760: Massey at ETH in Zurich, and is used in PGP with permission from
1761: Ascom-Tech AG.
1762:
1763: Charlie Merritt originally taught me how to do decent multiprecision
1764: arithmetic for public key cryptography, and Jimmy Upton contributed a
1765: faster multiply/modulo algorithm. Thad Smith implemented an even
1766: faster modmult algorithm. Zhahai Stewart contributed a lot of useful
1767: ideas on PGP file formats and other stuff, including having more than
1768: one user ID for a key. I heard the idea of introducers from Whit
1769: Diffie. Kelly Goen did most of the work for the initial electronic
1770: publication of PGP 1.0.
1771:
1772: Various contributions of coding effort also came from Colin Plumb,
1773: Derek Atkins, and Castor Fu. Other contributions of effort, coding
1774: or otherwise, have come from Hugh Miller, Eric Hughes, Tim May,
1775: Stephan Neuhaus, and too many others for me to remember right now.
1.1.1.5 root 1776: Zbigniew Fiedorwicz did the first Macintosh port.
1.1.1.4 root 1777:
1778: Since the release of PGP 2.0, many other programmers have sent in
1779: patches and bug fixes and porting adjustments for other computers.
1780: There are too many to individually thank here.
1781:
1782: Just as in the "Stone Soup" story, it is getting harder to peer
1783: through the thick soup to see the stone at the bottom of the pot that
1784: I dropped in to start it all off.
1785:
1786:
1787:
1788: About the Author
1789: ================
1790:
1791: Philip Zimmermann is a software engineer consultant with 19 years
1792: experience, specializing in embedded real-time systems, cryptography,
1793: authentication, and data communications. Experience includes design
1794: and implementation of authentication systems for financial
1795: information networks, network data security, key management
1796: protocols, embedded real-time multitasking executives, operating
1797: systems, and local area networks.
1798:
1799: Custom versions of cryptography and authentication products and
1800: public key implementations such as the NIST DSS are available from
1801: Zimmermann, as well as custom product development services. His
1802: consulting firm's address is:
1803:
1804: Boulder Software Engineering
1805: 3021 Eleventh Street
1806: Boulder, Colorado 80304 USA
1807: Phone: 303-541-0140 (10:00am - 7:00pm Mountain Time)
1808: Fax: arrange by phone
1809: Internet: [email protected]
1810:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.