|
|
1.1 root 1: Phil's Pretty Good Software
2: Presents
3:
4: ===
5: PGP
6: ===
7:
8: Pretty Good Privacy
9: Public Key Encryption for the Masses
10:
11:
12: -------------------------
13: PGP User's Guide
14: Volume II: Special Topics
15: -------------------------
16: by Philip Zimmermann
17: Revised 1 Sep 92
18:
19:
20: PGP Version 2.0 - 1 Sep 92
21: Software Written by
22: Philip Zimmermann
23: with
24: Hal Finney, Branko Lankester, and Peter Gutmann
25:
26:
27:
28:
29: Synopsis: PGP uses public-key encryption to protect E-mail and data
30: files. Communicate securely with people you've never met, with no
31: 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-1992 Philip Zimmermann.
37: For information on PGP licensing, distribution, copyrights, patents,
38: trademarks, liability limitations, and export controls, see the
39: "Legal Issues" section.
40:
41:
42: Contents
43: ========
44:
45: Quick Overview
46: Special Topics
47: Separating Signatures from Messages
48: Decrypting the Message and Leaving the Signature on it
49: Sending ASCII Text Files Across Different Machine Environments
50: Leaving No Traces of Plaintext on the Disk
51: Displaying Decrypted Plaintext on Your Screen
52: Making a Message For Her Eyes Only
53: Preserving the Original Plaintext Filename
54: Editing Your User ID or Pass Phrase
55: Editing the Trust Parameters for a Public Key
56: Checking If Everything is OK on Your Public Key Ring
57: Using PGP as a Unix-style Filter
58: PGP Returns Exit Status to the Shell
59: Environmental Variable for Pass Phrase
60: Setting Configuration Parameters: CONFIG.TXT
61: TMP - Directory Pathname for Temporary Files
62: LANGUAGE - Foreign Language Selector
63: MYNAME - Default User ID for Making Signatures
64: TEXTMODE - Assuming Plaintext is a Text File
65: CHARSET - Specifies Local Character Set for Text Files
66: ARMOR - Enable ASCII Armor Output
67: ARMORLINES - Size of ASCII Armor Multipart Files
68: KEEPBINARY - Keep Binary Ciphertext Files After Decrypting
69: VERBOSE - Enable Verbose Mode
70: COMPRESS - Enable Compression
71: BAKRING - Filename for Backup Secret Keyring
72: COMPLETES_NEEDED - Number of Completely Trusted Introducers Needed
73: MARGINALS_NEEDED - Number of Marginally Trusted Introducers Needed
74: CERT_DEPTH - How Deep May Introducers Be Nested
75: PAGER - Selects Shell Command to Display Plaintext Output
76: SHOWPASS - Echo Pass Phrase to User
77: TZFIX - Timezone Adjustment
78: Protecting Against Bogus Timestamps
79: A Peek Under the Hood
80: Random Numbers
81: PGP's Conventional Encryption Algorithm
82: Data Compression
83: Message Digests and Digital Signatures
84: Compatibility with Previous Versions of PGP
85: Vulnerabilities
86: Compromised Pass Phrase and Secret Key
87: Public Key Tampering
88: "Not Quite Deleted" Files
89: Viruses and Trojan Horses
90: Physical Security Breach
91: Tempest Attacks
92: Exposure on Multi-user Systems
93: Traffic Analysis
94: Cryptanalysis
95: Legal Issues
96: Trademarks, Copyrights, and Warranties
97: Patent Rights on the Algorithms
98: Licensing and Distribution
99: Export Controls
100: Recommended Readings
101: To Contact the Author
102:
103:
104: Quick Overview
105: =============
106:
107: Pretty Good(tm) Privacy (PGP), from Phil's Pretty Good Software, is a
108: high security cryptographic software application for MSDOS, Unix,
109: VAX/VMS, and other computers. PGP combines the convenience of the
110: Rivest-Shamir-Adleman (RSA) public key cryptosystem with the speed of
111: conventional cryptography, message digests for digital signatures,
112: data compression before encryption, good ergonomic design, and
113: sophisticated key management.
114:
115: This volume II of the PGP User's Guide covers advanced topics about
116: PGP that were not covered in the "PGP User's Guide, Volume I:
117: Essential Topics". You should first read the Essential Topics
118: volume, or this manual won't make much sense to you. Reading this
119: Special Topics volume is optional.
120:
121:
122:
123: Special Topics
124: ===============
125:
126: Separating Signatures from Messages
127: -----------------------------------
128:
129: Normally, signature certificates are physically attached to the text
130: they sign. This makes it convenient in simple cases to check
131: signatures. It is desirable in some circumstances to have signature
132: certificates stored separately from the messages they sign. It is
133: possible to generate signature certificates that are detached from
134: the text they sign. To do this, combine the 'b' (break) option with
135: the 's' (sign) option. For example:
136:
137: pgp -sb letter.txt
138:
139: This example produces an isolated signature certificate in a file
140: called "letter.sig". The contents of letter.txt are not appended to
141: the signature certificate.
142:
143: After creating the signature certificate file (letter.sig in the
144: above example), send it along with the original text file to the
145: recipient. The recipient must have both files to check the signature
146: integrity. When the recipient attempts to process the signature
147: file, PGP notices that there is no text in the same file with the
148: signature and prompts the user for the filename of the text. Only
149: then can PGP properly check the signature integrity. If the
150: recipient knows in advance that the signature is detached from the
151: text file, she can specify both filenames on the command line:
152:
153: pgp letter.sig letter.txt
154: or: pgp letter letter.txt
155:
156: PGP will not have to prompt for the text file name in this case.
157:
158: A detached signature certificate is useful if you want to keep the
159: signature certificate in a separate certificate log. A detached
160: signature of an executable program is also useful for detecting a
161: subsequent virus infection. It is also useful if more than one party
162: must sign a document such as a legal contract, without nesting
163: signatures. Each person's signature is independent.
164:
165: If you receive a ciphertext file that has the signature certificate
166: glued to the message, you can still pry the signature certificate
167: away from the message during the decryption. You can do this with
168: the -b option during decrypt, like so:
169:
170: pgp -b letter
171:
172: This decrypts the letter.pgp file and if there is a signature in it,
173: PGP checks the signature and detaches it from the rest of the
174: message, storing it in the file letter.sig.
175:
176:
177: Decrypting the Message and Leaving the Signature on it
178: ------------------------------------------------------
179:
180: Usually, you want PGP to completely unravel a ciphertext file,
181: decrypting it and checking the nested signature if there is one,
182: peeling away the layers until you are left with only the original
183: plaintext file.
184:
185: But sometimes you want to decrypt an encrypted file, and leave the
186: inner signature still attached, so that you are left with a decrypted
187: signed message. This may be useful if you want to send a copy of a
188: signed document to a third party, perhaps re-enciphering it. For
189: example, suppose you get a message signed by Charlie, encrypted to
190: you. You want to decrypt it, and, leaving Charlie's signature on it,
191: you want to send it to Alice, perhaps re-enciphering it with Alice's
192: public key. No problem. PGP can handle that.
193:
194: To simply decrypt a message and leave the signature on it intact,
195: type:
196:
197: pgp -d letter
198:
199: This decrypts letter.pgp, and if there is an inner signature, it is
200: left intact with the decrypted plaintext in the output file.
201:
202: Now you can archive it, or maybe re-encrypt it and send it to someone
203: else.
204:
205:
206:
207: Sending ASCII Text Files Across Different Machine Environments
208: --------------------------------------------------------------
209:
210: You may use PGP to encrypt any kind of plaintext file, binary 8-bit
211: data or ASCII text. Probably the most common usage of PGP will be for
212: E-mail, when the plaintext is ASCII text.
213:
214: ASCII text is sometimes represented differently on different
215: machines. For example, on an MSDOS system, all lines of ASCII text
216: are terminated with a carriage return followed by a linefeed. On a
217: Unix system, all lines end with just a linefeed. On a Macintosh, all
218: lines end with just a carriage return. This is a sad fact of life.
219:
220: Normal unencrypted ASCII text messages are often automatically
221: translated to some common "canonical" form when they are transmitted
222: from one machine to another. Canonical text has a carriage return
223: and a linefeed at the end of each line of text. For example, the
224: popular KERMIT communication protocol can convert text to canonical
225: form when transmitting it to another system. This gets converted
226: back to local text line terminators by the receiving KERMIT. This
227: makes it easy to share text files across different systems.
228:
229: But encrypted text cannot be automatically converted by a
230: communication protocol, because the plaintext is hidden by
231: encipherment. To remedy this inconvenience, PGP lets you specify
232: that the plaintext should be treated as ASCII text (not binary data)
233: and should be converted to canonical text form before it gets
234: encrypted. At the receiving end, the decrypted plaintext is
235: automatically converted back to whatever text form is appropriate for
236: the local environment.
237:
238: To make PGP assume the plaintext is text that should be converted to
239: canonical text before encryption, just add the "t" option when
240: encrypting or signing a message, like so:
241:
242: pgp -et message.txt her_userid
243:
244: This mode is automatically turned off if PGP detects that the
245: plaintext file contains what it thinks is non-text binary data.
246:
247: For PGP users that use non-English 8-bit character sets, when PGP
248: converts text to canonical form, it may convert data from the local
249: character set into the LATIN1 (ISO 8859-1 Latin Alphabet 1) character
250: set, depending on the setting of the CHARSET parameter in the PGP
251: configuration file. LATIN1 is a superset of ASCII, with extra
252: characters added for many European languages.
253:
254:
255:
256: Leaving No Traces of Plaintext on the Disk
257: ------------------------------------------
258:
259: After PGP makes a ciphertext file for you, you can have PGP
260: automatically overwrite the plaintext file and delete it, leaving no
261: trace of plaintext on the disk so that no one can recover it later
262: using a disk block scanning utility. This is useful if the plaintext
263: file contains sensitive information that you don't want to keep
264: around.
265:
266: To wipe out the plaintext file after producing the ciphertext file,
267: just add the "w" (wipe) option when encrypting or signing a message,
268: like so:
269:
270: pgp -esw message.txt her_userid
271:
272: This example creates the ciphertext file "message.pgp", and the
273: plaintext file "message.txt" is destroyed beyond recovery.
274:
275: Obviously, you should be careful with this option. Also note that
276: this will not wipe out any fragments of plaintext that your word
277: processor might have created on the disk while you were editing the
278: message before running PGP. Most word processors create backup
279: files, scratch files, or both. Also, it overwrites the file only
280: once, which is enough to thwart conventional disk recovery efforts,
281: but not enough to withstand a determined and sophisticated effort to
282: recover the faint magnetic traces of the data using special disk
283: recovery hardware.
284:
285:
286:
287: Displaying Decrypted Plaintext on Your Screen
288: ---------------------------------------------
289:
290: To view the decrypted plaintext output on your screen (like the
291: Unix-style "more" command), without writing it to a file, use the -m
292: (more) option while decrypting:
293:
294: pgp -m ciphertextfile
295:
296: This displays the decrypted plaintext display on your screen one
297: screenful at a time.
298:
299:
300:
301: Making a Message For Her Eyes Only
302: ----------------------------------
303:
304: To specify that the recipient's decrypted plaintext will be shown
305: ONLY on her screen and cannot be saved to disk, add the -m option:
306:
307: pgp -sem message.txt her_userid
308:
309: Later, when the recipient decrypts the ciphertext with her secret key
310: and pass phrase, the plaintext will be displayed on her screen but
311: will not be saved to disk. The text will be displayed as it would if
312: she used the Unix "more" command, one screenful at a time. If she
313: wants to read the message again, she will have to decrypt the
314: ciphertext again.
315:
316: This feature is the safest way for you to prevent your sensitive
317: message from being inadvertently left on the recipient's disk. This
318: feature was added at the request of a user who wanted to send
319: intimate messages to his lover, but was afraid she might accidentally
320: leave the decrypted messages on her husband's computer.
321:
322:
323:
324: Preserving the Original Plaintext Filename
325: ------------------------------------------
326:
327: Normally, PGP names the decrypted plaintext output file with a name
328: similar to the input ciphertext filename, but dropping the
329: extension. Or, you can override that convention by specifying an
330: output plaintext filename on the command line with the -o option.
331: For most E-mail, this is a reasonable way to name the plaintext file,
332: because you get to decide its name when you decipher it, and your
333: typical E-mail messages often come from useless original plaintext
334: filenames like "to_phil.txt".
335:
336: But when PGP encrypts a plaintext file, it always saves the original
337: filename and attaches it to the plaintext before it compresses and
338: encrypts the plaintext. Normally, this hidden original filename is
339: discarded by PGP when it decrypts, but you can tell PGP you want to
340: preserve the original plaintext filename and use it as the name of
341: the decrypted plaintext output file. This is useful if PGP is used
342: to on files whose names are important to preserve.
343:
344: To recover the original plaintext filename while decrypting, add
345: the -p option, like so:
346:
347: pgp -p ciphertextfile
348:
349: I usually don't use this option, because if I did, about half of my
350: incoming E-mail would decrypt to the same plaintext filenames of
351: "to_phil.txt" or "prz.txt".
352:
353:
354:
355: Editing Your User ID or Pass Phrase
356: -----------------------------------
357:
358: Sometimes you may need to change your pass phrase, perhaps because
359: someone looked over your shoulder while you typed it in.
360:
361: Or you may need to change your user ID, because you got married and
362: changed your name, or maybe you changed your E-mail address. Or
363: maybe you want to add a second or third user ID to your key, because
364: you may be known by more than one name or E-mail address or job
365: title. PGP lets you attach more than one user ID to your key, any
366: one of which may be used to look up your key on the key ring.
367:
368: To edit your userid or pass phrase for your secret key:
369:
370: pgp -ke userid [keyring]
371:
372: PGP prompts you for a new user ID or a new pass phrase.
373:
374:
375:
376: Editing the Trust Parameters for a Public Key
377: ---------------------------------------------
378:
379: Sometimes you need to alter the trust parameters for a public key on
380: your public key ring. For a discussion on what these trust
381: parameters mean, see the section "How Does PGP Keep Track of Which
382: Keys are Valid?" in the Essential Topics volume of the PGP User's
383: Guide.
384:
385: To edit the trust parameters for a public key:
386:
387: pgp -ke userid [keyring]
388:
389:
390:
391: Checking If Everything is OK on Your Public Key Ring
392: ----------------------------------------------------
393:
394: Normally, PGP automatically checks any new keys or signatures on your
395: public key ring and updates all the trust parameters and validity
396: scores. In theory, it keeps all the key validity status information
397: up to date as material is added to or deleted from your public key
398: ring. But perhaps you may want to explicitly force PGP to perform a
399: comprehensive analysis of your public key ring, checking all the
400: certifying signatures, checking the trust parameters, updating all
401: the validity scores, and checking your own ultimately-trusted key
402: against a backup copy on a write-protected floppy disk. It may be a
403: good idea to do this hygienic maintenance periodically to make sure
404: nothing is wrong with your public key ring. To force PGP to perform
405: a full analysis of your public key ring, use the -kc (key ring check)
406: command:
407:
408: pgp -kc
409:
410: You can also make PGP check all the signatures for just a single
411: selected public key by:
412:
413: pgp -kc userid [keyring]
414:
415: For further information on how the backup copy of your own key is
416: checked, see the description of the BAKRING parameter in the
417: configuration file section of this manual.
418:
419:
420:
421: Using PGP as a Unix-style Filter
422: --------------------------------
423:
424: Unix fans are accustomed to using Unix "pipes" to make two
425: applications work together. The output of one application can be
426: directly fed through a pipe to be read as input to another
427: application. For this to work, the applications must be capable of
428: reading the raw material from "standard input" and writing the
429: finished output to "standard output". PGP can operate in this mode.
430: If you don't understand what this means, then you probably don't need
431: this feature.
432:
433: To use a Unix-style filter mode, reading from standard input and
434: writing to standard output, add the -f option, like so:
435:
436: pgp -feast her_userid <inputfile >outputfile
437:
438: This feature makes it easier to make PGP work with electronic mail
439: applications.
440:
441: When using PGP in filter mode to decrypt a ciphertext file, you may
442: find it useful to use the PGPPASS environmental variable to hold the
443: pass phrase, so that you won't be prompted for it. The PGPPASS
444: feature is explained below.
445:
446:
447:
448: PGP Returns Exit Status to the Shell
449: ------------------------------------
450:
451: To facilitate running PGP in "batch" mode, such as from an MSDOS
452: ".bat" file or from a Unix shell script, PGP returns an error exit
453: status to the shell. An exit status code of zero means normal exit,
454: while a nonzero exit status indicates some kind of error occurred.
455: Different error exit conditions return different exit status codes to
456: the shell.
457:
458:
459:
460: Environmental Variable for Pass Phrase
461: --------------------------------------
462:
463: Normally, PGP prompts the user to type a pass phrase whenever PGP
464: needs a pass phrase to unlock a secret key. But it is possible to
465: store the pass phrase in an environmental variable from your
466: operating system's command shell. The environmental variable PGPPASS
467: can be used to hold the pass phrase that PGP will attempt to use
468: first. If the pass phrase stored in PGPPASS is incorrect, PGP
469: recovers by prompting the user for the correct pass phrase.
470:
471: For example, on MSDOS, the shell command:
472:
473: SET PGPPASS=zaphod beeblebrox for president
474:
475: would eliminate the prompt for the pass phrase if the pass phrase
476: were indeed "zaphod beeblebrox for president".
477:
478: This dangerous feature makes your life more convenient if you have to
479: regularly deal with a large number of incoming messages addressed to
480: your secret key, by eliminating the need for you to repeatedly type
481: in your pass phrase every time you run PGP.
482:
483: I added this feature because of popular demand. However, this is a
484: somewhat dangerous feature, because it keeps your precious pass
485: phrase stored somewhere other than just in your brain. Even worse,
486: if you are particularly reckless, it may even be stored on a disk on
487: the same computer as your secret key. It would be particularly
488: dangerous and stupid if you were to install this command in a batch
489: or script file, such as the MSDOS AUTOEXEC.BAT file. Someone could
490: come along on your lunch hour and steal both your secret key ring and
491: the file containing your pass phrase.
492:
493: I can't emphasize the importance of this risk enough. If you are
494: contemplating using this feature, be sure to read the sections
495: "Exposure on Multi-user Systems" and "How to Protect Secret Keys from
496: Disclosure" in this volume and in the Essential Topics volume of the
497: PGP User's Guide.
498:
499: If you must use this feature, the safest way to do it would be to
500: just manually type in the shell command to set PGPPASS every time you
501: boot your machine to start using PGP, and then erase it or turn off
502: your machine when you are done. And you should definitely never do
503: it in an environment where someone else may have access to your
504: machine. Someone could come along and simply ask your computer to
505: display the contents of PGPPASS.
506:
507:
508:
509: Setting Configuration Parameters: CONFIG.TXT
510: ============================================
511:
512: PGP has a number of user-settable parameters that can be defined in a
513: special configuration text file called "config.txt", in the directory
514: pointed to by the shell environmental variable PGPPATH. Having a
515: configuration file enables the user to define various flags and
516: parameters for PGP without the burden of having to always define
517: these parameters in the PGP command line.
518:
519: Configuration parameters may be assigned integer values, character
520: string values, or on/off values, depending on what kind of
521: configuration parameter it is. A sample configuration file is
522: provided with PGP, so you can see some examples.
523:
524: In the configuration file, blank lines are ignored, as is anything
525: following the '#' comment character. Keywords are not
526: case-sensitive.
527:
528: Here is a short sample fragment of a typical configuration file:
529:
530: # TMP is the directory for PGP scratch files, such as a RAM disk.
531: TMP = "e:\" # Can be overridden by environment variable TMP.
532: Armor = on # Use -a flag for ASCII armor whenever applicable.
533: # CERT_DEPTH is how deeply introducers may introduce introducers.
534: cert_depth = 3
535:
536: If some configuration parameters are not defined in the configuration
537: file, or if there is no configuration file, or if PGP can't find the
538: configuration file, the values for the configuration parameters
539: default to some reasonable value.
540:
541: The following is a summary of the various parameters than may be
542: defined in the configuration file.
543:
544:
545: TMP - Directory Pathname for Temporary Files
546: --------------------------------------------
547:
548: Default setting: TMP = ""
549:
550: The configuration parameter TMP specifies what directory to use for
551: PGP's temporary scratch files. The best place to put them is on a
552: RAM disk, if you have one. That speeds things up quite a bit, and
553: increases security somewhat. If TMP is undefined, the temporary
554: files go in the current directory. If the shell environmental
555: variable TMP is defined, PGP instead uses that to specify where the
556: temporary files should go.
557:
558:
559: LANGUAGE - Foreign Language Selector
560: ------------------------------------
561:
562: Default setting: LANGUAGE = "en"
563:
564: PGP displays various prompts, warning messages, and advisories to the
565: user on the screen. For example, messages such as "File not found.",
566: or "Please enter your pass phrase:". These messages are normally in
567: English. But it is possible to get PGP to display its messages to
568: the user in other languages, without having to modify the PGP
569: executable program.
570:
571: A number of people in various countries have translated all of PGP's
572: display messages, warnings, and prompts into their native languages.
573: These hundreds of translated message strings have been placed in a
574: special text file called "language.txt", distributed with the PGP
575: release. The messages are stored in this file in English, Spanish,
576: Dutch, German, French, Italian, Russian, Latvian, and Lithuanian.
577: Other languages may be added later.
578:
579: The configuration parameter LANGUAGE specifies what language to
580: display these messages in. LANGUAGE may be set to "en" for English,
581: "es" for Spanish, "de" for German, "nl" for Dutch, "fr" for French,
582: "it" for Italian, "ru" for Russian, "lt3" for Lithuanian, "lv" for
583: Latvian, "esp" for Esperanto. For example, if this line appeared in
584: the configuration file:
585:
586: LANGUAGE = "fr"
587:
588: PGP would select French as the language for its display messages.
589: The default setting is English.
590:
591: When PGP needs to display a message to the user, it looks in the
592: "language.txt" file for the equivalent message string in the selected
593: foreign language and displays that translated message to the user.
594: If PGP can't find the language string file, or if the selected
595: language is not in the file, or if that one phrase is not translated
596: into the selected language in the file, or if that phrase is missing
597: entirely from the file, PGP displays the message in English.
598:
599:
600: MYNAME - Default User ID for Making Signatures
601: ----------------------------------------------
602:
603: Default setting: MYNAME = ""
604:
605: The configuration parameter MYNAME specifies the default user ID to
606: use to select the secret key for making signatures. If MYNAME is not
607: defined, the most recent secret key you installed on your secret key
608: ring will be used. The user may also override this setting by
609: specifying a user ID on the PGP command line with the -u option.
610:
611:
612: TEXTMODE - Assuming Plaintext is a Text File
613: --------------------------------------------
614:
615: Default setting: TEXTMODE = off
616:
617: The configuration parameter TEXTMODE is equivalent to the -t command
618: line option. If enabled, it causes PGP to assume the plaintext is a
619: text file, not a binary file, and converts it to "canonical text"
620: before encrypting it. Canonical text has a carriage return and a
621: linefeed at the end of each line of text.
622:
623: This mode will be automatically turned off if PGP detects that the
624: plaintext file contains what it thinks is non-text binary data.
625:
626: For further details, see the section "Sending ASCII Text Files Across
627: Different Machine Environments".
628:
629:
630: CHARSET - Specifies Local Character Set for Text Files
631: ------------------------------------------------------
632:
633: Default setting: CHARSET = NOCONV
634:
635: Because PGP must process messages in many non-English languages with
636: non-ASCII character sets, you may have a need to tell PGP what local
637: character set your machine uses. This determines what character
638: conversions are performed when converting plaintext files to and from
639: canonical text format. This is only a concern if you are in a
640: non-English non-ASCII environment.
641:
642: The configuration parameter CHARSET selects the local character set.
643: The choices are NOCONV (no conversion), LATIN1 (ISO 8859-1 Latin
644: Alphabet 1), KOI8 (used by most Russian Unix systems), ALT-CODES
645: (used by Russian MSDOS systems), ASCII, and CP850 (used by most
646: western European languages on standard MSDOS PCs).
647:
648: LATIN1 is the internal representation used by PGP for canonical text,
649: so if you select LATIN1, no conversion is done. Note also that PGP
650: treats KOI8 as LATIN1, even though it is a completely different
651: character set (Russian), because trying to convert KOI8 to either
652: LATIN1 or CP850 would be futile anyway. This means that setting
653: CHARSET to NOCONV, LATIN1, or KOI8 are all equivalent to PGP.
654:
655: If you use MSDOS and expect to send or receive traffic in western
656: European languages, set CHARSET = "CP850". This will make PGP
657: convert incoming canonical text messages from LATIN1 to CP850 after
658: decryption. If you use the -t (textmode) option to convert to
659: canonical text, PGP will convert your CP850 text to LATIN1 before
660: encrypting it.
661:
662: For further details, see the section "Sending ASCII Text Files Across
663: Different Machine Environments".
664:
665:
666: ARMOR - Enable ASCII Armor Output
667: ---------------------------------
668:
669: Default setting: ARMOR = off
670:
671: The configuration parameter ARMOR is equivalent to the -a command
672: line option. If enabled, it causes PGP to emit ciphertext or keys in
673: ASCII Radix-64 format suitable for transporting through E-mail
674: channels. Output files are named with the ".asc" extension.
675:
676: If you tend to use PGP mostly for E-mail, it may be a good idea to
677: enable this parameter.
678:
679: For further details, see the section "Sending Ciphertext Through
680: E-mail Channels: Radix-64 Format" in the Essential Topics volume.
681:
682:
683: ARMORLINES - Size of ASCII Armor Multipart Files
684: ------------------------------------------------
685:
686: Default setting: ARMORLINES = 720
687:
688: When PGP creates a very large ".asc" radix-64 file for sending
689: ciphertext or keys through the E-mail, it breaks the file up into
690: separate chunks small enough to send through Internet mail
691: utilities. Normally, Internet mailers prohibit files larger than
692: about 50000 bytes, which means that if we restrict the number of
693: lines to about 720, we'll be well within the limit. The file chunks
694: are named with suffixes ".as1", ".as2", ".as3", ...
695:
696: The configuration parameter ARMORLINES specifies the maximum number
697: of lines to make each chunk in a multipart ".asc" file sequence. If
698: you set it to zero, PGP will not break up the file into chunks.
699:
700: For further details, see the section "Sending Ciphertext Through
701: E-mail Channels: Radix-64 Format" in the Essential Topics volume.
702:
703:
704: KEEPBINARY - Keep Binary Ciphertext Files After Decrypting
705: ----------------------------------------------------------
706:
707: Default setting: KEEPBINARY = on
708:
709: When PGP reads a ".asc" file, it recognizes that the file is in
710: radix-64 format and will convert it back to binary before processing
711: as it normally does, producing as a by-product a ".pgp" ciphertext
712: file in binary form. After further processing to decrypt the ".pgp"
713: file, the final output file will be in normal plaintext form.
714:
715: You may want to delete the binary ".pgp" intermediate file, or you
716: may want PGP to delete it for you automatically. You can still rerun
717: PGP on the original ".asc" file.
718:
719: The configuration parameter KEEPBINARY enables or disables keeping
720: the intermediate ".pgp" file during decryption.
721:
722: For further details, see the section "Sending Ciphertext Through
723: E-mail Channels: Radix-64 Format" in the Essential Topics volume.
724:
725:
726: VERBOSE - Enable Verbose Mode
727: -----------------------------
728:
729: Default setting: VERBOSE = off
730:
731: The configuration parameter VERBOSE enables "verbose" diagnostic
732: messages during PGP's operation, which is mainly useful for debugging
733: PGP. Otherwise, there is not much use for it.
734:
735:
736: COMPRESS - Enable Compression
737: -----------------------------
738:
739: Default setting: COMPRESS = on
740:
741: The configuration parameter COMPRESS enables or disables data
742: compression before encryption. It is used mainly for debugging PGP.
743: Normally, PGP attempts to compress the plaintext before it encrypts
744: it. Generally, you should leave this alone and let PGP attempt to
745: compress the plaintext.
746:
747:
748: COMPLETES_NEEDED - Number of Completely Trusted Introducers Needed
749: ------------------------------------------------------------------
750:
751: Default setting: COMPLETES_NEEDED = 1
752:
753: The configuration parameter COMPLETES_NEEDED specifies the minimum
754: number of completely trusted introducers required to fully certify a
755: public key on your public key ring. This gives you a way of tuning
756: PGP's skepticism.
757:
758: For further details, see the section "How Does PGP Keep Track of
759: Which Keys are Valid?" in the Essential Topics volume.
760:
761:
762: MARGINALS_NEEDED - Number of Marginally Trusted Introducers Needed
763: ------------------------------------------------------------------
764:
765: Default setting: MARGINALS_NEEDED = 2
766:
767: The configuration parameter MARGINALS_NEEDED specifies the minimum
768: number of marginally trusted introducers required to fully certify a
769: public key on your public key ring. This gives you a way of tuning
770: PGP's skepticism.
771:
772: For further details, see the section "How Does PGP Keep Track of
773: Which Keys are Valid?" in the Essential Topics volume.
774:
775:
776: CERT_DEPTH - How Deep May Introducers Be Nested
777: -----------------------------------------------
778:
779: Default setting: CERT_DEPTH = 4
780:
781: The configuration parameter CERT_DEPTH specifies how many levels deep
782: you may nest introducers to certify other introducers to certify
783: public keys on your public key ring. For example, If CERT_DEPTH is
784: set to 1, there may only be one layer of introducers below your own
785: ultimately-trusted key. If that were the case, you would be required
786: to directly certify the public keys of all trusted introducers on
787: your key ring. If you set CERT_DEPTH to 0, you could have no
788: introducers at all, and you would have to directly certify each and
789: every key on your public key ring in order to use it. The minimum
790: CERT_DEPTH is 0, the maximum is 8.
791:
792: For further details, see the section "How Does PGP Keep Track of
793: Which Keys are Valid?" in the Essential Topics volume.
794:
795:
796: BAKRING - Filename for Backup Secret Keyring
797: --------------------------------------------
798:
799: Default setting: BAKRING = ""
800:
801: All of the key certification that PGP does on your public key ring
802: ultimately depends on your own ultimately-trusted public key (or
803: keys). To detect any tampering of your public key ring, PGP must
804: check that your own key has not been tampered with. To do this, PGP
805: must compare your public key against a backup copy of your secret key
806: on some tamper-resistant media, such as a write-protected floppy
807: disk. A secret key contains all the information that your public key
808: has, plus some secret components. This means PGP can check your
809: public key against a backup copy of your secret key.
810:
811: The configuration parameter BAKRING specifies what pathname to use
812: for PGP's trusted backup copy of your secret key ring. On MSDOS, you
813: could set it to "a:\secring.pgp" to point it at a write-protected
814: backup copy of your secret key ring on your floppy drive. This check
815: is performed only when you execute the PGP -kc option to check your
816: whole public key ring.
817:
818: If BAKRING is not defined, PGP will not check your own key against
819: any backup copy.
820:
821: For further details, see the sections "How to Protect Public Keys
822: from Tampering" and "How Does PGP Keep Track of Which Keys are
823: Valid?" in the Essential Topics volume.
824:
825:
826: PAGER - Selects Shell Command to Display Plaintext Output
827: ---------------------------------------------------------
828:
829: Default setting: PAGER = ""
830:
831: PGP lets you view the decrypted plaintext output on your screen (like
832: the Unix-style "more" command), without writing it to a file, if you
833: use the -m (more) option while decrypting. This displays the
834: decrypted plaintext display on your screen one screenful at a time.
835:
836: If you prefer to use a fancier page display utility, rather than
837: PGP's built-in one, you can specify the name of a shell command that
838: PGP will invoke to display your plaintext output file. The
839: configuration parameter PAGER specifies the shell command to invoke
840: to display the file. For example:
841:
842: PAGER = "more"
843:
844: However, if the sender specified that this file is for your eyes
845: only, and may not be written to disk, PGP always uses its own
846: built-in display function.
847:
848: For further details, see the section "Displaying Decrypted Plaintext
849: on Your Screen".
850:
851:
852: SHOWPASS - Echo Pass Phrase to User
853: -----------------------------------
854:
855: Default setting: SHOWPASS = off
856:
857: Normally, PGP does not let you see your pass phrase as you type it
858: in. This makes it harder for someone to look over your shoulder
859: while you type and learn your pass phrase. But some typing-impaired
860: people have problems typing their pass phrase without seeing what
861: they are typing, and they may be typing in the privacy of their own
862: homes. So they asked if PGP can be configured to let them see what
863: they type when they type in their pass phrase.
864:
865: The configuration parameter SHOWPASS enables PGP to echo your typing
866: during pass phrase entry.
867:
868:
869: TZFIX - Timezone Adjustment
870: ---------------------------
871:
872: Default setting: TZFIX = 0
873:
874: PGP provides timestamps for keys and signature certificates in
875: Greenwich Mean Time (GMT), or Coordinated Universal Time (UTC), which
876: means the same thing for our purposes. When PGP asks the system for
877: the time of day, the system is supposed to provide it in GMT.
878:
879: But sometimes, because of improperly configured MSDOS systems, the
880: system time is returned in US Pacific Standard Time time plus 8
881: hours. Sounds weird, doesn't it? Perhaps because of some sort of US
882: west-coast jingoism, MSDOS presumes local time is US Pacific time,
883: and pre-corrects Pacific time to GMT. This adversely affects the
884: behavior of the internal MSDOS GMT time function that PGP calls.
885: However, if your MSDOS environmental variable TZ is already properly
886: defined for your timezone, this corrects the misconception MSDOS has
887: that the whole world lives on the US west coast.
888:
889: The configuration parameter TZFIX specifies the number of hours to
890: add to the system time function to get GMT, for GMT timestamps on
891: keys and signatures. If the MSDOS environmental variable TZ is
892: defined properly, you can leave TZFIX=0. Unix systems usually
893: shouldn't need to worry about setting TZFIX at all. But if you are
894: using some other obscure operating system that doesn't know about
895: GMT, you may have to use TZFIX to adjust the system time to GMT.
896:
897: On MSDOS systems that do not have TZ defined in the environment, you
898: should make TZFIX=0 for California, -1 for Colorado, -2 for Chicago,
899: -3 for New York, -8 for London, -9 for Amsterdam. In the summer,
900: TZFIX should be manually decremented from these values. What a mess.
901:
902: It would be much cleaner to set your MSDOS environmental variable TZ
903: in your AUTOEXEC.BAT file, and not use the TZFIX correction. Then
904: MSDOS gives you good GMT timestamps, and will handle daylight savings
905: time adjustments for you. Here are some sample lines to insert into
906: AUTOEXEC.BAT, depending on your time zone:
907:
908: For Colorado: SET TZ = MST7MDT
909: For Arizona: SET TZ = MST7
910: (Arizona never uses daylight savings time)
911: For Chicago: SET TZ = CST6CDT
912: For New York: SET TZ = EST5EDT
913: For London: SET TZ = GMT0BST
914: For Amsterdam: SET TZ = MET-1DST
915:
916:
917: Protecting Against Bogus Timestamps
918: ===================================
919:
920: A somewhat obscure vulnerability of PGP involves dishonest users
921: creating bogus timestamps on their own public key certificates and
922: signatures. You can skip over this section if you are a casual user
923: and aren't deeply into obscure public key protocols.
924:
925: There's nothing to stop a dishonest user from altering the date and
926: time setting of his own system's clock, and generating his own public
927: key certificates and signatures that appear to have been created at a
928: different time. He can make it appear that he signed something
929: earlier or later than he actually did, or that his public/secret key
930: pair was created earlier or later. This may have some legal or
931: financial benefit to him, for example by creating some kind of
932: loophole that might allow him to repudiate a signature.
933:
934: A remedy for this could involve some trustworthy Certifying Authority
935: or notary that would create notarized signatures with a trustworthy
936: timestamp. This might not necessarily require a centralized
937: authority. Perhaps any trusted introducer or disinterested party
938: could serve this function, the same way real notary publics do now.
939: A public key certificate could be signed by the notary, and the
940: trusted timestamp in the notary's signature would have some legal
941: significance. The notary could enter the signed certificate into a
942: special certificate log controlled by the notary. Anyone can read
943: this log.
944:
945: The notary could also sign other people's signatures, creating a
946: signature certificate of a signature certificate. This would serve
947: as a witness to the signature the same way real notaries do now with
948: paper. Again, the notary could enter the detached signature
949: certificate (without the actual whole document that was signed) into
950: a log controlled by the notary. The notary's signature would have a
951: trusted timestamp, which might have greater credibility than the
952: timestamp in the original signature. A signature becomes "legal" if
953: it is signed and logged by the notary.
954:
955: This problem of certifying signatures with notaries and trusted
956: timestamps warrants further discussion. This can of worms will not
957: be fully covered here now. There is a good treatment of this topic
958: in Denning's 1983 article in IEEE Computer (see references). There
959: is much more detail to be worked out in these various certifying
960: schemes. This will develop further as PGP usage increases and other
961: public key products develop their own certifying schemes.
962:
963:
964: A Peek Under the Hood
965: =====================
966:
967: Let's take a look at a few internal features of PGP.
968:
969:
970: Random Numbers
971: --------------
972:
973: PGP uses a cryptographically strong pseudorandom number generator for
974: creating temporary conventional session keys. The seed file for this
975: is called "randseed.bin". It too can be kept in whatever directory
976: is indicated by the PGPPATH environmental variable. If this random
977: seed file does not exist, it is automatically created and seeded with
978: truly random numbers derived from timing your keystroke latencies.
979:
980: This generator reseeds the disk file each time it is used by mixing
981: in new key material partially derived with the time of day and other
982: truly random sources. It uses the conventional encryption algorithm
983: as an engine for the random number generator. The seed file contains
984: both random seed material and random key material to key the
985: conventional encryption engine for the random generator.
986:
987: If you feel uneasy about trusting any algorithmically derived random
988: number source however strong, keep in mind that you already trust the
989: strength of the same conventional cipher to protect your messages.
990: If it's strong enough for that, then it should be strong enough to
991: use as a source of random numbers for temporary session keys. Note
992: that PGP still uses truly random numbers from physical sources
993: (mainly keyboard timings) to generate long-term public/secret key
994: pairs.
995:
996:
997:
998: PGP's Conventional Encryption Algorithm
999: ---------------------------------------
1000:
1001: As described earlier, PGP "bootstraps" into a conventional single-key
1002: encryption algorithm by using a public key algorithm to encipher the
1003: conventional session key and then switching to fast conventional
1004: cryptography. So let's talk about this conventional encryption
1005: algorithm. It isn't the DES.
1006:
1007: The Federal Data Encryption Standard (DES) is a good algorithm for
1008: most commercial applications. However, the Government does not trust
1009: the DES to protect its own classified data. Perhaps this is because
1010: the DES key length is 56 bits, short enough for a brute force attack
1011: with a special purpose machine built from massive numbers of DES
1012: chips. Also, Biham and Shamir have had some success recently on
1013: attacking the full 16-round DES.
1014:
1015: PGP does not use the DES as its conventional single-key algorithm to
1016: encrypt messages. Instead, PGP uses a different conventional
1017: single-key block encryption algorithm, called IDEA(tm). A future
1018: version of PGP may support the DES as an option, if enough users
1019: ask for it. But I suspect IDEA is better than DES.
1020:
1021: For the cryptographically curious, the IDEA cipher has a 64-bit block
1022: size for the plaintext and the ciphertext. It uses a key size of 128
1023: bits. It is based on the design concept of "mixing operations from
1024: different algebraic groups". It runs much faster in software than
1025: the DES. Like the DES, it can be used in cipher feedback (CFB) and
1026: cipher block chaining (CBC) modes. PGP uses it in 64-bit CFB mode.
1027:
1028: The IPES/IDEA block cipher was developed at ETH in Zurich by James L.
1029: Massey and Xuejia Lai, and published in 1990. This is not a
1030: "home-grown" algorithm. Its designers have a distinguished
1031: reputation in the cryptologic community. Early published papers on
1032: the algorithm called it IPES (Improved Proposed Encryption Standard),
1033: but they later changed the name to IDEA (International Data
1034: Encryption Algorithm). So far, IDEA has resisted attack much better
1035: than other ciphers such as FEAL, REDOC-II, LOKI, Snefru and Khafre.
1036: And preliminary evidence suggests that IDEA may be more resistant
1037: than the DES to Biham & Shamir's highly successful differential
1038: cryptanalysis attack. Biham and Shamir have been examining the IDEA
1039: cipher for weaknesses. Academic cryptanalyst groups in Belgium,
1040: England, and Germany are also attempting to attack it, as well as the
1041: military services from several European countries. As this new
1042: cipher continues to attract attack efforts from the most formidable
1043: quarters of the cryptanalytic world, confidence in IDEA is growing
1044: with the passage of time.
1045:
1046: A famous hockey player once said, "I try to skate to where I think
1047: the puck will be." A lot of people are starting to feel that the
1048: days are numbered for the DES. I'm skating toward IDEA.
1049:
1050: It is not ergonomically practical to use pure RSA with large keys to
1051: encrypt and decrypt long messages. Absolutely no one does it that way
1052: in the real world. But perhaps you are concerned that the whole
1053: package is weakened if we use a hybrid public-key and conventional
1054: scheme just to speed things up. After all, a chain is only as strong
1055: as its weakest link. Many people less experienced in cryptography
1056: mistakenly believe that RSA is intrinsically stronger than any
1057: conventional cipher. It's not. RSA can be made weak by using weak
1058: keys, and conventional ciphers can be made strong by choosing good
1059: algorithms. It's usually difficult to tell exactly how strong a good
1060: conventional cipher is, without actually cracking it. A really good
1061: conventional cipher might possibly be harder to crack than even a
1062: "military grade" RSA key. The attraction of public key cryptography
1063: is not because it is intrinsically stronger than a conventional
1064: cipher-- its appeal is because it helps you manage keys more
1065: conveniently.
1066:
1067:
1068:
1069: Data Compression
1070: ----------------
1071:
1072: PGP normally compresses the plaintext before encrypting it. It's too
1073: late to compress it after it has been encrypted; encrypted data is
1074: incompressible. Data compression saves modem transmission time and
1075: disk space and more importantly strengthens cryptographic security.
1076: Most cryptanalysis techniques exploit redundancies found in the
1077: plaintext to crack the cipher. Data compression reduces this
1078: redundancy in the plaintext, thereby greatly enhancing resistance to
1079: cryptanalysis. It takes extra time to compress the plaintext, but
1080: from a security point of view it seems worth it, at least in my
1081: cautious opinion.
1082:
1083: Files that are too short to compress or just don't compress well are
1084: not compressed by PGP.
1085:
1086: If you prefer, you can use PKZIP to compress the plaintext before
1087: encrypting it. PKZIP is a widely-available and effective MSDOS
1088: shareware compression utility from PKWare, Inc. Or you can use ZIP,
1089: a PKZIP-compatible freeware compression utility on Unix and other
1090: systems, available from Jean-Loup Gailly. There is some advantage in
1091: using PKZIP or ZIP in certain cases, because unlike PGP's built-in
1092: compression algorithm, PKZIP and ZIP have the nice feature of
1093: compressing multiple files into a single compressed file, which is
1094: reconstituted again into separate files when decompressed. PGP will
1095: not try to compress a plaintext file that has already been
1096: compressed. After decrypting, the recipient can decompress the
1097: plaintext with PKUNZIP. If the decrypted plaintext is a PKZIP
1098: compressed file, PGP automatically recognizes this and advises the
1099: recipient that the decrypted plaintext appears to be a PKZIP file.
1100:
1101: For the technically curious readers, the current version of PGP uses
1102: the freeware ZIP compression routines written by Jean-loup Gailly,
1103: Mark Adler, and Richard B. Wales. This ZIP software uses
1104: functionally-equivalent compression algorithms as those used by
1105: PKWare's new PKZIP 2.0. This ZIP compression software was selected
1106: for PGP mainly because of its free portable C source code
1107: availability, and because it has a really good compression ratio, and
1108: because it's fast.
1109:
1110:
1111:
1112: Message Digests and Digital Signatures
1113: --------------------------------------
1114:
1115: To create a digital signature, PGP encrypts with your secret key.
1116: But PGP doesn't actually encrypt your entire message with your secret
1117: key-- that would take too long. Instead, PGP encrypts a "message
1118: digest".
1119:
1120: The message digest is a compact (128 bit) "distillate" of your
1121: message, similar in concept to a checksum. You can also think of it
1122: as a "fingerprint" of the message. The message digest "represents"
1123: your message, such that if the message were altered in any way, a
1124: different message digest would be computed from it. This makes it
1125: possible to detect any changes made to the message by a forger. A
1126: message digest is computed using a cryptographically strong one-way
1127: hash function of the message. It would be computationally infeasible
1128: for an attacker to devise a substitute message that would produce an
1129: identical message digest. In that respect, a message digest is much
1130: better than a checksum, because it is easy to devise a different
1131: message that would produce the same checksum. But like a checksum,
1132: you can't derive the original message from its message digest.
1133:
1134: A message digest alone is not enough to authenticate a message. The
1135: message digest algorithm is publicly known, and does not require
1136: knowledge of any secret keys to calculate. If all we did was attach
1137: a message digest to a message, then a forger could alter a message
1138: and simply attach a new message digest calculated from the new
1139: altered message. To provide real authentication, the sender has to
1140: encrypt (sign) the message digest with his secret key.
1141:
1142: A message digest is calculated from the message by the sender. The
1143: sender's secret key is used to encrypt the message digest and an
1144: electronic timestamp, forming a digital signature, or signature
1145: certificate. The sender sends the digital signature along with the
1146: message. The receiver receives the message and the digital
1147: signature, and recovers the original message digest from the digital
1148: signature by decrypting it with the sender's public key. The
1149: receiver computes a new message digest from the message, and checks
1150: to see if it matches the one recovered from the digital signature. If
1151: it matches, then that proves the message was not altered, and it came
1152: from the sender who owns the public key used to check the signature.
1153:
1154: A potential forger would have to either produce an altered message
1155: that produces an identical message digest (which is infeasible), or
1156: he would have to create a new digital signature from a different
1157: message digest (also infeasible, without knowing the true sender's
1158: secret key).
1159:
1160: Digital signatures prove who sent the message, and that the message
1161: was not altered either by error or design. It also provides
1162: non-repudiation, which means the sender cannot easily disavow his
1163: signature on the message.
1164:
1165: Using message digests to form digital signatures has other advantages
1166: besides being faster than directly signing the entire actual message
1167: with the secret key. Using message digests allows signatures to be
1168: of a standard small fixed size, regardless of the size of the actual
1169: message. It also allows the software to check the message integrity
1170: automatically, in a manner similar to using checksums. And it allows
1171: signatures to be stored separately from messages, perhaps even in a
1172: public archive, without revealing sensitive information about the
1173: actual messages, because no one can derive any message content from a
1174: message digest.
1175:
1176: The message digest algorithm used here is the MD5 Message Digest
1177: Algorithm, placed in the public domain by RSA Data Security, Inc.
1178: MD5's designer, Ronald Rivest, writes this about MD5:
1179:
1180: "It is conjectured that the difficulty of coming up with two messages
1181: having the same message digest is on the order of 2^64 operations,
1182: and that the difficulty of coming up with any message having a given
1183: message digest is on the order of 2^128 operations. The MD5
1184: algorithm has been carefully scrutinized for weaknesses. It is,
1185: however, a relatively new algorithm and further security analysis is
1186: of course justified, as is the case with any new proposal of this
1187: sort. The level of security provided by MD5 should be sufficient for
1188: implementing very high security hybrid digital signature schemes
1189: based on MD5 and the RSA public-key cryptosystem."
1190:
1191:
1192:
1193: Compatibility with Previous Versions of PGP
1194: ===========================================
1195:
1196: I'm sorry, this version of PGP is not compatible with PGP version
1197: 1.0. If you have keys generated with version 1.0, you will have to
1198: generate new keys to use with this version. This version of PGP uses
1199: all new algorithms for conventional cryptography, compression, and
1200: message digests, as well as using a much better approach to key
1201: management. There were just too many changes to make it compatible
1202: with the old format messages, signatures, and keys. Perhaps we could
1203: have provided a special conversion utility to convert old keys into
1204: new keys, but we were all tired and wanted to get the new release out
1205: the door. Besides, converting the old keys into new keys would
1206: probably create more problems than it would solve, because we have
1207: changed to a new recommended uniform style for the user ID that
1208: includes the full name and E-mail address in a particular syntax.
1209:
1210: We made some effort to design the internal data structures of this
1211: version of PGP to be adaptable to future changes, so that hopefully
1212: you will not be required to discard and regenerate your keys in future
1213: versions.
1214:
1215:
1216: Vulnerabilities
1217: ===============
1218:
1219: No data security system is impenetrable. PGP can be circumvented in
1220: a variety of ways. In any data security system, you have to ask
1221: yourself if the information you are trying to protect is more
1222: valuable to your attacker than the cost of the attack. This should
1223: lead you to protecting yourself from the cheapest attacks, while not
1224: worrying about the more expensive attacks.
1225:
1226: Some of the discussion that follows may seem unduly paranoid, but
1227: such an attitude is appropriate for a reasonable discussion of
1228: vulnerability issues.
1229:
1230:
1231: Compromised Pass Phrase and Secret Key
1232: --------------------------------------
1233:
1234: Probably the simplest attack is if you leave your pass phrase for
1235: your secret key written down somewhere. If someone gets it and also
1236: gets your secret key file, they can read your messages and make
1237: signatures in your name.
1238:
1239: Don't use obvious passwords that can be easily guessed, such as the
1240: names of your kids or spouse. If you make your pass phrase a single
1241: word, it can be easily guessed by having a computer try all the words
1242: in the dictionary until it finds your password. That's why a pass
1243: phrase is so much better than a password. A more sophisticated
1244: attacker may have his computer scan a book of famous quotations to
1245: find your pass phrase. An easy to remember but hard to guess pass
1246: phrase can be easily constructed by some creatively nonsensical
1247: sayings or very obscure literary quotes.
1248:
1249: For further details, see the section "How to Protect Secret Keys from
1250: Disclosure" in the Essential Topics volume of the PGP User's Guide.
1251:
1252:
1253: Public Key Tampering
1254: --------------------
1255:
1256: A major vulnerability exists if public keys are tampered with. This
1257: may be the most crucially important vulnerability of a public key
1258: cryptosystem, in part because most novices don't immediately
1259: recognize it. The importance of this vulnerability, and appropriate
1260: hygienic countermeasures, are detailed in the section "How to Protect
1261: Public Keys from Tampering" in the Essential Topics volume.
1262:
1263: To summarize: When you use someone's public key, make certain it has
1264: not been tampered with. A new public key from someone else should be
1265: trusted only if you got it directly from its owner, or if it has been
1266: signed by someone you trust. Make sure no one else can tamper with
1267: your own public key ring. Maintain physical control of both your
1268: public key ring and your secret key ring, preferably on your own
1269: personal computer rather than on a remote timesharing system. Keep a
1270: backup copy of both key rings.
1271:
1272:
1273: "Not Quite Deleted" Files
1274: -------------------------
1275:
1276: Another potential security problem is caused by how most operating
1277: systems delete files. When you encrypt a file and then delete the
1278: original plaintext file, the operating system doesn't actually
1279: physically erase the data. It merely marks those disk blocks as
1280: deleted, allowing the space to be reused later. It's sort of like
1281: discarding sensitive paper documents in the paper recycling bin
1282: instead of the paper shredder. The disk blocks still contain the
1283: original sensitive data you wanted to erase, and will probably
1284: eventually be overwritten by new data at some point in the future.
1285: If an attacker reads these deleted disk blocks soon after they have
1286: been deallocated, he could recover your plaintext.
1287:
1288: In fact this could even happen accidentally, if for some reason
1289: something went wrong with the disk and some files were accidentally
1290: deleted or corrupted. A disk recovery program may be run to recover
1291: the damaged files, but this often means some previously deleted files
1292: are resurrected along with everything else. Your confidential files
1293: that you thought were gone forever could then reappear and be
1294: inspected by whomever is attempting to recover your damaged disk.
1295: Even while you are creating the original message with a word
1296: processor or text editor, the editor may be creating multiple
1297: temporary copies of your text on the disk, just because of its
1298: internal workings. These temporary copies of your text are deleted
1299: by the word processor when it's done, but these sensitive fragments
1300: are still on your disk somewhere.
1301:
1302: Let me tell you a true horror story. I had a friend, married with
1303: young children, who once had a brief and not very serious affair.
1304: She wrote a letter to her lover on her word processor, and deleted
1305: the letter after she sent it. Later, after the affair was over, the
1306: floppy disk got damaged somehow and she had to recover it because it
1307: contained other important documents. She asked her husband to
1308: salvage the disk, which seemed perfectly safe because she knew she
1309: had deleted the incriminating letter. Her husband ran a commercial
1310: disk recovery software package to salvage the files. It recovered
1311: the files alright, including the deleted letter. He read it, which
1312: set off a tragic chain of events.
1313:
1314: The only way to prevent the plaintext from reappearing is to somehow
1315: cause the deleted plaintext files to be overwritten. Unless you know
1316: for sure that all the deleted disk blocks will soon be reused, you
1317: must take positive steps to overwrite the plaintext file, and also
1318: any fragments of it on the disk left by your word processor. You can
1319: overwrite the original plaintext file after encryption by using the
1320: PGP -w (wipe) option. You can take care of any fragments of the
1321: plaintext left on the disk by using any of the disk utilities
1322: available that can overwrite all of the unused blocks on a disk. For
1323: example, the Norton Utilities for MSDOS can do this.
1324:
1325:
1326: Viruses and Trojan Horses
1327: -------------------------
1328:
1329: Another attack could involve a specially-tailored hostile computer
1330: virus or worm that might infect PGP or your operating system. This
1331: hypothetical virus could be designed to capture your pass phrase or
1332: secret key or deciphered messages, and covertly write the captured
1333: information to a file or send it through a network to the virus's
1334: owner. Or it might alter PGP's behavior so that signatures are not
1335: properly checked. This attack is cheaper than cryptanalytic attacks.
1336:
1337: Defending against this falls under the category of defending against
1338: viral infection generally. There are some moderately capable
1339: anti-viral products commercially available, and there are hygienic
1340: procedures to follow that can greatly reduce the chances of viral
1341: infection. A complete treatment of anti-viral and anti-worm
1342: countermeasures is beyond the scope of this document. PGP has no
1343: defenses against viruses, and assumes your own personal computer is a
1344: trustworthy execution environment. If such a virus or worm actually
1345: appeared, hopefully word would soon get around warning everyone.
1346:
1347: Another similar attack involves someone creating a clever imitation
1348: of PGP that behaves like PGP in most respects, but doesn't work the
1349: way it's supposed to. For example, it might be deliberately crippled
1350: to not check signatures properly, allowing bogus key certificates to
1351: be accepted. This "Trojan horse" version of PGP is not hard for an
1352: attacker to create, because PGP source code is widely available, so
1353: anyone could modify the source code and produce a lobotomized zombie
1354: imitation PGP that looks real but does the bidding of its diabolical
1355: master. This Trojan horse version of PGP could then be widely
1356: circulated, claiming to be from me. How insidious.
1357:
1358: You should make an effort to get your copy of PGP from a reliable
1359: source, whatever that means. Or perhaps from more than one
1360: independent source, and compare them with a file comparison utility.
1361:
1362: There are other ways to check PGP for tampering, using digital
1363: signatures. If someone you trust signs the executable version of
1364: PGP, vouching for the fact that it has not been infected or tampered
1365: with, you can be reasonably sure that you have a good copy. You
1366: could use an earlier trusted version of PGP to check the signature on
1367: a later suspect version of PGP. But this will not help at all if
1368: your operating system is infected, nor will it detect if your
1369: original copy of PGP.EXE has been maliciously altered in such a way
1370: as to compromise its own ability to check signatures. This test also
1371: assumes that you have a good trusted copy of the public key that you
1372: use to check the signature on the PGP executable.
1373:
1374:
1375: Physical Security Breach
1376: ------------------------
1377:
1378: A physical security breach may allow someone to physically acquire
1379: your plaintext files or printed messages. A determined opponent
1380: might accomplish this through burglary, trash-picking, unreasonable
1381: search and seizure, or bribery, blackmail or infiltration of your
1382: staff. Some of these attacks may be especially feasible against
1383: grassroots political organizations that depend on a largely volunteer
1384: staff. It has been widely reported in the press that the FBI's
1385: COINTELPRO program used burglary, infiltration, and illegal bugging
1386: against antiwar and civil rights groups. And look what happened at
1387: the Watergate Hotel.
1388:
1389: Don't be lulled into a false sense of security just because you have
1390: a cryptographic tool. Cryptographic techniques protect data only
1391: while it's encrypted-- direct physical security violations can still
1392: compromise plaintext data or written or spoken information.
1393:
1394: This kind of attack is cheaper than cryptanalytic attacks on PGP.
1395:
1396:
1397: Tempest Attacks
1398: ---------------
1399:
1400: Another kind of attack that has been used by well-equipped opponents
1401: involves the remote detection of the electromagnetic signals from
1402: your computer. This expensive and somewhat labor-intensive attack is
1403: probably still cheaper than direct cryptanalytic attacks. An
1404: appropriately instrumented van can park near your office and remotely
1405: pick up all of your keystrokes and messages displayed on your
1406: computer video screen. This would compromise all of your passwords,
1407: messages, etc. This attack can be thwarted by properly shielding all
1408: of your computer equipment and network cabling so that it does not
1409: emit these signals. This shielding technology is known as "Tempest",
1410: and is used by some Government agencies and defense contractors.
1411: There are hardware vendors who supply Tempest shielding commercially,
1412: although it may be subject to some kind of Government licensing. Now
1413: why do you suppose the Government would restrict access to Tempest
1414: shielding?
1415:
1416:
1417: Exposure on Multi-user Systems
1418: ------------------------------
1419:
1420: PGP was originally designed for a single-user MSDOS machine under
1421: your direct physical control. I run PGP at home on my own PC, and
1422: unless someone breaks into my house or monitors my electromagnetic
1423: emissions, they probably can't see my plaintext files or secret keys.
1424:
1425: But now PGP also runs on multi-user systems such as Unix and VAX/VMS.
1426: On multi-user systems, there are much greater risks of your plaintext
1427: or keys or passwords being exposed. The Unix system administrator or
1428: a clever intruder can read your plaintext files, or perhaps even use
1429: special software to covertly monitor your keystrokes or read what's
1430: on your screen. On a Unix system, any other user can read your
1431: environment information remotely by simply using the Unix "ps"
1432: command. Similar problems exist for MSDOS machines connected on a
1433: local area network. The actual security risk is dependent on your
1434: particular situation. Some multi-user systems may be safe because
1435: all the users are trusted, or because they have system security
1436: measures that are safe enough to withstand the attacks available to
1437: the intruders, or because there just aren't any sufficiently
1438: interested intruders. Some Unix systems are safe because they are
1439: only used by one user-- there are even some notebook computers
1440: running Unix. It would be unreasonable to simply exclude PGP from
1441: running on all Unix systems.
1442:
1443: PGP is not designed to protect your data while it is in plaintext
1444: form on a compromised system. Nor can it prevent an intruder from
1445: using sophisticated measures to read your secret key while it is
1446: being used. You will just have to recognize these risks on
1447: multi-user systems, and adjust your expectations and behavior
1448: accordingly. Perhaps your situation is such that you should consider
1449: only running PGP on an isolated single-user system under your direct
1450: physical control. That's what I do, and that's what I recommend.
1451:
1452:
1453: Traffic Analysis
1454: ----------------
1455:
1456: Even if the attacker cannot read the contents of your encrypted
1457: messages, he may be able to infer at least some useful information by
1458: observing where the messages come from and where they are going, the
1459: size of the messages, and the time of day the messages are sent.
1460: This is analogous to the attacker looking at your long distance phone
1461: bill to see who you called and when and for how long, even though the
1462: actual content of your calls is unknown to the attacker. This is
1463: called traffic analysis. PGP alone does not protect against traffic
1464: analysis. Solving this problem would require specialized
1465: communication protocols designed to reduce exposure to traffic
1466: analysis in your communication environment, possibly with some
1467: cryptographic assistance.
1468:
1469:
1470: Cryptanalysis
1471: -------------
1472:
1473: An expensive and formidable cryptanalytic attack could possibly be
1474: mounted by someone with vast supercomputer resources, such as a
1475: Government intelligence agency. They might crack your RSA key by
1476: using some new secret factoring breakthrough. Perhaps so, but it is
1477: noteworthy that the US Government trusts the RSA algorithm enough in
1478: some cases to use it to protect its own nuclear weapons, according to
1479: Ron Rivest. And civilian academia has been intensively attacking it
1480: without success since 1978.
1481:
1482: Perhaps the Government has some classified methods of cracking the
1483: IDEA(tm) conventional encryption algorithm used in PGP. This is
1484: every cryptographer's worst nightmare. There can be no absolute
1485: security guarantees in practical cryptographic implementations.
1486:
1487: Still, some optimism seems justified. The IDEA algorithm's designers
1488: are among the best cryptographers in Europe. It has had extensive
1489: security analysis and peer review from some of the best cryptanalysts
1490: in the unclassified world. It appears to have some design advantages
1491: over the DES in withstanding differential cryptanalysis, which has
1492: been used to crack the DES.
1493:
1494: Besides, even if this algorithm has some subtle unknown weaknesses,
1495: PGP compresses the plaintext before encryption, which should greatly
1496: reduce those weaknesses. The computational workload to crack it is
1497: likely to be much more expensive than the value of the message.
1498:
1499: If your situation justifies worrying about very formidable attacks of
1500: this caliber, then perhaps you should contact a data security
1501: consultant for some customized data security approaches tailored to
1502: your special needs. Boulder Software Engineering, whose address and
1503: phone are given at the end of this document, can provide such
1504: services.
1505:
1506:
1507: In summary, without good cryptographic protection of your data
1508: communications, it may have been practically effortless and perhaps
1509: even routine for an opponent to intercept your messages, especially
1510: those sent through a modem or E-mail system. If you use PGP and
1511: follow reasonable precautions, the attacker will have to expend far
1512: more effort and expense to violate your privacy.
1513:
1514: If you protect yourself against the simplest attacks, and you feel
1515: confident that your privacy is not going to be violated by a
1516: determined and highly resourceful attacker, then you'll probably be
1517: safe using PGP. PGP gives you Pretty Good Privacy.
1518:
1519:
1520: Legal Issues
1521: ============
1522:
1523:
1524: Trademarks, Copyrights, and Warranties
1525: --------------------------------------
1526:
1527: "Pretty Good Privacy", "Phil's Pretty Good Software", and the "Pretty
1528: Good" label for computer software and hardware products are all
1529: trademarks of Philip Zimmermann and Phil's Pretty Good Software. PGP
1530: is (c) Copyright Philip R. Zimmermann, 1990-1992. Philip Zimmermann
1531: also holds the copyright for the PGP User's Manual, as well as any
1532: foreign language translations of the manual or the software.
1533:
1534: The author assumes no liability for damages resulting from the use of
1535: this software, even if the damage results from defects in this
1536: software, and makes no representations concerning the merchantability
1537: of this software or its suitability for any specific purpose. It is
1538: provided "as is" without express or implied warranty of any kind.
1539:
1540:
1541: Patent Rights on the Algorithms
1542: -------------------------------
1543:
1544: When I first released PGP, I half-expected to encounter some form of
1545: legal harassment from the Government. Indeed, there has been legal
1546: harrassment, but it hasn't come from the Government-- it has come
1547: from a private corporation.
1548:
1549: The RSA public key cryptosystem was developed at MIT with Federal
1550: funding from grants from the National Science Foundation and the
1551: Navy. It is patented by MIT (U.S. patent #4,405,829, issued 20 Sep
1552: 1983). A company in California called Public Key Partners (PKP) holds
1553: the exclusive commercial license to sell and sub-license the RSA
1554: public key cryptosystem. The author of this software implementation
1555: of the RSA algorithm is providing this implementation for educational
1556: use only. Licensing this algorithm from PKP is the responsibility of
1557: you, the user, not Philip Zimmermann, the author of this software
1558: implementation. The author assumes no liability for any patent
1559: infringement that may result from the unlicensed use by the user of
1560: the underlying RSA algorithm used in this software. Foreign users
1561: should note that the RSA patent does not apply outside the US, and
1562: there is no RSA patent in any other country. Federal agencies may
1563: use it because the Government paid for the development of RSA.
1564:
1565: Unfortunately, PKP is not offering any licensing of their RSA patent
1566: to end users of PGP. This essentially makes PGP contraband in the
1567: USA. Jim Bidzos, president of PKP, threatened to take legal action
1568: against me unless I stop distributing PGP, until they can devise a
1569: licensing scheme for it. I agreed to this, since PGP is already in
1570: wide circulation and waiting a while for a licensing arrangement from
1571: PKP seemed reasonable. Mr. Bidzos assured me (he even used the word
1572: "promise") several times since the initial 5 June 91 release of PGP
1573: that they were working on a licensing scheme for PGP. Apparently, my
1574: release of PGP helped provide the impetus for them to offer some sort
1575: of a freeware-style license for noncommercial use of the RSA
1576: algorithm. However, in December 1991 Mr. Bidzos said he had no plans
1577: to ever license the RSA algorithm to PGP users, and denied ever
1578: implying that he would. Meanwhile, I have continued to refrain from
1579: distributing PGP, although I've recently updated the PGP User's
1580: Guide, and have provided a lot of design guidance for these new
1581: revisions of PGP.
1582:
1583: I wrote my PGP software from scratch, with my own implementation of
1584: the RSA algorithm. I didn't steal any software from PKP. Before
1585: publishing PGP, I got a formal written legal opinion from a patent
1586: attorney with extensive experience in software patents. I'm
1587: convinced that publishing PGP the way I did does not violate patent
1588: law. However, it is a well known axiom in the US legal system that
1589: regardless of the law, he with the most money and lawyers prevails,
1590: if not by actually winning then by crushing the little guy with legal
1591: expenses.
1592:
1593: Not only did PKP acquire the exclusive patent rights for the RSA
1594: cryptosystem, which was developed with your tax dollars, but they
1595: also somehow acquired the exclusive rights to three other patents
1596: covering rival public key schemes invented by others, also developed
1597: with your tax dollars. This essentially gives one company a legal
1598: lock in the USA on nearly all practical public key cryptosystems.
1599: They even appear to be claiming patent rights on the very concept of
1600: public key cryptography, regardless of what clever new original
1601: algorithms are independently invented by others. And you thought
1602: patent law was designed to encourage innovation! PKP does not
1603: actually develop any software-- they don't even have an engineering
1604: department-- they are essentially a litigation company.
1605:
1606: Public key cryptography is destined to become a crucial technology in
1607: the protection of our civil liberties and privacy in our increasingly
1608: connected society. Why should the Government try to limit access to
1609: this key technology, when a single monopoly can do it for them?
1610:
1611: It appears certain that there will be future releases of PGP,
1612: regardless of the outcome of licensing problems with Public Key
1613: Partners. If PKP does not license PGP, then future releases of PGP
1614: might not come from me. There are countless fans of PGP outside the
1615: US, and many of them are software engineers who want to improve PGP
1616: and promote it, regardless of what I do. The second release of PGP
1617: was a joint effort of an international team of software engineers,
1618: implementing enhancements to the original PGP with design guidance
1619: from me. It is being released by Peter Gutmann in New Zealand, out
1620: of reach of US patent law. It is being released only in Europe and
1621: New Zealand, but it may spontaneously spread to the USA without any
1622: help from me or the PGP development team.
1623:
1624: The IDEA(tm) conventional block cipher used by PGP is covered by a
1625: patent in Europe, held by ETH and a Swiss company called Ascom-Tech
1626: AG. The patent number is PCT/CH91/00117. International patents are
1627: pending. IDEA(tm) is a trademark of Ascom-Tech AG. There is no
1628: license fee required for noncommercial use. Commercial users may
1629: obtain licensing details from Dieter Profos, Ascom Tech AG, Solothurn
1630: Lab, Postfach 151, 4502 Solothurn, Switzerland, Tel +41 65 242885,
1631: Fax +41 65 235761.
1632:
1633: The ZIP compression routines in PGP come from freeware source code,
1634: with the author's permission. I'm not aware of any patents on the
1635: ZIP algorithm, but you're welcome to check into that question
1636: yourself. If there are any obscure patent claims that apply to ZIP,
1637: then sorry, you'll have to take care of the patent licensing, not me.
1638:
1639: All this patent stuff reminds me of a Peanuts cartoon I saw in the
1640: newspaper where Lucy showed Charlie Brown a fallen autumn leaf and
1641: said "This is the first leaf to fall this year." Charlie Brown said,
1642: "How do you know that? Leaves have been falling for weeks." Lucy
1643: replied, "I had this one notarized."
1644:
1645:
1646: Licensing and Distribution
1647: --------------------------
1648:
1649: In the USA PKP controls, through US patent law, the licensing of the
1650: RSA algorithm. But I have no objection to anyone freely using or
1651: distributing my PGP software, without payment of fees to me. You must
1652: keep the copyright notices on PGP and keep this documentation with
1653: it. However, if you live in the USA, this may not satisfy any legal
1654: obligations you may have to PKP for using the RSA algorithm as
1655: mentioned above.
1656:
1657: In fact, if you live in the USA, and you are not a Federal agency,
1658: you shouldn't actually run PGP on your computer, because Public Key
1659: Partners wants to forbid you from running my software. PGP is
1660: contraband.
1661:
1662: Of course, I can't give any assurances, but my guess is that it seems
1663: unlikely that PKP would waste their time pursuing PGP end users for
1664: patent infringement. There are just too many PGP users to go after.
1665: And why would they single you out? But I certainly wouldn't want to
1666: imply that you do anything improper-- if PKP were offering licenses,
1667: I would urge you to obtain one. But since they aren't, well, I guess
1668: you should just refrain from using PGP if you live in the USA.
1669:
1670: PGP is not shareware, it's freeware. Forbidden freeware. Published
1671: as a community service. If I sold PGP for money, then I would get
1672: sued by PKP for using their RSA algorithm. More importantly, giving
1673: PGP away for free will encourage far more people to use it, which
1674: hopefully will have a greater social impact. This could lead to
1675: widespread awareness and use of the RSA public key cryptosystem,
1676: which will probably make more money for PKP in the long run. If only
1677: they could see that.
1678:
1679: All the source code for PGP is available for free under the "Copyleft"
1680: General Public License from the Free Software Foundation (FSF). A
1681: copy of the FSF General Public License is included in the source
1682: release package of PGP.
1683:
1684: Regardless of and perhaps contrary to some provisions of the FSF
1685: General Public License, the following terms apply:
1686:
1687: 1) Written discussions of PGP in magazines or books may include
1688: fragments of PGP source code and documentation, without
1689: restrictions.
1690:
1691: 2) Although the FSF General Public License allows non-proprietary
1692: derivative products, it prohibits proprietary derivative products.
1693: Despite this, I may grant you a special license if you want to
1694: derive a proprietary commercial product from some of PGP's parts.
1695: There may or may not be a fee depending on what kind of a deal you
1696: plan to pursue with PKP. Retaining my copyright notice and
1697: attribution might suffice in some cases. Give me a call and we'll
1698: discuss it. I'm real easy to please.
1699:
1700: Feel free to disseminate the complete PGP release package as widely
1701: as possible. Give it to all your friends. If you have access to any
1702: electronic Bulletin Boards Systems, please upload the complete PGP
1703: executable object release package to as many BBS's as possible. You
1704: may disseminate the PGP source release package too, if you've got
1705: it. The PGP version 2.0 executable object release package for MSDOS
1706: contains the PGP executable software, documentation, sample key rings
1707: including my own public key, and signatures for the software and this
1708: manual, all in one PKZIP compressed file called PGP20.ZIP. The PGP
1709: source release package for MSDOS contains all the C source files in
1710: one PKZIP compressed file called PGP20SRC.ZIP.
1711:
1712: You may obtain free copies or updates to PGP from thousands of BBS's
1713: worldwide or from other public sources such as Internet FTP sites.
1714: Don't ask me for a copy directly from me, since I'd rather avoid
1715: further legal problems with PKP at this time. I might be able to
1716: tell you where you can get it, however.
1717:
1718: After all this work I have to admit I wouldn't mind getting some fan
1719: mail for PGP, to gauge its popularity. Let me know what you think
1720: about it and how many of your friends use it. Bug reports and
1721: suggestions for enhancing PGP are welcome, too. Perhaps a future PGP
1722: release will reflect your suggestions.
1723:
1724: This project has not been funded and the project has nearly eaten me
1725: alive. This means you can't count on a reply to your mail, unless
1726: you only need a short written reply and you include a stamped
1727: self-addressed envelope. But I do reply to E-mail. Please keep it in
1728: English, as my foreign language skills are weak. If you call and I'm
1729: not in, it's best to just try again later. I usually don't return
1730: long distance phone calls, unless you leave a message that I can call
1731: you collect. If you need any significant amount of my time, I am
1732: available on a paid consulting basis, and I do return those calls.
1733:
1734: The most inconvenient mail I get is for some well-intentioned person
1735: to send me a few dollars asking me for a copy of PGP. I can't send
1736: it to them because of the legal threats from PKP (or worse--
1737: sometimes these requests are from foreign countries, and I would be
1738: risking violating cryptographic export control laws). Even if there
1739: were no legal hassles involved in sending PGP to them, they usually
1740: don't send enough money to make it worth my time ($50 might be worth
1741: my time if I were actually selling this stuff). I'm just not set up
1742: as a low cost low volume mail order business. I can't just ignore
1743: the request and keep the money, because they probably regard the
1744: money as a fee for me to fulfill their request. If I return the
1745: money, I might have to get in my car and drive down to the post
1746: office and buy some postage stamps, because these requests rarely
1747: include a stamped self-addressed envelope. And I have to take the
1748: time to write a polite reply that I can't do it. If I postpone the
1749: reply and set the letter down on my desk, it might be buried within
1750: minutes and won't see the light of day again for months. Multiply
1751: these minor inconveniences by the number of requests I get, and you
1752: can see the problem. Isn't it enough that the software is free? It
1753: would be nicer if people could try to get PGP from any of the myriad
1754: other sources. If you don't have a modem, ask a friend to get it for
1755: you. If you can't find it yourself, I don't mind answering a quick
1756: phone call.
1757:
1758: If anyone wants to volunteer to improve PGP, please let me know. It
1759: could certainly use some more work. Some features were deferred to
1760: get it out the door. A number of PGP users have since donated their
1761: time to port PGP to Unix on Sun SPARCstations, to Ultrix, to VAX/VMS,
1762: to OS/2, to the Amiga, and to the Atari ST. Perhaps you can help
1763: port it to some new environments, such as the Apple Macintosh, MS
1764: Windows, X windows, or XVT. But please let me know if you plan to
1765: port PGP, to avoid duplication of effort, and to avoid starting with
1766: an obsolete version of the source code.
1767:
1768: Future versions of PGP may have to change the data formats for
1769: messages, signatures, keys and key rings, in order to provide
1770: important new features. This may cause backward compatibility
1771: problems with this version of PGP. Future releases may provide
1772: conversion utilities to convert old keys, but you may have to dispose
1773: of old messages created with the old PGP.
1774:
1775:
1776: Export Controls
1777: ---------------
1778:
1779: The Government has made it illegal in many cases to export good
1780: cryptographic technology, and that may include PGP. They regard this
1781: kind of software as munitions. This is determined by volatile State
1782: Department policies, not fixed laws. I will not export this software
1783: out of the US or Canada in cases when it is illegal to do so under US
1784: State Department policies, and I assume no responsibility for other
1785: people exporting it on their own.
1786:
1787: If you live outside the US or Canada, I advise you not to violate US
1788: State Department policies by getting PGP from a US source. Since
1789: thousands of domestic users got it after its initial publication, it
1790: somehow leaked out of the US and spread itself widely abroad, like
1791: dandelion seeds blowing in the wind. If PGP has already found its
1792: way into your country, then I don't think you're violating US export
1793: law if you pick it up from a source outside of the US. And there are
1794: no import restrictions on bringing cryptographic technology into the
1795: USA.
1796:
1797: Some foreign governments impose serious penalties on anyone inside
1798: their country using encrypted communications. In some countries they
1799: might even shoot you for that.
1800:
1801:
1802:
1803: Recommended Introductory Readings
1804: =================================
1805:
1806: 1) Dorothy Denning, "Cryptography and Data Security", Addison-Wesley,
1807: Reading, MA 1982
1808: 2) Dorothy Denning, "Protecting Public Keys and Signature Keys",
1809: IEEE Computer, Feb 1983
1810: 3) Martin E. Hellman, "The Mathematics of Public-Key Cryptography,"
1811: Scientific American, August 1979
1812: 4) Philip Zimmermann, "A Proposed Standard Format for RSA
1813: Cryptosystems", IEEE Computer, Sep 1986
1814:
1815: Other Readings
1816: ==============
1817:
1818: 5) Ronald Rivest, "The MD5 Message Digest Algorithm", MIT Laboratory
1819: for Computer Science, 1991
1820: 6) Xuejia Lai, "On the Design and Security of Block Ciphers",
1821: Institute for Signal and Information Processing, ETH-Zentrum,
1822: Zurich, Switzerland, 1992
1823: 7) Xuejia Lai, James L. Massey, Sean Murphy, "Markov Ciphers and
1824: Differential Cryptanalysis", Advances in Cryptology- EUROCRYPT'91
1825:
1826:
1827:
1828: To Contact the Author
1829: =====================
1830:
1831: Philip Zimmermann may be reached at:
1832:
1833: Boulder Software Engineering
1834: 3021 Eleventh Street
1835: Boulder, Colorado 80304 USA
1836: Phone 303-541-0140 (voice or FAX) (10:00am - 7:00pm Mountain Time)
1837: Internet: [email protected]
1838:
1839:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.