|
|
1.1.1.4 ! root 1: ! 2: Phil's Pretty Good Software ! 3: Presents ! 4: ! 5: ======= ! 6: PGP(tm) ! 7: ======= ! 8: ! 9: Pretty Good(tm) Privacy ! 10: Public Key Encryption for the Masses ! 11: ! 12: ! 13: ------------------------- ! 14: PGP(tm) User's Guide ! 15: Volume II: Special Topics ! 16: ------------------------- ! 17: by Philip Zimmermann ! 18: Revised 22 May 94 ! 19: ! 20: ! 21: PGP Version 2.6 - 22 May 94 ! 22: Software by ! 23: Philip Zimmermann, and many others. ! 24: ! 25: ! 26: ! 27: ! 28: Synopsis: PGP(tm) uses public-key encryption to protect E-mail and ! 29: data files. Communicate securely with people you've never met, with ! 30: no secure channels needed for prior exchange of keys. PGP is well ! 31: featured and fast, with sophisticated key management, digital ! 32: signatures, data compression, and good ergonomic design. ! 33: ! 34: ! 35: Software and documentation (c) Copyright 1990-1994 Philip Zimmermann. ! 36: All rights reserved. For information on PGP licensing, distribution, ! 37: copyrights, patents, trademarks, liability limitations, and export ! 38: controls, see the "Legal Issues" section. Distributed by the ! 39: Massachusetts Institute of Technology. ! 40: ! 41: ! 42: Contents ! 43: ======== ! 44: ! 45: Quick Overview ! 46: Special Topics ! 47: Selecting Keys via Key ID ! 48: Separating Signatures from Messages ! 49: Decrypting the Message and Leaving the Signature on it ! 50: Sending ASCII Text Files Across Different Machine Environments ! 51: Leaving No Traces of Plaintext on the Disk ! 52: Displaying Decrypted Plaintext on Your Screen ! 53: Making a Message For Her Eyes Only ! 54: Preserving the Original Plaintext Filename ! 55: Editing Your User ID or Pass Phrase ! 56: Editing the Trust Parameters for a Public Key ! 57: Checking If Everything is OK on Your Public Key Ring ! 58: Verifying a Public Key Over the Phone ! 59: Handling Large Public Keyrings ! 60: Using PGP as a Unix-style Filter ! 61: Suppressing Unnecessary Questions: BATCHMODE ! 62: Force "Yes" Answer to Confirmation Questions: FORCE ! 63: PGP Returns Exit Status to the Shell ! 64: Environmental Variable for Pass Phrase ! 65: Setting Configuration Parameters: CONFIG.TXT ! 66: TMP - Directory Pathname for Temporary Files ! 67: LANGUAGE - Foreign Language Selector ! 68: MYNAME - Default User ID for Making Signatures ! 69: TEXTMODE - Assuming Plaintext is a Text File ! 70: CHARSET - Specifies Local Character Set for Text Files ! 71: ARMOR - Enable ASCII Armor Output ! 72: ARMORLINES - Size of ASCII Armor Multipart Files ! 73: KEEPBINARY - Keep Binary Ciphertext Files After Decrypting ! 74: COMPRESS - Enable Compression ! 75: COMPLETES_NEEDED - Number of Completely Trusted Introducers Needed ! 76: MARGINALS_NEEDED - Number of Marginally Trusted Introducers Needed ! 77: CERT_DEPTH - How Deep May Introducers Be Nested ! 78: BAKRING - Filename for Backup Secret Keyring ! 79: PUBRING - Filename for Your Public Keyring ! 80: SECRING - Filename for Your Secret Keyring ! 81: RANDSEED - Filename for Random Number Seed ! 82: PAGER - Selects Shell Command to Display Plaintext Output ! 83: SHOWPASS - Echo Pass Phrase to User ! 84: TZFIX - Timezone Adjustment ! 85: CLEARSIG - Enable Signed Messages to be Encapsulated as Clear Text ! 86: VERBOSE - Quiet, Normal, or Verbose Messages ! 87: INTERACTIVE - Ask for Confirmation for Key Adds ! 88: NOMANUAL - Let PGP Generate Keys Without the Manual ! 89: A Peek Under the Hood ! 90: Random Numbers ! 91: PGP's Conventional Encryption Algorithm ! 92: Data Compression ! 93: Message Digests and Digital Signatures ! 94: Compatibility with Previous Versions of PGP ! 95: Vulnerabilities ! 96: Compromised Pass Phrase and Secret Key ! 97: Public Key Tampering ! 98: "Not Quite Deleted" Files ! 99: Viruses and Trojan Horses ! 100: Physical Security Breach ! 101: Tempest Attacks ! 102: Protecting Against Bogus Timestamps ! 103: Exposure on Multi-user Systems ! 104: Traffic Analysis ! 105: Cryptanalysis ! 106: Legal Issues ! 107: Trademarks, Copyrights, and Warranties ! 108: Patent Rights on the Algorithms ! 109: Licensing and Distribution ! 110: Export Controls ! 111: Philip Zimmermann's Legal Situation ! 112: Where to Get a Commercial Version of PGP ! 113: Reporting PGP Bugs ! 114: Computer-Related Political Groups ! 115: Recommended Readings ! 116: To Contact the Author ! 117: Appendix A: Where to Get PGP ! 118: ! 119: ! 120: Quick Overview ! 121: ============== ! 122: ! 123: Pretty Good(tm) Privacy (PGP), from Phil's Pretty Good Software, is a ! 124: high security cryptographic software application for MSDOS, Unix, ! 125: VAX/VMS, and other computers. PGP combines the convenience of the ! 126: Rivest-Shamir-Adleman (RSA) public key cryptosystem with the speed of ! 127: conventional cryptography, message digests for digital signatures, ! 128: data compression before encryption, good ergonomic design, and ! 129: sophisticated key management. ! 130: ! 131: This volume II of the PGP User's Guide covers advanced topics about ! 132: PGP that were not covered in the "PGP User's Guide, Volume I: ! 133: Essential Topics". You should first read the Essential Topics ! 134: volume, or this manual won't make much sense to you. Reading this ! 135: Special Topics volume is optional, except for the legal issues ! 136: section, which everyone should read. ! 137: ! 138: ! 139: ! 140: Special Topics ! 141: =============== ! 142: ! 143: ! 144: Selecting Keys via Key ID ! 145: ------------------------- ! 146: ! 147: In all commands that let the user type a user ID or fragment of a ! 148: user ID to select a key, the hexadecimal key ID may be used instead. ! 149: Just use the key ID, with a prefix of "0x", in place of the user ID. ! 150: For example: ! 151: ! 152: pgp -kv 0x67F7 ! 153: ! 154: This would display all keys that had 67F7 as part of their key IDs. ! 155: ! 156: This feature is particularly useful if you have two different keys ! 157: from the same person, with the same user ID. You can unambiguously ! 158: pick which key you want by specifying the key ID. ! 159: ! 160: ! 161: Separating Signatures from Messages ! 162: ----------------------------------- ! 163: ! 164: Normally, signature certificates are physically attached to the text ! 165: they sign. This makes it convenient in simple cases to check ! 166: signatures. It is desirable in some circumstances to have signature ! 167: certificates stored separately from the messages they sign. It is ! 168: possible to generate signature certificates that are detached from ! 169: the text they sign. To do this, combine the 'b' (break) option with ! 170: the 's' (sign) option. For example: ! 171: ! 172: pgp -sb letter.txt ! 173: ! 174: This example produces an isolated signature certificate in a file ! 175: called "letter.sig". The contents of letter.txt are not appended to ! 176: the signature certificate. ! 177: ! 178: After creating the signature certificate file (letter.sig in the ! 179: above example), send it along with the original text file to the ! 180: recipient. The recipient must have both files to check the signature ! 181: integrity. When the recipient attempts to process the signature ! 182: file, PGP notices that there is no text in the same file with the ! 183: signature and prompts the user for the filename of the text. Only ! 184: then can PGP properly check the signature integrity. If the ! 185: recipient knows in advance that the signature is detached from the ! 186: text file, she can specify both filenames on the command line: ! 187: ! 188: pgp letter.sig letter.txt ! 189: or: pgp letter letter.txt ! 190: ! 191: PGP will not have to prompt for the text file name in this case. ! 192: ! 193: A detached signature certificate is useful if you want to keep the ! 194: signature certificate in a separate certificate log. A detached ! 195: signature of an executable program is also useful for detecting a ! 196: subsequent virus infection. It is also useful if more than one party ! 197: must sign a document such as a legal contract, without nesting ! 198: signatures. Each person's signature is independent. ! 199: ! 200: If you receive a ciphertext file that has the signature certificate ! 201: glued to the message, you can still pry the signature certificate ! 202: away from the message during the decryption. You can do this with ! 203: the -b option during decrypt, like so: ! 204: ! 205: pgp -b letter ! 206: ! 207: This decrypts the letter.pgp file and if there is a signature in it, ! 208: PGP checks the signature and detaches it from the rest of the ! 209: message, storing it in the file letter.sig. ! 210: ! 211: ! 212: Decrypting the Message and Leaving the Signature on it ! 213: ------------------------------------------------------ ! 214: ! 215: Usually, you want PGP to completely unravel a ciphertext file, ! 216: decrypting it and checking the nested signature if there is one, ! 217: peeling away the layers until you are left with only the original ! 218: plaintext file. ! 219: ! 220: But sometimes you want to decrypt an encrypted file, and leave the ! 221: inner signature still attached, so that you are left with a decrypted ! 222: signed message. This may be useful if you want to send a copy of a ! 223: signed document to a third party, perhaps re-enciphering it. For ! 224: example, suppose you get a message signed by Charlie, encrypted to ! 225: you. You want to decrypt it, and, leaving Charlie's signature on it, ! 226: you want to send it to Alice, perhaps re-enciphering it with Alice's ! 227: public key. No problem. PGP can handle that. ! 228: ! 229: To simply decrypt a message and leave the signature on it intact, ! 230: type: ! 231: ! 232: pgp -d letter ! 233: ! 234: This decrypts letter.pgp, and if there is an inner signature, it is ! 235: left intact with the decrypted plaintext in the output file. ! 236: ! 237: Now you can archive it, or maybe re-encrypt it and send it to someone ! 238: else. ! 239: ! 240: ! 241: ! 242: Sending ASCII Text Files Across Different Machine Environments ! 243: -------------------------------------------------------------- ! 244: ! 245: You may use PGP to encrypt any kind of plaintext file, binary 8-bit ! 246: data or ASCII text. Probably the most common usage of PGP will be for ! 247: E-mail, when the plaintext is ASCII text. ! 248: ! 249: ASCII text is sometimes represented differently on different ! 250: machines. For example, on an MSDOS system, all lines of ASCII text ! 251: are terminated with a carriage return followed by a linefeed. On a ! 252: Unix system, all lines end with just a linefeed. On a Macintosh, all ! 253: lines end with just a carriage return. This is a sad fact of life. ! 254: ! 255: Normal unencrypted ASCII text messages are often automatically ! 256: translated to some common "canonical" form when they are transmitted ! 257: from one machine to another. Canonical text has a carriage return ! 258: and a linefeed at the end of each line of text. For example, the ! 259: popular KERMIT communication protocol can convert text to canonical ! 260: form when transmitting it to another system. This gets converted ! 261: back to local text line terminators by the receiving KERMIT. This ! 262: makes it easy to share text files across different systems. ! 263: ! 264: But encrypted text cannot be automatically converted by a ! 265: communication protocol, because the plaintext is hidden by ! 266: encipherment. To remedy this inconvenience, PGP lets you specify ! 267: that the plaintext should be treated as ASCII text (not binary data) ! 268: and should be converted to canonical text form before it gets ! 269: encrypted. At the receiving end, the decrypted plaintext is ! 270: automatically converted back to whatever text form is appropriate for ! 271: the local environment. ! 272: ! 273: To make PGP assume the plaintext is text that should be converted to ! 274: canonical text before encryption, just add the "t" option when ! 275: encrypting or signing a message, like so: ! 276: ! 277: pgp -et message.txt her_userid ! 278: ! 279: This mode is automatically turned off if PGP detects that the ! 280: plaintext file contains what it thinks is non-text binary data. ! 281: ! 282: For PGP users that use non-English 8-bit character sets, when PGP ! 283: converts text to canonical form, it may convert data from the local ! 284: character set into the LATIN1 (ISO 8859-1 Latin Alphabet 1) character ! 285: set, depending on the setting of the CHARSET parameter in the PGP ! 286: configuration file. LATIN1 is a superset of ASCII, with extra ! 287: characters added for many European languages. ! 288: ! 289: ! 290: ! 291: Leaving No Traces of Plaintext on the Disk ! 292: ------------------------------------------ ! 293: ! 294: After PGP makes a ciphertext file for you, you can have PGP ! 295: automatically overwrite the plaintext file and delete it, leaving no ! 296: trace of plaintext on the disk so that no one can recover it later ! 297: using a disk block scanning utility. This is useful if the plaintext ! 298: file contains sensitive information that you don't want to keep ! 299: around. ! 300: ! 301: To wipe out the plaintext file after producing the ciphertext file, ! 302: just add the "w" (wipe) option when encrypting or signing a message, ! 303: like so: ! 304: ! 305: pgp -esw message.txt her_userid ! 306: ! 307: This example creates the ciphertext file "message.pgp", and the ! 308: plaintext file "message.txt" is destroyed beyond recovery. ! 309: ! 310: Obviously, you should be careful with this option. Also note that ! 311: this will not wipe out any fragments of plaintext that your word ! 312: processor might have created on the disk while you were editing the ! 313: message before running PGP. Most word processors create backup ! 314: files, scratch files, or both. Also, it overwrites the file only ! 315: once, which is enough to thwart conventional disk recovery efforts, ! 316: but not enough to withstand a determined and sophisticated effort to ! 317: recover the faint magnetic traces of the data using special disk ! 318: recovery hardware. ! 319: ! 320: ! 321: ! 322: Displaying Decrypted Plaintext on Your Screen ! 323: --------------------------------------------- ! 324: ! 325: To view the decrypted plaintext output on your screen (like the ! 326: Unix-style "more" command), without writing it to a file, use the -m ! 327: (more) option while decrypting: ! 328: ! 329: pgp -m ciphertextfile ! 330: ! 331: This displays the decrypted plaintext display on your screen one ! 332: screenful at a time. ! 333: ! 334: ! 335: ! 336: Making a Message For Her Eyes Only ! 337: ---------------------------------- ! 338: ! 339: To specify that the recipient's decrypted plaintext will be shown ! 340: ONLY on her screen and will not be saved to disk, add the -m option: ! 341: ! 342: pgp -sem message.txt her_userid ! 343: ! 344: Later, when the recipient decrypts the ciphertext with her secret key ! 345: and pass phrase, the plaintext will be displayed on her screen but ! 346: will not be saved to disk. The text will be displayed as it would if ! 347: she used the Unix "more" command, one screenful at a time. If she ! 348: wants to read the message again, she will have to decrypt the ! 349: ciphertext again. ! 350: ! 351: This feature is the safest way for you to prevent your sensitive ! 352: message from being inadvertently left on the recipient's disk. This ! 353: feature was added at the request of a user who wanted to send ! 354: intimate messages to his lover, but was afraid she might accidentally ! 355: leave the decrypted messages on her husband's computer. ! 356: ! 357: Note that this feature will not prevent a clever and determined ! 358: person from finding a way to save the decrypted plaintext to disk-- ! 359: it's to help prevent a casual user from doing it inadvertently. ! 360: ! 361: ! 362: ! 363: Preserving the Original Plaintext Filename ! 364: ------------------------------------------ ! 365: ! 366: Normally, PGP names the decrypted plaintext output file with a name ! 367: similar to the input ciphertext filename, but dropping the ! 368: extension. Or, you can override that convention by specifying an ! 369: output plaintext filename on the command line with the -o option. ! 370: For most E-mail, this is a reasonable way to name the plaintext file, ! 371: because you get to decide its name when you decipher it, and your ! 372: typical E-mail messages often come from useless original plaintext ! 373: filenames like "to_phil.txt". ! 374: ! 375: But when PGP encrypts a plaintext file, it always saves the original ! 376: filename and attaches it to the plaintext before it compresses and ! 377: encrypts the plaintext. Normally, this hidden original filename is ! 378: discarded by PGP when it decrypts, but you can tell PGP you want to ! 379: preserve the original plaintext filename and use it as the name of ! 380: the decrypted plaintext output file. This is useful if PGP is used ! 381: on files whose names are important to preserve. ! 382: ! 383: To recover the original plaintext filename while decrypting, add ! 384: the -p option, like so: ! 385: ! 386: pgp -p ciphertextfile ! 387: ! 388: I usually don't use this option, because if I did, about half of my ! 389: incoming E-mail would decrypt to the same plaintext filenames of ! 390: "to_phil.txt" or "prz.txt". ! 391: ! 392: ! 393: ! 394: Editing Your User ID or Pass Phrase ! 395: ----------------------------------- ! 396: ! 397: Sometimes you may need to change your pass phrase, perhaps because ! 398: someone looked over your shoulder while you typed it in. ! 399: ! 400: Or you may need to change your user ID, because you got married and ! 401: changed your name, or maybe you changed your E-mail address. Or ! 402: maybe you want to add a second or third user ID to your key, because ! 403: you may be known by more than one name or E-mail address or job ! 404: title. PGP lets you attach more than one user ID to your key, any ! 405: one of which may be used to look up your key on the key ring. ! 406: ! 407: To edit your own userid or pass phrase for your secret key: ! 408: ! 409: pgp -ke userid [keyring] ! 410: ! 411: PGP prompts you for a new user ID or a new pass phrase. ! 412: ! 413: The optional [keyring] parameter, if specified, must be a public ! 414: keyring, not a secret keyring. The userid field must be your own ! 415: userid, which PGP knows is yours because it appears on both your ! 416: public keyring and your secret keyring. Both keyrings will be ! 417: updated, even though you only specified the public keyring. ! 418: ! 419: The -ke command works differently depending on whether you use it on ! 420: a public or secret key. It can also be used to edit the trust ! 421: parameters for a public key. ! 422: ! 423: ! 424: Editing the Trust Parameters for a Public Key ! 425: --------------------------------------------- ! 426: ! 427: Sometimes you need to alter the trust parameters for a public key on ! 428: your public key ring. For a discussion on what these trust ! 429: parameters mean, see the section "How Does PGP Keep Track of Which ! 430: Keys are Valid?" in the Essential Topics volume of the PGP User's ! 431: Guide. ! 432: ! 433: To edit the trust parameters for a public key: ! 434: ! 435: pgp -ke userid [keyring] ! 436: ! 437: The optional [keyring] parameter, if specified, must be a public ! 438: keyring, not a secret keyring. ! 439: ! 440: ! 441: ! 442: Checking If Everything is OK on Your Public Key Ring ! 443: ---------------------------------------------------- ! 444: ! 445: Normally, PGP automatically checks any new keys or signatures on your ! 446: public key ring and updates all the trust parameters and validity ! 447: scores. In theory, it keeps all the key validity status information ! 448: up to date as material is added to or deleted from your public key ! 449: ring. But perhaps you may want to explicitly force PGP to perform a ! 450: comprehensive analysis of your public key ring, checking all the ! 451: certifying signatures, checking the trust parameters, updating all ! 452: the validity scores, and checking your own ultimately-trusted key ! 453: against a backup copy on a write-protected floppy disk. It may be a ! 454: good idea to do this hygienic maintenance periodically to make sure ! 455: nothing is wrong with your public key ring. To force PGP to perform ! 456: a full analysis of your public key ring, use the -kc (key ring check) ! 457: command: ! 458: ! 459: pgp -kc ! 460: ! 461: You can also make PGP check all the signatures for just a single ! 462: selected public key by: ! 463: ! 464: pgp -kc userid [keyring] ! 465: ! 466: For further information on how the backup copy of your own key is ! 467: checked, see the description of the BAKRING parameter in the ! 468: configuration file section of this manual. ! 469: ! 470: ! 471: ! 472: Verifying a Public Key Over the Phone ! 473: ------------------------------------- ! 474: ! 475: If you get a public key from someone that is not certified by anyone ! 476: you trust, how can you tell if it's really their key? The best way ! 477: to verify an uncertified key is to verify it over some independent ! 478: channel other than the one you received the key through. One ! 479: convenient way to tell, if you know this person and would recognize ! 480: them on the phone, is to call them and verify their key over the ! 481: telephone. Rather than reading their whole tiresome (ASCII-armored) ! 482: key to them over the phone, you can just read their key's ! 483: "fingerprint" to them. To see this fingerprint, use the -kvc ! 484: command: ! 485: ! 486: pgp -kvc userid [keyring] ! 487: ! 488: This will display the key with the 16-byte digest of the public key ! 489: components. Read this 16-byte fingerprint to the key's owner on the ! 490: phone, while she checks it against her own, using the same -kvc ! 491: command at her end. ! 492: ! 493: You can both verify each other's keys this way, and then you can sign ! 494: each other's keys with confidence. This is a safe and convenient way ! 495: to get the key trust network started for your circle of friends. ! 496: ! 497: Note that sending a key fingerprint via E-mail is not the best way to ! 498: verify the key, because E-mail can be intercepted and modified. It's ! 499: best to use a different channel than the one that was used to send ! 500: the key itself. A good combination is to send the key via E-mail, ! 501: and the key fingerprint via a voice telephone conversation. Some ! 502: people distribute their key fingerprint on their business cards, ! 503: which looks really cool. ! 504: ! 505: If you don't know me, please don't call me to verify my key over the ! 506: phone-- I get too many calls like that. Since every PGP user has a ! 507: copy of my public key, no one could tamper with all the copies that ! 508: are out there. The discrepancy would soon be noticed by someone who ! 509: checked it from more than one source, and word would soon get out on ! 510: the Internet. ! 511: ! 512: ! 513: ! 514: Handling Large Public Keyrings ! 515: ------------------------------ ! 516: ! 517: PGP was originally designed for handling small personal keyrings for ! 518: keeping all your friends on, like a personal rolodex. A couple ! 519: hundred keys is a reasonable size for such a keyring. But as PGP has ! 520: become more popular, people are now trying to add other large ! 521: keyrings to their own keyring. Sometimes this involves adding ! 522: thousands of keys to your keyring. PGP, in its present form, cannot ! 523: perform this operation in a reasonable period of time, while you wait ! 524: at your keyboard. Not for huge keyrings. ! 525: ! 526: You may want to add a huge "imported" keyring to your own keyring, ! 527: because you are only interested in a few dozen keys on the bigger ! 528: keyring you are bringing in. If that's all you want from the other ! 529: keyring, it would be more efficient if you extract the few keys you ! 530: need from the big foreign keyring, and then add just these few keys ! 531: to your own keyring. Use the -kx command to extract them from the ! 532: foreign keyring, specifying the keyring name on the command line. ! 533: Then add these extracted keys to your own keyring. ! 534: ! 535: The real solution is to improve PGP to use advanced database ! 536: techniques to manage large keyrings efficiently. Until this happens, ! 537: you will just have to use smaller keyrings, or be patient. ! 538: ! 539: ! 540: ! 541: Using PGP as a Unix-style Filter ! 542: -------------------------------- ! 543: ! 544: Unix fans are accustomed to using Unix "pipes" to make two ! 545: applications work together. The output of one application can be ! 546: directly fed through a pipe to be read as input to another ! 547: application. For this to work, the applications must be capable of ! 548: reading the raw material from "standard input" and writing the ! 549: finished output to "standard output". PGP can operate in this mode. ! 550: If you don't understand what this means, then you probably don't need ! 551: this feature. ! 552: ! 553: To use a Unix-style filter mode, reading from standard input and ! 554: writing to standard output, add the -f option, like so: ! 555: ! 556: pgp -feast her_userid <inputfile >outputfile ! 557: ! 558: This feature makes it easier to make PGP work with electronic mail ! 559: applications. ! 560: ! 561: When using PGP in filter mode to decrypt a ciphertext file, you may ! 562: find it useful to use the PGPPASS environmental variable to hold the ! 563: pass phrase, so that you won't be prompted for it. The PGPPASS ! 564: feature is explained below. ! 565: ! 566: ! 567: ! 568: Suppressing Unnecessary Questions: BATCHMODE ! 569: ---------------------------------------------- ! 570: ! 571: With the BATCHMODE flag enabled on the command line, PGP will not ask ! 572: any unnecessary questions or prompt for alternate filenames. Here ! 573: is an example of how to set this flag: ! 574: ! 575: pgp +batchmode cipherfile ! 576: ! 577: This is useful for running PGP non-interactively from Unix shell ! 578: scripts or MSDOS batch files. Some key management commands still ! 579: need user interaction even when BATCHMODE is on, so shell scripts may ! 580: need to avoid them. ! 581: ! 582: BATCHMODE may also be enabled to check the validity of a signature on ! 583: a file. If there was no signature on the file, the exit code is 1. ! 584: If it had a signature that was good, the exit code is 0. ! 585: ! 586: ! 587: Force "Yes" Answer to Confirmation Questions: FORCE ! 588: ---------------------------------------------------- ! 589: ! 590: This command-line flag makes PGP assume "yes" for the user response ! 591: to the confirmation request to overwrite an existing file, or when ! 592: removing a key from the keyring via the -kr command. Here is an ! 593: example of how to set this flag: ! 594: ! 595: pgp +force cipherfile ! 596: or: ! 597: pgp -kr +force Smith ! 598: ! 599: This feature is useful for running PGP non-interactively from a Unix ! 600: shell script or MSDOS batch file. ! 601: ! 602: ! 603: ! 604: PGP Returns Exit Status to the Shell ! 605: ------------------------------------ ! 606: ! 607: To facilitate running PGP in "batch" mode, such as from an MSDOS ! 608: ".bat" file or from a Unix shell script, PGP returns an error exit ! 609: status to the shell. An exit status code of zero means normal exit, ! 610: while a nonzero exit status indicates some kind of error occurred. ! 611: Different error exit conditions return different exit status codes to ! 612: the shell. ! 613: ! 614: ! 615: ! 616: Environmental Variable for Pass Phrase ! 617: -------------------------------------- ! 618: ! 619: Normally, PGP prompts the user to type a pass phrase whenever PGP ! 620: needs a pass phrase to unlock a secret key. But it is possible to ! 621: store the pass phrase in an environmental variable from your ! 622: operating system's command shell. The environmental variable PGPPASS ! 623: can be used to hold the pass phrase that PGP will attempt to use ! 624: first. If the pass phrase stored in PGPPASS is incorrect, PGP ! 625: recovers by prompting the user for the correct pass phrase. ! 626: ! 627: For example, on MSDOS, the shell command: ! 628: ! 629: SET PGPPASS=zaphod beeblebrox for president ! 630: ! 631: would eliminate the prompt for the pass phrase if the pass phrase ! 632: were indeed "zaphod beeblebrox for president". ! 633: ! 634: This dangerous feature makes your life more convenient if you have to ! 635: regularly deal with a large number of incoming messages addressed to ! 636: your secret key, by eliminating the need for you to repeatedly type ! 637: in your pass phrase every time you run PGP. ! 638: ! 639: I added this feature because of popular demand. However, this is a ! 640: somewhat dangerous feature, because it keeps your precious pass ! 641: phrase stored somewhere other than just in your brain. Even worse, ! 642: if you are particularly reckless, it may even be stored on a disk on ! 643: the same computer as your secret key. It would be particularly ! 644: dangerous and stupid if you were to install this command in a batch ! 645: or script file, such as the MSDOS AUTOEXEC.BAT file. Someone could ! 646: come along on your lunch hour and steal both your secret key ring and ! 647: the file containing your pass phrase. ! 648: ! 649: I can't emphasize the importance of this risk enough. If you are ! 650: contemplating using this feature, be sure to read the sections ! 651: "Exposure on Multi-user Systems" and "How to Protect Secret Keys from ! 652: Disclosure" in this volume and in the Essential Topics volume of the ! 653: PGP User's Guide. ! 654: ! 655: If you must use this feature, the safest way to do it would be to ! 656: just manually type in the shell command to set PGPPASS every time you ! 657: boot your machine to start using PGP, and then erase it or turn off ! 658: your machine when you are done. And you should definitely never do ! 659: it in an environment where someone else may have access to your ! 660: machine. Someone could come along and simply ask your computer to ! 661: display the contents of PGPPASS. ! 662: ! 663: ! 664: ! 665: Setting Configuration Parameters: CONFIG.TXT ! 666: ============================================ ! 667: ! 668: PGP has a number of user-settable parameters that can be defined in a ! 669: special configuration text file called "config.txt", in the directory ! 670: pointed to by the shell environmental variable PGPPATH. Having a ! 671: configuration file enables the user to define various flags and ! 672: parameters for PGP without the burden of having to always define ! 673: these parameters in the PGP command line. ! 674: ! 675: Configuration parameters may be assigned integer values, character ! 676: string values, or on/off values, depending on what kind of ! 677: configuration parameter it is. A sample configuration file is ! 678: provided with PGP, so you can see some examples. ! 679: ! 680: In the configuration file, blank lines are ignored, as is anything ! 681: following the '#' comment character. Keywords are not ! 682: case-sensitive. ! 683: ! 684: Here is a short sample fragment of a typical configuration file: ! 685: ! 686: # TMP is the directory for PGP scratch files, such as a RAM disk. ! 687: TMP = "e:\" # Can be overridden by environment variable TMP. ! 688: Armor = on # Use -a flag for ASCII armor whenever applicable. ! 689: # CERT_DEPTH is how deeply introducers may introduce introducers. ! 690: cert_depth = 3 ! 691: ! 692: If some configuration parameters are not defined in the configuration ! 693: file, or if there is no configuration file, or if PGP can't find the ! 694: configuration file, the values for the configuration parameters ! 695: default to some reasonable value. ! 696: ! 697: Note that it is also possible to set these same configuration ! 698: parameters directly from the PGP command line, by preceding the ! 699: parameter setting with a "+" character. For example, the following ! 700: two PGP commands produce the same effect: ! 701: ! 702: pgp -e +armor=on message.txt smith ! 703: or: pgp -ea message.txt smith ! 704: ! 705: ! 706: The following is a summary of the various parameters than may be ! 707: defined in the configuration file. ! 708: ! 709: ! 710: TMP - Directory Pathname for Temporary Files ! 711: -------------------------------------------- ! 712: ! 713: Default setting: TMP = "" ! 714: ! 715: The configuration parameter TMP specifies what directory to use for ! 716: PGP's temporary scratch files. The best place to put them is on a ! 717: RAM disk, if you have one. That speeds things up quite a bit, and ! 718: increases security somewhat. If TMP is undefined, the temporary ! 719: files go in the current directory. If the shell environmental ! 720: variable TMP is defined, PGP instead uses that to specify where the ! 721: temporary files should go. ! 722: ! 723: ! 724: LANGUAGE - Foreign Language Selector ! 725: ------------------------------------ ! 726: ! 727: Default setting: LANGUAGE = "en" ! 728: ! 729: PGP displays various prompts, warning messages, and advisories to the ! 730: user on the screen. For example, messages such as "File not found.", ! 731: or "Please enter your pass phrase:". These messages are normally in ! 732: English. But it is possible to get PGP to display its messages to ! 733: the user in other languages, without having to modify the PGP ! 734: executable program. ! 735: ! 736: A number of people in various countries have translated all of PGP's ! 737: display messages, warnings, and prompts into their native languages. ! 738: These hundreds of translated message strings have been placed in a ! 739: special text file called "language.txt", distributed with the PGP ! 740: release. The messages are stored in this file in English, Spanish, ! 741: Dutch, German, French, Italian, Russian, Latvian, and Lithuanian. ! 742: Other languages may be added later. ! 743: ! 744: The configuration parameter LANGUAGE specifies what language to ! 745: display these messages in. LANGUAGE may be set to "en" for English, ! 746: "es" for Spanish, "de" for German, "nl" for Dutch, "fr" for French, ! 747: "it" for Italian, "ru" for Russian, "lt3" for Lithuanian, "lv" for ! 748: Latvian, "esp" for Esperanto. For example, if this line appeared in ! 749: the configuration file: ! 750: ! 751: LANGUAGE = "fr" ! 752: ! 753: PGP would select French as the language for its display messages. ! 754: The default setting is English. ! 755: ! 756: When PGP needs to display a message to the user, it looks in the ! 757: "language.txt" file for the equivalent message string in the selected ! 758: foreign language and displays that translated message to the user. ! 759: If PGP can't find the language string file, or if the selected ! 760: language is not in the file, or if that one phrase is not translated ! 761: into the selected language in the file, or if that phrase is missing ! 762: entirely from the file, PGP displays the message in English. ! 763: ! 764: To conserve disk space, most foreign translations are not included ! 765: in the standard PGP release package, but are available separately. ! 766: ! 767: ! 768: MYNAME - Default User ID for Making Signatures ! 769: ---------------------------------------------- ! 770: ! 771: Default setting: MYNAME = "" ! 772: ! 773: The configuration parameter MYNAME specifies the default user ID to ! 774: use to select the secret key for making signatures. If MYNAME is not ! 775: defined, the most recent secret key you installed on your secret key ! 776: ring will be used. The user may also override this setting by ! 777: specifying a user ID on the PGP command line with the -u option. ! 778: ! 779: ! 780: TEXTMODE - Assuming Plaintext is a Text File ! 781: -------------------------------------------- ! 782: ! 783: Default setting: TEXTMODE = off ! 784: ! 785: The configuration parameter TEXTMODE is equivalent to the -t command ! 786: line option. If enabled, it causes PGP to assume the plaintext is a ! 787: text file, not a binary file, and converts it to "canonical text" ! 788: before encrypting it. Canonical text has a carriage return and a ! 789: linefeed at the end of each line of text. ! 790: ! 791: This mode will be automatically turned off if PGP detects that the ! 792: plaintext file contains what it thinks is non-text binary data. If ! 793: you intend to use PGP primarily for E-mail purposes, you should turn ! 794: TEXTMODE=ON. ! 795: ! 796: For VAX/VMS systems, the current version of PGP defaults TEXTMODE=ON. ! 797: ! 798: For further details, see the section "Sending ASCII Text Files Across ! 799: Different Machine Environments". ! 800: ! 801: ! 802: CHARSET - Specifies Local Character Set for Text Files ! 803: ------------------------------------------------------ ! 804: ! 805: Default setting: CHARSET = NOCONV ! 806: ! 807: Because PGP must process messages in many non-English languages with ! 808: non-ASCII character sets, you may have a need to tell PGP what local ! 809: character set your machine uses. This determines what character ! 810: conversions are performed when converting plaintext files to and from ! 811: canonical text format. This is only a concern if you are in a ! 812: non-English non-ASCII environment. ! 813: ! 814: The configuration parameter CHARSET selects the local character set. ! 815: The choices are NOCONV (no conversion), LATIN1 (ISO 8859-1 Latin ! 816: Alphabet 1), KOI8 (used by most Russian Unix systems), ALT_CODES ! 817: (used by Russian MSDOS systems), ASCII, and CP850 (used by most ! 818: western European languages on standard MSDOS PCs). ! 819: ! 820: LATIN1 is the internal representation used by PGP for canonical text, ! 821: so if you select LATIN1, no conversion is done. Note also that PGP ! 822: treats KOI8 as LATIN1, even though it is a completely different ! 823: character set (Russian), because trying to convert KOI8 to either ! 824: LATIN1 or CP850 would be futile anyway. This means that setting ! 825: CHARSET to NOCONV, LATIN1, or KOI8 are all equivalent to PGP. ! 826: ! 827: If you use MSDOS and expect to send or receive traffic in western ! 828: European languages, set CHARSET = "CP850". This will make PGP ! 829: convert incoming canonical text messages from LATIN1 to CP850 after ! 830: decryption. If you use the -t (textmode) option to convert to ! 831: canonical text, PGP will convert your CP850 text to LATIN1 before ! 832: encrypting it. ! 833: ! 834: For further details, see the section "Sending ASCII Text Files Across ! 835: Different Machine Environments". ! 836: ! 837: ! 838: ARMOR - Enable ASCII Armor Output ! 839: --------------------------------- ! 840: ! 841: Default setting: ARMOR = off ! 842: ! 843: The configuration parameter ARMOR is equivalent to the -a command ! 844: line option. If enabled, it causes PGP to emit ciphertext or keys in ! 845: ASCII Radix-64 format suitable for transporting through E-mail ! 846: channels. Output files are named with the ".asc" extension. ! 847: ! 848: If you intend to use PGP primarily for E-mail purposes, you should ! 849: turn ARMOR=ON. ! 850: ! 851: For further details, see the section "Sending Ciphertext Through ! 852: E-mail Channels: Radix-64 Format" in the Essential Topics volume. ! 853: ! 854: ! 855: ARMORLINES - Size of ASCII Armor Multipart Files ! 856: ------------------------------------------------ ! 857: ! 858: Default setting: ARMORLINES = 720 ! 859: ! 860: When PGP creates a very large ".asc" radix-64 file for sending ! 861: ciphertext or keys through the E-mail, it breaks the file up into ! 862: separate chunks small enough to send through Internet mail ! 863: utilities. Normally, Internet mailers prohibit files larger than ! 864: about 50000 bytes, which means that if we restrict the number of ! 865: lines to about 720, we'll be well within the limit. The file chunks ! 866: are named with suffixes ".as1", ".as2", ".as3", ... ! 867: ! 868: The configuration parameter ARMORLINES specifies the maximum number ! 869: of lines to make each chunk in a multipart ".asc" file sequence. If ! 870: you set it to zero, PGP will not break up the file into chunks. ! 871: ! 872: Fidonet email files usually have an upper limit of about 32K bytes, ! 873: so 450 lines would be appropriate for Fidonet environments. ! 874: ! 875: For further details, see the section "Sending Ciphertext Through ! 876: E-mail Channels: Radix-64 Format" in the Essential Topics volume. ! 877: ! 878: ! 879: KEEPBINARY - Keep Binary Ciphertext Files After Decrypting ! 880: ---------------------------------------------------------- ! 881: ! 882: Default setting: KEEPBINARY = off ! 883: ! 884: When PGP reads a ".asc" file, it recognizes that the file is in ! 885: radix-64 format and will convert it back to binary before processing ! 886: as it normally does, producing as a by-product a ".pgp" ciphertext ! 887: file in binary form. After further processing to decrypt the ".pgp" ! 888: file, the final output file will be in normal plaintext form. ! 889: ! 890: You may want to delete the binary ".pgp" intermediate file, or you ! 891: may want PGP to delete it for you automatically. You can still rerun ! 892: PGP on the original ".asc" file. ! 893: ! 894: The configuration parameter KEEPBINARY enables or disables keeping ! 895: the intermediate ".pgp" file during decryption. ! 896: ! 897: For further details, see the section "Sending Ciphertext Through ! 898: E-mail Channels: Radix-64 Format" in the Essential Topics volume. ! 899: ! 900: ! 901: COMPRESS - Enable Compression ! 902: ----------------------------- ! 903: ! 904: Default setting: COMPRESS = on ! 905: ! 906: The configuration parameter COMPRESS enables or disables data ! 907: compression before encryption. It is used mainly for debugging PGP. ! 908: Normally, PGP attempts to compress the plaintext before it encrypts ! 909: it. Generally, you should leave this alone and let PGP attempt to ! 910: compress the plaintext. ! 911: ! 912: ! 913: COMPLETES_NEEDED - Number of Completely Trusted Introducers Needed ! 914: ------------------------------------------------------------------ ! 915: ! 916: Default setting: COMPLETES_NEEDED = 1 ! 917: ! 918: The configuration parameter COMPLETES_NEEDED specifies the minimum ! 919: number of completely trusted introducers required to fully certify a ! 920: public key on your public key ring. This gives you a way of tuning ! 921: PGP's skepticism. ! 922: ! 923: For further details, see the section "How Does PGP Keep Track of ! 924: Which Keys are Valid?" in the Essential Topics volume. ! 925: ! 926: ! 927: MARGINALS_NEEDED - Number of Marginally Trusted Introducers Needed ! 928: ------------------------------------------------------------------ ! 929: ! 930: Default setting: MARGINALS_NEEDED = 2 ! 931: ! 932: The configuration parameter MARGINALS_NEEDED specifies the minimum ! 933: number of marginally trusted introducers required to fully certify a ! 934: public key on your public key ring. This gives you a way of tuning ! 935: PGP's skepticism. ! 936: ! 937: For further details, see the section "How Does PGP Keep Track of ! 938: Which Keys are Valid?" in the Essential Topics volume. ! 939: ! 940: ! 941: CERT_DEPTH - How Deep May Introducers Be Nested ! 942: ----------------------------------------------- ! 943: ! 944: Default setting: CERT_DEPTH = 4 ! 945: ! 946: The configuration parameter CERT_DEPTH specifies how many levels deep ! 947: you may nest introducers to certify other introducers to certify ! 948: public keys on your public key ring. For example, If CERT_DEPTH is ! 949: set to 1, there may only be one layer of introducers below your own ! 950: ultimately-trusted key. If that were the case, you would be required ! 951: to directly certify the public keys of all trusted introducers on ! 952: your key ring. If you set CERT_DEPTH to 0, you could have no ! 953: introducers at all, and you would have to directly certify each and ! 954: every key on your public key ring in order to use it. The minimum ! 955: CERT_DEPTH is 0, the maximum is 8. ! 956: ! 957: For further details, see the section "How Does PGP Keep Track of ! 958: Which Keys are Valid?" in the Essential Topics volume. ! 959: ! 960: ! 961: BAKRING - Filename for Backup Secret Keyring ! 962: -------------------------------------------- ! 963: ! 964: Default setting: BAKRING = "" ! 965: ! 966: All of the key certification that PGP does on your public key ring ! 967: ultimately depends on your own ultimately-trusted public key (or ! 968: keys). To detect any tampering of your public key ring, PGP must ! 969: check that your own key has not been tampered with. To do this, PGP ! 970: must compare your public key against a backup copy of your secret key ! 971: on some tamper-resistant media, such as a write-protected floppy ! 972: disk. A secret key contains all the information that your public key ! 973: has, plus some secret components. This means PGP can check your ! 974: public key against a backup copy of your secret key. ! 975: ! 976: The configuration parameter BAKRING specifies what pathname to use ! 977: for PGP's trusted backup copy of your secret key ring. On MSDOS, you ! 978: could set it to "a:\secring.pgp" to point it at a write-protected ! 979: backup copy of your secret key ring on your floppy drive. This check ! 980: is performed only when you execute the PGP -kc option to check your ! 981: whole public key ring. ! 982: ! 983: If BAKRING is not defined, PGP will not check your own key against ! 984: any backup copy. ! 985: ! 986: For further details, see the sections "How to Protect Public Keys ! 987: from Tampering" and "How Does PGP Keep Track of Which Keys are ! 988: Valid?" in the Essential Topics volume. ! 989: ! 990: ! 991: PUBRING - Filename for Your Public Keyring ! 992: ------------------------------------------ ! 993: ! 994: Default setting: PUBRING = "$PGPPATH/pubring.pgp" ! 995: ! 996: You may want to keep your public keyring in a directory separate from ! 997: your config.txt file in the directory specified by your $PGPPATH ! 998: environmental variable. You may specify the full path and filename ! 999: for your public keyring by setting the PUBRING parameter. For ! 1000: example, on an MSDOS system, you might want to keep your public ! 1001: keyring on a floppy disk by: ! 1002: ! 1003: PUBRING = "a:pubring.pgp" ! 1004: ! 1005: This feature is especially handy for specifying an alternative ! 1006: keyring on the command line. ! 1007: ! 1008: ! 1009: SECRING - Filename for Your Secret Keyring ! 1010: ------------------------------------------ ! 1011: ! 1012: Default setting: SECRING = "$PGPPATH/secring.pgp" ! 1013: ! 1014: You may want to keep your secret keyring in a directory separate from ! 1015: your config.txt file in the directory specified by your $PGPPATH ! 1016: environmental variable. This comes in handy for putting your secret ! 1017: keyring in a directory or device that is more protected than your ! 1018: public keyring. You may specify the full path and filename for your ! 1019: secret keyring by setting the SECRING parameter. For example, on an ! 1020: MSDOS system, you might want to keep your secret keyring on a floppy ! 1021: disk by: ! 1022: ! 1023: SECRING = "a:secring.pgp" ! 1024: ! 1025: ! 1026: RANDSEED - Filename for Random Number Seed ! 1027: ------------------------------------------ ! 1028: ! 1029: Default setting: RANDSEED = "$PGPPATH/randseed.bin" ! 1030: ! 1031: You may want to keep your random number seed file (for generation of ! 1032: session keys) in a directory separate from your config.txt file in ! 1033: the directory specified by your $PGPPATH environmental variable. ! 1034: This comes in handy for putting your random number seed file in a ! 1035: directory or device that is more protected than your public keyring. ! 1036: You may specify the full path and filename for your random seed file ! 1037: by setting the RANDSEED parameter. For example, on an MSDOS system, ! 1038: you might want to keep it on a floppy disk by: ! 1039: ! 1040: RANDSEED = "a:randseed.bin" ! 1041: ! 1042: ! 1043: PAGER - Selects Shell Command to Display Plaintext Output ! 1044: --------------------------------------------------------- ! 1045: ! 1046: Default setting: PAGER = "" ! 1047: ! 1048: PGP lets you view the decrypted plaintext output on your screen (like ! 1049: the Unix-style "more" command), without writing it to a file, if you ! 1050: use the -m (more) option while decrypting. This displays the ! 1051: decrypted plaintext display on your screen one screenful at a time. ! 1052: ! 1053: If you prefer to use a fancier page display utility, rather than ! 1054: PGP's built-in one, you can specify the name of a shell command that ! 1055: PGP will invoke to display your plaintext output file. The ! 1056: configuration parameter PAGER specifies the shell command to invoke ! 1057: to display the file. For example, on MSDOS systems, you might want ! 1058: to use the popular shareware program "list.com" to display your ! 1059: plaintext message. Assuming you have a copy of "list.com", you may ! 1060: set PAGER accordingly: ! 1061: ! 1062: PAGER = "list" ! 1063: ! 1064: However, if the sender specified that this file is for your eyes ! 1065: only, and may not be written to disk, PGP always uses its own ! 1066: built-in display function. ! 1067: ! 1068: For further details, see the section "Displaying Decrypted Plaintext ! 1069: on Your Screen". ! 1070: ! 1071: ! 1072: SHOWPASS - Echo Pass Phrase to User ! 1073: ----------------------------------- ! 1074: ! 1075: Default setting: SHOWPASS = off ! 1076: ! 1077: Normally, PGP does not let you see your pass phrase as you type it ! 1078: in. This makes it harder for someone to look over your shoulder ! 1079: while you type and learn your pass phrase. But some typing-impaired ! 1080: people have problems typing their pass phrase without seeing what ! 1081: they are typing, and they may be typing in the privacy of their own ! 1082: homes. So they asked if PGP can be configured to let them see what ! 1083: they type when they type in their pass phrase. ! 1084: ! 1085: The configuration parameter SHOWPASS enables PGP to echo your typing ! 1086: during pass phrase entry. ! 1087: ! 1088: ! 1089: TZFIX - Timezone Adjustment ! 1090: --------------------------- ! 1091: ! 1092: Default setting: TZFIX = 0 ! 1093: ! 1094: PGP provides timestamps for keys and signature certificates in ! 1095: Greenwich Mean Time (GMT), or Coordinated Universal Time (UTC), which ! 1096: means the same thing for our purposes. When PGP asks the system for ! 1097: the time of day, the system is supposed to provide it in GMT. ! 1098: ! 1099: But sometimes, because of improperly configured MSDOS systems, the ! 1100: system time is returned in US Pacific Standard Time time plus 8 ! 1101: hours. Sounds weird, doesn't it? Perhaps because of some sort of US ! 1102: west-coast jingoism, MSDOS presumes local time is US Pacific time, ! 1103: and pre-corrects Pacific time to GMT. This adversely affects the ! 1104: behavior of the internal MSDOS GMT time function that PGP calls. ! 1105: However, if your MSDOS environmental variable TZ is already properly ! 1106: defined for your timezone, this corrects the misconception MSDOS has ! 1107: that the whole world lives on the US west coast. ! 1108: ! 1109: The configuration parameter TZFIX specifies the number of hours to ! 1110: add to the system time function to get GMT, for GMT timestamps on ! 1111: keys and signatures. If the MSDOS environmental variable TZ is ! 1112: defined properly, you can leave TZFIX=0. Unix systems usually ! 1113: shouldn't need to worry about setting TZFIX at all. But if you are ! 1114: using some other obscure operating system that doesn't know about ! 1115: GMT, you may have to use TZFIX to adjust the system time to GMT. ! 1116: ! 1117: On MSDOS systems that do not have TZ defined in the environment, you ! 1118: should make TZFIX=0 for California, -1 for Colorado, -2 for Chicago, ! 1119: -3 for New York, -8 for London, -9 for Amsterdam. In the summer, ! 1120: TZFIX should be manually decremented from these values. What a mess. ! 1121: ! 1122: It would be much cleaner to set your MSDOS environmental variable TZ ! 1123: in your AUTOEXEC.BAT file, and not use the TZFIX correction. Then ! 1124: MSDOS gives you good GMT timestamps, and will handle daylight savings ! 1125: time adjustments for you. Here are some sample lines to insert into ! 1126: AUTOEXEC.BAT, depending on your time zone: ! 1127: ! 1128: For Los Angeles: SET TZ=PST8PDT ! 1129: For Denver: SET TZ=MST7MDT ! 1130: For Arizona: SET TZ=MST7 ! 1131: (Arizona never uses daylight savings time) ! 1132: For Chicago: SET TZ=CST6CDT ! 1133: For New York: SET TZ=EST5EDT ! 1134: For London: SET TZ=GMT0BST ! 1135: For Amsterdam: SET TZ=MET-1DST ! 1136: For Moscow: SET TZ=MSK-3MSD ! 1137: For Aukland: SET TZ=NZT-13 ! 1138: ! 1139: ! 1140: CLEARSIG - Enable Signed Messages to be Encapsulated as Clear Text ! 1141: ------------------------------------------------------------------ ! 1142: ! 1143: Default setting: CLEARSIG = on ! 1144: ! 1145: Normally, unencrypted PGP signed messages have a signature ! 1146: certificate prepended in binary form. Also, the signed message is ! 1147: compressed, rendering the message unreadable to casual human eyes, ! 1148: even though the message is not actually encrypted. To send this ! 1149: binary data through a 7-bit E-mail channel, radix-64 ASCII armor is ! 1150: applied (see the ARMOR parameter). Even if PGP didn't compress the ! 1151: message, the ASCII armor would still render the message unreadable to ! 1152: human eyes. The recipient must use PGP to strip the armor off and ! 1153: decompress it before reading the message. ! 1154: ! 1155: If the original plaintext message is in text (not binary) form, there ! 1156: is a way to send a signed message through an E-mail channel in such a ! 1157: way that the signed message is not compressed and the ASCII armor is ! 1158: applied only to the binary signature certificate, but not to the ! 1159: plaintext message. The CLEARSIG flag provides this useful feature, ! 1160: making it possible to generate a signed message that can be read with ! 1161: human eyes, without the aid of PGP. Of course, you still need PGP to ! 1162: actually check the signature. ! 1163: ! 1164: The CLEARSIG flag is preset to "on" beginning with PGP version 2.5. ! 1165: To enable the full CLEARSIG behavior, the ARMOR and TEXTMODE flags ! 1166: must also be turned on. Set ARMOR=ON (or use the -a option), and set ! 1167: TEXTMODE=ON (or use the -t option). If your config file has CLEARSIG ! 1168: turned off, you can turn it back on again directly on the command ! 1169: line, like so: ! 1170: ! 1171: pgp -sta +clearsig=on message.txt ! 1172: ! 1173: This message representation is analogous to the MIC-CLEAR message type ! 1174: used in Internet Privacy Enhanced Mail (PEM). It is important to ! 1175: note that since this method only applies ASCII armor to the binary ! 1176: signature certificate, and not to the message text itself, there is ! 1177: some risk that the unarmored message may suffer some accidental ! 1178: molestation while en route. This can happen if it passes through ! 1179: some E-mail gateway that performs character set conversions, or in ! 1180: some cases extra spaces may be added to or stripped from the ends of ! 1181: lines. If this occurs, the signature will fail to verify, which may ! 1182: give a false indication of intentional tampering. But since PEM ! 1183: lives under a similar vulnerability, it seems worth having this ! 1184: feature despite the risks. ! 1185: ! 1186: Beginning with PGP version 2.2, trailing blanks are ignored on each ! 1187: line in calculating the signature for text in CLEARSIG mode. ! 1188: ! 1189: ! 1190: VERBOSE - Quiet, Normal, or Verbose Messages ! 1191: -------------------------------------------- ! 1192: ! 1193: Default setting: VERBOSE = 1 ! 1194: ! 1195: VERBOSE may be set to 0, 1, or 2, depending on how much detail you ! 1196: want to see from PGP diagnostic messages. The settings are: ! 1197: ! 1198: 0 - Display messages only if there is a problem. Unix fans wanted ! 1199: this "quiet mode" setting. ! 1200: ! 1201: 1 - Normal default setting. Displays a reasonable amount of detail ! 1202: in diagnostic or advisory messages. ! 1203: ! 1204: 2 - Displays maximum information, usually to help diagnose problems ! 1205: in PGP. Not recommended for normal use. Besides, PGP doesn't have ! 1206: any problems, right? ! 1207: ! 1208: ! 1209: INTERACTIVE - Ask for Confirmation for Key Adds ! 1210: ----------------------------------------------- ! 1211: ! 1212: Default Setting: INTERACTIVE = off ! 1213: ! 1214: Enabling this mode will mean that if you add a key file containing ! 1215: multiple keys to your key ring, PGP will ask for confirmation for ! 1216: each key before adding it to your key ring. ! 1217: ! 1218: ! 1219: NOMANUAL - Let PGP Generate Keys Without the Manual ! 1220: --------------------------------------------------- ! 1221: ! 1222: Default Setting: NOMANUAL = off ! 1223: ! 1224: It is important that the freeware version of PGP not be distributed ! 1225: without the user documentation, which normally comes with it in the ! 1226: standard release package. This manual contains important information ! 1227: for using PGP, as well as important legal notices. But some people ! 1228: have distributed previous versions of PGP without the manual, causing ! 1229: a lot of problems for a lot of people who get it. To discourage the ! 1230: distribution of PGP without the required documentation, PGP has been ! 1231: changed to require the PGP User's Guide to be found somewhere on your ! 1232: computer (like in your PGP directory) before PGP will let you generate ! 1233: a key pair. However, some users like to use PGP on tiny palmtop ! 1234: computers with limited storage capacity, so they like to run PGP ! 1235: without the documentation present on their systems. To satisfy these ! 1236: users, PGP can be made to relax its requirement that the manual be ! 1237: present, by enabling the NOMANUAL flag on the command line during key ! 1238: generation, like so: ! 1239: ! 1240: pgp -kg +nomanual ! 1241: ! 1242: The NOMANUAL flag can only be set on the command line, not in the ! 1243: config file. Since you must read this manual to learn how to do ! 1244: enable this override feature, I hope this will still be effective in ! 1245: discouraging the distribution of PGP without the manual. ! 1246: ! 1247: ! 1248: ! 1249: A Peek Under the Hood ! 1250: ===================== ! 1251: ! 1252: Let's take a look at a few internal features of PGP. ! 1253: ! 1254: ! 1255: Random Numbers ! 1256: -------------- ! 1257: ! 1258: PGP uses a cryptographically strong pseudorandom number generator for ! 1259: creating temporary conventional session keys. The seed file for this ! 1260: is called "randseed.bin". It too can be kept in whatever directory ! 1261: is indicated by the PGPPATH environmental variable. If this random ! 1262: seed file does not exist, it is automatically created and seeded with ! 1263: truly random numbers derived from timing your keystroke latencies. ! 1264: ! 1265: This generator reseeds the disk file each time it is used by mixing ! 1266: in new key material partially derived with the time of day and other ! 1267: truly random sources. It uses the conventional encryption algorithm ! 1268: as an engine for the random number generator. The seed file contains ! 1269: both random seed material and random key material to key the ! 1270: conventional encryption engine for the random generator. ! 1271: ! 1272: This random seed file should be at least slightly protected from ! 1273: disclosure, to reduce the risk of an attacker deriving your next or ! 1274: previous session keys. The attacker would have a very hard time ! 1275: getting anything useful from capturing this random seed file, because ! 1276: the file is cryptographically laundered before and after each use. ! 1277: Nonetheless, it seems prudent to at least try to keep it from falling ! 1278: into the wrong hands. ! 1279: ! 1280: If you feel uneasy about trusting any algorithmically derived random ! 1281: number source however strong, keep in mind that you already trust the ! 1282: strength of the same conventional cipher to protect your messages. ! 1283: If it's strong enough for that, then it should be strong enough to ! 1284: use as a source of random numbers for temporary session keys. Note ! 1285: that PGP still uses truly random numbers from physical sources ! 1286: (mainly keyboard timings) to generate long-term public/secret key ! 1287: pairs. ! 1288: ! 1289: ! 1290: ! 1291: PGP's Conventional Encryption Algorithm ! 1292: --------------------------------------- ! 1293: ! 1294: As described earlier, PGP "bootstraps" into a conventional single-key ! 1295: encryption algorithm by using a public key algorithm to encipher the ! 1296: conventional session key and then switching to fast conventional ! 1297: cryptography. So let's talk about this conventional encryption ! 1298: algorithm. It isn't the DES. ! 1299: ! 1300: The Federal Data Encryption Standard (DES) used to be a good ! 1301: algorithm for most commercial applications. But the Government never ! 1302: did trust the DES to protect its own classified data, because the DES ! 1303: key length is only 56 bits, short enough for a brute force attack. ! 1304: Also, the full 16-round DES has been attacked with some success by ! 1305: Biham and Shamir using differential cryptanalysis, and by Matsui ! 1306: using linear cryptanalysis. ! 1307: ! 1308: The most devastating practical attack on the DES was described at the ! 1309: Crypto '93 conference, where Michael Wiener of Bell Northern Research ! 1310: presented a paper on how to crack the DES with a special machine. He ! 1311: has fully designed and tested a chip that guesses 50 million DES keys ! 1312: per second until it finds the right one. Although he has refrained ! 1313: from building the real chips so far, he can get these chips ! 1314: manufactured for $10.50 each, and can build 57000 of them into a ! 1315: special machine for $1 million that can try every DES key in 7 hours, ! 1316: averaging a solution in 3.5 hours. $1 million can be hidden in the ! 1317: budget of many companies. For $10 million, it takes 21 minutes to ! 1318: crack, and for $100 million, just two minutes. With any major ! 1319: government's budget for examining DES traffic, it can be cracked in ! 1320: seconds. This means that straight 56-bit DES is now effectively dead ! 1321: for purposes of serious data security applications. ! 1322: ! 1323: A possible successor to DES may be a variation known as "triple DES", ! 1324: which uses two DES keys to encrypt three times, achieving an ! 1325: effective key space of 112 bits. But this approach is three times ! 1326: slower than normal DES. A future version of PGP may support triple ! 1327: DES as an option. ! 1328: ! 1329: PGP does not use the DES as its conventional single-key algorithm to ! 1330: encrypt messages. Instead, PGP uses a different conventional ! 1331: single-key block encryption algorithm, called IDEA(tm). ! 1332: ! 1333: For the cryptographically curious, the IDEA cipher has a 64-bit block ! 1334: size for the plaintext and the ciphertext. It uses a key size of 128 ! 1335: bits. It is based on the design concept of "mixing operations from ! 1336: different algebraic groups". It runs much faster in software than ! 1337: the DES. Like the DES, it can be used in cipher feedback (CFB) and ! 1338: cipher block chaining (CBC) modes. PGP uses it in 64-bit CFB mode. ! 1339: ! 1340: The IPES/IDEA block cipher was developed at ETH in Zurich by James L. ! 1341: Massey and Xuejia Lai, and published in 1990. This is not a ! 1342: "home-grown" algorithm. Its designers have a distinguished ! 1343: reputation in the cryptologic community. Early published papers on ! 1344: the algorithm called it IPES (Improved Proposed Encryption Standard), ! 1345: but they later changed the name to IDEA (International Data ! 1346: Encryption Algorithm). So far, IDEA has resisted attack much better ! 1347: than other ciphers such as FEAL, REDOC-II, LOKI, Snefru and Khafre. ! 1348: And recent evidence suggests that IDEA is more resistant than the DES ! 1349: to Biham & Shamir's highly successful differential cryptanalysis ! 1350: attack. Biham and Shamir have been examining the IDEA cipher for ! 1351: weaknesses, without success. Academic cryptanalyst groups in ! 1352: Belgium, England, and Germany are also attempting to attack it, as ! 1353: well as the military services from several European countries. As ! 1354: this new cipher continues to attract attack efforts from the most ! 1355: formidable quarters of the cryptanalytic world, confidence in IDEA is ! 1356: growing with the passage of time. ! 1357: ! 1358: Every once in a while, I get a letter from someone who has just ! 1359: learned the awful truth that PGP does not use pure RSA to encrypt ! 1360: bulk data. They are concerned that the whole package is weakened if ! 1361: we use a hybrid public-key and conventional scheme just to speed ! 1362: things up. After all, a chain is only as strong as its weakest ! 1363: link. They demand an explanation for this apparent "compromise" in ! 1364: the strength of PGP. This may be because they have been caught up in ! 1365: the public's reverence and awe for the strength and mystique of RSA, ! 1366: mistakenly believing that RSA is intrinsically stronger than any ! 1367: conventional cipher. Well, it's not. ! 1368: ! 1369: People who work in factoring research say that the workload to ! 1370: exhaust all the possible 128-bit keys in the IDEA cipher would equal ! 1371: the factoring workload to crack a 3100-bit RSA key, which is quite a ! 1372: bit bigger than the 1024-bit RSA key size that most people use for ! 1373: high security applications. Given this range of key sizes, and ! 1374: assuming there are no hidden weaknesses in the conventional cipher, ! 1375: the weak link in this hybrid approach is in the public key algorithm, ! 1376: not the conventional cipher. ! 1377: ! 1378: It is not ergonomically practical to use pure RSA with large keys to ! 1379: encrypt and decrypt long messages. A 1024-bit RSA key would decrypt ! 1380: messages about 4000 times slower than the IDEA cipher. Absolutely no ! 1381: one does it that way in the real world. Many people less experienced ! 1382: in cryptography do not realize that the attraction of public key ! 1383: cryptography is not because it is intrinsically stronger than a ! 1384: conventional cipher-- its appeal is because it helps you manage keys ! 1385: more conveniently. ! 1386: ! 1387: Not only is RSA too slow to use on bulk data, but it even has certain ! 1388: weaknesses that can be exploited in some special cases of particular ! 1389: kinds of messages that are fed to the RSA cipher. These special ! 1390: cases can be avoided by using the hybrid approach of using RSA to ! 1391: encrypt random session keys for a conventional cipher. So the bottom ! 1392: line is this: Using pure RSA on bulk data is the wrong approach, ! 1393: period. It's too slow, it's not stronger, and may even be weaker. If ! 1394: you find a software application that uses pure RSA on bulk data, it ! 1395: probably means the implementor does not understand these issues. ! 1396: ! 1397: ! 1398: ! 1399: Data Compression ! 1400: ---------------- ! 1401: ! 1402: PGP normally compresses the plaintext before encrypting it. It's too ! 1403: late to compress it after it has been encrypted; encrypted data is ! 1404: incompressible. Data compression saves modem transmission time and ! 1405: disk space and more importantly strengthens cryptographic security. ! 1406: Most cryptanalysis techniques exploit redundancies found in the ! 1407: plaintext to crack the cipher. Data compression reduces this ! 1408: redundancy in the plaintext, thereby greatly enhancing resistance to ! 1409: cryptanalysis. It takes extra time to compress the plaintext, but ! 1410: from a security point of view it seems worth it, at least in my ! 1411: cautious opinion. ! 1412: ! 1413: Files that are too short to compress or just don't compress well are ! 1414: not compressed by PGP. ! 1415: ! 1416: If you prefer, you can use PKZIP to compress the plaintext before ! 1417: encrypting it. PKZIP is a widely-available and effective MSDOS ! 1418: shareware compression utility from PKWare, Inc. Or you can use ZIP, ! 1419: a PKZIP-compatible freeware compression utility on Unix and other ! 1420: systems, available from Jean-Loup Gailly. There is some advantage in ! 1421: using PKZIP or ZIP in certain cases, because unlike PGP's built-in ! 1422: compression algorithm, PKZIP and ZIP have the nice feature of ! 1423: compressing multiple files into a single compressed file, which is ! 1424: reconstituted again into separate files when decompressed. PGP will ! 1425: not try to compress a plaintext file that has already been ! 1426: compressed. After decrypting, the recipient can decompress the ! 1427: plaintext with PKUNZIP. If the decrypted plaintext is a PKZIP ! 1428: compressed file, PGP automatically recognizes this and advises the ! 1429: recipient that the decrypted plaintext appears to be a PKZIP file. ! 1430: ! 1431: For the technically curious readers, the current version of PGP uses ! 1432: the freeware ZIP compression routines written by Jean-loup Gailly, ! 1433: Mark Adler, and Richard B. Wales. This ZIP software uses ! 1434: functionally-equivalent compression algorithms as those used by ! 1435: PKWare's new PKZIP 2.0. This ZIP compression software was selected ! 1436: for PGP mainly because of its free portable C source code ! 1437: availability, and because it has a really good compression ratio, and ! 1438: because it's fast. ! 1439: ! 1440: Peter Gutmann has also written a nice compression utility called ! 1441: HPACK, available for free from many Internet FTP sites. It encrypts ! 1442: the compressed archives, using PGP data formats and key rings. He ! 1443: wanted me to mention that here. ! 1444: ! 1445: ! 1446: ! 1447: Message Digests and Digital Signatures ! 1448: -------------------------------------- ! 1449: ! 1450: To create a digital signature, PGP encrypts with your secret key. ! 1451: But PGP doesn't actually encrypt your entire message with your secret ! 1452: key-- that would take too long. Instead, PGP encrypts a "message ! 1453: digest". ! 1454: ! 1455: The message digest is a compact (128 bit) "distillate" of your ! 1456: message, similar in concept to a checksum. You can also think of it ! 1457: as a "fingerprint" of the message. The message digest "represents" ! 1458: your message, such that if the message were altered in any way, a ! 1459: different message digest would be computed from it. This makes it ! 1460: possible to detect any changes made to the message by a forger. A ! 1461: message digest is computed using a cryptographically strong one-way ! 1462: hash function of the message. It would be computationally infeasible ! 1463: for an attacker to devise a substitute message that would produce an ! 1464: identical message digest. In that respect, a message digest is much ! 1465: better than a checksum, because it is easy to devise a different ! 1466: message that would produce the same checksum. But like a checksum, ! 1467: you can't derive the original message from its message digest. ! 1468: ! 1469: A message digest alone is not enough to authenticate a message. The ! 1470: message digest algorithm is publicly known, and does not require ! 1471: knowledge of any secret keys to calculate. If all we did was attach ! 1472: a message digest to a message, then a forger could alter a message ! 1473: and simply attach a new message digest calculated from the new ! 1474: altered message. To provide real authentication, the sender has to ! 1475: encrypt (sign) the message digest with his secret key. ! 1476: ! 1477: A message digest is calculated from the message by the sender. The ! 1478: sender's secret key is used to encrypt the message digest and an ! 1479: electronic timestamp, forming a digital signature, or signature ! 1480: certificate. The sender sends the digital signature along with the ! 1481: message. The receiver receives the message and the digital ! 1482: signature, and recovers the original message digest from the digital ! 1483: signature by decrypting it with the sender's public key. The ! 1484: receiver computes a new message digest from the message, and checks ! 1485: to see if it matches the one recovered from the digital signature. If ! 1486: it matches, then that proves the message was not altered, and it came ! 1487: from the sender who owns the public key used to check the signature. ! 1488: ! 1489: A potential forger would have to either produce an altered message ! 1490: that produces an identical message digest (which is infeasible), or ! 1491: he would have to create a new digital signature from a different ! 1492: message digest (also infeasible, without knowing the true sender's ! 1493: secret key). ! 1494: ! 1495: Digital signatures prove who sent the message, and that the message ! 1496: was not altered either by error or design. It also provides ! 1497: non-repudiation, which means the sender cannot easily disavow his ! 1498: signature on the message. ! 1499: ! 1500: Using message digests to form digital signatures has other advantages ! 1501: besides being faster than directly signing the entire actual message ! 1502: with the secret key. Using message digests allows signatures to be ! 1503: of a standard small fixed size, regardless of the size of the actual ! 1504: message. It also allows the software to check the message integrity ! 1505: automatically, in a manner similar to using checksums. And it allows ! 1506: signatures to be stored separately from messages, perhaps even in a ! 1507: public archive, without revealing sensitive information about the ! 1508: actual messages, because no one can derive any message content from a ! 1509: message digest. ! 1510: ! 1511: The message digest algorithm used here is the MD5 Message Digest ! 1512: Algorithm, placed in the public domain by RSA Data Security, Inc. ! 1513: MD5's designer, Ronald Rivest, writes this about MD5: ! 1514: ! 1515: "It is conjectured that the difficulty of coming up with two messages ! 1516: having the same message digest is on the order of 2^64 operations, ! 1517: and that the difficulty of coming up with any message having a given ! 1518: message digest is on the order of 2^128 operations. The MD5 ! 1519: algorithm has been carefully scrutinized for weaknesses. It is, ! 1520: however, a relatively new algorithm and further security analysis is ! 1521: of course justified, as is the case with any new proposal of this ! 1522: sort. The level of security provided by MD5 should be sufficient for ! 1523: implementing very high security hybrid digital signature schemes ! 1524: based on MD5 and the RSA public-key cryptosystem." ! 1525: ! 1526: ! 1527: ! 1528: Compatibility with Previous Versions of PGP ! 1529: =========================================== ! 1530: ! 1531: PGP version 2.6 can read anything produced by versions 2.3, 2.3a, 2.4, ! 1532: or 2.5. However, because of a negotiated agreement between MIT and ! 1533: RSA Data Security, PGP 2.6 will change its behavior slightly on 1 ! 1534: September 1994, triggered by a built-in software timer. On that date, ! 1535: version 2.6 will start producing a new and slightly different data ! 1536: format for messages, signatures and keys. PGP 2.6 will still be able ! 1537: to read and process messages, signatures, and keys produced under the ! 1538: old format, but it will generate the new format. This incompatible ! 1539: change is intended to discourage people from continuing to use the ! 1540: older (2.3a and earlier) versions of PGP, which Public Key Partners ! 1541: contends infringes its RSA patent (see the section on Legal Issues). ! 1542: PGP 2.4, distributed by Viacrypt (see the section Where to Get a ! 1543: Commercial Version of PGP) avoids infringement through Viacrypt's ! 1544: license arrangement with Public Key Partners. PGP 2.5 and 2.6 avoid ! 1545: infringement by using the RSAREF(TM) Cryptographic Toolkit, under ! 1546: license from RSA Data Security, Inc. ! 1547: ! 1548: Outside the United States, the RSA patent is not in force, so PGP ! 1549: users there are free to use implementations of PGP that do not rely on ! 1550: RSAREF and its restrictions. Hopefully, implementors of PGP versions ! 1551: outside the US will also switch to the new format, whose detailed ! 1552: description is available from MIT. If everyone upgrades before 1 ! 1553: September 1994, no one will experience any discontinuity in ! 1554: interoperability. ! 1555: ! 1556: This format change beginning with 2.6 is similar to the process that ! 1557: naturally happens when new features are added, causing older versions ! 1558: of PGP to be unable to read stuff from the newer PGP, while the newer ! 1559: version can still read the old stuff. The only difference is that ! 1560: this is a "legal upgrade", instead of a technical one. It's a ! 1561: worthwhile change, if it can achieve peace in our time. ! 1562: ! 1563: According to ViaCrypt, which sells a commercial version of PGP, ! 1564: ViaCrypt PGP will evolve to maintain interoperability with new ! 1565: freeware versions of PGP. ! 1566: ! 1567: There is a another change that effects interoperability with earlier ! 1568: versions of PGP. Unfortunately, due to data format limitations ! 1569: imposed by RSAREF, PGP 2.5 and 2.6 cannot interpret any messages or ! 1570: signatures made with PGP version 2.2 or earlier. Since we had no ! 1571: choice but to use the new data formats, because of the legal ! 1572: requirement to switch to RSAREF, we can't do anything about this ! 1573: problem. ! 1574: ! 1575: Beginning with version 2.4 (which was ViaCrypt's first version) ! 1576: through at least 2.6, PGP does not allow you to generate RSA keys ! 1577: bigger than 1024 bits. The upper limit was always intended to be ! 1578: 1024 bits. But because of a bug in earlier versions of PGP, it was ! 1579: possible to generate keys larger than 1024 bits. These larger keys ! 1580: caused interoperability problems between different older versions of ! 1581: PGP that used different arithmetic algorithms with different native ! 1582: word sizes. On some platforms, PGP choked on the larger keys. In ! 1583: addition to these older key size problems, the 1024-bit limit is now ! 1584: enforced by RSAREF. A 1024-bit key is very likely to be well out of ! 1585: reach of attacks by major governments. ! 1586: ! 1587: In general, there is compatibility from version 2.0 upwards through ! 1588: 2.4. Because new features are added, older versions may not always be ! 1589: able to handle some files created with newer versions. Because of ! 1590: massive changes to all the algorithms and data structures, PGP version ! 1591: 2.0 (and later) is not even slightly compatible with PGP version 1.0, ! 1592: which no one uses anymore anyway. ! 1593: ! 1594: ! 1595: Vulnerabilities ! 1596: =============== ! 1597: ! 1598: No data security system is impenetrable. PGP can be circumvented in ! 1599: a variety of ways. In any data security system, you have to ask ! 1600: yourself if the information you are trying to protect is more ! 1601: valuable to your attacker than the cost of the attack. This should ! 1602: lead you to protecting yourself from the cheapest attacks, while not ! 1603: worrying about the more expensive attacks. ! 1604: ! 1605: Some of the discussion that follows may seem unduly paranoid, but ! 1606: such an attitude is appropriate for a reasonable discussion of ! 1607: vulnerability issues. ! 1608: ! 1609: ! 1610: Compromised Pass Phrase and Secret Key ! 1611: -------------------------------------- ! 1612: ! 1613: Probably the simplest attack is if you leave your pass phrase for ! 1614: your secret key written down somewhere. If someone gets it and also ! 1615: gets your secret key file, they can read your messages and make ! 1616: signatures in your name. ! 1617: ! 1618: Don't use obvious passwords that can be easily guessed, such as the ! 1619: names of your kids or spouse. If you make your pass phrase a single ! 1620: word, it can be easily guessed by having a computer try all the words ! 1621: in the dictionary until it finds your password. That's why a pass ! 1622: phrase is so much better than a password. A more sophisticated ! 1623: attacker may have his computer scan a book of famous quotations to ! 1624: find your pass phrase. An easy to remember but hard to guess pass ! 1625: phrase can be easily constructed by some creatively nonsensical ! 1626: sayings or very obscure literary quotes. ! 1627: ! 1628: For further details, see the section "How to Protect Secret Keys from ! 1629: Disclosure" in the Essential Topics volume of the PGP User's Guide. ! 1630: ! 1631: ! 1632: Public Key Tampering ! 1633: -------------------- ! 1634: ! 1635: A major vulnerability exists if public keys are tampered with. This ! 1636: may be the most crucially important vulnerability of a public key ! 1637: cryptosystem, in part because most novices don't immediately ! 1638: recognize it. The importance of this vulnerability, and appropriate ! 1639: hygienic countermeasures, are detailed in the section "How to Protect ! 1640: Public Keys from Tampering" in the Essential Topics volume. ! 1641: ! 1642: To summarize: When you use someone's public key, make certain it has ! 1643: not been tampered with. A new public key from someone else should be ! 1644: trusted only if you got it directly from its owner, or if it has been ! 1645: signed by someone you trust. Make sure no one else can tamper with ! 1646: your own public key ring. Maintain physical control of both your ! 1647: public key ring and your secret key ring, preferably on your own ! 1648: personal computer rather than on a remote timesharing system. Keep a ! 1649: backup copy of both key rings. ! 1650: ! 1651: ! 1652: "Not Quite Deleted" Files ! 1653: ------------------------- ! 1654: ! 1655: Another potential security problem is caused by how most operating ! 1656: systems delete files. When you encrypt a file and then delete the ! 1657: original plaintext file, the operating system doesn't actually ! 1658: physically erase the data. It merely marks those disk blocks as ! 1659: deleted, allowing the space to be reused later. It's sort of like ! 1660: discarding sensitive paper documents in the paper recycling bin ! 1661: instead of the paper shredder. The disk blocks still contain the ! 1662: original sensitive data you wanted to erase, and will probably ! 1663: eventually be overwritten by new data at some point in the future. ! 1664: If an attacker reads these deleted disk blocks soon after they have ! 1665: been deallocated, he could recover your plaintext. ! 1666: ! 1667: In fact this could even happen accidentally, if for some reason ! 1668: something went wrong with the disk and some files were accidentally ! 1669: deleted or corrupted. A disk recovery program may be run to recover ! 1670: the damaged files, but this often means some previously deleted files ! 1671: are resurrected along with everything else. Your confidential files ! 1672: that you thought were gone forever could then reappear and be ! 1673: inspected by whomever is attempting to recover your damaged disk. ! 1674: Even while you are creating the original message with a word ! 1675: processor or text editor, the editor may be creating multiple ! 1676: temporary copies of your text on the disk, just because of its ! 1677: internal workings. These temporary copies of your text are deleted ! 1678: by the word processor when it's done, but these sensitive fragments ! 1679: are still on your disk somewhere. ! 1680: ! 1681: Let me tell you a true horror story. I had a friend, married with ! 1682: young children, who once had a brief and not very serious affair. ! 1683: She wrote a letter to her lover on her word processor, and deleted ! 1684: the letter after she sent it. Later, after the affair was over, the ! 1685: floppy disk got damaged somehow and she had to recover it because it ! 1686: contained other important documents. She asked her husband to ! 1687: salvage the disk, which seemed perfectly safe because she knew she ! 1688: had deleted the incriminating letter. Her husband ran a commercial ! 1689: disk recovery software package to salvage the files. It recovered ! 1690: the files alright, including the deleted letter. He read it, which ! 1691: set off a tragic chain of events. ! 1692: ! 1693: The only way to prevent the plaintext from reappearing is to somehow ! 1694: cause the deleted plaintext files to be overwritten. Unless you know ! 1695: for sure that all the deleted disk blocks will soon be reused, you ! 1696: must take positive steps to overwrite the plaintext file, and also ! 1697: any fragments of it on the disk left by your word processor. You can ! 1698: overwrite the original plaintext file after encryption by using the ! 1699: PGP -w (wipe) option. You can take care of any fragments of the ! 1700: plaintext left on the disk by using any of the disk utilities ! 1701: available that can overwrite all of the unused blocks on a disk. For ! 1702: example, the Norton Utilities for MSDOS can do this. ! 1703: ! 1704: Even if you overwrite the plaintext data on the disk, it may still be ! 1705: possible for a resourceful and determined attacker to recover the ! 1706: data. Faint magnetic traces of the original data remain on the disk ! 1707: after it has been overwritten. Special sophisticated disk recovery ! 1708: hardware can sometimes be used to recover the data. ! 1709: ! 1710: ! 1711: Viruses and Trojan Horses ! 1712: ------------------------- ! 1713: ! 1714: Another attack could involve a specially-tailored hostile computer ! 1715: virus or worm that might infect PGP or your operating system. This ! 1716: hypothetical virus could be designed to capture your pass phrase or ! 1717: secret key or deciphered messages, and covertly write the captured ! 1718: information to a file or send it through a network to the virus's ! 1719: owner. Or it might alter PGP's behavior so that signatures are not ! 1720: properly checked. This attack is cheaper than cryptanalytic attacks. ! 1721: ! 1722: Defending against this falls under the category of defending against ! 1723: viral infection generally. There are some moderately capable ! 1724: anti-viral products commercially available, and there are hygienic ! 1725: procedures to follow that can greatly reduce the chances of viral ! 1726: infection. A complete treatment of anti-viral and anti-worm ! 1727: countermeasures is beyond the scope of this document. PGP has no ! 1728: defenses against viruses, and assumes your own personal computer is a ! 1729: trustworthy execution environment. If such a virus or worm actually ! 1730: appeared, hopefully word would soon get around warning everyone. ! 1731: ! 1732: Another similar attack involves someone creating a clever imitation ! 1733: of PGP that behaves like PGP in most respects, but doesn't work the ! 1734: way it's supposed to. For example, it might be deliberately crippled ! 1735: to not check signatures properly, allowing bogus key certificates to ! 1736: be accepted. This "Trojan horse" version of PGP is not hard for an ! 1737: attacker to create, because PGP source code is widely available, so ! 1738: anyone could modify the source code and produce a lobotomized zombie ! 1739: imitation PGP that looks real but does the bidding of its diabolical ! 1740: master. This Trojan horse version of PGP could then be widely ! 1741: circulated, claiming to be from me. How insidious. ! 1742: ! 1743: You should make an effort to get your copy of PGP from a reliable ! 1744: source, whatever that means. Or perhaps from more than one ! 1745: independent source, and compare them with a file comparison utility. ! 1746: ! 1747: There are other ways to check PGP for tampering, using digital ! 1748: signatures. If someone you trust signs the executable version of ! 1749: PGP, vouching for the fact that it has not been infected or tampered ! 1750: with, you can be reasonably sure that you have a good copy. You ! 1751: could use an earlier trusted version of PGP to check the signature on ! 1752: a later suspect version of PGP. But this will not help at all if ! 1753: your operating system is infected, nor will it detect if your ! 1754: original copy of PGP.EXE has been maliciously altered in such a way ! 1755: as to compromise its own ability to check signatures. This test also ! 1756: assumes that you have a good trusted copy of the public key that you ! 1757: use to check the signature on the PGP executable. ! 1758: ! 1759: ! 1760: Physical Security Breach ! 1761: ------------------------ ! 1762: ! 1763: A physical security breach may allow someone to physically acquire ! 1764: your plaintext files or printed messages. A determined opponent ! 1765: might accomplish this through burglary, trash-picking, unreasonable ! 1766: search and seizure, or bribery, blackmail or infiltration of your ! 1767: staff. Some of these attacks may be especially feasible against ! 1768: grassroots political organizations that depend on a largely volunteer ! 1769: staff. It has been widely reported in the press that the FBI's ! 1770: COINTELPRO program used burglary, infiltration, and illegal bugging ! 1771: against antiwar and civil rights groups. And look what happened at ! 1772: the Watergate Hotel. ! 1773: ! 1774: Don't be lulled into a false sense of security just because you have ! 1775: a cryptographic tool. Cryptographic techniques protect data only ! 1776: while it's encrypted-- direct physical security violations can still ! 1777: compromise plaintext data or written or spoken information. ! 1778: ! 1779: This kind of attack is cheaper than cryptanalytic attacks on PGP. ! 1780: ! 1781: ! 1782: Tempest Attacks ! 1783: --------------- ! 1784: ! 1785: Another kind of attack that has been used by well-equipped opponents ! 1786: involves the remote detection of the electromagnetic signals from ! 1787: your computer. This expensive and somewhat labor-intensive attack is ! 1788: probably still cheaper than direct cryptanalytic attacks. An ! 1789: appropriately instrumented van can park near your office and remotely ! 1790: pick up all of your keystrokes and messages displayed on your ! 1791: computer video screen. This would compromise all of your passwords, ! 1792: messages, etc. This attack can be thwarted by properly shielding all ! 1793: of your computer equipment and network cabling so that it does not ! 1794: emit these signals. This shielding technology is known as "Tempest", ! 1795: and is used by some Government agencies and defense contractors. ! 1796: There are hardware vendors who supply Tempest shielding commercially, ! 1797: although it may be subject to some kind of Government licensing. Now ! 1798: why do you suppose the Government would restrict access to Tempest ! 1799: shielding? ! 1800: ! 1801: ! 1802: Protecting Against Bogus Timestamps ! 1803: ----------------------------------- ! 1804: ! 1805: A somewhat obscure vulnerability of PGP involves dishonest users ! 1806: creating bogus timestamps on their own public key certificates and ! 1807: signatures. You can skip over this section if you are a casual user ! 1808: and aren't deeply into obscure public key protocols. ! 1809: ! 1810: There's nothing to stop a dishonest user from altering the date and ! 1811: time setting of his own system's clock, and generating his own public ! 1812: key certificates and signatures that appear to have been created at a ! 1813: different time. He can make it appear that he signed something ! 1814: earlier or later than he actually did, or that his public/secret key ! 1815: pair was created earlier or later. This may have some legal or ! 1816: financial benefit to him, for example by creating some kind of ! 1817: loophole that might allow him to repudiate a signature. ! 1818: ! 1819: A remedy for this could involve some trustworthy Certifying Authority ! 1820: or notary that would create notarized signatures with a trustworthy ! 1821: timestamp. This might not necessarily require a centralized ! 1822: authority. Perhaps any trusted introducer or disinterested party ! 1823: could serve this function, the same way real notary publics do now. ! 1824: A public key certificate could be signed by the notary, and the ! 1825: trusted timestamp in the notary's signature would have some legal ! 1826: significance. The notary could enter the signed certificate into a ! 1827: special certificate log controlled by the notary. Anyone can read ! 1828: this log. ! 1829: ! 1830: The notary could also sign other people's signatures, creating a ! 1831: signature certificate of a signature certificate. This would serve ! 1832: as a witness to the signature the same way real notaries do now with ! 1833: paper. Again, the notary could enter the detached signature ! 1834: certificate (without the actual whole document that was signed) into ! 1835: a log controlled by the notary. The notary's signature would have a ! 1836: trusted timestamp, which might have greater credibility than the ! 1837: timestamp in the original signature. A signature becomes "legal" if ! 1838: it is signed and logged by the notary. ! 1839: ! 1840: This problem of certifying signatures with notaries and trusted ! 1841: timestamps warrants further discussion. This can of worms will not ! 1842: be fully covered here now. There is a good treatment of this topic ! 1843: in Denning's 1983 article in IEEE Computer (see references). There ! 1844: is much more detail to be worked out in these various certifying ! 1845: schemes. This will develop further as PGP usage increases and other ! 1846: public key products develop their own certifying schemes. ! 1847: ! 1848: ! 1849: Exposure on Multi-user Systems ! 1850: ------------------------------ ! 1851: ! 1852: PGP was originally designed for a single-user MSDOS machine under ! 1853: your direct physical control. I run PGP at home on my own PC, and ! 1854: unless someone breaks into my house or monitors my electromagnetic ! 1855: emissions, they probably can't see my plaintext files or secret keys. ! 1856: ! 1857: But now PGP also runs on multi-user systems such as Unix and VAX/VMS. ! 1858: On multi-user systems, there are much greater risks of your plaintext ! 1859: or keys or passwords being exposed. The Unix system administrator or ! 1860: a clever intruder can read your plaintext files, or perhaps even use ! 1861: special software to covertly monitor your keystrokes or read what's ! 1862: on your screen. On a Unix system, any other user can read your ! 1863: environment information remotely by simply using the Unix "ps" ! 1864: command. Similar problems exist for MSDOS machines connected on a ! 1865: local area network. The actual security risk is dependent on your ! 1866: particular situation. Some multi-user systems may be safe because ! 1867: all the users are trusted, or because they have system security ! 1868: measures that are safe enough to withstand the attacks available to ! 1869: the intruders, or because there just aren't any sufficiently ! 1870: interested intruders. Some Unix systems are safe because they are ! 1871: only used by one user-- there are even some notebook computers ! 1872: running Unix. It would be unreasonable to simply exclude PGP from ! 1873: running on all Unix systems. ! 1874: ! 1875: PGP is not designed to protect your data while it is in plaintext ! 1876: form on a compromised system. Nor can it prevent an intruder from ! 1877: using sophisticated measures to read your secret key while it is ! 1878: being used. You will just have to recognize these risks on ! 1879: multi-user systems, and adjust your expectations and behavior ! 1880: accordingly. Perhaps your situation is such that you should consider ! 1881: running PGP only on an isolated single-user system under your direct ! 1882: physical control. That's what I do, and that's what I recommend. ! 1883: ! 1884: ! 1885: Traffic Analysis ! 1886: ---------------- ! 1887: ! 1888: Even if the attacker cannot read the contents of your encrypted ! 1889: messages, he may be able to infer at least some useful information by ! 1890: observing where the messages come from and where they are going, the ! 1891: size of the messages, and the time of day the messages are sent. ! 1892: This is analogous to the attacker looking at your long distance phone ! 1893: bill to see who you called and when and for how long, even though the ! 1894: actual content of your calls is unknown to the attacker. This is ! 1895: called traffic analysis. PGP alone does not protect against traffic ! 1896: analysis. Solving this problem would require specialized ! 1897: communication protocols designed to reduce exposure to traffic ! 1898: analysis in your communication environment, possibly with some ! 1899: cryptographic assistance. ! 1900: ! 1901: ! 1902: Cryptanalysis ! 1903: ------------- ! 1904: ! 1905: An expensive and formidable cryptanalytic attack could possibly be ! 1906: mounted by someone with vast supercomputer resources, such as a ! 1907: Government intelligence agency. They might crack your RSA key by ! 1908: using some new secret factoring breakthrough. Perhaps so, but it is ! 1909: noteworthy that the US Government trusts the RSA algorithm enough in ! 1910: some cases to use it to protect its own nuclear weapons, according to ! 1911: Ron Rivest. And civilian academia has been intensively attacking it ! 1912: without success since 1978. ! 1913: ! 1914: Perhaps the Government has some classified methods of cracking the ! 1915: IDEA(tm) conventional encryption algorithm used in PGP. This is ! 1916: every cryptographer's worst nightmare. There can be no absolute ! 1917: security guarantees in practical cryptographic implementations. ! 1918: ! 1919: Still, some optimism seems justified. The IDEA algorithm's designers ! 1920: are among the best cryptographers in Europe. It has had extensive ! 1921: security analysis and peer review from some of the best cryptanalysts ! 1922: in the unclassified world. It appears to have some design advantages ! 1923: over the DES in withstanding differential cryptanalysis, which has ! 1924: been used to crack the DES. ! 1925: ! 1926: Besides, even if this algorithm has some subtle unknown weaknesses, ! 1927: PGP compresses the plaintext before encryption, which should greatly ! 1928: reduce those weaknesses. The computational workload to crack it is ! 1929: likely to be much more expensive than the value of the message. ! 1930: ! 1931: If your situation justifies worrying about very formidable attacks of ! 1932: this caliber, then perhaps you should contact a data security ! 1933: consultant for some customized data security approaches tailored to ! 1934: your special needs. Boulder Software Engineering, whose address and ! 1935: phone are given at the end of this document, can provide such ! 1936: services. ! 1937: ! 1938: ! 1939: In summary, without good cryptographic protection of your data ! 1940: communications, it may have been practically effortless and perhaps ! 1941: even routine for an opponent to intercept your messages, especially ! 1942: those sent through a modem or E-mail system. If you use PGP and ! 1943: follow reasonable precautions, the attacker will have to expend far ! 1944: more effort and expense to violate your privacy. ! 1945: ! 1946: If you protect yourself against the simplest attacks, and you feel ! 1947: confident that your privacy is not going to be violated by a ! 1948: determined and highly resourceful attacker, then you'll probably be ! 1949: safe using PGP. PGP gives you Pretty Good Privacy. ! 1950: ! 1951: ! 1952: Legal Issues ! 1953: ============ ! 1954: ! 1955: ! 1956: Trademarks, Copyrights, and Warranties ! 1957: -------------------------------------- ! 1958: ! 1959: "Pretty Good Privacy", "Phil's Pretty Good Software", and the "Pretty ! 1960: Good" label for computer software and hardware products are all ! 1961: trademarks of Philip Zimmermann and Phil's Pretty Good Software. PGP ! 1962: is (c) Copyright Philip R. Zimmermann, 1990-1994. All rights ! 1963: reserved. Philip Zimmermann also holds the copyright for the PGP ! 1964: User's Manual, as well as any foreign language translations of the ! 1965: manual or the software, and all derivative works. All rights ! 1966: reserved. ! 1967: ! 1968: MIT may have a copyright on the particular software distribution ! 1969: package that they distribute from the MIT FTP site. This copyright ! 1970: on the "compilation" of the distribution package in no way implies ! 1971: that MIT has a copyright on PGP itself, or its user documentation. ! 1972: ! 1973: The author assumes no liability for damages resulting from the use of ! 1974: this software, even if the damage results from defects in this ! 1975: software, and makes no representations concerning the merchantability ! 1976: of this software or its suitability for any specific purpose. It is ! 1977: provided "as is" without express or implied warranty of any kind. ! 1978: Because certain actions may delete files or render them ! 1979: unrecoverable, the author assumes no responsibility for the loss or ! 1980: modification of any data. ! 1981: ! 1982: ! 1983: Patent Rights on the Algorithms ! 1984: ------------------------------- ! 1985: ! 1986: The RSA public key cryptosystem was developed at MIT, which holds a ! 1987: patent on it (U.S. patent #4,405,829, issued 20 Sep 1983). A company ! 1988: in California called Public Key Partners (PKP) holds the exclusive ! 1989: commercial license to sell and sub-license the RSA public key ! 1990: cryptosystem. MIT distributes a freeware version of PGP under the ! 1991: terms of the RSAREF license from RSA Data Security, Inc. (RSADSI). ! 1992: ! 1993: Non-US users of earlier versions of PGP should note that the RSA ! 1994: patent does not apply outside the US, and at least at the time of ! 1995: this writing, the author is not aware of any RSA patent in any other ! 1996: country. Federal agencies may use the RSA algorithm, because the ! 1997: Government paid for the development of RSA with grants from the ! 1998: National Science Foundation and the Navy. But despite the fact of ! 1999: Government users having free access to the RSA algorithm, Government ! 2000: use of PGP has additional restrictions imposed by the agreement I ! 2001: have with ViaCrypt, as explained later. ! 2002: ! 2003: I wrote my PGP software from scratch, with my own independently ! 2004: developed implementation of the RSA algorithm. Before publishing ! 2005: PGP, I got a formal written legal opinion from a patent attorney with ! 2006: extensive experience in software patents. I'm convinced that ! 2007: publishing PGP the way I did does not violate patent law. ! 2008: ! 2009: Not only did PKP acquire the exclusive patent rights for the RSA ! 2010: cryptosystem, but they also acquired the exclusive rights to three ! 2011: other patents covering other public key schemes invented by others at ! 2012: Stanford University, also developed with federal funding. This ! 2013: essentially gives one company a legal lock in the USA on nearly all ! 2014: practical public key cryptosystems. They even appear to be claiming ! 2015: patent rights on the very concept of public key cryptography, ! 2016: regardless of what clever new original algorithms are independently ! 2017: invented by others. I find such a comprehensive monopoly troubling, ! 2018: because I think public key cryptography is destined to become a ! 2019: crucial technology in the protection of our civil liberties and ! 2020: privacy in our increasingly connected society. At the very least, ! 2021: it places these vital tools at risk by affording to the Government ! 2022: a single pressure point of influence. ! 2023: ! 2024: Beginning with PGP version 2.5 (distributed by MIT, the holders of ! 2025: the original RSA patent), the freeware version of PGP uses the RSAREF ! 2026: subroutine library to perform its RSA calculations, under the RSAREF ! 2027: license, which allows noncommercial use in the USA. RSAREF is a ! 2028: subroutine package from RSA Data Security Inc, that implements the ! 2029: RSA algorithm. The RSAREF subroutines are used instead of PGP's ! 2030: original subroutines to implement the RSA functions in PGP. See the ! 2031: RSAREF license for terms and conditions of use ! 2032: of RSAREF applications. ! 2033: ! 2034: PGP 2.5 was released by MIT for a brief test period in May, 1994 ! 2035: before releasing 2.6. Although 2.5 was released under the 16 March, ! 2036: 1994 RSAREF license, which is a perpetual license, it would be better ! 2037: for users in the United States to upgrade to version 2.6 to facilitate ! 2038: the demise of PGP 2.3a and earlier versions. Also, PGP 2.5 has bugs ! 2039: that are corrected in 2.6, and 2.5 will not read the new data format ! 2040: after September 1, 1994. (See the section on Compatibility with ! 2041: Previous Versions of PGP.) ! 2042: ! 2043: The PGP 2.0 release was a joint effort of an international team of ! 2044: software engineers, implementing enhancements to the original PGP ! 2045: with design guidance from me. It was released by Branko Lankester in ! 2046: The Netherlands and Peter Gutmann in New Zealand, out of reach of US ! 2047: patent law. Although released only in Europe and New Zealand, it ! 2048: spontaneously spread to the USA without help from me or the PGP ! 2049: development team. ! 2050: ! 2051: The IDEA(tm) conventional block cipher used by PGP is covered by a ! 2052: patent in Europe, held by ETH and a Swiss company called Ascom-Tech ! 2053: AG. The US Patent number is US005214703, and the European patent ! 2054: number is EP 0 482 154 B1. IDEA(tm) is a trademark of Ascom-Tech AG. ! 2055: There is no license fee required for noncommercial use of IDEA. ! 2056: Commercial users of IDEA may obtain licensing details from Dieter ! 2057: Profos, Ascom Tech AG, Teleservices Section, Postfach 151, 4502 ! 2058: Solothurn, Switzerland, Tel +41 65 242885, Fax +41 65 235761. ! 2059: ! 2060: Ascom-Tech AG has granted permission for the freeware version PGP to ! 2061: use the IDEA cipher in non-commercial uses, everywhere. In the US ! 2062: and Canada, all commercial or Government users must obtain a licensed ! 2063: version from ViaCrypt, who has a license from Ascom-Tech for the IDEA ! 2064: cipher. Ascom-Tech has recently been changing its policies regarding ! 2065: the use of IDEA in PGP for commercial use outside the US, and that ! 2066: policy still seems to be in flux. ! 2067: ! 2068: The ZIP compression routines in PGP come from freeware source code, ! 2069: with the author's permission. I'm not aware of any patents on the ! 2070: compression algorithms used in the ZIP routines, but you're welcome to ! 2071: check into that question yourself. ! 2072: ! 2073: ! 2074: Licensing and Distribution ! 2075: -------------------------- ! 2076: ! 2077: In the USA, PGP 2.6 is available from the Massachusetts Institute of ! 2078: Technology, under the terms of the RSAREF license. I have no ! 2079: objection to anyone freely using or distributing the freeware version ! 2080: of PGP, without payment of fees to me, as long as it is for personal ! 2081: non-commercial use. For commercial use, contact ViaCrypt in Phoenix, ! 2082: Arizona (phone 602-944-0773). You must keep the copyright, patent, ! 2083: and trademark notices on PGP and keep all the documentation with it. ! 2084: ! 2085: NOTE: Regardless of the complexities and partially overlapping ! 2086: restrictions from all the other terms and conditions imposed by the ! 2087: various patent and copyright licenses (RSA, RSAREF, and IDEA) from ! 2088: various third parties, an additional overriding restriction on PGP ! 2089: usage is imposed by my own agreement with ViaCrypt: The freeware ! 2090: version of PGP is only for personal, noncommercial use -- all other ! 2091: users in the USA and Canada must obtain a fully licensed version of ! 2092: PGP from ViaCrypt. ! 2093: ! 2094: I had to make an agreement with ViaCrypt in the summer of 1993 to ! 2095: license the exclusive commercial rights to PGP, so that there would ! 2096: be a legally safe way for corporations to use PGP without risk of a ! 2097: patent infringement lawsuit from PKP. For PGP to succeed in the long ! 2098: term as a viable industry standard, the legal stigma associated with ! 2099: the RSA patent rights had to be resolved. ViaCrypt had already ! 2100: obtained a patent license from PKP to make, use, and sell products ! 2101: that practice the RSA patents. ViaCrypt offered a way out of the ! 2102: patent quagmire for PGP to penetrate the corporate environment. They ! 2103: could sell a fully-licensed version of PGP, but only if I licensed it ! 2104: to them under these terms. So we entered into an agreement to do ! 2105: that, opening the door for PGP's future in the commercial sector, ! 2106: which was necessary for PGP's long-term political future. ! 2107: ! 2108: PGP is not shareware, it's freeware. Published as a community service. ! 2109: Giving PGP away for free will encourage far more people to use it, which ! 2110: hopefully will have a greater social impact. This could lead to ! 2111: widespread awareness and use of the RSA public key cryptosystem. ! 2112: ! 2113: Feel free to disseminate the complete PGP release package as widely ! 2114: as possible, but be careful not to violate U.S. export controls if ! 2115: you live in the USA. Give it to all your friends. If you have ! 2116: access to any electronic Bulletin Boards Systems, please upload the ! 2117: complete PGP executable object release package to as many BBS's as ! 2118: possible. The freeware version of PGP is available in source code ! 2119: form, and you may disseminate the source release package too, if you've ! 2120: got it. NOTE: Under no circumstances should PGP be distributed ! 2121: without the PGP documentation, including this PGP User's Guide and the ! 2122: RSAREF license agreement. ! 2123: ! 2124: The PGP version 2.6 executable object release package for MSDOS contains ! 2125: the PGP executable software, documentation, RSAREF license, sample ! 2126: key rings including my own public key, and signatures for the software ! 2127: and this manual, all in one PKZIP compressed file called pgp26.zip. The ! 2128: PGP source release package for MSDOS contains all the C source files in ! 2129: one PKZIP compressed file called pgp26src.zip. The filename for the ! 2130: release package is derived from the version number of the release. ! 2131: ! 2132: The primary release site for PGP is the Massachusetts Institute of ! 2133: Technology, at their FTP site "net-dist.mit.edu", in their /pub/PGP ! 2134: directory. You may obtain free copies or updates to PGP from this ! 2135: site, or any other Internet FTP site or BBS that PGP has spread to. ! 2136: Don't ask me for a copy directly from me, especially if you live ! 2137: outside the US or Canada. ! 2138: ! 2139: After all this work I have to admit I wouldn't mind getting some fan ! 2140: mail for PGP, to gauge its popularity. Let me know what you think ! 2141: about it and how many of your friends use it. Bug reports and ! 2142: suggestions for enhancing PGP are welcome, too. Perhaps a future PGP ! 2143: release will reflect your suggestions. ! 2144: ! 2145: This project has not been funded and the project has nearly eaten me ! 2146: alive. This means you can't count on a reply to your mail, unless ! 2147: you only need a short written reply and you include a stamped ! 2148: self-addressed envelope. But I often do reply to E-mail. Please keep ! 2149: it in English, as my foreign language skills are weak. If you call ! 2150: and I'm not in, it's best to just try again later. I usually don't ! 2151: return long distance phone calls, unless you leave a message that I ! 2152: can call you collect. If you need any significant amount of my time, ! 2153: I am available on a paid consulting basis, and I do return those ! 2154: calls. ! 2155: ! 2156: The most inconvenient mail I get is for some well-intentioned person ! 2157: to send me a few dollars asking me for a copy of PGP. I don't send ! 2158: it to them because I'd rather avoid any legal problems with PKP. Or ! 2159: worse, sometimes these requests are from foreign countries, and I ! 2160: would be risking a violation of US cryptographic export control ! 2161: laws. Even if there were no legal hassles involved in sending PGP to ! 2162: them, they usually don't send enough money to make it worth my time. ! 2163: I'm just not set up as a low cost low volume mail order business. I ! 2164: can't just ignore the request and keep the money, because they ! 2165: probably regard the money as a fee for me to fulfill their request. ! 2166: If I return the money, I might have to get in my car and drive down ! 2167: to the post office and buy some postage stamps, because these ! 2168: requests rarely include a stamped self-addressed envelope. And I ! 2169: have to take the time to write a polite reply that I can't do it. If ! 2170: I postpone the reply and set the letter down on my desk, it might be ! 2171: buried within minutes and won't see the light of day again for ! 2172: months. Multiply these minor inconveniences by the number of ! 2173: requests I get, and you can see the problem. Isn't it enough that ! 2174: the software is free? It would be nicer if people could try to get ! 2175: PGP from any of the myriad other sources. If you don't have a modem, ! 2176: ask a friend to get it for you. If you can't find it yourself, I ! 2177: don't mind answering a quick phone call. ! 2178: ! 2179: If anyone wants to volunteer to improve PGP, please let me know. It ! 2180: could certainly use some more work. Some features were deferred to ! 2181: get it out the door. A number of PGP users have since donated their ! 2182: time to port PGP to Unix on Sun SPARCstations, to Ultrix, to VAX/VMS, ! 2183: to OS/2, to the Amiga, and to the Atari ST. Perhaps you can help ! 2184: port it to some new environments. But please let me know if you plan ! 2185: to port or add enhancements to PGP, to avoid duplication of effort, ! 2186: and to avoid starting with an obsolete version of the source code. ! 2187: ! 2188: Because so many foreign language translations of PGP have been ! 2189: produced, most of them are not distributed with the regular PGP ! 2190: release package because it would require too much disk space. ! 2191: Separate language translation "kits" are available from a number of ! 2192: independent sources, and are sometimes available separately from the ! 2193: same distribution centers that carry the regular PGP release ! 2194: software. These kits include translated versions of the file ! 2195: LANGUAGE.TXT, PGP.HLP, and the PGP User's Guide. If you want to ! 2196: produce a translation for your own native language, contact me first ! 2197: to get the latest information and standard guidelines, and to find ! 2198: out if it's been translated to your language already. To find out ! 2199: where to get a foreign language kit for your language, you might ! 2200: check on the Internet newsgroups, or get it from Mike Johnson ! 2201: ([email protected]). ! 2202: ! 2203: If you have access to the Internet, watch for announcements of new ! 2204: releases of PGP on the Internet newsgroups "sci.crypt" and PGP's own ! 2205: newsgroup, "alt.security.pgp". If you want to know where to get PGP, ! 2206: MIT is the primary FTP distribution site (net-dist.mit.edu). Or ask ! 2207: Mike Johnson ([email protected]) for a list of Internet FTP sites and BBS ! 2208: phone numbers. ! 2209: ! 2210: Future versions of PGP may have to change the data formats for ! 2211: messages, signatures, keys and key rings, in order to provide ! 2212: important new features. This may cause backward compatibility ! 2213: problems with this version of PGP. Future releases may provide ! 2214: conversion utilities to convert old keys, but you may have to dispose ! 2215: of old messages created with the old PGP. ! 2216: ! 2217: ! 2218: ! 2219: Export Controls ! 2220: --------------- ! 2221: ! 2222: The U.S. Government has made it illegal in most cases to export good ! 2223: cryptographic technology, and that may include PGP. They regard this ! 2224: kind of software just like they regard munitions. This is determined ! 2225: by volatile State Department, Defense Department and Commerce ! 2226: Department policies, not fixed laws. I will not export this software ! 2227: out of the US or Canada in cases when it is illegal to do so under US ! 2228: controls, and I urge other people not to export it on their own. ! 2229: ! 2230: If you live outside the US or Canada, I urge you not to violate US ! 2231: export laws by getting any version of PGP in a way that violates ! 2232: those laws. Since thousands of domestic users got the first version ! 2233: after its initial publication, it somehow leaked out of the US and ! 2234: spread itself widely abroad, like dandelion seeds blowing in the ! 2235: wind. ! 2236: ! 2237: Starting with PGP version 2.0 through version 2.3a, the release point ! 2238: of the software has been outside the US, on publicly-accessible ! 2239: computers in Europe. Each release was electronically sent back into ! 2240: the US and posted on publicly-accessible computers in the US by PGP ! 2241: privacy activists in foreign countries. There are some restrictions ! 2242: in the US regarding the import of munitions, but I'm not aware of any ! 2243: cases where this was ever enforced for importing cryptographic ! 2244: software into the US. I imagine that a legal action of that type ! 2245: would be quite a spectacle of controversy. ! 2246: ! 2247: ViaCrypt PGP version 2.4 is sold in the United States and Canada and ! 2248: is not for export. The following language was supplied by the US ! 2249: Government to ViaCrypt for inclusion in the ViaCrypt PGP ! 2250: documentation: "PGP is export restricted by the Office of Export ! 2251: Administration, United States Department of Commerce and the Offices ! 2252: of Defense Trade Controls and Munitions Control, United States ! 2253: Department of State. PGP cannot be exported or reexported, directly ! 2254: or indirectly, (a) without all export or reexport licenses and ! 2255: governmental approvals required by any applicable laws, or (b) in ! 2256: violation of any prohibition against the export or reexport of any ! 2257: part of PGP." The Government may take the position that the freeware ! 2258: PGP versions are also subject to those controls. ! 2259: ! 2260: The freeware PGP versions 2.5 and 2.6 were released through a posting ! 2261: on a controlled FTP site maintained by MIT. This site has ! 2262: restrictions and limitations which have been used on other FTP sites ! 2263: to comply with export control requirements with respect to other ! 2264: encryption software such as Kerberos and software from RSA Data ! 2265: Security, Inc. I urge you not to do anything which would weaken those ! 2266: controls or facilitate any improper export of ViaCrypt PGP or the ! 2267: freeware PGP versions. ! 2268: ! 2269: Some foreign governments impose serious penalties on anyone inside ! 2270: their country for merely using encrypted communications. In some ! 2271: countries they might even shoot you for that. But if you live in ! 2272: that kind of country, perhaps you need PGP even more. ! 2273: ! 2274: ! 2275: ! 2276: Philip Zimmermann's Legal Situation ! 2277: ----------------------------------- ! 2278: ! 2279: At the time of this writing, I am the target of a US Customs criminal ! 2280: investigation in the Northern District of California. My defense ! 2281: attorney has been told by the Assistant US Attorney that the area of ! 2282: law of interest to the investigation has to do with the export ! 2283: controls on encryption software. The federal mandatory sentencing ! 2284: guidelines for this offense are 41 to 51 months in a federal prison. ! 2285: US Customs appears to be taking the position that electronic domestic ! 2286: publication of encryption software is the same as exporting it. The ! 2287: prosecutor has issued a number of federal grand jury subpoenas. It ! 2288: may be months before a decision is reached on whether to seek ! 2289: indictment. This situation may change at any time, so this ! 2290: description may be out of date by the time you read it. Watch the ! 2291: news for further developments. If I am indicted and this goes to ! 2292: trial, it will be a major test case. ! 2293: ! 2294: I have a legal defense fund set up for this case. So far, no other ! 2295: organization is doing the fundraising for me, so I am depending on ! 2296: people like you to contribute directly to this cause. The fund is run ! 2297: by my lead defense attorney, Phil Dubois, here in Boulder. Please ! 2298: send your contributions to: ! 2299: ! 2300: Philip Dubois ! 2301: 2305 Broadway ! 2302: Boulder, Colorado 80304 USA ! 2303: Phone 303-444-3885 ! 2304: E-mail: [email protected] ! 2305: ! 2306: You can also phone in your donation and put it on Mastercard or Visa. ! 2307: If you want to be really cool, you can use Internet E-mail to send in ! 2308: your contribution, encrypting your message with PGP so that no one ! 2309: can intercept your credit card number. Include in your E-mail ! 2310: message your Mastercard or Visa number, expiration date, name on the ! 2311: card, and amount of donation. Then sign it with your own key and ! 2312: encrypt it with Phil Dubois's public key (his key is included in the ! 2313: standard PGP distribution package, in the "keys.asc" file). Put a ! 2314: note on the subject line that this is a donation to my legal defense ! 2315: fund, so that Mr. Dubois will decrypt it promptly. Please don't send ! 2316: a lot of casual encrypted email to him -- I'd rather he use his ! 2317: valuable time to work on my case. ! 2318: ! 2319: If you want to read some press stories about this case, see the ! 2320: following references: ! 2321: ! 2322: 1) William Bulkeley, "Cipher Probe", Wall Street Journal, Thursday ! 2323: April 28th, 1994, front page. ! 2324: 2) John Cary, "Spy vs. Computer Nerd: The Fight Over Data ! 2325: Security", Business Week, 4 Oct 1993, page 43. ! 2326: 3) Jon Erickson, "Cryptography Fires Up the Feds", Dr. Dobb's ! 2327: Journal, December 1993, page 6. ! 2328: 4) John Markoff, "Federal Inquiry on Software Examines Privacy ! 2329: Programs", New York Times, Tuesday 21 Sep 1993, page C1. ! 2330: 5) Kurt Kleiner, "Punks and Privacy", Mother Jones Magazine, ! 2331: Jan/Feb 1994, page 17. ! 2332: 6) John Markoff, "Cyberspace Under Lock and Key", New York Times, ! 2333: Sunday 13 Feb 1994. ! 2334: 7) Philip Elmer-DeWitt, "Who Should Keep the Keys", Time, 14 Mar ! 2335: 1994, page 90. ! 2336: ! 2337: ! 2338: Where to Get a Commercial Version of PGP ! 2339: ---------------------------------------- ! 2340: ! 2341: To get a fully licensed version of PGP for use in the USA or Canada, ! 2342: contact: ! 2343: ! 2344: ViaCrypt ! 2345: 2104 West Peoria Avenue ! 2346: Phoenix, Arizona 85029 ! 2347: Phone: 602-944-0773 ! 2348: Fax: 602-943-2601 ! 2349: E-mail: [email protected] ! 2350: ! 2351: ViaCrypt has a version of PGP for MSDOS, and a number of Unix ! 2352: platforms. Other versions are under development. If you have a need ! 2353: to use PGP in a commercial or Government setting, and ViaCrypt has a ! 2354: version of PGP for your hardware platform, you should get ViaCrypt ! 2355: PGP. ! 2356: ! 2357: ViaCrypt has obtained all the necessary licenses from PKP, Ascom-Tech ! 2358: AG, and Philip Zimmermann to sell PGP for use in commercial or ! 2359: Government environments. ViaCrypt PGP is every bit as secure as the ! 2360: freeware PGP, and is entirely compatible in both directions with the ! 2361: freeware version of PGP. ViaCrypt PGP is the perfect way to get a ! 2362: fully licensed version of PGP into your corporate environment. ! 2363: ! 2364: ! 2365: Reporting PGP Bugs ! 2366: ------------------ ! 2367: ! 2368: Bugs in PGP should be reported via E-mail to MIT, the official ! 2369: distribution site of PGP. The E-mail address for bug reports is ! 2370: [email protected]. ! 2371: ! 2372: ! 2373: ! 2374: Computer-Related Political Groups ! 2375: ================================= ! 2376: ! 2377: PGP is a very political piece of software. It seems appropriate to ! 2378: mention here some computer-related activist groups. Full details on ! 2379: these groups, and how to join them, is provided in a separate ! 2380: document file in the PGP release package. ! 2381: ! 2382: The Electronic Frontier Foundation (EFF) was founded in 1990 to ! 2383: assure freedom of expression in digital media, with a particular ! 2384: emphasis on applying the principles embodied in the US Constitution ! 2385: and the Bill of Rights to computer-based communication. They can be ! 2386: reached in Washington DC, at (202) 347-5400. Internet E-mail address: ! 2387: [email protected]. ! 2388: ! 2389: Computer Professionals For Social Responsibility (CPSR) empowers ! 2390: computer professionals and computer users to advocate for the ! 2391: responsible use of information technology and empowers all who use ! 2392: computer technology to participate in public policy debates on the ! 2393: impacts of computers on society. They can be reached at: ! 2394: 415-322-3778 in Palo Alto, E-mail address [email protected]. ! 2395: ! 2396: The League for Programming Freedom (LPF) is a grass-roots organization ! 2397: of professors, students, businessmen, programmers and users dedicated ! 2398: to bringing back the freedom to write programs. They regard patents ! 2399: on computer algorithms as harmful to the US software industry. They ! 2400: can be reached at (617) 433-7071. E-mail address: [email protected]. ! 2401: ! 2402: For more details on these groups, see the accompanying document in ! 2403: the PGP release package. ! 2404: ! 2405: ! 2406: Recommended Introductory Readings ! 2407: ================================= ! 2408: ! 2409: 1) Bruce Schneier, "Applied Cryptography: Protocols, Algorithms, and ! 2410: Source Code in C", John Wiley & Sons, 1993 ! 2411: (This book is a watershed work on the subject.) ! 2412: 2) Dorothy Denning, "Cryptography and Data Security", Addison-Wesley, ! 2413: Reading, MA 1982 ! 2414: 3) Dorothy Denning, "Protecting Public Keys and Signature Keys", ! 2415: IEEE Computer, Feb 1983 ! 2416: 4) Martin E. Hellman, "The Mathematics of Public-Key Cryptography," ! 2417: Scientific American, Aug 1979 ! 2418: 5) Steven Levy, "Crypto Rebels", WIRED, May/Jun 1993, page 54. ! 2419: (This is a "must-read" article on PGP and other related topics.) ! 2420: ! 2421: Other Readings ! 2422: ============== ! 2423: ! 2424: 6) Ronald Rivest, "The MD5 Message Digest Algorithm", MIT Laboratory ! 2425: for Computer Science, 1991 ! 2426: 7) Xuejia Lai, "On the Design and Security of Block Ciphers", ! 2427: ETH Series on Information Processing (Ed. J. L. Massey), ! 2428: Vol. 1, Hartung-Gorre Verlag, Konstanz, Switzerland, 1992 ! 2429: 8) Philip Zimmermann, "A Proposed Standard Format for RSA ! 2430: Cryptosystems", Advances in Computer Security, Vol III, edited by ! 2431: Rein Turn, Artech House, 1988 ! 2432: 9) Paul Wallich, "Electronic Envelopes", Scientific American, Feb ! 2433: 1993, page 30. (This is an article on PGP) ! 2434: 10) William Bulkeley, "Cipher Probe", Wall Street Journal, 28 April ! 2435: 1994, front page. (This is an article on PGP and Zimmermann) ! 2436: ! 2437: ! 2438: To Contact the Author ! 2439: ===================== ! 2440: ! 2441: Philip Zimmermann may be reached at: ! 2442: ! 2443: Boulder Software Engineering ! 2444: 3021 Eleventh Street ! 2445: Boulder, Colorado 80304 USA ! 2446: Internet: [email protected] ! 2447: Phone 303-541-0140 (voice) (10:00am - 7:00pm Mountain Time) ! 2448: Fax line available, if you arrange it via voice line. ! 2449: ! 2450: ! 2451: ! 2452: Appendix A: Where to Get PGP ! 2453: ============================= ! 2454: ! 2455: The following describes how to get the freeware public key ! 2456: cryptographic software PGP (Pretty Good Privacy) from an anonymous ! 2457: FTP site on Internet, or from other sources. ! 2458: ! 2459: PGP has sophisticated key management, an RSA/conventional hybrid ! 2460: encryption scheme, message digests for digital signatures, data ! 2461: compression before encryption, and good ergonomic design. PGP is ! 2462: well featured and fast, and has excellent user documentation. Source ! 2463: code is free. ! 2464: ! 2465: The Massachusetts Institute of Technology is the distributor of PGP ! 2466: version 2.6, for distribution in the USA only. It is available from ! 2467: "net-dist.mit.edu," a controlled FTP site that has restrictions and ! 2468: limitations, similar to those used by RSA Data Security, Inc., to comply ! 2469: with export control requirements. The software resides in the directory ! 2470: /pub/PGP. ! 2471: ! 2472: A reminder: Set mode to binary or image when doing an FTP transfer. ! 2473: And when doing a kermit download to your PC, specify 8-bit binary ! 2474: mode at both ends. ! 2475: ! 2476: There are two compressed archive files in the standard release, with ! 2477: the file name derived from the release version number. For PGP ! 2478: version 2.6, you must get pgp26.zip which contains the MSDOS binary ! 2479: executable and the PGP User's Guide, and you can optionally get ! 2480: pgp26src.zip which contains all the source code. These files can be ! 2481: decompressed with the MSDOS shareware archive decompression utility ! 2482: PKUNZIP.EXE, version 1.10 or later. For Unix users who lack an ! 2483: implementation of UNZIP, the source code can also be found in the ! 2484: compressed tar file pgp26src.tar.Z. ! 2485: ! 2486: If you don't have any local BBS phone numbers handy, here is a BBS ! 2487: you might try. The Catacombs BBS, operated by Mike Johnson in ! 2488: Longmont, Colorado, has PGP available for download by people in the US ! 2489: or Canada only. The BBS phone number is 303-772-1062. Mike ! 2490: Johnson's voice phone number is 303 772-1773, and his email address ! 2491: is [email protected]. Mike also has PGP available on an Internet FTP site ! 2492: for users in the US or Canada only; the site name is csn.org, in ! 2493: directory /mpj/, and you must read the README.MPJ file to get it. ! 2494: ! 2495: To get a fully licensed version of PGP for use in the USA or Canada, ! 2496: contact ViaCrypt in Phoenix, Arizona. Their phone number is ! 2497: 602-944-0773. ViaCrypt has obtained all the necessary licenses from ! 2498: PKP, Ascom-Tech AG, and Philip Zimmermann to sell PGP for use in ! 2499: commercial or Government environments. ViaCrypt PGP is every bit as ! 2500: secure as the freeware PGP, and is entirely compatible in both ! 2501: directions with the freeware version of PGP. ViaCrypt PGP is the ! 2502: perfect way to get a fully licensed version of PGP into your ! 2503: corporate or Government environment. ! 2504: ! 2505: Source and binary distributions of PGP are available from the Canadian ! 2506: Broadcasting Corporation library, which is open to the public. It has ! 2507: branches in Toronto, Montreal, and Vancouver. Contact Max Allen, at ! 2508: +1 416 205-6017 if you have questions. ! 2509: ! 2510: Here are a few people and their email addresses or phone numbers you ! 2511: can contact in some countries to get information on local PGP ! 2512: availability for versions earlier than 2.5: ! 2513: ! 2514: Peter Gutmann Hugh Kennedy ! 2515: [email protected] [email protected] ! 2516: New Zealand Germany ! 2517: ! 2518: Branko Lankester Miguel Angel Gallardo ! 2519: [email protected] [email protected] ! 2520: +31 2159 42242 (341) 474 38 09 ! 2521: The Netherlands Spain ! 2522: ! 2523: Hugh Miller Colin Plumb ! 2524: [email protected] [email protected] ! 2525: (312) 508-2727 Toronto, Ontario, Canada ! 2526: USA ! 2527: ! 2528: Jean-loup Gailly ! 2529: [email protected] ! 2530: France ! 2531:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.