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